@gooddata/sdk-ui-kit 10.27.0-alpha.12 → 10.27.0-alpha.13

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 (54) hide show
  1. package/esm/@ui/UiListbox/UiListbox.d.ts.map +1 -1
  2. package/esm/@ui/UiListbox/UiListbox.js +1 -3
  3. package/esm/@ui/UiListbox/UiListbox.js.map +1 -1
  4. package/esm/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.d.ts +5 -2
  5. package/esm/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.d.ts.map +1 -1
  6. package/esm/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.js.map +1 -1
  7. package/esm/@ui/UiListbox/defaults/firstCharacterSearch.d.ts +2 -2
  8. package/esm/@ui/UiListbox/defaults/firstCharacterSearch.d.ts.map +1 -1
  9. package/esm/@ui/UiListbox/defaults/firstCharacterSearch.js +1 -1
  10. package/esm/@ui/UiListbox/defaults/firstCharacterSearch.js.map +1 -1
  11. package/esm/@ui/UiListbox/types.d.ts +4 -4
  12. package/esm/@ui/UiListbox/types.d.ts.map +1 -1
  13. package/esm/@ui/UiMenu/UiMenu.d.ts +11 -0
  14. package/esm/@ui/UiMenu/UiMenu.d.ts.map +1 -0
  15. package/esm/@ui/UiMenu/UiMenu.js +94 -0
  16. package/esm/@ui/UiMenu/UiMenu.js.map +1 -0
  17. package/esm/@ui/UiMenu/defaults/DefaultUiMenuHeaderComponent.d.ts +9 -0
  18. package/esm/@ui/UiMenu/defaults/DefaultUiMenuHeaderComponent.d.ts.map +1 -0
  19. package/esm/@ui/UiMenu/defaults/DefaultUiMenuHeaderComponent.js +23 -0
  20. package/esm/@ui/UiMenu/defaults/DefaultUiMenuHeaderComponent.js.map +1 -0
  21. package/esm/@ui/UiMenu/defaults/DefaultUiMenuInteractiveItemComponent.d.ts +7 -0
  22. package/esm/@ui/UiMenu/defaults/DefaultUiMenuInteractiveItemComponent.d.ts.map +1 -0
  23. package/esm/@ui/UiMenu/defaults/DefaultUiMenuInteractiveItemComponent.js +16 -0
  24. package/esm/@ui/UiMenu/defaults/DefaultUiMenuInteractiveItemComponent.js.map +1 -0
  25. package/esm/@ui/UiMenu/defaults/DefaultUiMenuStaticItemComponent.d.ts +8 -0
  26. package/esm/@ui/UiMenu/defaults/DefaultUiMenuStaticItemComponent.d.ts.map +1 -0
  27. package/esm/@ui/UiMenu/defaults/DefaultUiMenuStaticItemComponent.js +9 -0
  28. package/esm/@ui/UiMenu/defaults/DefaultUiMenuStaticItemComponent.js.map +1 -0
  29. package/esm/@ui/UiMenu/hooks.d.ts +16 -0
  30. package/esm/@ui/UiMenu/hooks.d.ts.map +1 -0
  31. package/esm/@ui/UiMenu/hooks.js +87 -0
  32. package/esm/@ui/UiMenu/hooks.js.map +1 -0
  33. package/esm/@ui/UiMenu/itemUtils.d.ts +17 -0
  34. package/esm/@ui/UiMenu/itemUtils.d.ts.map +1 -0
  35. package/esm/@ui/UiMenu/itemUtils.js +73 -0
  36. package/esm/@ui/UiMenu/itemUtils.js.map +1 -0
  37. package/esm/@ui/UiMenu/menuBem.d.ts +2 -0
  38. package/esm/@ui/UiMenu/menuBem.d.ts.map +1 -0
  39. package/esm/@ui/UiMenu/menuBem.js +4 -0
  40. package/esm/@ui/UiMenu/menuBem.js.map +1 -0
  41. package/esm/@ui/UiMenu/types.d.ts +86 -0
  42. package/esm/@ui/UiMenu/types.d.ts.map +1 -0
  43. package/esm/@ui/UiMenu/types.js +3 -0
  44. package/esm/@ui/UiMenu/types.js.map +1 -0
  45. package/esm/index.d.ts +5 -1
  46. package/esm/index.d.ts.map +1 -1
  47. package/esm/index.js +3 -0
  48. package/esm/index.js.map +1 -1
  49. package/esm/sdk-ui-kit.d.ts +127 -17
  50. package/package.json +8 -8
  51. package/src/@ui/UiMenu/UiMenu.scss +115 -0
  52. package/src/@ui/index.scss +1 -0
  53. package/styles/css/main.css +95 -0
  54. package/styles/css/main.css.map +1 -1
