From 56be87f26e5da78fceac6d8722abc11fbd2deb5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Tue, 2 Apr 2019 09:22:37 +0200 Subject: [PATCH] fix: allow t-attf- attributes to combine with regular attrs fixes #10 --- src/qweb.ts | 14 ++++++++++++-- tests/__snapshots__/qweb.test.ts.snap | 11 +++++++++++ tests/qweb.test.ts | 6 ++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/qweb.ts b/src/qweb.ts index dd6ac2c3..f62d0521 100644 --- a/src/qweb.ts +++ b/src/qweb.ts @@ -522,7 +522,10 @@ export class QWeb { const value = attributes[i].textContent!; // regular attributes - if (!name.startsWith("t-")) { + if ( + !name.startsWith("t-") && + !(node).getAttribute("t-attf-" + name) + ) { const attID = ctx.generateID(); ctx.addLine(`let _${attID} = '${value}';`); if (!name.match(/^[a-zA-Z]+$/)) { @@ -576,7 +579,14 @@ export class QWeb { s => "${" + ctx.formatExpression(s.slice(2, -2)) + "}" ); const attID = ctx.generateID(); - ctx.addLine(`let _${attID} = \`${formattedExpr}\`;`); + let staticVal = (node).getAttribute(attName); + if (staticVal) { + ctx.addLine( + `let _${attID} = '${staticVal} ' + \`${formattedExpr}\`;` + ); + } else { + ctx.addLine(`let _${attID} = \`${formattedExpr}\`;`); + } attrs.push(`${attName}: _${attID}`); } diff --git a/tests/__snapshots__/qweb.test.ts.snap b/tests/__snapshots__/qweb.test.ts.snap index 1ae113c6..414b8711 100644 --- a/tests/__snapshots__/qweb.test.ts.snap +++ b/tests/__snapshots__/qweb.test.ts.snap @@ -207,6 +207,17 @@ exports[`attributes t-att-class with object 1`] = ` }" `; +exports[`attributes t-attf-class should combine with class 1`] = ` +"function anonymous(context,extra +) { + let h = this.utils.h; + let _1 = 'hello ' + \`world\`; + let c2 = [], p2 = {key:2,attrs:{class: _1}}; + let vn2 = h('div', p2, c2); + return vn2; +}" +`; + exports[`attributes tuple literal 1`] = ` "function anonymous(context,extra ) { diff --git a/tests/qweb.test.ts b/tests/qweb.test.ts index abd58407..fb027ecf 100644 --- a/tests/qweb.test.ts +++ b/tests/qweb.test.ts @@ -401,6 +401,12 @@ describe("attributes", () => { expect(result).toBe(`
`); }); + test("t-attf-class should combine with class", () => { + qweb.addTemplate("test", `
`); + const result = renderToString(qweb, "test"); + expect(result).toBe(`
`); + }); + test("format value", () => { qweb.addTemplate("test", `
`); const result = renderToString(qweb, "test", { value: "a" });