@gooddata/sdk-ui-kit 11.45.0-alpha.1 → 11.45.0-alpha.2

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
- tabIndex: 0,
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-alpha.1",
3
+ "version": "11.45.0-alpha.2",
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-alpha.1",
78
- "@gooddata/sdk-model": "11.45.0-alpha.1",
79
- "@gooddata/sdk-ui": "11.45.0-alpha.1",
80
- "@gooddata/sdk-ui-theme-provider": "11.45.0-alpha.1",
81
- "@gooddata/util": "11.45.0-alpha.1"
77
+ "@gooddata/sdk-backend-spi": "11.45.0-alpha.2",
78
+ "@gooddata/sdk-model": "11.45.0-alpha.2",
79
+ "@gooddata/sdk-ui": "11.45.0-alpha.2",
80
+ "@gooddata/sdk-ui-theme-provider": "11.45.0-alpha.2",
81
+ "@gooddata/util": "11.45.0-alpha.2"
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/oxlint-config": "11.45.0-alpha.1",
131
- "@gooddata/eslint-config": "11.45.0-alpha.1",
132
- "@gooddata/reference-workspace": "11.45.0-alpha.1",
133
- "@gooddata/stylelint-config": "11.45.0-alpha.1",
134
- "@gooddata/sdk-backend-mockingbird": "11.45.0-alpha.1"
130
+ "@gooddata/eslint-config": "11.45.0-alpha.2",
131
+ "@gooddata/oxlint-config": "11.45.0-alpha.2",
132
+ "@gooddata/reference-workspace": "11.45.0-alpha.2",
133
+ "@gooddata/stylelint-config": "11.45.0-alpha.2",
134
+ "@gooddata/sdk-backend-mockingbird": "11.45.0-alpha.2"
135
135
  },
136
136
  "peerDependencies": {
137
137
  "react": "^18.0.0 || ^19.0.0",