make widget class generic on props

This commit is contained in:
Géry Debongnie
2019-01-28 21:32:21 +01:00
parent d80421d647
commit 2ea569f7aa
10 changed files with 58 additions and 54 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ const template = `
</div>
`;
export class CRM extends Widget<Env> {
export class CRM extends Widget<Env, {}> {
name = "crm";
template = template;
}
+7 -3
View File
@@ -9,15 +9,19 @@ const template = `
</div>
`;
export class Counter extends Widget<Env> {
interface Props {
initialState?: number;
}
export class Counter extends Widget<Env, Props> {
name = "counter";
template = template;
state = {
counter: 0
};
constructor(parent: Widget<Env>, props: { initialState?: number }) {
super(parent);
constructor(parent: Widget<Env, {}>, props: Props) {
super(parent, props);
this.state.counter = props.initialState || 0;
}
+2 -2
View File
@@ -23,7 +23,7 @@ const template = `
</div>
`;
export class Discuss extends Widget<Env> {
export class Discuss extends Widget<Env, {}> {
name = "discuss";
template = template;
widgets = { Clock, Counter, ColorWidget };
@@ -54,7 +54,7 @@ export class Discuss extends Widget<Env> {
}
}
class ColorWidget extends Widget<Env> {
class ColorWidget extends Widget<Env, { color: "red" | "blue" }> {
name = "colorwidget";
template = `<div>Current Color: <t t-esc="props.color"/></div>`;
}
+1 -1
View File
@@ -14,7 +14,7 @@ const template = `
</div>
`;
export class Navbar extends Widget<Env> {
export class Navbar extends Widget<Env, {}> {
name = "navbar";
template = template;
+1 -1
View File
@@ -3,7 +3,7 @@ import { Env } from "../env";
const template = `<div class="o_clock"><t t-esc="state.currentTime"/></div>`;
export class Clock extends Widget<Env> {
export class Clock extends Widget<Env, {}> {
name = "clock";
template = template;
interval: any | undefined;
+2 -2
View File
@@ -11,11 +11,11 @@ const template = `
</div>
`;
export class RootWidget extends Widget<Env> {
export class RootWidget extends Widget<Env, {}> {
name = "root";
template = template;
widgets = { Navbar };
content: Widget<Env> | null = null;
content: Widget<Env, {}> | null = null;
mounted() {
this.env.actionManager.on("action_ready", this, this.setContentWidget);