From b7dc4d6038b91d77a6f5c52c14eb3fec1b87e0f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Tue, 19 Nov 2024 09:16:56 +0100 Subject: [PATCH] allow removing attributes with falsy values --- addons/website/static/src/core/colibri.js | 6 +++++- .../static/tests/core/interaction.test.js | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/addons/website/static/src/core/colibri.js b/addons/website/static/src/core/colibri.js index a4fb9b7138322..9934a56efc8a1 100644 --- a/addons/website/static/src/core/colibri.js +++ b/addons/website/static/src/core/colibri.js @@ -78,7 +78,11 @@ export class Colibri { } } } else { - el.setAttribute(attr, value); + if (value) { + el.setAttribute(attr, value); + } else { + el.removeAttribute(attr); + } } } diff --git a/addons/website/static/tests/core/interaction.test.js b/addons/website/static/tests/core/interaction.test.js index 02f9a63dd255d..c33bfe59aee98 100644 --- a/addons/website/static/tests/core/interaction.test.js +++ b/addons/website/static/tests/core/interaction.test.js @@ -592,6 +592,23 @@ describe("dynamic attributes", () => { ); }); + test("t-att- can remove an attribute with undefined", async () => { + class Test extends Interaction { + static selector = "span"; + dynamicContent = { + "_root:t-att-a": () => undefined, + }; + } + + const { el } = await startInteraction( + Test, + `coucou`, + ); + expect(el.querySelector("span").outerHTML).toBe( + `coucou`, + ); + }); + test("t-att-class can add multiple classes", async () => { class Test extends Interaction { static selector = "span";