@gooddata/sdk-ui-kit 10.26.0-alpha.50 → 10.26.0-alpha.51

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.
Files changed (28) hide show
  1. package/esm/@ui/UiListbox/UiListbox.d.ts +1 -1
  2. package/esm/@ui/UiListbox/UiListbox.d.ts.map +1 -1
  3. package/esm/@ui/UiListbox/UiListbox.js +43 -31
  4. package/esm/@ui/UiListbox/UiListbox.js.map +1 -1
  5. package/esm/@ui/UiListbox/defaults/DefaultUiListboxInteractiveItemComponent.d.ts +7 -0
  6. package/esm/@ui/UiListbox/defaults/DefaultUiListboxInteractiveItemComponent.d.ts.map +1 -0
  7. package/esm/@ui/UiListbox/defaults/DefaultUiListboxInteractiveItemComponent.js +16 -0
  8. package/esm/@ui/UiListbox/defaults/DefaultUiListboxInteractiveItemComponent.js.map +1 -0
  9. package/esm/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.d.ts +12 -0
  10. package/esm/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.d.ts.map +1 -0
  11. package/esm/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.js +18 -0
  12. package/esm/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.js.map +1 -0
  13. package/esm/@ui/UiListbox/defaults/firstCharacterSearch.d.ts +1 -1
  14. package/esm/@ui/UiListbox/defaults/firstCharacterSearch.d.ts.map +1 -1
  15. package/esm/@ui/UiListbox/defaults/firstCharacterSearch.js +8 -3
  16. package/esm/@ui/UiListbox/defaults/firstCharacterSearch.js.map +1 -1
  17. package/esm/@ui/UiListbox/types.d.ts +36 -13
  18. package/esm/@ui/UiListbox/types.d.ts.map +1 -1
  19. package/esm/index.d.ts +3 -2
  20. package/esm/index.d.ts.map +1 -1
  21. package/esm/index.js +2 -1
  22. package/esm/index.js.map +1 -1
  23. package/esm/sdk-ui-kit.d.ts +52 -25
  24. package/package.json +8 -8
  25. package/esm/@ui/UiListbox/defaults/DefaultUiListboxItemComponent.d.ts +0 -15
  26. package/esm/@ui/UiListbox/defaults/DefaultUiListboxItemComponent.d.ts.map +0 -1
  27. package/esm/@ui/UiListbox/defaults/DefaultUiListboxItemComponent.js +0 -31
  28. package/esm/@ui/UiListbox/defaults/DefaultUiListboxItemComponent.js.map +0 -1
@@ -7,5 +7,5 @@ import { UiListboxProps } from "./types.js";
7
7
  *
8
8
  * @internal
9
9
  */
10
- export declare function UiListbox<T>({ items, className, maxWidth, onSelect, onClose, selectedItemId, ariaAttributes, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, ItemComponent, onUnhandledKeyDown, }: UiListboxProps<T>): React.ReactNode;
10
+ export declare function UiListbox<InteractiveItemData, StaticItemData>({ items, className, maxWidth, onSelect, onClose, selectedItemId, ariaAttributes, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, shouldCloseOnSelect, isDisabledFocusable, InteractiveItemComponent, StaticItemComponent, onUnhandledKeyDown, }: UiListboxProps<InteractiveItemData, StaticItemData>): React.ReactNode;
11
11
  //# sourceMappingURL=UiListbox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UiListbox.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiListbox/UiListbox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,EAAmC,cAAc,EAAE,MAAM,YAAY,CAAC;AAE7E;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,EACzB,KAAK,EACL,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,cAAc,EACd,cAAc,EAEd,kCAAkC,EAClC,mCAAmC,EAEnC,aAA6C,EAC7C,kBAAyC,GAC5C,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAkJrC"}
1
+ {"version":3,"file":"UiListbox.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiListbox/UiListbox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,EAA8D,cAAc,EAAE,MAAM,YAAY,CAAC;AAGxG;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,mBAAmB,EAAE,cAAc,EAAE,EAC3D,KAAK,EACL,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,cAAc,EACd,cAAc,EAEd,kCAAkC,EAClC,mCAAmC,EACnC,mBAA0B,EAC1B,mBAA2B,EAE3B,wBAAmE,EACnE,mBAAyD,EAEzD,kBAAyC,GAC5C,EAAE,cAAc,CAAC,mBAAmB,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,SAAS,CAyKvE"}
@@ -5,8 +5,9 @@ import { useId } from "../../utils/useId.js";
5
5
  import { b, e } from "./listboxBem.js";
6
6
  import { makeMenuKeyboardNavigation } from "../@utils/keyboardNavigation.js";
7
7
  import { useAutoupdateRef } from "@gooddata/sdk-ui";
8
- import { DefaultUiListboxItemComponent } from "./defaults/DefaultUiListboxItemComponent.js";
8
+ import { DefaultUiListboxInteractiveItemComponent } from "./defaults/DefaultUiListboxInteractiveItemComponent.js";
9
9
  import { firstCharacterSearch } from "./defaults/firstCharacterSearch.js";
10
+ import { DefaultUiListboxStaticItemComponent } from "./defaults/DefaultUiListboxStaticItemComponent.js";
10
11
  /**
11
12
  * An accessible listbox component that can be navigated by keyboard.
12
13
  * Usable in a <Dropdown /> component.
@@ -14,36 +15,44 @@ import { firstCharacterSearch } from "./defaults/firstCharacterSearch.js";
14
15
  *
15
16
  * @internal
16
17
  */
