From 929178b5e818be71abf14d86dc41097e83662abe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Wed, 13 Mar 2019 14:29:57 +0100 Subject: [PATCH] add support for t-else directive with t-widget --- web/static/src/ts/core/qweb_vdom.ts | 2 +- web/static/tests/core/component.test.ts | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/web/static/src/ts/core/qweb_vdom.ts b/web/static/src/ts/core/qweb_vdom.ts index 382e2287..1887aa96 100644 --- a/web/static/src/ts/core/qweb_vdom.ts +++ b/web/static/src/ts/core/qweb_vdom.ts @@ -930,7 +930,7 @@ const widgetDirective: Directive = { ctx.addLine(`extra.promises.push(def${defID});`); - if (node.getAttribute("t-if")) { + if (node.getAttribute("t-if") || node.getAttribute("t-else")) { ctx.closeIf(); } diff --git a/web/static/tests/core/component.test.ts b/web/static/tests/core/component.test.ts index a5f39cd9..bea01e19 100644 --- a/web/static/tests/core/component.test.ts +++ b/web/static/tests/core/component.test.ts @@ -816,6 +816,29 @@ describe("other directives with t-widget", () => { await widget.updateState({ flag: true }); expect(fixture.innerHTML).toBe("
hey
"); }); + + test("t-else works with t-widget", async () => { + class ParentWidget extends Widget { + inlineTemplate = ` +
+
somediv
+ +
`; + widgets = { child: Child }; + state = { flag: true }; + } + class Child extends Widget { + inlineTemplate = "hey"; + } + + const widget = new ParentWidget(env); + await widget.mount(fixture); + + expect(normalize(fixture.innerHTML)).toBe("
somediv
"); + + await widget.updateState({ flag: false }); + expect(normalize(fixture.innerHTML)).toBe("
hey
"); + }); }); describe("random stuff/miscellaneous", () => {