From e1c02f4aa84f3a79d2b56604af10e595c9a4ec45 Mon Sep 17 00:00:00 2001 From: "Adrien Minne (adrm)" Date: Fri, 24 Oct 2025 13:37:41 +0200 Subject: [PATCH] [FIX] headers_overlay: disable interaction in read-only mode The drag & drop to move headers, and the handle to resize headers were both enabled in read-only mode. This commit disable those. Task: 5182854 --- .../headers_overlay/headers_overlay.ts | 11 ++++++++- tests/grid/grid_overlay_component.test.ts | 24 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/components/headers_overlay/headers_overlay.ts b/src/components/headers_overlay/headers_overlay.ts index a5c049a33b..a748815333 100644 --- a/src/components/headers_overlay/headers_overlay.ts +++ b/src/components/headers_overlay/headers_overlay.ts @@ -142,7 +142,12 @@ abstract class AbstractResizer extends Component { await nextTick(); expect(fixture.querySelector(".o-context-menu")).toBeFalsy(); }); + + test("Can open context menu in readonly", async () => { + model.updateMode("readonly"); + triggerMouseEvent(".o-overlay .o-col-resizer", "contextmenu", 10, 10); + await nextTick(); + expect(fixture.querySelector(".o-menu")).toBeTruthy(); + }); + + test("Cannot resize a column in readonly", async () => { + model.updateMode("readonly"); + triggerMouseEvent(".o-overlay .o-col-resizer", "mousemove", DEFAULT_CELL_WIDTH, 10); + await nextTick(); + expect(fixture.querySelector(".o-overlay .o-col-resizer .o-handle")).toBeNull(); + }); }); describe("Hide/show columns", () => { beforeEach(async () => { @@ -1114,6 +1129,15 @@ describe("move selected element(s)", () => { expect(getEvaluatedCell(model, "C1").value).toBe("c1"); expect(getEvaluatedCell(model, "D1").value).toBe("d1"); }); + + test("Can select a column but not move move it in readonly", async () => { + model.updateMode("readonly"); + await selectColumnByClicking(model, "A", {}); + expect(model.getters.getActiveCols()).toEqual(new Set([0])); + + await simulateClick(".o-overlay .o-col-resizer", 10, 10); + expect(fixture.querySelector(".o-overlay .o-col-resizer")?.classList).not.toContain("o-grab"); + }); }); describe("move selected row(s)", () => {