@gooddata/sdk-ui-kit 11.45.0-alpha.1 → 11.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InvertableSelectVirtualised.d.ts","sourceRoot":"","sources":["../../../src/List/InvertableSelect/InvertableSelectVirtualised.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"InvertableSelectVirtualised.d.ts","sourceRoot":"","sources":["../../../src/List/InvertableSelect/InvertableSelectVirtualised.tsx"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,10 @@ export function InvertableSelectVirtualised(props) {
|
|
|
34
34
|
const { onSelectAllCheckboxChange, onSelectAllCheckboxToggle, selectOnly, selectItems, deselectItems, selectionState, getIsItemSelected, } = useInvertableSelect(props);
|
|
35
35
|
const [focusedIndex, setFocusedIndex] = useState(0);
|
|
36
36
|
const [hasInitializedFocus, setHasInitializedFocus] = useState(false);
|
|
37
|
+
// Whether the keyboard focus currently lives inside the list. While it does, the grid
|
|
38
|
+
// container must not be a tab stop itself, otherwise Shift+Tab from an item would land on the
|
|
39
|
+
// container (its ancestor tab stop) and get trapped there instead of leaving the list.
|
|
40
|
+
const [isFocusWithin, setIsFocusWithin] = useState(false);
|
|
37
41
|
const firstSelectedItem = items.find((item) => getIsItemSelected(item));
|
|
38
42
|
useEffect(() => {
|
|
39
43
|
if (items.length === 0) {
|
|
@@ -45,6 +49,15 @@ export function InvertableSelectVirtualised(props) {
|
|
|
45
49
|
setFocusedIndex(firstSelectedItem ? items.indexOf(firstSelectedItem) : 0);
|
|
46
50
|
}
|
|
47
51
|
}, [items, hasInitializedFocus, getIsItemSelected, setFocusedIndex, firstSelectedItem]);
|
|
52
|
+
// onBlur is unreliable when the focused row unmounts (the list empties, or switches to a
|
|
53
|
+
// loading/error state), so isFocusWithin could stay true and leave the grid container stuck at
|
|
54
|
+
// tabIndex={-1}, blocking keyboard re-entry. Reset it whenever the list of values is not rendered.
|
|
55
|
+
const isListRendered = !isLoading && !error && items.length > 0;
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
if (!isListRendered) {
|
|
58
|
+
setIsFocusWithin(false);
|
|
59
|
+
}
|
|
60
|
+
}, [isListRendered]);
|
|
48
61
|
const handleSelectItemKeyboard = useCallback((item, e) => () => {
|
|
49
62
|
setFocusedIndex(items.indexOf(item));
|
|
50
63
|
if (isSingleSelect) {
|
|
@@ -148,6 +161,9 @@ export function InvertableSelectVirtualised(props) {
|
|
|
148
161
|
const listRef = useRef(null);
|
|
149
162
|
const handleFocus = useCallback((e) => {
|
|
150
163
|
const isNavigatingByKeyboard = document.querySelector(":focus-visible") !== null;
|
|
164
|
+
// Focus is now inside the list (this handler fires for descendants too, as focus
|
|
165
|
+
// bubbles). Drop the container out of the tab order so Shift+Tab can leave the list.
|
|
166
|
+
setIsFocusWithin(true);
|
|
151
167
|
if (e.target.id !== scopedIdStoreValue.containerId) {
|
|
152
168
|
return;
|
|
153
169
|
}
|
|
@@ -167,12 +183,16 @@ export function InvertableSelectVirtualised(props) {
|
|
|
167
183
|
if (containerRef.current?.contains(e.relatedTarget)) {
|
|
168
184
|
return;
|
|
169
185
|
}
|
|
186
|
+
setIsFocusWithin(false);
|
|
170
187
|
setFocusedAction(SELECT_ITEM_ACTION);
|
|
171
188
|
}, [containerRef, setFocusedAction]);
|
|
172
189
|
const selectProps = representAs === "grid"
|
|
173
190
|
? {
|
|
174
191
|
role: "grid",
|
|
175
|
-
|
|
192
|
+
// Only a tab stop when focus is outside the list, so it can catch Tab and
|
|
193
|
+
// redirect to the active row (needed when that row is virtualized out of view).
|
|
194
|
+
// While focus is within, it steps aside so Tab/Shift+Tab can leave the list.
|
|
195
|
+
tabIndex: isFocusWithin ? -1 : 0,
|
|
176
196
|
"aria-rowcount": items.length,
|
|
177
197
|
"aria-multiselectable": !isSingleSelect,
|
|
178
198
|
"aria-label": formatMessage({ id: "attributesDropdown.filterValues" }),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gooddata/sdk-ui-kit",
|
|
3
|
-
"version": "11.45.0
|
|
3
|
+
"version": "11.45.0",
|
|
4
4
|
"description": "GoodData SDK - UI Building Components",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "GoodData Corporation",
|
|
@@ -74,11 +74,11 @@
|
|
|
74
74
|
"tslib": "2.8.1",
|
|
75
75
|
"unified": "^11.0.5",
|
|
76
76
|
"uuid": "11.1.1",
|
|
77
|
-
"@gooddata/sdk-backend-spi": "11.45.0
|
|
78
|
-
"@gooddata/sdk-model": "11.45.0
|
|
79
|
-
"@gooddata/sdk-ui": "11.45.0
|
|
80
|
-
"@gooddata/sdk-ui-theme-provider": "11.45.0
|
|
81
|
-
"@gooddata/util": "11.45.0
|
|
77
|
+
"@gooddata/sdk-backend-spi": "11.45.0",
|
|
78
|
+
"@gooddata/sdk-model": "11.45.0",
|
|
79
|
+
"@gooddata/sdk-ui": "11.45.0",
|
|
80
|
+
"@gooddata/sdk-ui-theme-provider": "11.45.0",
|
|
81
|
+
"@gooddata/util": "11.45.0"
|
|
82
82
|
},
|
|
83
83
|
"devDependencies": {
|
|
84
84
|
"@microsoft/api-documenter": "^7.17.0",
|
|
@@ -127,11 +127,11 @@
|
|
|
127
127
|
"typescript": "5.9.3",
|
|
128
128
|
"vitest": "4.1.8",
|
|
129
129
|
"vitest-dom": "0.1.1",
|
|
130
|
-
"@gooddata/
|
|
131
|
-
"@gooddata/
|
|
132
|
-
"@gooddata/reference-workspace": "11.45.0
|
|
133
|
-
"@gooddata/stylelint-config": "11.45.0
|
|
134
|
-
"@gooddata/sdk-backend-mockingbird": "11.45.0
|
|
130
|
+
"@gooddata/eslint-config": "11.45.0",
|
|
131
|
+
"@gooddata/oxlint-config": "11.45.0",
|
|
132
|
+
"@gooddata/reference-workspace": "11.45.0",
|
|
133
|
+
"@gooddata/stylelint-config": "11.45.0",
|
|
134
|
+
"@gooddata/sdk-backend-mockingbird": "11.45.0"
|
|
135
135
|
},
|
|
136
136
|
"peerDependencies": {
|
|
137
137
|
"react": "^18.0.0 || ^19.0.0",
|