17
- export function UiListbox({ items, className, maxWidth, onSelect, onClose, selectedItemId, ariaAttributes, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, ItemComponent = DefaultUiListboxItemComponent, onUnhandledKeyDown = firstCharacterSearch, }) {
18
+ export function UiListbox({ items, className, maxWidth, onSelect, onClose, selectedItemId, ariaAttributes, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, shouldCloseOnSelect = true, isDisabledFocusable = false, InteractiveItemComponent = DefaultUiListboxInteractiveItemComponent, StaticItemComponent = DefaultUiListboxStaticItemComponent, onUnhandledKeyDown = firstCharacterSearch, }) {
19
+ const isItemFocusable = React.useCallback((item) => {
20
+ if (!item || item.type !== "interactive") {
21
+ return false;
22
+ }
23
+ return isDisabledFocusable || !item.isDisabled;
24
+ }, [isDisabledFocusable]);
18
25
  const [focusedIndex, setFocusedIndex] = React.useState(() => {
19
- // First try to find the selected item if it's not disabled
20
- const selectedIndex = items.findIndex((item) => item.id === selectedItemId && !item.isDisabled);
26
+ // First try to find the selected item if it's focusable
27
+ const selectedIndex = items.findIndex((item) => item.id === selectedItemId && isItemFocusable(item));
21
28
  if (selectedIndex >= 0) {
22
29
  return selectedIndex;
23
30
  }
24
- // Otherwise find the first non-disabled item
25
- const firstNonDisabledIndex = items.findIndex((item) => !item.isDisabled);
26
- return firstNonDisabledIndex >= 0 ? firstNonDisabledIndex : 0;
31
+ // Otherwise find the first focusable item
32
+ const firstFocusableIndex = items.findIndex(isItemFocusable);
33
+ return firstFocusableIndex >= 0 ? firstFocusableIndex : undefined;
27
34
  });
28
35
  const itemRefs = React.useRef([]);
29
36
  // Update refs array size when items change. The actual refs are updated during render.
30
37
  React.useEffect(() => {
31
38
  itemRefs.current = itemRefs.current.slice(0, items.length);
32
39
  }, [items]);
40
+ const focusedItem = focusedIndex == null ? undefined : items[focusedIndex];
41
+ const focusedItemNode = focusedIndex == null ? undefined : itemRefs.current[focusedIndex];
33
42
  // Scroll focused item into view
34
43
  React.useEffect(() => {
35
- const focusedItem = itemRefs.current[focusedIndex];
36
- if (focusedItem) {
37
- focusedItem.scrollIntoView({ block: "nearest" });
44
+ if (!focusedItemNode) {
45
+ return;
38
46
  }
39
- }, [focusedIndex]);
47
+ focusedItemNode.scrollIntoView({ block: "nearest" });
48
+ }, [focusedItemNode]);
40
49
  const handleSelectItem = React.useCallback((item) => {
41
50
  if (!item || item.isDisabled) {
42
51
  return;
43
52
  }
44
53
  onSelect?.(item);
45
- onClose?.();
46
- }, [onClose, onSelect]);
54
+ shouldCloseOnSelect && onClose?.();
55
+ }, [onClose, onSelect, shouldCloseOnSelect]);
47
56
  const contextRef = useAutoupdateRef({
48
57
  itemRefs,
49
58
  focusedIndex,
@@ -52,15 +61,16 @@ export function UiListbox({ items, className, maxWidth, onSelect, onClose, selec
52
61
  onSelect: handleSelectItem,
53
62
  setFocusedIndex,
54
63
  selectedItemId,
64
+ isItemFocusable,
55
65
  });
56
66
  const handleKeyDown = React.useMemo(() => makeMenuKeyboardNavigation({
57
67
  shouldPreventDefault: shouldKeyboardActionPreventDefault,
58
68
  shouldStopPropagation: shouldKeyboardActionStopPropagation,
59
69
  onFocusPrevious: () => {
60
70
  setFocusedIndex((prevIndex) => {
61
- let newIndex = prevIndex - 1;
62
- // Skip disabled items
63
- while (newIndex >= 0 && items[newIndex].isDisabled) {
71
+ let newIndex = (prevIndex ?? 0) - 1;
72
+ // Skip non-focusable items
73
+ while (newIndex >= 0 && !isItemFocusable(items[newIndex])) {
64
74
  newIndex--;
65
75
  }
66
76
  return newIndex >= 0 ? newIndex : prevIndex;
@@ -68,31 +78,31 @@ export function UiListbox({ items, className, maxWidth, onSelect, onClose, selec
68
78
  },
69
79
  onFocusNext: () => {
70
80
  setFocusedIndex((prevIndex) => {
71
- let newIndex = prevIndex + 1;
72
- // Skip disabled items
73
- while (newIndex < items.length && items[newIndex].isDisabled) {
81
+ let newIndex = (prevIndex ?? 0) + 1;
82
+ // Skip non-focusable items
83
+ while (newIndex < items.length && !isItemFocusable(items[newIndex])) {
74
84
  newIndex++;
75
85
  }
76
86
  return newIndex < items.length ? newIndex : prevIndex;
77
87
  });
78
88
  },
79
89
  onFocusFirst: () => {
80
- // Find the first non-disabled item
81
- const firstNonDisabledIndex = items.findIndex((item) => !item.isDisabled);
82
- setFocusedIndex(firstNonDisabledIndex >= 0 ? firstNonDisabledIndex : 0);
90
+ // Find the first focusable item
91
+ const firstFocusableIndex = items.findIndex(isItemFocusable);
92
+ setFocusedIndex(firstFocusableIndex >= 0 ? firstFocusableIndex : undefined);
83
93
  },
84
94
  onFocusLast: () => {
85
- // Find the last non-disabled item
95
+ // Find the last focusable item
86
96
  for (let i = items.length - 1; i >= 0; i--) {
87
- if (!items[i].isDisabled) {
97
+ if (isItemFocusable(items[i])) {
88
98
  setFocusedIndex(i);
89
99
  return;
90
100
  }
91
101
  }
92
- setFocusedIndex(items.length - 1);
102
+ setFocusedIndex(undefined);
93
103
  },
94
104
  onSelect: () => {
95
- handleSelectItem(items[focusedIndex]);
105
+ focusedItem && focusedItem.type === "interactive" && handleSelectItem(focusedItem);
96
106
  },
97
107
  onClose: () => {
98
108
  onClose?.();
@@ -102,8 +112,9 @@ export function UiListbox({ items, className, maxWidth, onSelect, onClose, selec
102
112
  },
103
113
  }), [
104
114
  contextRef,
105
- focusedIndex,
115
+ focusedItem,
106
116
  handleSelectItem,
117
+ isItemFocusable,
107
118
  items,
108
119
  onClose,
109
120
  onUnhandledKeyDown,
@@ -112,10 +123,11 @@ export function UiListbox({ items, className, maxWidth, onSelect, onClose, selec
112
123
  ]);
113
124
  const listboxId = useId();
114
125
  return (React.createElement("div", { className: cx(b(), className), style: { maxWidth } },
115
- React.createElement("ul", { role: "listbox", className: e("items"), tabIndex: 0, onKeyDown: handleKeyDown, "aria-activedescendant": makeItemId(listboxId, items[focusedIndex]), ...ariaAttributes }, items.map((item, index) => (React.createElement("li", { key: item.id, ref: (el) => (itemRefs.current[index] = el), role: "option", "aria-selected": item.id === selectedItemId, "aria-disabled": item.isDisabled, tabIndex: -1, id: makeItemId(listboxId, item) },
116
- React.createElement(ItemComponent, { onSelect: () => {
126
+ React.createElement("ul", { className: e("items"), tabIndex: 0, onKeyDown: handleKeyDown, "aria-activedescendant": makeItemId(listboxId, focusedItem), ...ariaAttributes, role: "listbox" }, items.map((item, index) => item.type === "interactive" ? (React.createElement("li", { key: item.id, ref: (el) => (itemRefs.current[index] = el), role: "option", "aria-selected": item.id === selectedItemId, "aria-disabled": item.isDisabled, tabIndex: -1, id: makeItemId(listboxId, item) },
127
+ React.createElement(InteractiveItemComponent, { onSelect: () => {
117
128
  handleSelectItem(item);
118
- }, item: item, isFocused: index === focusedIndex, isSelected: item.id === selectedItemId })))))));
129
+ }, item: item, isFocused: index === focusedIndex, isSelected: item.id === selectedItemId }))) : (React.createElement("li", { key: item.id ?? index, ref: (el) => (itemRefs.current[index] = el) },
130
+ React.createElement(StaticItemComponent, { item: item })))))));
119
131
  }
120
- const makeItemId = (listboxId, item) => `item-${listboxId}-${item.id}`;
132
+ const makeItemId = (listboxId, item) => item && item.type === "interactive" ? `item-${listboxId}-${item.id}` : undefined;
121
133
  //# sourceMappingURL=UiListbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UiListbox.js","sourceRoot":"","sources":["../../../src/@ui/UiListbox/UiListbox.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UiListbox.js","sourceRoot":"","sources":["../../../src/@ui/UiListbox/UiListbox.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import { UiListboxInteractiveItemProps } from "../types.js";
3
+ /**
4
+ * @internal
5
+ */
6
+ export declare function DefaultUiListboxInteractiveItemComponent<T>({ item, isFocused, isSelected, onSelect, }: UiListboxInteractiveItemProps<T>): React.ReactNode;
7
+ //# sourceMappingURL=DefaultUiListboxInteractiveItemComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultUiListboxInteractiveItemComponent.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiListbox/defaults/DefaultUiListboxInteractiveItemComponent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AAE5D;;GAEG;AACH,wBAAgB,wCAAwC,CAAC,CAAC,EAAE,EACxD,IAAI,EACJ,SAAS,EACT,UAAU,EACV,QAAQ,GACX,EAAE,6BAA6B,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAepD"}
@@ -0,0 +1,16 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import React from "react";
3
+ import { e } from "../listboxBem.js";
4
+ import { ShortenedText } from "../../../ShortenedText/index.js";
5
+ /**
6
+ * @internal
7
+ */
8
+ export function DefaultUiListboxInteractiveItemComponent({ item, isFocused, isSelected, onSelect, }) {
9
+ return (React.createElement("div", { className: e("item", {
10
+ isFocused,
11
+ isSelected,
12
+ isDisabled: !!item.isDisabled,
13
+ }), onClick: item.isDisabled ? undefined : onSelect },
14
+ React.createElement(ShortenedText, { className: e("item-title"), ellipsisPosition: "end" }, item.stringTitle)));
15
+ }
16
+ //# sourceMappingURL=DefaultUiListboxInteractiveItemComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultUiListboxInteractiveItemComponent.js","sourceRoot":"","sources":["../../../../src/@ui/UiListbox/defaults/DefaultUiListboxInteractiveItemComponent.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAGhE;;GAEG;AACH,MAAM,UAAU,wCAAwC,CAAI,EACxD,IAAI,EACJ,SAAS,EACT,UAAU,EACV,QAAQ,GACuB;IAC/B,OAAO,CACH,6BACI,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,SAAS;YACT,UAAU;YACV,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU;SAChC,CAAC,EACF,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;QAE/C,oBAAC,aAAa,IAAC,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,gBAAgB,EAAE,KAAK,IAC7D,IAAI,CAAC,WAAW,CACL,CACd,CACT,CAAC;AACN,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ import { IUiListboxStaticItem, UiListboxStaticItemProps } from "../types.js";
3
+ /**
4
+ * @internal
5
+ */
6
+ export declare const separatorStaticItem: IUiListboxStaticItem<React.ReactNode>;
7
+ /**
8
+ * By default just renders the data.
9
+ * @internal
10
+ */
11
+ export declare function DefaultUiListboxStaticItemComponent<T>({ item, }: UiListboxStaticItemProps<T>): React.ReactNode;
12
+ //# sourceMappingURL=DefaultUiListboxStaticItemComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultUiListboxStaticItemComponent.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE7E;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAGrE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,CAAC,EAAE,EACnD,IAAI,GACP,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAE/C"}
@@ -0,0 +1,18 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import React from "react";
3
+ import { Separator } from "../../../List/index.js";
4
+ /**
5
+ * @internal
6
+ */
7
+ export const separatorStaticItem = {
8
+ data: React.createElement(Separator, null),
9
+ type: "static",
10
+ };
11
+ /**
12
+ * By default just renders the data.
13
+ * @internal
14
+ */
15
+ export function DefaultUiListboxStaticItemComponent({ item, }) {
16
+ return item.data;
17
+ }
18
+ //# sourceMappingURL=DefaultUiListboxStaticItemComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultUiListboxStaticItemComponent.js","sourceRoot":"","sources":["../../../../src/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA0C;IACtE,IAAI,EAAE,oBAAC,SAAS,OAAG;IACnB,IAAI,EAAE,QAAQ;CACjB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,mCAAmC,CAAI,EACnD,IAAI,GACsB;IAC1B,OAAO,IAAI,CAAC,IAAuB,CAAC;AACxC,CAAC"}
@@ -4,5 +4,5 @@ import { IListboxContext } from "../types.js";
4
4
  * This is a basic implementation of moving focus to items on character key press.
5
5
  * Having this functionality is recommended by the listbox spec.
6
6
  */
7
- export declare function firstCharacterSearch(event: React.KeyboardEvent, { items, focusedIndex, setFocusedIndex }: IListboxContext<any>): void;
7
+ export declare function firstCharacterSearch<InteractiveItemData, StaticItemData>(event: React.KeyboardEvent, { items, focusedIndex, setFocusedIndex, isItemFocusable, }: IListboxContext<InteractiveItemData, StaticItemData>): void;
8
8
  //# sourceMappingURL=firstCharacterSearch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"firstCharacterSearch.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiListbox/defaults/firstCharacterSearch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,oBAAoB,CAChC,KAAK,EAAE,KAAK,CAAC,aAAa,EAC1B,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE,eAAe,CAAC,GAAG,CAAC,QA0BjE"}
1
+ {"version":3,"file":"firstCharacterSearch.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiListbox/defaults/firstCharacterSearch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,mBAAmB,EAAE,cAAc,EACpE,KAAK,EAAE,KAAK,CAAC,aAAa,EAC1B,EACI,KAAK,EACL,YAAY,EACZ,eAAe,EACf,eAAe,GAClB,EAAE,eAAe,CAAC,mBAAmB,EAAE,cAAc,CAAC,QAgC1D"}
@@ -3,18 +3,23 @@
3
3
  * This is a basic implementation of moving focus to items on character key press.
4
4
  * Having this functionality is recommended by the listbox spec.
5
5
  */
6
- export function firstCharacterSearch(event, { items, focusedIndex, setFocusedIndex }) {
6
+ export function firstCharacterSearch(event, { items, focusedIndex, setFocusedIndex, isItemFocusable, }) {
7
7
  const char = event.key.toLowerCase();
8
8
  if (char.length !== 1) {
9
9
  return;
10
10
  }
11
- const itemIndex = items.findIndex((item, index) => index > focusedIndex && item.stringTitle.toLowerCase().startsWith(char) && !item.isDisabled);
11
+ const itemIndex = items.findIndex((item, index) => index > focusedIndex &&
12
+ isItemFocusable(item) &&
13
+ item.type === "interactive" &&
14
+ item.stringTitle.toLowerCase().startsWith(char));
12
15
  if (itemIndex !== -1) {
13
16
  setFocusedIndex(itemIndex);
14
17
  return;
15
18
  }
16
19
  // If not found after the current index, start from the beginning
17
- const fromStartIndex = items.findIndex((item) => item.stringTitle.toLowerCase().startsWith(char) && !item.isDisabled);
20
+ const fromStartIndex = items.findIndex((item) => isItemFocusable(item) &&
21
+ item.type === "interactive" &&
22
+ item.stringTitle.toLowerCase().startsWith(char));
18
23
  if (fromStartIndex !== -1) {
19
24
  setFocusedIndex(fromStartIndex);
20
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"firstCharacterSearch.js","sourceRoot":"","sources":["../../../../src/@ui/UiListbox/defaults/firstCharacterSearch.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAMhC;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAChC,KAA0B,EAC1B,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe,EAAwB;IAE9D,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IAErC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO;IACX,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAC7B,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACZ,KAAK,GAAG,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAClG,CAAC;IAEF,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACnB,eAAe,CAAC,SAAS,CAAC,CAAC;QAC3B,OAAO;IACX,CAAC;IAED,iEAAiE;IACjE,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAClC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAChF,CAAC;IAEF,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;QACxB,eAAe,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"firstCharacterSearch.js","sourceRoot":"","sources":["../../../../src/@ui/UiListbox/defaults/firstCharacterSearch.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAMhC;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAChC,KAA0B,EAC1B,EACI,KAAK,EACL,YAAY,EACZ,eAAe,EACf,eAAe,GACoC;IAEvD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IAErC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO;IACX,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAC7B,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACZ,KAAK,GAAG,YAAY;QACpB,eAAe,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,KAAK,aAAa;QAC3B,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CACtD,CAAC;IAEF,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACnB,eAAe,CAAC,SAAS,CAAC,CAAC;QAC3B,OAAO;IACX,CAAC;IAED,iEAAiE;IACjE,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAClC,CAAC,IAAI,EAAE,EAAE,CACL,eAAe,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,KAAK,aAAa;QAC3B,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CACtD,CAAC;IAEF,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;QACxB,eAAe,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC;AACL,CAAC"}
@@ -3,7 +3,16 @@ import { IDropdownBodyRenderProps } from "../../Dropdown/index.js";
3
3
  /**
4
4
  * @internal
5
5
  */
6
- export interface IUiListboxItem<T> {
6
+ export interface IUiListboxStaticItem<T> {
7
+ type: "static";
8
+ id?: string;
9
+ data: T;
10
+ }
11
+ /**
12
+ * @internal
13
+ */
14
+ export interface IUiListboxInteractiveItem<T> {
15
+ type: "interactive";
7
16
  id: string;
8
17
  stringTitle: string;
9
18
  isDisabled?: boolean;
@@ -12,8 +21,12 @@ export interface IUiListboxItem<T> {
12
21
  /**
13
22
  * @internal
14
23
  */
15
- export interface UiListboxItemProps<T> {
16
- item: IUiListboxItem<T>;
24
+ export type IUiListboxItem<InteractiveItemData, StaticItemData = React.ReactNode> = IUiListboxStaticItem<StaticItemData> | IUiListboxInteractiveItem<InteractiveItemData>;
25
+ /**
26
+ * @internal
27
+ */
28
+ export interface UiListboxInteractiveItemProps<T> {
29
+ item: IUiListboxInteractiveItem<T>;
17
30
  isFocused: boolean;
18
31
  isSelected: boolean;
19
32
  onSelect: () => void;
@@ -21,29 +34,39 @@ export interface UiListboxItemProps<T> {
21
34
  /**
22
35
  * @internal
23
36
  */
24
- export interface IListboxContext<T> {
25
- items: IUiListboxItem<T>[];
37
+ export interface UiListboxStaticItemProps<T> {
38
+ item: IUiListboxStaticItem<T>;
39
+ }
40
+ /**
41
+ * @internal
42
+ */
43
+ export interface IListboxContext<InteractiveItemData, StaticItemData = React.ReactNode> {
44
+ items: IUiListboxItem<InteractiveItemData, StaticItemData>[];
26
45
  itemRefs: React.MutableRefObject<(HTMLLIElement | null)[]>;
27
- onSelect: (item: IUiListboxItem<T>) => void;
46
+ onSelect: (item: IUiListboxInteractiveItem<InteractiveItemData>) => void;
28
47
  onClose?: () => void;
29
- selectedItemId?: string;
30
- focusedIndex: number;
48
+ selectedItemId: string | undefined;
49
+ focusedIndex: number | undefined;
31
50
  setFocusedIndex: React.Dispatch<React.SetStateAction<number>>;
51
+ isItemFocusable: (item: IUiListboxItem<InteractiveItemData, StaticItemData>) => boolean;
32
52
  }
33
53
  /**
34
54
  * @internal
35
55
  */
36
- export interface UiListboxProps<T> {
37
- items: IUiListboxItem<T>[];
56
+ export interface UiListboxProps<InteractiveItemData, StaticItemData = React.ReactNode> {
57
+ items: IUiListboxItem<InteractiveItemData, StaticItemData>[];
38
58
  className?: string;
39
59
  maxWidth?: number;
40
- onSelect?: (item: IUiListboxItem<T>) => void;
60
+ onSelect?: (item: IUiListboxInteractiveItem<InteractiveItemData>) => void;
41
61
  onClose?: () => void;
42
- onUnhandledKeyDown?: (event: React.KeyboardEvent, context: IListboxContext<T>) => void;
62
+ onUnhandledKeyDown?: (event: React.KeyboardEvent, context: IListboxContext<InteractiveItemData, StaticItemData>) => void;
43
63
  selectedItemId?: string;
44
- ItemComponent?: React.ComponentType<UiListboxItemProps<any>>;
64
+ InteractiveItemComponent?: React.ComponentType<UiListboxInteractiveItemProps<InteractiveItemData>>;
65
+ StaticItemComponent?: React.ComponentType<UiListboxStaticItemProps<StaticItemData>>;
45
66
  shouldKeyboardActionPreventDefault?: boolean;
46
67
  shouldKeyboardActionStopPropagation?: boolean;
68
+ shouldCloseOnSelect?: boolean;
69
+ isDisabledFocusable?: boolean;
47
70
  ariaAttributes: IDropdownBodyRenderProps["ariaAttributes"];
48
71
  }
49
72
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiListbox/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC;CACX;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACjC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAExB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IAEpB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAC9B,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3D,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC5C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC7B,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAE3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAEvF,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAE7D,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,mCAAmC,CAAC,EAAE,OAAO,CAAC;IAE9C,cAAc,EAAE,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;CAC9D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiListbox/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,CAAC,CAAC;CACX;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB,CAAC,CAAC;IACxC,IAAI,EAAE,aAAa,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC;CACX;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,mBAAmB,EAAE,cAAc,GAAG,KAAK,CAAC,SAAS,IAC1E,oBAAoB,CAAC,cAAc,CAAC,GACpC,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,6BAA6B,CAAC,CAAC;IAC5C,IAAI,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC;IAEnC,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IAEpB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB,CAAC,CAAC;IACvC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,mBAAmB,EAAE,cAAc,GAAG,KAAK,CAAC,SAAS;IAClF,KAAK,EAAE,cAAc,CAAC,mBAAmB,EAAE,cAAc,CAAC,EAAE,CAAC;IAC7D,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3D,QAAQ,EAAE,CAAC,IAAI,EAAE,yBAAyB,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;IACzE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,eAAe,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,mBAAmB,EAAE,cAAc,CAAC,KAAK,OAAO,CAAC;CAC3F;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,mBAAmB,EAAE,cAAc,GAAG,KAAK,CAAC,SAAS;IACjF,KAAK,EAAE,cAAc,CAAC,mBAAmB,EAAE,cAAc,CAAC,EAAE,CAAC;IAE7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,yBAAyB,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;IAC1E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,kBAAkB,CAAC,EAAE,CACjB,KAAK,EAAE,KAAK,CAAC,aAAa,EAC1B,OAAO,EAAE,eAAe,CAAC,mBAAmB,EAAE,cAAc,CAAC,KAC5D,IAAI,CAAC;IAEV,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,wBAAwB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,6BAA6B,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACnG,mBAAmB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC,CAAC;IAEpF,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,mCAAmC,CAAC,EAAE,OAAO,CAAC;IAC9C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,cAAc,EAAE,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;CAC9D"}
package/esm/index.d.ts CHANGED
@@ -92,6 +92,7 @@ export type { UiPagedVirtualListProps, UiPagedVirtualListSkeletonItemProps, } fr
92
92
  export { UiFocusTrap } from "./@ui/UiFocusTrap/UiFocusTrap.js";
93
93
  export type { UiFocusTrapProps } from "./@ui/UiFocusTrap/UiFocusTrap.js";
94
94
  export { UiListbox } from "./@ui/UiListbox/UiListbox.js";
95
- export { makeSeparatorItem, separatorItemSymbol, DefaultUiListboxItemComponent, } from "./@ui/UiListbox/defaults/DefaultUiListboxItemComponent.js";
96
- export type { UiListboxProps, IListboxContext, UiListboxItemProps, IUiListboxItem, } from "./@ui/UiListbox/types.js";
95
+ export { DefaultUiListboxInteractiveItemComponent } from "./@ui/UiListbox/defaults/DefaultUiListboxInteractiveItemComponent.js";
96
+ export { separatorStaticItem, DefaultUiListboxStaticItemComponent, } from "./@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.js";
97
+ export type { UiListboxProps, IListboxContext, IUiListboxItem, IUiListboxStaticItem, UiListboxStaticItemProps, IUiListboxInteractiveItem, UiListboxInteractiveItemProps, } from "./@ui/UiListbox/types.js";
97
98
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/esm/index.js CHANGED
@@ -81,5 +81,6 @@ export { UiSkeleton } from "./@ui/UiSkeleton/UiSkeleton.js";
81
81
  export { UiPagedVirtualList } from "./@ui/UiPagedVirtualList/UiPagedVirtualList.js";
82
82
  export { UiFocusTrap } from "./@ui/UiFocusTrap/UiFocusTrap.js";
83
83
  export { UiListbox } from "./@ui/UiListbox/UiListbox.js";
84
- export { makeSeparatorItem, separatorItemSymbol, DefaultUiListboxItemComponent, } from "./@ui/UiListbox/defaults/DefaultUiListboxItemComponent.js";
84
+ export { DefaultUiListboxInteractiveItemComponent } from "./@ui/UiListbox/defaults/DefaultUiListboxInteractiveItemComponent.js";
85
+ export { separatorStaticItem, DefaultUiListboxStaticItemComponent, } from "./@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.js";
85
86
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC;;;;;;;;GAQG;AACH,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGnF,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAUtD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAKpF,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EACH,iBAAiB,EACjB,mBAAmB,EACnB,6BAA6B,GAChC,MAAM,2DAA2D,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC;;;;;;;;GAQG;AACH,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGnF,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAUtD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAKpF,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,wCAAwC,EAAE,MAAM,sEAAsE,CAAC;AAChI,OAAO,EACH,mBAAmB,EACnB,mCAAmC,GACtC,MAAM,iEAAiE,CAAC"}
@@ -548,7 +548,13 @@ export declare const defaultThemeMetadataObject: IThemeDefinition;
548
548
  /**
549
549
  * @internal
550
550
  */
551
- export declare function DefaultUiListboxItemComponent<T>({ item, isFocused, isSelected, onSelect, }: UiListboxItemProps<T>): React_2.ReactNode;
551
+ export declare function DefaultUiListboxInteractiveItemComponent<T>({ item, isFocused, isSelected, onSelect, }: UiListboxInteractiveItemProps<T>): React_2.ReactNode;
552
+
553
+ /**
554
+ * By default just renders the data.
555
+ * @internal
556
+ */
557
+ export declare function DefaultUiListboxStaticItemComponent<T>({ item, }: UiListboxStaticItemProps<T>): React_2.ReactNode;
552
558
 
553
559
  /**
554
560
  * @internal
@@ -2840,14 +2846,15 @@ export declare interface ILegacySingleSelectListProps<T> {
2840
2846
  /**
2841
2847
  * @internal
2842
2848
  */
2843
- export declare interface IListboxContext<T> {
2844
- items: IUiListboxItem<T>[];
2849
+ export declare interface IListboxContext<InteractiveItemData, StaticItemData = React_2.ReactNode> {
2850
+ items: IUiListboxItem<InteractiveItemData, StaticItemData>[];
2845
2851
  itemRefs: React_2.MutableRefObject<(HTMLLIElement | null)[]>;
2846
- onSelect: (item: IUiListboxItem<T>) => void;
2852
+ onSelect: (item: IUiListboxInteractiveItem<InteractiveItemData>) => void;
2847
2853
  onClose?: () => void;
2848
- selectedItemId?: string;
2849
- focusedIndex: number;
2854
+ selectedItemId: string | undefined;
2855
+ focusedIndex: number | undefined;
2850
2856
  setFocusedIndex: React_2.Dispatch<React_2.SetStateAction<number>>;
2857
+ isItemFocusable: (item: IUiListboxItem<InteractiveItemData, StaticItemData>) => boolean;
2851
2858
  }
2852
2859
 
2853
2860
  /**
@@ -4278,13 +4285,28 @@ export declare interface IUiChipAccessibilityConfig extends IAccessibilityConfig
4278
4285
  /**
4279
4286
  * @internal
4280
4287
  */
4281
- export declare interface IUiListboxItem<T> {
4288
+ export declare interface IUiListboxInteractiveItem<T> {
4289
+ type: "interactive";
4282
4290
  id: string;
4283
4291
  stringTitle: string;
4284
4292
  isDisabled?: boolean;
4285
4293
  data: T;
4286
4294
  }
4287
4295
 
4296
+ /**
4297
+ * @internal
4298
+ */
4299
+ export declare type IUiListboxItem<InteractiveItemData, StaticItemData = React_2.ReactNode> = IUiListboxStaticItem<StaticItemData> | IUiListboxInteractiveItem<InteractiveItemData>;
4300
+
4301
+ /**
4302
+ * @internal
4303
+ */
4304
+ export declare interface IUiListboxStaticItem<T> {
4305
+ type: "static";
4306
+ id?: string;
4307
+ data: T;
4308
+ }
4309
+
4288
4310
  /**
4289
4311
  * @internal
4290
4312
  */
@@ -4506,11 +4528,6 @@ export declare const LoadingSpinner: React_2.FC<ILoadingSpinner>;
4506
4528
  */
4507
4529
  export declare const LocaleSetting: React_2.VFC<ILocaleSettingProps>;
4508
4530
 
4509
- /**
4510
- * @internal
4511
- */
4512
- export declare const makeSeparatorItem: () => IUiListboxItem<typeof separatorItemSymbol>;
4513
-
4514
4531
  /**
4515
4532
  * @internal
4516
4533
  */
@@ -4875,11 +4892,6 @@ export declare type SelectedTime = {
4875
4892
  */
4876
4893
  export declare const Separator: React_2.FC;
4877
4894
 
4878
- /**
4879
- * @internal
4880
- */
4881
- export declare const separatorItemSymbol: unique symbol;
4882
-
4883
4895
  /**
4884
4896
  * @internal
4885
4897
  */
@@ -4893,6 +4905,11 @@ export declare type Separators = {
4893
4905
  decimal: string;
4894
4906
  };
4895
4907
 
4908
+ /**
4909
+ * @internal
4910
+ */
4911
+ export declare const separatorStaticItem: IUiListboxStaticItem<React_2.ReactNode>;
4912
+
4896
4913
  /**
4897
4914
  * @internal
4898
4915
  */
@@ -5343,13 +5360,13 @@ export declare interface UiIconProps {
5343
5360
  *
5344
5361
  * @internal
5345
5362
  */
5346
- export declare function UiListbox<T>({ items, className, maxWidth, onSelect, onClose, selectedItemId, ariaAttributes, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, ItemComponent, onUnhandledKeyDown, }: UiListboxProps<T>): React_2.ReactNode;
5363
+ export declare function UiListbox<InteractiveItemData, StaticItemData>({ items, className, maxWidth, onSelect, onClose, selectedItemId, ariaAttributes, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, shouldCloseOnSelect, isDisabledFocusable, InteractiveItemComponent, StaticItemComponent, onUnhandledKeyDown, }: UiListboxProps<InteractiveItemData, StaticItemData>): React_2.ReactNode;
5347
5364
 
5348
5365
  /**
5349
5366
  * @internal
5350
5367
  */
5351
- export declare interface UiListboxItemProps<T> {
5352
- item: IUiListboxItem<T>;
5368
+ export declare interface UiListboxInteractiveItemProps<T> {
5369
+ item: IUiListboxInteractiveItem<T>;
5353
5370
  isFocused: boolean;
5354
5371
  isSelected: boolean;
5355
5372
  onSelect: () => void;
@@ -5358,20 +5375,30 @@ export declare interface UiListboxItemProps<T> {
5358
5375
  /**
5359
5376
  * @internal
5360
5377
  */
5361
- export declare interface UiListboxProps<T> {
5362
- items: IUiListboxItem<T>[];
5378
+ export declare interface UiListboxProps<InteractiveItemData, StaticItemData = React_2.ReactNode> {
5379
+ items: IUiListboxItem<InteractiveItemData, StaticItemData>[];
5363
5380
  className?: string;
5364
5381
  maxWidth?: number;
5365
- onSelect?: (item: IUiListboxItem<T>) => void;
5382
+ onSelect?: (item: IUiListboxInteractiveItem<InteractiveItemData>) => void;
5366
5383
  onClose?: () => void;
5367
- onUnhandledKeyDown?: (event: React_2.KeyboardEvent, context: IListboxContext<T>) => void;
5384
+ onUnhandledKeyDown?: (event: React_2.KeyboardEvent, context: IListboxContext<InteractiveItemData, StaticItemData>) => void;
5368
5385
  selectedItemId?: string;
5369
- ItemComponent?: React_2.ComponentType<UiListboxItemProps<any>>;
5386
+ InteractiveItemComponent?: React_2.ComponentType<UiListboxInteractiveItemProps<InteractiveItemData>>;
5387
+ StaticItemComponent?: React_2.ComponentType<UiListboxStaticItemProps<StaticItemData>>;
5370
5388
  shouldKeyboardActionPreventDefault?: boolean;
5371
5389
  shouldKeyboardActionStopPropagation?: boolean;
5390
+ shouldCloseOnSelect?: boolean;
5391
+ isDisabledFocusable?: boolean;
5372
5392
  ariaAttributes: IDropdownBodyRenderProps["ariaAttributes"];
5373
5393
  }
5374
5394
 
5395
+ /**
5396
+ * @internal
5397
+ */
5398
+ export declare interface UiListboxStaticItemProps<T> {
5399
+ item: IUiListboxStaticItem<T>;
5400
+ }
5401
+
5375
5402
  /**
5376
5403
  * @internal
5377
5404
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-kit",
3
- "version": "10.26.0-alpha.50",
3
+ "version": "10.26.0-alpha.51",
4
4
  "description": "GoodData SDK - UI Building Components",
5
5
  "repository": {
6
6
  "type": "git",
@@ -69,11 +69,11 @@
69
69
  "tslib": "^2.5.0",
70
70
  "uuid": "^8.3.2",
71
71
  "unified": "^11.0.5",
72
- "@gooddata/sdk-backend-spi": "10.26.0-alpha.50",
73
- "@gooddata/sdk-model": "10.26.0-alpha.50",
74
- "@gooddata/sdk-ui-theme-provider": "10.26.0-alpha.50",
75
- "@gooddata/sdk-ui": "10.26.0-alpha.50",
76
- "@gooddata/util": "10.26.0-alpha.50"
72
+ "@gooddata/sdk-backend-spi": "10.26.0-alpha.51",
73
+ "@gooddata/sdk-model": "10.26.0-alpha.51",
74
+ "@gooddata/sdk-ui": "10.26.0-alpha.51",
75
+ "@gooddata/util": "10.26.0-alpha.51",
76
+ "@gooddata/sdk-ui-theme-provider": "10.26.0-alpha.51"
77
77
  },
78
78
  "peerDependencies": {
79
79
  "react": "^16.10.0 || ^17.0.0 || ^18.0.0",
@@ -132,8 +132,8 @@
132
132
  "typescript": "5.3.3",
133
133
  "vitest": "3.0.8",
134
134
  "vitest-dom": "0.1.1",
135
- "@gooddata/reference-workspace": "10.26.0-alpha.50",
136
- "@gooddata/sdk-backend-mockingbird": "10.26.0-alpha.50"
135
+ "@gooddata/sdk-backend-mockingbird": "10.26.0-alpha.51",
136
+ "@gooddata/reference-workspace": "10.26.0-alpha.51"
137
137
  },
138
138
  "scripts": {
139
139
  "clean": "rm -rf ci dist esm coverage styles/css *.log tsconfig.tsbuildinfo",
@@ -1,15 +0,0 @@
1
- import React from "react";
2
- import { IUiListboxItem, UiListboxItemProps } from "../types.js";
3
- /**
4
- * @internal
5
- */
6
- export declare const separatorItemSymbol: unique symbol;
7
- /**
8
- * @internal
9
- */
10
- export declare const makeSeparatorItem: () => IUiListboxItem<typeof separatorItemSymbol>;
11
- /**
12
- * @internal
13
- */
14
- export declare function DefaultUiListboxItemComponent<T>({ item, isFocused, isSelected, onSelect, }: UiListboxItemProps<T>): React.ReactNode;
15
- //# sourceMappingURL=DefaultUiListboxItemComponent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DefaultUiListboxItemComponent.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiListbox/defaults/DefaultUiListboxItemComponent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,mBAAmB,eAAsB,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAO,eAAe,0BAA0B,CAK5E,CAAC;AAEH;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,CAAC,EAAE,EAC7C,IAAI,EACJ,SAAS,EACT,UAAU,EACV,QAAQ,GACX,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAiBzC"}
@@ -1,31 +0,0 @@
1
- // (C) 2025 GoodData Corporation
2
- import React from "react";
3
- import { Separator } from "../../../List/index.js";
4
- import { e } from "../listboxBem.js";
5
- import { ShortenedText } from "../../../ShortenedText/index.js";
6
- import { v4 as uuid } from "uuid";
7
- /**
8
- * @internal
9
- */
10
- export const separatorItemSymbol = Symbol("separator");
11
- /**
12
- * @internal
13
- */
14
- export const makeSeparatorItem = () => ({
15
- id: `separator-${uuid()}`,
16
- data: separatorItemSymbol,
17
- stringTitle: "Separator",
18
- isDisabled: true,
19
- });
20
- /**
21
- * @internal
22
- */
23
- export function DefaultUiListboxItemComponent({ item, isFocused, isSelected, onSelect, }) {
24
- return item.data === separatorItemSymbol ? (React.createElement(Separator, null)) : (React.createElement("div", { className: e("item", {
25
- isFocused,
26
- isSelected,
27
- isDisabled: !!item.isDisabled,
28
- }), onClick: item.isDisabled ? undefined : onSelect },
29
- React.createElement(ShortenedText, { className: e("item-title"), ellipsisPosition: "end" }, item.stringTitle)));
30
- }
31
- //# sourceMappingURL=DefaultUiListboxItemComponent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DefaultUiListboxItemComponent.js","sourceRoot":"","sources":["../../../../src/@ui/UiListbox/defaults/DefaultUiListboxItemComponent.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAGlC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAA+C,EAAE,CAAC,CAAC;IAChF,EAAE,EAAE,aAAa,IAAI,EAAE,EAAE;IACzB,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,WAAW;IACxB,UAAU,EAAE,IAAI;CACnB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAI,EAC7C,IAAI,EACJ,SAAS,EACT,UAAU,EACV,QAAQ,GACY;IACpB,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC,CACvC,oBAAC,SAAS,OAAG,CAChB,CAAC,CAAC,CAAC,CACA,6BACI,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,SAAS;YACT,UAAU;YACV,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU;SAChC,CAAC,EACF,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;QAE/C,oBAAC,aAAa,IAAC,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,gBAAgB,EAAE,KAAK,IAC7D,IAAI,CAAC,WAAW,CACL,CACd,CACT,CAAC;AACN,CAAC"}