diff --git a/addons/web/static/src/views/kanban/kanban_record.js b/addons/web/static/src/views/kanban/kanban_record.js index ef64b30c91b..c61ac3a0bcb 100644 --- a/addons/web/static/src/views/kanban/kanban_record.js +++ b/addons/web/static/src/views/kanban/kanban_record.js @@ -360,6 +360,10 @@ export class KanbanRecord extends Component { return luxon; } + get JSON() { + return JSON; + } + get read_only_mode() { return this.props.readonly; } diff --git a/addons/web/static/tests/views/kanban_view_tests.js b/addons/web/static/tests/views/kanban_view_tests.js index 9f1c9b4cc32..032285fcd46 100644 --- a/addons/web/static/tests/views/kanban_view_tests.js +++ b/addons/web/static/tests/views/kanban_view_tests.js @@ -9967,4 +9967,28 @@ QUnit.module("Views", (hooks) => { assert.notOk(dropdown.hasAttribute("placeholder")); } ); + + QUnit.test("can use JSON in kanban template", async (assert) => { + serverData.models.partner.records = [{ id: 1, foo: '["g", "e", "d"]' }]; + await makeView({ + type: "kanban", + resModel: "partner", + serverData, + arch: ` + + + + +
+ +
+
+
+
+ `, + }); + assert.containsOnce(target, ".o_kanban_record:not(.o_kanban_ghost)"); + assert.containsN(target, ".o_kanban_record span", 3); + assert.strictEqual(target.querySelector(".o_kanban_record").innerText, "ged"); + }); });