@@ -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,EAA8D,cAAc,EAAE,MAAM,YAAY,CAAC;AAGxG;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,mBAAmB,EAAE,cAAc,EAAE,EAC3D,KAAK,EAEL,SAAS,EACT,aAAa,EACb,QAAQ,EAER,QAAQ,EACR,OAAO,EACP,kBAAyC,EAEzC,cAAc,EAEd,wBAAmE,EACnE,mBAAyD,EAEzD,kCAAkC,EAClC,mCAAmC,EACnC,mBAA0B,EAC1B,mBAA2B,EAE3B,cAAc,GACjB,EAAE,cAAc,CAAC,mBAAmB,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,SAAS,CA8KvE"}
1
+ {"version":3,"file":"UiListbox.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiListbox/UiListbox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,EAAgE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG1G;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,mBAAmB,EAAE,cAAc,EAAE,EAC3D,KAAK,EAEL,SAAS,EACT,aAAa,EACb,QAAQ,EAER,QAAQ,EACR,OAAO,EACP,kBAAyC,EAEzC,cAAc,EAEd,wBAAmE,EACnE,mBAAyD,EAEzD,kCAAkC,EAClC,mCAAmC,EACnC,mBAA0B,EAC1B,mBAA2B,EAE3B,cAAc,GACjB,EAAE,cAAc,CAAC,mBAAmB,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,SAAS,CA4KvE"}
@@ -1,7 +1,6 @@
1
1
  // (C) 2025 GoodData Corporation
2
2
  import React from "react";
3
3
  import cx from "classnames";
4
- import { useId } from "../../utils/useId.js";
5
4
  import { b, e } from "./listboxBem.js";
6
5
  import { makeMenuKeyboardNavigation } from "../@utils/keyboardNavigation.js";
7
6
  import { useAutoupdateRef } from "@gooddata/sdk-ui";
@@ -121,9 +120,8 @@ export function UiListbox({ items, className, itemClassName, maxWidth, onSelect,
121
120
  shouldKeyboardActionPreventDefault,
122
121
  shouldKeyboardActionStopPropagation,
123
122
  ]);
