From b13a6f633efd7cd671f1a1bed93f61133a0b9792 Mon Sep 17 00:00:00 2001 From: Yordan Stoyanov Date: Fri, 3 Apr 2026 14:49:50 +0200 Subject: [PATCH 1/2] fix: prevent focus jump when selecting empty or not empty in filter controls --- .../datagrid-number-filter-web/CHANGELOG.md | 1 + .../datagrid-text-filter-web/CHANGELOG.md | 1 + .../__tests__/DatagridTextFilter.spec.tsx | 13 +++ .../DatagridTextFilter.spec.tsx.snap | 6 +- .../__tests__/NumberInputController.spec.ts | 85 +++++++++++++++++++ .../__tests__/StringInputController.spec.ts | 85 +++++++++++++++++++ .../input/NumberInputController.ts | 1 + .../input/StringInputController.ts | 1 + 8 files changed, 190 insertions(+), 3 deletions(-) create mode 100644 packages/shared/widget-plugin-filtering/src/__tests__/NumberInputController.spec.ts create mode 100644 packages/shared/widget-plugin-filtering/src/__tests__/StringInputController.spec.ts diff --git a/packages/pluggableWidgets/datagrid-number-filter-web/CHANGELOG.md b/packages/pluggableWidgets/datagrid-number-filter-web/CHANGELOG.md index 28c4810ba2..7eba1b081e 100644 --- a/packages/pluggableWidgets/datagrid-number-filter-web/CHANGELOG.md +++ b/packages/pluggableWidgets/datagrid-number-filter-web/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Fixed - We fixed an issue with filter selector dropdown not choosing the best placement on small viewports. +- We fixed an issue where selecting Empty or Not empty could cause keyboard focus to jump away from the filter controls. ## [3.9.0] - 2026-03-23 diff --git a/packages/pluggableWidgets/datagrid-text-filter-web/CHANGELOG.md b/packages/pluggableWidgets/datagrid-text-filter-web/CHANGELOG.md index 3855586f78..e591e04c14 100644 --- a/packages/pluggableWidgets/datagrid-text-filter-web/CHANGELOG.md +++ b/packages/pluggableWidgets/datagrid-text-filter-web/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Fixed - We fixed an issue with filter selector dropdown not choosing the best placement on small viewports. +- We fixed an issue where selecting Empty or Not empty could cause keyboard focus to jump away from the filter controls. ## [3.8.1] - 2026-02-19 diff --git a/packages/pluggableWidgets/datagrid-text-filter-web/src/components/__tests__/DatagridTextFilter.spec.tsx b/packages/pluggableWidgets/datagrid-text-filter-web/src/components/__tests__/DatagridTextFilter.spec.tsx index 07e9eda2eb..86a1df7e0f 100644 --- a/packages/pluggableWidgets/datagrid-text-filter-web/src/components/__tests__/DatagridTextFilter.spec.tsx +++ b/packages/pluggableWidgets/datagrid-text-filter-web/src/components/__tests__/DatagridTextFilter.spec.tsx @@ -237,6 +237,19 @@ describe("Text Filter", () => { expect(attribute.setValue).toHaveBeenLastCalledWith(undefined); }); + it("keeps focus in filter controls when empty operator is selected", async () => { + render(); + + const user = userEvent.setup({ advanceTimers: jest.advanceTimersByTime }); + const triggerButton = screen.getByRole("combobox", { name: "Equal" }); + + await user.click(triggerButton); + await user.click(screen.getByRole("option", { name: "Empty" })); + + expect(screen.getByRole("textbox")).toBeDisabled(); + expect(document.body).not.toHaveFocus(); + }); + afterAll(() => { (window as any)["com.mendix.widgets.web.filterable.filterContext.v2"] = undefined; }); diff --git a/packages/pluggableWidgets/datagrid-text-filter-web/src/components/__tests__/__snapshots__/DatagridTextFilter.spec.tsx.snap b/packages/pluggableWidgets/datagrid-text-filter-web/src/components/__tests__/__snapshots__/DatagridTextFilter.spec.tsx.snap index 50588890cb..30aaec487e 100644 --- a/packages/pluggableWidgets/datagrid-text-filter-web/src/components/__tests__/__snapshots__/DatagridTextFilter.spec.tsx.snap +++ b/packages/pluggableWidgets/datagrid-text-filter-web/src/components/__tests__/__snapshots__/DatagridTextFilter.spec.tsx.snap @@ -14,12 +14,12 @@ exports[`Text Filter with single instance with multiple attributes renders corre >