diff --git a/web/static/src/ts/core/Widget.ts b/web/static/src/ts/core/Widget.ts index c9a53d64..624468c3 100644 --- a/web/static/src/ts/core/Widget.ts +++ b/web/static/src/ts/core/Widget.ts @@ -2,7 +2,7 @@ import sdAttrs from "../../../libs/snabbdom/src/modules/attributes"; import sdListeners from "../../../libs/snabbdom/src/modules/eventlisteners"; import { init } from "../../../libs/snabbdom/src/snabbdom"; import { VNode } from "../../../libs/snabbdom/src/vnode"; -import QWeb from "./qweb_vdom"; +import { QWeb } from "./qweb_vdom"; const patch = init([sdListeners, sdAttrs]); @@ -10,7 +10,7 @@ export interface WEnv { qweb: QWeb; } -export default class Widget { +export class Widget { name: string = "widget"; template: string = "
"; vnode: VNode | null = null; diff --git a/web/static/src/ts/core/bus.ts b/web/static/src/ts/core/bus.ts index 5f016bb7..ab5a8065 100644 --- a/web/static/src/ts/core/bus.ts +++ b/web/static/src/ts/core/bus.ts @@ -5,7 +5,7 @@ interface Subscription { callback: Callback; } -export default class Bus { +export class Bus { private subscriptions: { [eventType: string]: Subscription[] } = {}; on(eventType: string, owner: any, callback: Callback) { diff --git a/web/static/src/ts/core/qweb_vdom.ts b/web/static/src/ts/core/qweb_vdom.ts index e97f6c90..fbcdaa01 100644 --- a/web/static/src/ts/core/qweb_vdom.ts +++ b/web/static/src/ts/core/qweb_vdom.ts @@ -83,7 +83,7 @@ export class Context { } } -export default class QWeb { +export class QWeb { rawTemplates: { [name: string]: RawTemplate } = {}; parsedTemplates: { [name: string]: ParsedTemplate } = {}; templates: { [name: string]: CompiledTemplate } = {}; diff --git a/web/static/src/ts/env.ts b/web/static/src/ts/env.ts index 54a5be58..49a8fb5d 100644 --- a/web/static/src/ts/env.ts +++ b/web/static/src/ts/env.ts @@ -1,7 +1,7 @@ -import QWeb from "./core/qweb_vdom"; +import { QWeb } from "./core/qweb_vdom"; import { WEnv } from "./core/widget"; -import actions, { Action } from "./services/actions"; -import ActionManager from "./services/action_manager"; +import { actions, Action } from "./services/actions"; +import { ActionManager } from "./services/action_manager"; import Ajax from "./services/ajax"; import Router from "./services/router"; diff --git a/web/static/src/ts/main.ts b/web/static/src/ts/main.ts index b72cd74d..a9a2699b 100644 --- a/web/static/src/ts/main.ts +++ b/web/static/src/ts/main.ts @@ -1,6 +1,6 @@ /// -import RootWidget from "./widgets/root_widget"; +import { RootWidget } from "./widgets/root_widget"; import { makeEnvironment } from "./env"; document.addEventListener("DOMContentLoaded", async function() { diff --git a/web/static/src/ts/services/action_manager.ts b/web/static/src/ts/services/action_manager.ts index 00cbad53..92db3e89 100644 --- a/web/static/src/ts/services/action_manager.ts +++ b/web/static/src/ts/services/action_manager.ts @@ -12,7 +12,7 @@ import { Action } from "./actions"; // { id: 2, title: "CRM", Widget: CRM } // ]; -export default class ActionManager { +export class ActionManager { doAction(action: Action) { console.log(action); // load data (??) diff --git a/web/static/src/ts/services/actions.ts b/web/static/src/ts/services/actions.ts index 17e3c252..856a2984 100644 --- a/web/static/src/ts/services/actions.ts +++ b/web/static/src/ts/services/actions.ts @@ -1,6 +1,6 @@ -import CRM from "../widgets/crm"; -import Discuss from "../widgets/discuss"; -import Widget from "../core/widget"; +import { CRM } from "../widgets/crm"; +import { Discuss } from "../widgets/discuss"; +import { Widget } from "../core/widget"; import { Env } from "../env"; interface Type extends Function { @@ -14,13 +14,11 @@ export interface Action { default?: boolean; } -const actions: Action[] = [ +export const actions: Action[] = [ { id: 1, title: "Discuss", Widget: Discuss, default: true }, { id: 2, title: "CRM", Widget: CRM } ]; -export default actions; - // class ActionManager { // doAction(action: Action) { diff --git a/web/static/src/ts/services/router.ts b/web/static/src/ts/services/router.ts index fb75598f..12b11445 100644 --- a/web/static/src/ts/services/router.ts +++ b/web/static/src/ts/services/router.ts @@ -1,3 +1,5 @@ +import { Bus } from "../core/bus"; + export type Query = { [key: string]: string }; export interface Route { @@ -11,10 +13,11 @@ function clearSlaches(s: string): string { return s.replace(/\/$/, "").replace(/^\//, ""); } -export default class Router { +export default class Router extends Bus { listeners: { owner: any; callback: (info: Route) => void }[] = []; constructor() { + super(); window.addEventListener("popstate", this.onUrlChange.bind(this)); window.onhashchange = function() { console.log("aaaa"); diff --git a/web/static/src/ts/widgets/CRM.ts b/web/static/src/ts/widgets/CRM.ts index 9a2670a4..a9299a74 100644 --- a/web/static/src/ts/widgets/CRM.ts +++ b/web/static/src/ts/widgets/CRM.ts @@ -1,4 +1,4 @@ -import Widget from "../core/widget"; +import { Widget } from "../core/widget"; import { Env } from "../env"; const template = ` @@ -7,7 +7,7 @@ const template = ` `; -export default class Discuss extends Widget { +export class CRM extends Widget { name = "crm"; template = template; } diff --git a/web/static/src/ts/widgets/Counter.ts b/web/static/src/ts/widgets/Counter.ts index 9023270b..c8c5de0b 100644 --- a/web/static/src/ts/widgets/Counter.ts +++ b/web/static/src/ts/widgets/Counter.ts @@ -1,4 +1,4 @@ -import Widget from "../core/widget"; +import { Widget } from "../core/widget"; import { Env } from "../env"; const template = ` @@ -9,7 +9,7 @@ const template = ` `; -export default class Counter extends Widget { +export class Counter extends Widget { name = "counter"; template = template; state = { diff --git a/web/static/src/ts/widgets/Discuss.ts b/web/static/src/ts/widgets/Discuss.ts index 54741af4..a7a7e8f2 100644 --- a/web/static/src/ts/widgets/Discuss.ts +++ b/web/static/src/ts/widgets/Discuss.ts @@ -1,5 +1,5 @@ -import Widget from "../core/widget"; -import Counter from "./counter"; +import { Widget } from "../core/widget"; +import { Counter } from "./counter"; import { Env } from "../env"; const template = ` @@ -19,7 +19,7 @@ const template = ` `; -export default class Discuss extends Widget { +export class Discuss extends Widget { name = "discuss"; template = template; widgets = { Counter }; diff --git a/web/static/src/ts/widgets/Navbar.ts b/web/static/src/ts/widgets/Navbar.ts index 040bbd7c..90f72e1d 100644 --- a/web/static/src/ts/widgets/Navbar.ts +++ b/web/static/src/ts/widgets/Navbar.ts @@ -1,4 +1,4 @@ -import Widget from "../core/widget"; +import { Widget } from "../core/widget"; import { Action } from "../services/actions"; import { Env } from "../env"; @@ -15,7 +15,7 @@ const template = ` `; -export default class Navbar extends Widget { +export class Navbar extends Widget { name = "navbar"; template = template; diff --git a/web/static/src/ts/widgets/root_widget.ts b/web/static/src/ts/widgets/root_widget.ts index 3c541522..8e5ed9d4 100644 --- a/web/static/src/ts/widgets/root_widget.ts +++ b/web/static/src/ts/widgets/root_widget.ts @@ -1,5 +1,5 @@ -import Widget from "../core/widget"; -import Navbar from "./navbar"; +import { Widget } from "../core/widget"; +import { Navbar } from "./navbar"; import { Action } from "../services/actions"; import { Env } from "../env"; @@ -12,7 +12,7 @@ const template = ` `; -export default class RootWidget extends Widget { +export class RootWidget extends Widget { name = "root"; template = template; widgets = { Navbar }; diff --git a/web/static/tests/bus_test.ts b/web/static/tests/bus_test.ts index 3ae90343..0744495d 100644 --- a/web/static/tests/bus_test.ts +++ b/web/static/tests/bus_test.ts @@ -1,4 +1,4 @@ -import Bus from "../src/ts/core/bus"; +import { Bus } from "../src/ts/core/bus"; describe("event bus behaviour", () => { test("can subscribe and be notified", () => { diff --git a/web/static/tests/qweb_vdom.test.ts b/web/static/tests/qweb_vdom.test.ts index ed46b971..d19dc9f1 100644 --- a/web/static/tests/qweb_vdom.test.ts +++ b/web/static/tests/qweb_vdom.test.ts @@ -1,4 +1,4 @@ -import QWeb, { EvalContext } from "../src/ts/core/qweb_vdom"; +import { QWeb, EvalContext } from "../src/ts/core/qweb_vdom"; import { init } from "../libs/snabbdom/src/snabbdom"; import sdAttributes from "../libs/snabbdom/src/modules/attributes"; import sdListeners from "../libs/snabbdom/src/modules/eventlisteners"; diff --git a/web/static/tests/widget.test.ts b/web/static/tests/widget.test.ts index d1d447ba..d1738086 100644 --- a/web/static/tests/widget.test.ts +++ b/web/static/tests/widget.test.ts @@ -1,5 +1,5 @@ -import Widget, { WEnv } from "../src/ts/core/widget"; -import QWeb from "../src/ts/core/qweb_vdom"; +import { Widget, WEnv } from "../src/ts/core/widget"; +import { QWeb } from "../src/ts/core/qweb_vdom"; interface Type extends Function { new (...args: any[]): T; @@ -25,7 +25,7 @@ const template = `
`; -export default class Counter extends Widget { +class Counter extends Widget { name = "counter"; template = template; state = {