From f5ce05c81e9f278073bd395278c86500d3929862 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Sat, 20 Apr 2019 23:31:23 +0200 Subject: [PATCH] [FIX] vdom: fix typing issues, small cleanup --- src/component.ts | 11 +---------- src/vdom.ts | 18 ++++++++++++++---- tests/qweb.test.ts | 6 +----- 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/src/component.ts b/src/component.ts index 4dd7aa05..56d7635d 100644 --- a/src/component.ts +++ b/src/component.ts @@ -2,14 +2,7 @@ import { EventBus } from "./event_bus"; import { Observer } from "./observer"; import { QWeb } from "./qweb"; import { idGenerator } from "./utils"; -import { - attrsModule, - eventListenersModule, - h, - init, - propsModule, - VNode -} from "./vdom"; +import { h, patch, VNode } from "./vdom"; let getId = idGenerator(); @@ -40,8 +33,6 @@ export interface Meta { observer?: Observer; } -const patch = init([eventListenersModule, attrsModule, propsModule]); - export interface Type extends Function { new (...args: any[]): T; } diff --git a/src/vdom.ts b/src/vdom.ts index 6f60e4ac..197aabe8 100644 --- a/src/vdom.ts +++ b/src/vdom.ts @@ -1,3 +1,12 @@ + +// because those in TypeScript are too restrictive: https://github.com/Microsoft/TSJS-lib-generator/pull/237 +declare global { + interface Element { + setAttribute(name: string, value: string | number | boolean): void; + setAttributeNS(namespaceURI: string, qualifiedName: string, value: string | number | boolean): void; + } +} + //------------------------------------------------------------------------------ // vnode.ts //------------------------------------------------------------------------------ @@ -42,7 +51,6 @@ function vnode( }; } - //------------------------------------------------------------------------------ // snabbdom.ts //------------------------------------------------------------------------------ @@ -721,7 +729,10 @@ function updateProps(oldVnode: VNode, vnode: VNode): void { } } -export const propsModule = { create: updateProps, update: updateProps } as Module; +export const propsModule = { + create: updateProps, + update: updateProps +} as Module; //------------------------------------------------------------------------------ // module/module.ts @@ -847,7 +858,6 @@ export const eventListenersModule = { destroy: updateEventListeners } as Module; - //------------------------------------------------------------------------------ // attributes.ts //------------------------------------------------------------------------------ @@ -908,4 +918,4 @@ export const attrsModule = { update: updateAttrs } as Module; - +export const patch = init([eventListenersModule, attrsModule, propsModule]); diff --git a/tests/qweb.test.ts b/tests/qweb.test.ts index 5fce363f..9745b315 100644 --- a/tests/qweb.test.ts +++ b/tests/qweb.test.ts @@ -1,6 +1,4 @@ -import sdAttributes from "../libs/snabbdom/src/modules/attributes"; -import sdListeners from "../libs/snabbdom/src/modules/eventlisteners"; -import { init } from "../libs/snabbdom/src/snabbdom"; +import { patch } from "../src/vdom"; import { EvalContext, QWeb } from "../src/qweb"; import { normalize } from "./helpers"; @@ -11,8 +9,6 @@ import { normalize } from "./helpers"; // We create before each test: // - qweb: a new QWeb instance -const patch = init([sdAttributes, sdListeners]); - let qweb: QWeb; beforeEach(() => {