Skip to content

Commit 1e3a358

Browse files
committed
test(data-widgets): cleanup method floatingUI autoUpdate
1 parent 0280634 commit 1e3a358

File tree

9 files changed

+31
-23
lines changed

9 files changed

+31
-23
lines changed

packages/pluggableWidgets/datagrid-date-filter-web/src/components/__tests__/__snapshots__/DatagridDateFilter.spec.tsx.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ exports[`Date Filter with single instance with double attributes renders correct
3030
class="filter-selectors hidden"
3131
id="downshift-:ra:-menu"
3232
role="listbox"
33-
style="position: absolute; left: 0px; top: 0px; transform: translate(0px, 0px);"
33+
style="position: fixed; left: 0px; top: 0px; transform: translate(0px, 0px);"
3434
/>
3535
</div>
3636
</div>
@@ -108,7 +108,7 @@ exports[`Date Filter with single instance with single attribute renders correctl
108108
class="filter-selectors hidden"
109109
id="downshift-:r0:-menu"
110110
role="listbox"
111-
style="position: absolute; left: 0px; top: 0px; transform: translate(0px, 0px);"
111+
style="position: fixed; left: 0px; top: 0px; transform: translate(0px, 0px);"
112112
/>
113113
</div>
114114
</div>

packages/pluggableWidgets/datagrid-date-filter-web/src/components/__tests__/__snapshots__/FilterComponent.spec.tsx.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ exports[`Filter component renders correctly 1`] = `
3030
class="filter-selectors hidden"
3131
id="downshift-:r0:-menu"
3232
role="listbox"
33-
style="position: absolute; left: 0px; top: 0px; transform: translate(0px, 0px);"
33+
style="position: fixed; left: 0px; top: 0px; transform: translate(0px, 0px);"
3434
/>
3535
</div>
3636
</div>
@@ -158,7 +158,7 @@ exports[`Filter component renders correctly with aria labels 1`] = `
158158
class="filter-selectors hidden"
159159
id="downshift-:r3:-menu"
160160
role="listbox"
161-
style="position: absolute; left: 0px; top: 0px; transform: translate(0px, 0px);"
161+
style="position: fixed; left: 0px; top: 0px; transform: translate(0px, 0px);"
162162
/>
163163
</div>
164164
</div>

packages/pluggableWidgets/datagrid-dropdown-filter-web/CHANGELOG.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66

77
## [Unreleased]
88

9-
### Fixed
10-
11-
- We fixed an issue with filter popup positioning.
12-
139
## [2.10.1] - 2025-04-16
1410

1511
### Fixed

packages/pluggableWidgets/datagrid-dropdown-filter-web/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@mendix/datagrid-dropdown-filter-web",
33
"widgetName": "DatagridDropdownFilter",
4-
"version": "2.10.2",
4+
"version": "2.10.1",
55
"description": "",
66
"copyright": "© Mendix Technology BV 2025. All rights reserved.",
77
"license": "Apache-2.0",

packages/pluggableWidgets/datagrid-dropdown-filter-web/src/package.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8" ?>
22
<package xmlns="http://www.mendix.com/package/1.0/">
3-
<clientModule name="DatagridDropdownFilter" version="2.10.2" xmlns="http://www.mendix.com/clientModule/1.0/">
3+
<clientModule name="DatagridDropdownFilter" version="2.10.1" xmlns="http://www.mendix.com/clientModule/1.0/">
44
<widgetFiles>
55
<widgetFile path="DatagridDropdownFilter.xml" />
66
</widgetFiles>

packages/pluggableWidgets/datagrid-number-filter-web/src/components/__tests__/__snapshots__/DatagridNumberFilter.spec.tsx.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ exports[`Number Filter with single instance with multiple attributes renders cor
3030
class="filter-selectors hidden"
3131
id="downshift-:r7:-menu"
3232
role="listbox"
33-
style="position: absolute; left: 0px; top: 0px; transform: translate(0px, 0px);"
33+
style="position: fixed; left: 0px; top: 0px; transform: translate(0px, 0px);"
3434
/>
3535
</div>
3636
</div>
@@ -83,7 +83,7 @@ exports[`Number Filter with single instance with single attribute renders correc
8383
class="filter-selectors hidden"
8484
id="downshift-:r0:-menu"
8585
role="listbox"
86-
style="position: absolute; left: 0px; top: 0px; transform: translate(0px, 0px);"
86+
style="position: fixed; left: 0px; top: 0px; transform: translate(0px, 0px);"
8787
/>
8888
</div>
8989
</div>

packages/pluggableWidgets/datagrid-text-filter-web/src/components/__tests__/__snapshots__/DatagridTextFilter.spec.tsx.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ exports[`Text Filter with single instance with multiple attributes renders corre
3030
class="filter-selectors hidden"
3131
id="downshift-:r8:-menu"
3232
role="listbox"
33-
style="position: absolute; left: 0px; top: 0px; transform: translate(0px, 0px);"
33+
style="position: fixed; left: 0px; top: 0px; transform: translate(0px, 0px);"
3434
/>
3535
</div>
3636
</div>
@@ -83,7 +83,7 @@ exports[`Text Filter with single instance with single attribute renders correctl
8383
class="filter-selectors hidden"
8484
id="downshift-:r5:-menu"
8585
role="listbox"
86-
style="position: absolute; left: 0px; top: 0px; transform: translate(0px, 0px);"
86+
style="position: fixed; left: 0px; top: 0px; transform: translate(0px, 0px);"
8787
/>
8888
</div>
8989
</div>

packages/pluggableWidgets/datagrid-web/src/components/ColumnSelector.tsx

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { autoUpdate, size, useClick, useDismiss, useFloating, useInteractions } from "@floating-ui/react";
2-
import { createElement, ReactElement, useLayoutEffect, useMemo, useRef, useState } from "react";
2+
import { createElement, ReactElement, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
33
import { flushSync } from "react-dom";
44
import { GridColumn } from "../typings/GridColumn";
55
import { FaEye } from "./icons/FaEye";
@@ -16,10 +16,10 @@ export function ColumnSelector(props: ColumnSelectorProps): ReactElement {
1616
const [show, setShow] = useState(false);
1717
const [maxHeight, setMaxHeight] = useState<number>(0);
1818
const buttonRef = useRef<HTMLButtonElement>(null);
19-
const { refs, floatingStyles, context } = useFloating({
19+
const { refs, floatingStyles, context, update } = useFloating({
2020
open: show,
2121
placement: "bottom-end",
22-
strategy: "absolute",
22+
strategy: "fixed",
2323
onOpenChange: setShow,
2424
middleware: [
2525
size({
@@ -30,10 +30,16 @@ export function ColumnSelector(props: ColumnSelectorProps): ReactElement {
3030
}
3131
})
3232
],
33-
transform: false,
34-
whileElementsMounted: autoUpdate
33+
transform: false
3534
});
3635

36+
useEffect(() => {
37+
if (!show || !refs.reference.current || !refs.floating.current) {
38+
return;
39+
}
40+
return autoUpdate(refs.reference.current, refs.floating.current, update);
41+
}, [show, refs.reference, refs.floating, update]);
42+
3743
const dismiss = useDismiss(context);
3844
const click = useClick(context);
3945
const { getReferenceProps, getFloatingProps } = useInteractions([click, dismiss]);

packages/shared/widget-plugin-filtering/src/controls/filter-selector/useSelect.tsx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { autoUpdate, useFloating } from "@floating-ui/react-dom";
22
import { UseSelectPropGetters, useSelect as useDownshiftSelect } from "downshift";
3-
import { useCallback, useMemo } from "react";
3+
import { useCallback, useMemo, useEffect } from "react";
44

55
interface Option {
66
value: string;
@@ -39,13 +39,19 @@ export function useSelect(props: useSelectProps): ViewProps {
3939
onSelectedItemChange: ({ selectedItem }) => props.onSelect(selectedItem.value)
4040
});
4141

42-
const { refs, floatingStyles } = useFloating({
42+
const { refs, floatingStyles, update } = useFloating({
4343
open: isOpen,
4444
placement: "bottom-start",
45-
strategy: "absolute",
46-
whileElementsMounted: autoUpdate
45+
strategy: "fixed"
4746
});
4847

48+
useEffect(() => {
49+
if (!isOpen || !refs.reference.current || !refs.floating.current) {
50+
return;
51+
}
52+
return autoUpdate(refs.reference.current, refs.floating.current, update);
53+
}, [isOpen, refs.reference, refs.floating, update]);
54+
4955
const listboxLabel = props.ariaLabel || "Select filter type";
5056
const buttonLabel = selectedItem?.caption || listboxLabel;
5157

0 commit comments

Comments
 (0)