124
- const listboxId = useId();
125
123
  return (React.createElement("div", { className: cx(b(), className), style: { maxWidth } },
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), className: itemClassName },
124
+ React.createElement("ul", { className: e("items"), tabIndex: 0, onKeyDown: handleKeyDown, "aria-activedescendant": makeItemId(ariaAttributes.id, 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(ariaAttributes.id, item), className: itemClassName },
127
125
  React.createElement(InteractiveItemComponent, { onSelect: () => {
128
126
  handleSelectItem(item);
129
127
  }, item: item, isFocused: index === focusedIndex, isSelected: item.id === selectedItemId }))) : (React.createElement("li", { key: item.id ?? index, ref: (el) => (itemRefs.current[index] = el), className: itemClassName },
@@ -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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"}
@@ -1,9 +1,12 @@
1
1
  import React from "react";
2
- import { IUiListboxStaticItem, UiListboxStaticItemProps } from "../types.js";
2
+ import { UiListboxStaticItemProps } from "../types.js";
3
3
  /**
4
4
  * @internal
5
5
  */
6
- export declare const separatorStaticItem: IUiListboxStaticItem<React.ReactNode>;
6
+ export declare const separatorStaticItem: {
7
+ data: React.JSX.Element;
8
+ type: "static";
9
+ };
7
10
  /**
8
11
  * By default just renders the data.
9
12
  * @internal
@@ -1 +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"}
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,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;CAG/B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,CAAC,EAAE,EACnD,IAAI,GACP,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAE/C"}
@@ -1 +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"}
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,GAAG;IAC/B,IAAI,EAAE,oBAAC,SAAS,OAAG;IACnB,IAAI,EAAE,QAAiB;CAC1B,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,mCAAmC,CAAI,EACnD,IAAI,GACsB;IAC1B,OAAO,IAAI,CAAC,IAAuB,CAAC;AACxC,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import React from "react";
2
- import { IListboxContext } from "../types.js";
2
+ import { IUiListboxContext } from "../types.js";
3
3
  /**
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<InteractiveItemData, StaticItemData>(event: React.KeyboardEvent, { items, focusedIndex, setFocusedIndex, isItemFocusable, }: IListboxContext<InteractiveItemData, StaticItemData>): void;
7
+ export declare function firstCharacterSearch<InteractiveItemData, StaticItemData>(event: React.KeyboardEvent, { items, focusedIndex, setFocusedIndex, isItemFocusable, }: IUiListboxContext<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,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"}
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,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD;;;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,iBAAiB,CAAC,mBAAmB,EAAE,cAAc,CAAC,QAgC5D"}
@@ -8,7 +8,7 @@ export function firstCharacterSearch(event, { items, focusedIndex, setFocusedInd
8
8
  if (char.length !== 1) {
9
9
  return;
10
10
  }
11
- const itemIndex = items.findIndex((item, index) => index > focusedIndex &&
11
+ const itemIndex = items.findIndex((item, index) => index > (focusedIndex ?? 0) &&
12
12
  isItemFocusable(item) &&
13
13
  item.type === "interactive" &&
14
14
  item.stringTitle.toLowerCase().startsWith(char));
@@ -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,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"}
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,GACsC;IAEzD,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,CAAC,YAAY,IAAI,CAAC,CAAC;QAC3B,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"}
@@ -40,14 +40,14 @@ export interface UiListboxStaticItemProps<T> {
40
40
  /**
41
41
  * @internal
42
42
  */
43
- export interface IListboxContext<InteractiveItemData, StaticItemData = React.ReactNode> {
43
+ export interface IUiListboxContext<InteractiveItemData, StaticItemData = React.ReactNode> {
44
44
  items: IUiListboxItem<InteractiveItemData, StaticItemData>[];
45
45
  itemRefs: React.MutableRefObject<(HTMLLIElement | null)[]>;
46
46
  onSelect: (item: IUiListboxInteractiveItem<InteractiveItemData>) => void;
47
47
  onClose?: () => void;
48
48
  selectedItemId: string | undefined;
49
49
  focusedIndex: number | undefined;
50
- setFocusedIndex: React.Dispatch<React.SetStateAction<number>>;
50
+ setFocusedIndex: React.Dispatch<React.SetStateAction<number | undefined>>;
51
51
  isItemFocusable: (item: IUiListboxItem<InteractiveItemData, StaticItemData>) => boolean;
52
52
  }
53
53
  /**
@@ -60,7 +60,7 @@ export interface UiListboxProps<InteractiveItemData, StaticItemData = React.Reac
60
60
  maxWidth?: number;
61
61
  onSelect?: (item: IUiListboxInteractiveItem<InteractiveItemData>) => void;
62
62
  onClose?: () => void;
63
- onUnhandledKeyDown?: (event: React.KeyboardEvent, context: IListboxContext<InteractiveItemData, StaticItemData>) => void;
63
+ onUnhandledKeyDown?: (event: React.KeyboardEvent, context: IUiListboxContext<InteractiveItemData, StaticItemData>) => void;
64
64
  selectedItemId?: string;
65
65
  InteractiveItemComponent?: React.ComponentType<UiListboxInteractiveItemProps<InteractiveItemData>>;
66
66
  StaticItemComponent?: React.ComponentType<UiListboxStaticItemProps<StaticItemData>>;
@@ -68,6 +68,6 @@ export interface UiListboxProps<InteractiveItemData, StaticItemData = React.Reac
68
68
  shouldKeyboardActionStopPropagation?: boolean;
69
69
  shouldCloseOnSelect?: boolean;
70
70
  isDisabledFocusable?: boolean;
71
- ariaAttributes: IDropdownBodyRenderProps["ariaAttributes"];
71
+ ariaAttributes: Omit<IDropdownBodyRenderProps["ariaAttributes"], "role">;
72
72
  }
73
73
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiListbox/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiListbox/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ import { UiMenuProps } from "./types.js";
3
+ /**
4
+ * An accessible menu component that can be navigated by keyboard.
5
+ * Usable in a <Dropdown /> component.
6
+ * Should implement https://www.w3.org/WAI/ARIA/apg/patterns/menubar/
7
+ *
8
+ * @internal
9
+ */
10
+ export declare function UiMenu<InteractiveItemData, StaticItemData>({ items, className, itemClassName, maxWidth, onSelect, onClose, onUnhandledKeyDown, InteractiveItemComponent, StaticItemComponent, MenuHeaderComponent, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, shouldCloseOnSelect, isDisabledFocusable, ariaAttributes, }: UiMenuProps<InteractiveItemData, StaticItemData>): React.ReactNode;
11
+ //# sourceMappingURL=UiMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UiMenu.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/UiMenu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAoE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO3G;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,mBAAmB,EAAE,cAAc,EAAE,EACxD,KAAK,EAEL,SAAS,EACT,aAAa,EACb,QAAQ,EAER,QAAQ,EACR,OAAO,EACP,kBAAkB,EAElB,wBAAgE,EAChE,mBAAsD,EACtD,mBAAkD,EAElD,kCAAkC,EAClC,mCAAmC,EACnC,mBAA0B,EAC1B,mBAA0B,EAE1B,cAAc,GACjB,EAAE,WAAW,CAAC,mBAAmB,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,SAAS,CA+JpE"}
@@ -0,0 +1,94 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import React from "react";
3
+ import cx from "classnames";
4
+ import { b, e } from "./menuBem.js";
5
+ import { useAutoupdateRef } from "@gooddata/sdk-ui";
6
+ import { DefaultUiMenuInteractiveItemComponent } from "./defaults/DefaultUiMenuInteractiveItemComponent.js";
7
+ import { DefaultUiMenuStaticItemComponent } from "./defaults/DefaultUiMenuStaticItemComponent.js";
8
+ import { getInteractiveItem, getItemParent, getItemsByParent, getSiblingItems } from "./itemUtils.js";
9
+ import { DefaultUiMenuHeaderComponent } from "./defaults/DefaultUiMenuHeaderComponent.js";
10
+ import { useItemRefs, useKeyNavigation } from "./hooks.js";
11
+ /**
12
+ * An accessible menu component that can be navigated by keyboard.
13
+ * Usable in a <Dropdown /> component.
14
+ * Should implement https://www.w3.org/WAI/ARIA/apg/patterns/menubar/
15
+ *
16
+ * @internal
17
+ */
18
+ export function UiMenu({ items, className, itemClassName, maxWidth, onSelect, onClose, onUnhandledKeyDown, InteractiveItemComponent = DefaultUiMenuInteractiveItemComponent, StaticItemComponent = DefaultUiMenuStaticItemComponent, MenuHeaderComponent = DefaultUiMenuHeaderComponent, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, shouldCloseOnSelect = true, isDisabledFocusable = true, ariaAttributes, }) {
19
+ const [controlType, setControlType] = React.useState("unknown");
20
+ const menuComponentRef = React.useRef(null);
21
+ const isItemFocusable = React.useCallback((item) => {
22
+ if (!item || item.type !== "interactive") {
23
+ return false;
24
+ }
25
+ return isDisabledFocusable || !item.isDisabled;
26
+ }, [isDisabledFocusable]);
27
+ const [focusedId, setFocusedId_internal] = React.useState(() => items.find(isItemFocusable)?.id);
28
+ const setFocusedId = React.useCallback((...args) => {
29
+ setFocusedId_internal(...args);
30
+ // Focus is lost when clicking on an item that opens a submenu. We need to refocus the menu.
31
+ menuComponentRef.current?.focus();
32
+ }, []);
33
+ const focusedItem = focusedId === undefined ? undefined : getInteractiveItem(items, focusedId);
34
+ const { itemsContainerRef, itemRefs, setItemRef } = useItemRefs(focusedId);
35
+ const handleSelectItem = React.useCallback((item) => {
36
+ if (!item || item.isDisabled) {
37
+ return;
38
+ }
39
+ // If there is no subMenu, select the item
40
+ if (!item.subMenu) {
41
+ onSelect?.(item);
42
+ shouldCloseOnSelect && onClose?.();
43
+ return;
44
+ }
45
+ // Otherwise focus the first focusable child
46
+ const itemToFocus = getItemsByParent(items, item.id)?.filter(isItemFocusable)[0];
47
+ if (!itemToFocus) {
48
+ return;
49
+ }
50
+ setFocusedId(itemToFocus.id);
51
+ menuComponentRef.current?.focus();
52
+ }, [isItemFocusable, items, onClose, onSelect, setFocusedId, shouldCloseOnSelect]);
53
+ const handleFocusItemByMouse = React.useCallback((id) => () => {
54
+ if (controlType !== "mouse") {
55
+ return;
56
+ }
57
+ setFocusedId(id);
58
+ }, [controlType, setFocusedId]);
59
+ const context = {
60
+ itemRefs,
61
+ focusedId,
62
+ items,
63
+ focusedItem,
64
+ onClose,
65
+ onSelect: handleSelectItem,
66
+ setFocusedId,
67
+ isItemFocusable,
68
+ };
69
+ const contextRef = useAutoupdateRef(context);
70
+ const handleKeyDown = useKeyNavigation({
71
+ menuContextRef: contextRef,
72
+ onUnhandledKeyDown,
73
+ shouldKeyboardActionPreventDefault,
74
+ shouldKeyboardActionStopPropagation,
75
+ });
76
+ const currentMenuLevelItems = React.useMemo(() => (focusedId === undefined ? [] : getSiblingItems(items, focusedId) ?? []), [items, focusedId]);
77
+ const parentItem = focusedId === undefined ? undefined : getItemParent(items, focusedId);
78
+ const handleBack = React.useCallback(() => {
79
+ if (!parentItem) {
80
+ return;
81
+ }
82
+ setFocusedId(parentItem.id);
83
+ }, [parentItem, setFocusedId]);
84
+ return (React.createElement("div", { className: cx(b(), b({ controlType }), className), style: { maxWidth }, onKeyDownCapture: () => setControlType("keyboard"), onMouseMoveCapture: () => setControlType("mouse") },
85
+ React.createElement(MenuHeaderComponent, { onBack: handleBack, onClose: onClose, parentItem: parentItem }),
86
+ React.createElement("div", { className: e("items-container"), ref: itemsContainerRef },
87
+ React.createElement("menu", { className: e("items"), tabIndex: 0, onKeyDown: handleKeyDown, "aria-activedescendant": makeItemId(ariaAttributes.id, focusedItem), ...ariaAttributes, role: "menu", ref: menuComponentRef }, currentMenuLevelItems.map((item, index) => item.type === "interactive" ? (React.createElement("li", { key: item.id, ref: setItemRef(item.id), role: "menuitem", "aria-haspopup": item.subMenu ? "menu" : undefined, "aria-disabled": item.isDisabled, onMouseMove: handleFocusItemByMouse(item.id), tabIndex: -1, id: makeItemId(ariaAttributes.id, item), className: typeof itemClassName === "function" ? itemClassName(item) : itemClassName },
88
+ React.createElement(InteractiveItemComponent, { onSelect: () => {
89
+ handleSelectItem(item);
90
+ }, item: item, isFocused: item.id === focusedId }))) : (React.createElement("li", { role: "none", key: item.id ?? index, className: typeof itemClassName === "function" ? itemClassName(item) : itemClassName },
91
+ React.createElement(StaticItemComponent, { item: item }))))))));
92
+ }
93
+ const makeItemId = (listboxId, item) => item && item.type === "interactive" ? `item-${listboxId}-${item.id}` : undefined;
94
+ //# sourceMappingURL=UiMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UiMenu.js","sourceRoot":"","sources":["../../../src/@ui/UiMenu/UiMenu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ import { UiMenuHeaderProps } from "../types.js";
3
+ /**
4
+ * Renders the submenu header when in a submenu.
5
+ * If not in a submenu, returns null.
6
+ * @internal
7
+ */
8
+ export declare function DefaultUiMenuHeaderComponent<InteractiveItemData, StaticItemData>({ onBack, onClose, parentItem, }: UiMenuHeaderProps<InteractiveItemData, StaticItemData>): React.ReactNode;
9
+ //# sourceMappingURL=DefaultUiMenuHeaderComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultUiMenuHeaderComponent.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiMenu/defaults/DefaultUiMenuHeaderComponent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAKhD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,mBAAmB,EAAE,cAAc,EAAE,EAC9E,MAAM,EACN,OAAO,EACP,UAAU,GACb,EAAE,iBAAiB,CAAC,mBAAmB,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,SAAS,CAgC1E"}
@@ -0,0 +1,23 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import React from "react";
3
+ import { e } from "../menuBem.js";
4
+ import { UiIconButton } from "../../UiIconButton/UiIconButton.js";
5
+ import { useIntl } from "react-intl";
6
+ import { ShortenedText } from "../../../ShortenedText/index.js";
7
+ /**
8
+ * Renders the submenu header when in a submenu.
9
+ * If not in a submenu, returns null.
10
+ * @internal
11
+ */
12
+ export function DefaultUiMenuHeaderComponent({ onBack, onClose, parentItem, }) {
13
+ const { formatMessage } = useIntl();
14
+ if (!parentItem) {
15
+ return null;
16
+ }
17
+ return (React.createElement("div", { role: "presentation", className: e("menu-header") },
18
+ React.createElement("button", { onClick: onBack, className: e("menu-header-title"), "aria-label": formatMessage({ id: "menu.back" }) },
19
+ React.createElement("i", { className: "gd-icon-navigateleft" }),
20
+ React.createElement(ShortenedText, { tagName: "h3", ellipsisPosition: "end", className: e("menu-header-title-text") }, parentItem.stringTitle)),
21
+ React.createElement(UiIconButton, { size: "small", variant: "tertiary", icon: "close", label: formatMessage({ id: "menu.close" }), onClick: onClose })));
22
+ }
23
+ //# sourceMappingURL=DefaultUiMenuHeaderComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultUiMenuHeaderComponent.js","sourceRoot":"","sources":["../../../../src/@ui/UiMenu/defaults/DefaultUiMenuHeaderComponent.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAsC,EAC9E,MAAM,EACN,OAAO,EACP,UAAU,GAC2C;IACrD,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IAEpC,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CACH,6BAAK,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC;QAClD,gCACI,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC,gBACrB,aAAa,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC;YAE9C,2BAAG,SAAS,EAAC,sBAAsB,GAAG;YACtC,oBAAC,aAAa,IACV,OAAO,EAAE,IAAI,EACb,gBAAgB,EAAE,KAAK,EACvB,SAAS,EAAE,CAAC,CAAC,wBAAwB,CAAC,IAErC,UAAU,CAAC,WAAW,CACX,CACX;QACT,oBAAC,YAAY,IACT,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAC1C,OAAO,EAAE,OAAO,GAClB,CACA,CACT,CAAC;AACN,CAAC"}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import { UiMenuInteractiveItemProps } from "../types.js";
3
+ /**
4
+ * @internal
5
+ */
6
+ export declare function DefaultUiMenuInteractiveItemComponent<InteractiveItemData, StaticItemData>({ item, isFocused, onSelect, }: UiMenuInteractiveItemProps<InteractiveItemData, StaticItemData>): React.ReactNode;
7
+ //# sourceMappingURL=DefaultUiMenuInteractiveItemComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultUiMenuInteractiveItemComponent.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiMenu/defaults/DefaultUiMenuInteractiveItemComponent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzD;;GAEG;AACH,wBAAgB,qCAAqC,CAAC,mBAAmB,EAAE,cAAc,EAAE,EACvF,IAAI,EACJ,SAAS,EACT,QAAQ,GACX,EAAE,0BAA0B,CAAC,mBAAmB,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,SAAS,CAgBnF"}
@@ -0,0 +1,16 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import React from "react";
3
+ import { e } from "../menuBem.js";
4
+ import { ShortenedText } from "../../../ShortenedText/index.js";
5
+ /**
6
+ * @internal
7
+ */
8
+ export function DefaultUiMenuInteractiveItemComponent({ item, isFocused, onSelect, }) {
9
+ return (React.createElement("div", { className: e("item", {
10
+ isFocused,
11
+ isDisabled: !!item.isDisabled,
12
+ }), onClick: item.isDisabled ? undefined : onSelect },
13
+ React.createElement(ShortenedText, { className: e("item-title"), ellipsisPosition: "end" }, item.stringTitle),
14
+ !!item.subMenu && React.createElement("i", { className: "gd-icon-navigateright" })));
15
+ }
16
+ //# sourceMappingURL=DefaultUiMenuInteractiveItemComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultUiMenuInteractiveItemComponent.js","sourceRoot":"","sources":["../../../../src/@ui/UiMenu/defaults/DefaultUiMenuInteractiveItemComponent.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAGhE;;GAEG;AACH,MAAM,UAAU,qCAAqC,CAAsC,EACvF,IAAI,EACJ,SAAS,EACT,QAAQ,GACsD;IAC9D,OAAO,CACH,6BACI,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,SAAS;YACT,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;QAEf,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,2BAAG,SAAS,EAAC,uBAAuB,GAAG,CACxD,CACT,CAAC;AACN,CAAC"}
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ import { UiMenuStaticItemProps } from "../types.js";
3
+ /**
4
+ * By default just renders the data.
5
+ * @internal
6
+ */
7
+ export declare function DefaultUiMenuStaticItemComponent<T>({ item }: UiMenuStaticItemProps<T>): React.ReactNode;
8
+ //# sourceMappingURL=DefaultUiMenuStaticItemComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultUiMenuStaticItemComponent.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiMenu/defaults/DefaultUiMenuStaticItemComponent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAEvG"}
@@ -0,0 +1,9 @@
1
+ // (C) 2025 GoodData Corporation
2
+ /**
3
+ * By default just renders the data.
4
+ * @internal
5
+ */
6
+ export function DefaultUiMenuStaticItemComponent({ item }) {
7
+ return item.data;
8
+ }
9
+ //# sourceMappingURL=DefaultUiMenuStaticItemComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultUiMenuStaticItemComponent.js","sourceRoot":"","sources":["../../../../src/@ui/UiMenu/defaults/DefaultUiMenuStaticItemComponent.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAKhC;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAAI,EAAE,IAAI,EAA4B;IAClF,OAAO,IAAI,CAAC,IAAuB,CAAC;AACxC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import React from "react";
2
+ import { IUiMenuContext, UiMenuProps } from "./types.js";
3
+ export declare function useItemRefs(focusedId: string | undefined): {
4
+ itemRefs: React.MutableRefObject<{
5
+ [id: string]: HTMLElement;
6
+ }>;
7
+ setItemRef: (id: string) => (element: HTMLElement | null) => void;
8
+ itemsContainerRef: React.MutableRefObject<HTMLElement>;
9
+ };
10
+ export declare function useKeyNavigation<InteractiveItemData, StaticItemData>({ menuContextRef, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, onUnhandledKeyDown, }: {
11
+ menuContextRef: React.MutableRefObject<IUiMenuContext<InteractiveItemData, StaticItemData>>;
12
+ onUnhandledKeyDown: UiMenuProps<InteractiveItemData, StaticItemData>["onUnhandledKeyDown"];
13
+ shouldKeyboardActionPreventDefault?: boolean;
14
+ shouldKeyboardActionStopPropagation?: boolean;
15
+ }): (event: React.KeyboardEvent<Element>) => void;
16
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/hooks.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIzD,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;;;;qBAK5C,MAAM,eAAe,WAAW,GAAG,IAAI;;EAoBnD;AAED,wBAAgB,gBAAgB,CAAC,mBAAmB,EAAE,cAAc,EAAE,EAClE,cAAc,EACd,kCAAkC,EAClC,mCAAmC,EACnC,kBAAkB,GACrB,EAAE;IACC,cAAc,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC,CAAC;IAC5F,kBAAkB,EAAE,WAAW,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC3F,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,mCAAmC,CAAC,EAAE,OAAO,CAAC;CACjD,iDA+EA"}
@@ -0,0 +1,87 @@
1
+ // (C) 2022-2025 GoodData Corporation
2
+ import React from "react";
3
+ import { makeMenuKeyboardNavigation } from "../@utils/keyboardNavigation.js";
4
+ import { getClosestFocusableSibling, getItemParent, getSiblingItems } from "./itemUtils.js";
5
+ export function useItemRefs(focusedId) {
6
+ const itemsContainerRef = React.useRef(null);
7
+ const itemRefs = React.useRef({});
8
+ const setItemRef = React.useCallback((id) => (element) => {
9
+ if (!element) {
10
+ delete itemRefs.current[id];
11
+ return;
12
+ }
13
+ if (focusedId === id &&
14
+ itemsContainerRef.current &&
15
+ itemsContainerRef.current.scrollHeight > itemsContainerRef.current.clientHeight) {
16
+ element.scrollIntoView({ block: "nearest", behavior: "smooth" });
17
+ }
18
+ itemRefs.current[id] = element;
19
+ }, [focusedId]);
20
+ return { itemRefs, setItemRef, itemsContainerRef };
21
+ }
22
+ export function useKeyNavigation({ menuContextRef, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, onUnhandledKeyDown, }) {
23
+ return makeMenuKeyboardNavigation({
24
+ shouldPreventDefault: shouldKeyboardActionPreventDefault,
25
+ shouldStopPropagation: shouldKeyboardActionStopPropagation,
26
+ onFocusPrevious: () => {
27
+ const { setFocusedId, items, isItemFocusable } = menuContextRef.current;
28
+ setFocusedId((prevId) => getClosestFocusableSibling({
29
+ direction: "backward",
30
+ itemId: prevId,
31
+ items,
32
+ isItemFocusable,
33
+ })?.id ?? prevId);
34
+ },
35
+ onFocusNext: () => {
36
+ const { setFocusedId, items, isItemFocusable } = menuContextRef.current;
37
+ setFocusedId((prevId) => getClosestFocusableSibling({
38
+ direction: "forward",
39
+ itemId: prevId,
40
+ items,
41
+ isItemFocusable,
42
+ })?.id ?? prevId);
43
+ },
44
+ onFocusFirst: () => {
45
+ const { items, isItemFocusable, setFocusedId } = menuContextRef.current;
46
+ setFocusedId((prevId) => {
47
+ if (prevId === undefined) {
48
+ return items.find(isItemFocusable)?.id;
49
+ }
50
+ return getSiblingItems(items, prevId)?.find(isItemFocusable)?.id;
51
+ });
52
+ },
53
+ onFocusLast: () => {
54
+ const { items, isItemFocusable, setFocusedId } = menuContextRef.current;
55
+ setFocusedId((prevId) => {
56
+ if (prevId === undefined) {
57
+ return [...items].reverse().find(isItemFocusable)?.id;
58
+ }
59
+ return [...(getSiblingItems(items, prevId) ?? [])].reverse().find(isItemFocusable)?.id;
60
+ });
61
+ },
62
+ onSelect: () => {
63
+ const { onSelect, focusedItem } = menuContextRef.current;
64
+ onSelect(focusedItem);
65
+ },
66
+ onEnterLevel: () => {
67
+ const { onSelect, focusedItem } = menuContextRef.current;
68
+ onSelect(focusedItem);
69
+ },
70
+ onLeaveLevel: () => {
71
+ const { setFocusedId, items } = menuContextRef.current;
72
+ setFocusedId((prevId) => {
73
+ if (prevId === undefined) {
74
+ return prevId;
75
+ }
76
+ return getItemParent(items, prevId)?.id ?? prevId;
77
+ });
78
+ },
79
+ onClose: () => {
80
+ menuContextRef.current.onClose?.();
81
+ },
82
+ onUnhandledKeyDown: (event) => {
83
+ onUnhandledKeyDown?.(event, menuContextRef.current);
84
+ },
85
+ });
86
+ }
87
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/@ui/UiMenu/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { IUiMenuInteractiveItem, IUiMenuItem } from "./types.js";
2
+ export declare const findItem: <InteractiveItemData, StaticItemData>(items: IUiMenuItem<InteractiveItemData, StaticItemData>[], predicate: (item: IUiMenuItem<InteractiveItemData, StaticItemData>) => boolean) => IUiMenuItem<InteractiveItemData, StaticItemData>;
3
+ export declare const getItem: <InteractiveItemData, StaticItemData>(items: IUiMenuItem<InteractiveItemData, StaticItemData>[], itemId: string) => IUiMenuItem<InteractiveItemData, StaticItemData>;
4
+ export declare const findInteractiveItem: <InteractiveItemData, StaticItemData>(items: IUiMenuItem<InteractiveItemData, StaticItemData>[], predicate: (item: IUiMenuInteractiveItem<InteractiveItemData, StaticItemData>) => boolean) => IUiMenuInteractiveItem<InteractiveItemData, StaticItemData>;
5
+ export declare const getInteractiveItem: <InteractiveItemData, StaticItemData>(items: IUiMenuItem<InteractiveItemData, StaticItemData>[], itemId: string) => IUiMenuInteractiveItem<InteractiveItemData, StaticItemData>;
6
+ export declare const getItemsByParent: <InteractiveItemData, StaticItemData>(items: IUiMenuItem<InteractiveItemData, StaticItemData>[], parentId?: string) => IUiMenuItem<InteractiveItemData, StaticItemData>[];
7
+ export declare const getItemParent: <InteractiveItemData, StaticItemData>(items: IUiMenuItem<InteractiveItemData, StaticItemData>[], itemId: string) => IUiMenuInteractiveItem<InteractiveItemData, StaticItemData>;
8
+ export declare const getSiblingItems: <InteractiveItemData, StaticItemData>(items: IUiMenuItem<InteractiveItemData, StaticItemData>[], itemId: string) => IUiMenuItem<InteractiveItemData, StaticItemData>[];
9
+ export declare const getNextSiblings: <InteractiveItemData, StaticItemData>(items: IUiMenuItem<InteractiveItemData, StaticItemData>[], itemId: string) => IUiMenuItem<InteractiveItemData, StaticItemData>[];
10
+ export declare const getPreviousSiblings: <InteractiveItemData, StaticItemData>(items: IUiMenuItem<InteractiveItemData, StaticItemData>[], itemId: string) => IUiMenuItem<InteractiveItemData, StaticItemData>[];
11
+ export declare const getClosestFocusableSibling: <InteractiveItemData, StaticItemData>(args: {
12
+ items: IUiMenuItem<InteractiveItemData, StaticItemData>[];
13
+ isItemFocusable: (item: IUiMenuItem<InteractiveItemData, StaticItemData>) => boolean;
14
+ itemId?: string;
15
+ direction: "forward" | "backward";
16
+ }) => IUiMenuItem<InteractiveItemData, StaticItemData>;
17
+ //# sourceMappingURL=itemUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"itemUtils.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/itemUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEjE,eAAO,MAAM,QAAQ,0KAEsD,OAAO,qDAgBjF,CAAC;AAEF,eAAO,MAAM,OAAO,2GAER,MAAM,qDAGjB,CAAC;AAEF,eAAO,MAAM,mBAAmB,qLAEsD,OAAO,gEAK5F,CAAC;AAEF,eAAO,MAAM,kBAAkB,2GAEnB,MAAM,gEAGjB,CAAC;AAEF,eAAO,MAAM,gBAAgB,8GAEd,MAAM,uDAKpB,CAAC;AAEF,eAAO,MAAM,aAAa,2GAEd,MAAM,gEAMjB,CAAC;AAEF,eAAO,MAAM,eAAe,2GAEhB,MAAM,uDAQjB,CAAC;AAEF,eAAO,MAAM,eAAe,2GAEhB,MAAM,uDAWjB,CAAC;AAEF,eAAO,MAAM,mBAAmB,2GAEpB,MAAM,uDAWjB,CAAC;AAEF,eAAO,MAAM,0BAA0B;;iFAE0C,OAAO;aAC3E,MAAM;eACJ,SAAS,GAAG,UAAU;sDAgBpC,CAAC"}