diff --git a/src/qweb/qweb.ts b/src/qweb/qweb.ts index d3e8648d..79ac9f97 100644 --- a/src/qweb/qweb.ts +++ b/src/qweb/qweb.ts @@ -704,8 +704,12 @@ export class QWeb extends EventBus { .split(/\s+/) .map(a => `'${escapeQuotes(a)}':true`) .join(","); - classObj = `_${ctx.generateID()}`; - ctx.addLine(`let ${classObj} = {${classDef}};`); + if (classObj) { + ctx.addLine(`Object.assign(${classObj}, {${classDef}})`); + } else { + classObj = `_${ctx.generateID()}`; + ctx.addLine(`let ${classObj} = {${classDef}};`); + } } } else { ctx.addLine(`let _${attID} = '${escapeQuotes(value)}';`); diff --git a/tests/qweb/__snapshots__/qweb.test.ts.snap b/tests/qweb/__snapshots__/qweb.test.ts.snap index 3a0d8d16..ff183e30 100644 --- a/tests/qweb/__snapshots__/qweb.test.ts.snap +++ b/tests/qweb/__snapshots__/qweb.test.ts.snap @@ -1,5 +1,20 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`attributes class and t-att-class should combine together 1`] = ` +"function anonymous(context, extra +) { + // Template name: \\"test\\" + let utils = this.constructor.utils; + let scope = Object.create(context); + let h = this.h; + let _1 = utils.toObj(scope['value']); + Object.assign(_1, {'hello':true}) + let c3 = [], p3 = {key:3,class:_1}; + let vn3 = h('div', p3, c3); + return vn3; +}" +`; + exports[`attributes class and t-attf-class with ternary operation 1`] = ` "function anonymous(context, extra ) { diff --git a/tests/qweb/qweb.test.ts b/tests/qweb/qweb.test.ts index 3729d5d3..f550f22d 100644 --- a/tests/qweb/qweb.test.ts +++ b/tests/qweb/qweb.test.ts @@ -715,6 +715,12 @@ describe("attributes", () => { expect(result).toBe(`
`); }); + test("class and t-att-class should combine together", () => { + qweb.addTemplate("test", ``); + const result = renderToString(qweb, "test", { value: "world" }); + expect(result).toBe(``); + }); + test("class and t-attf-class with ternary operation", () => { qweb.addTemplate("test", ``); const result = renderToString(qweb, "test", { value: true });