[FIX] component: make t-widget work with t-elif

closes #97
This commit is contained in:
Géry Debongnie
2019-05-10 19:35:58 +02:00
parent 1760d0d336
commit 53911de00a
2 changed files with 29 additions and 1 deletions
+5 -1
View File
@@ -314,7 +314,11 @@ QWeb.addDirective({
ctx.addLine(`extra.promises.push(def${defID});`);
if (node.hasAttribute("t-if") || node.hasAttribute("t-else")) {
if (
node.hasAttribute("t-if") ||
node.hasAttribute("t-else") ||
node.hasAttribute("t-elif")
) {
ctx.closeIf();
}
+24
View File
@@ -1395,6 +1395,30 @@ describe("other directives with t-widget", () => {
expect(normalize(fixture.innerHTML)).toBe("<div><span>hey</span></div>");
});
test("t-elif works with t-widget", async () => {
class ParentWidget extends Widget {
inlineTemplate = `
<div>
<div t-if="state.flag">somediv</div>
<t t-elif="!state.flag" t-widget="child"/>
</div>`;
widgets = { child: Child };
state = { flag: true };
}
class Child extends Widget {
inlineTemplate = "<span>hey</span>";
}
const widget = new ParentWidget(env);
await widget.mount(fixture);
expect(normalize(fixture.innerHTML)).toBe("<div><div>somediv</div></div>");
widget.state.flag = false;
await nextTick();
expect(normalize(fixture.innerHTML)).toBe("<div><span>hey</span></div>");
});
test("t-else with empty string works with t-widget", async () => {
class ParentWidget extends Widget {
inlineTemplate = `