@gooddata/sdk-ui-kit 10.28.0-alpha.24 → 10.28.0-alpha.26

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 (96) hide show
  1. package/esm/@ui/@types/size.d.ts +4 -0
  2. package/esm/@ui/@types/size.d.ts.map +1 -1
  3. package/esm/@ui/@types/size.js +1 -0
  4. package/esm/@ui/@types/size.js.map +1 -1
  5. package/esm/@ui/UiFocusTrap/UiFocusTrap.d.ts.map +1 -1
  6. package/esm/@ui/UiFocusTrap/UiFocusTrap.js +4 -1
  7. package/esm/@ui/UiFocusTrap/UiFocusTrap.js.map +1 -1
  8. package/esm/@ui/UiIconButton/UiIconButton.d.ts +2 -2
  9. package/esm/@ui/UiIconButton/UiIconButton.d.ts.map +1 -1
  10. package/esm/@ui/UiIconButton/UiIconButton.js +23 -2
  11. package/esm/@ui/UiIconButton/UiIconButton.js.map +1 -1
  12. package/esm/@ui/UiMenu/UiMenu.d.ts +1 -1
  13. package/esm/@ui/UiMenu/UiMenu.d.ts.map +1 -1
  14. package/esm/@ui/UiMenu/UiMenu.js +26 -6
  15. package/esm/@ui/UiMenu/UiMenu.js.map +1 -1
  16. package/esm/@ui/UiMenu/components/Item.d.ts +4 -0
  17. package/esm/@ui/UiMenu/components/Item.d.ts.map +1 -0
  18. package/esm/@ui/UiMenu/components/Item.js +26 -0
  19. package/esm/@ui/UiMenu/components/Item.js.map +1 -0
  20. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuContent.d.ts +10 -0
  21. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuContent.d.ts.map +1 -0
  22. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuContent.js +29 -0
  23. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuContent.js.map +1 -0
  24. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuContentItem.d.ts +12 -0
  25. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuContentItem.d.ts.map +1 -0
  26. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuContentItem.js +60 -0
  27. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuContentItem.js.map +1 -0
  28. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuGroupItem.d.ts +7 -0
  29. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuGroupItem.d.ts.map +1 -0
  30. package/esm/@ui/UiMenu/{defaults/DefaultUiMenuGroupItemComponent.js → components/defaults/DefaultUiMenuGroupItem.js} +5 -5
  31. package/esm/@ui/UiMenu/{defaults/DefaultUiMenuGroupItemComponent.js.map → components/defaults/DefaultUiMenuGroupItem.js.map} +1 -1
  32. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuHeader.d.ts +8 -0
  33. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuHeader.d.ts.map +1 -0
  34. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuHeader.js +44 -0
  35. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuHeader.js.map +1 -0
  36. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuInteractiveItem.d.ts +11 -0
  37. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuInteractiveItem.d.ts.map +1 -0
  38. package/esm/@ui/UiMenu/{defaults/DefaultUiMenuInteractiveItemComponent.js → components/defaults/DefaultUiMenuInteractiveItem.js} +7 -7
  39. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuInteractiveItem.js.map +1 -0
  40. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuStaticItem.d.ts +8 -0
  41. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuStaticItem.d.ts.map +1 -0
  42. package/esm/@ui/UiMenu/{defaults/DefaultUiMenuStaticItemComponent.js → components/defaults/DefaultUiMenuStaticItem.js} +3 -3
  43. package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuStaticItem.js.map +1 -0
  44. package/esm/@ui/UiMenu/context.d.ts +6 -2
  45. package/esm/@ui/UiMenu/context.d.ts.map +1 -1
  46. package/esm/@ui/UiMenu/context.js +10 -0
  47. package/esm/@ui/UiMenu/context.js.map +1 -1
  48. package/esm/@ui/UiMenu/hooks.d.ts +10 -4
  49. package/esm/@ui/UiMenu/hooks.d.ts.map +1 -1
  50. package/esm/@ui/UiMenu/hooks.js +86 -35
  51. package/esm/@ui/UiMenu/hooks.js.map +1 -1
  52. package/esm/@ui/UiMenu/itemUtils.d.ts +60 -1
  53. package/esm/@ui/UiMenu/itemUtils.d.ts.map +1 -1
  54. package/esm/@ui/UiMenu/itemUtils.js +69 -1
  55. package/esm/@ui/UiMenu/itemUtils.js.map +1 -1
  56. package/esm/@ui/UiMenu/types.d.ts +65 -18
  57. package/esm/@ui/UiMenu/types.d.ts.map +1 -1
  58. package/esm/Button/Button.d.ts.map +1 -1
  59. package/esm/Button/Button.js +2 -2
  60. package/esm/Button/Button.js.map +1 -1
  61. package/esm/Button/typings.d.ts +1 -0
  62. package/esm/Button/typings.d.ts.map +1 -1
  63. package/esm/Dropdown/Dropdown.js +18 -19
  64. package/esm/Dropdown/Dropdown.js.map +1 -1
  65. package/esm/List/MenuList.d.ts.map +1 -1
  66. package/esm/List/MenuList.js +2 -2
  67. package/esm/List/MenuList.js.map +1 -1
  68. package/esm/index.d.ts +10 -4
  69. package/esm/index.d.ts.map +1 -1
  70. package/esm/index.js +8 -2
  71. package/esm/index.js.map +1 -1
  72. package/esm/sdk-ui-kit.d.ts +230 -54
  73. package/esm/utils/domUtilities.d.ts +6 -0
  74. package/esm/utils/domUtilities.d.ts.map +1 -1
  75. package/esm/utils/domUtilities.js +8 -0
  76. package/esm/utils/domUtilities.js.map +1 -1
  77. package/esm/utils/useAutofocusOnMount.d.ts +7 -0
  78. package/esm/utils/useAutofocusOnMount.d.ts.map +1 -0
  79. package/esm/utils/useAutofocusOnMount.js +40 -0
  80. package/esm/utils/useAutofocusOnMount.js.map +1 -0
  81. package/package.json +8 -8
  82. package/src/@ui/UiMenu/UiMenu.scss +15 -7
  83. package/styles/css/main.css +14 -7
  84. package/styles/css/main.css.map +1 -1
  85. package/esm/@ui/UiMenu/defaults/DefaultUiMenuGroupItemComponent.d.ts +0 -7
  86. package/esm/@ui/UiMenu/defaults/DefaultUiMenuGroupItemComponent.d.ts.map +0 -1
  87. package/esm/@ui/UiMenu/defaults/DefaultUiMenuHeaderComponent.d.ts +0 -9
  88. package/esm/@ui/UiMenu/defaults/DefaultUiMenuHeaderComponent.d.ts.map +0 -1
  89. package/esm/@ui/UiMenu/defaults/DefaultUiMenuHeaderComponent.js +0 -39
  90. package/esm/@ui/UiMenu/defaults/DefaultUiMenuHeaderComponent.js.map +0 -1
  91. package/esm/@ui/UiMenu/defaults/DefaultUiMenuInteractiveItemComponent.d.ts +0 -11
  92. package/esm/@ui/UiMenu/defaults/DefaultUiMenuInteractiveItemComponent.d.ts.map +0 -1
  93. package/esm/@ui/UiMenu/defaults/DefaultUiMenuInteractiveItemComponent.js.map +0 -1
  94. package/esm/@ui/UiMenu/defaults/DefaultUiMenuStaticItemComponent.d.ts +0 -8
  95. package/esm/@ui/UiMenu/defaults/DefaultUiMenuStaticItemComponent.d.ts.map +0 -1
  96. package/esm/@ui/UiMenu/defaults/DefaultUiMenuStaticItemComponent.js.map +0 -1
@@ -1,14 +1,14 @@
1
1
  // (C) 2025 GoodData Corporation
2
2
  import React from "react";
3
- import { typedUiMenuContextStore } from "../context.js";
3
+ import { typedUiMenuContextStore } from "../../context.js";
4
4
  /**
5
5
  * By default just renders the data.
6
6
  * @internal
7
7
  */
8
- export const DefaultUiMenuStaticItemComponent = React.memo(function DefaultUiMenuStaticItemComponent({ item }) {
8
+ export const DefaultUiMenuStaticItem = React.memo(function DefaultUiMenuStaticItem({ item }) {
9
9
  const { itemClassName } = typedUiMenuContextStore().useContextStore((ctx) => ({
10
10
  itemClassName: ctx.itemClassName,
11
11
  }));
12
12
  return (React.createElement("li", { role: "none", className: typeof itemClassName === "function" ? itemClassName(item) : itemClassName }, item.data));
13
13
  });
14
- //# sourceMappingURL=DefaultUiMenuStaticItemComponent.js.map
14
+ //# sourceMappingURL=DefaultUiMenuStaticItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultUiMenuStaticItem.js","sourceRoot":"","sources":["../../../../../src/@ui/UiMenu/components/defaults/DefaultUiMenuStaticItem.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,uBAAuB,CAEhF,EAAE,IAAI,EAA6B;IACjC,MAAM,EAAE,aAAa,EAAE,GAAG,uBAAuB,EAAK,CAAC,eAAe,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC7E,aAAa,EAAE,GAAG,CAAC,aAAa;KACnC,CAAC,CAAC,CAAC;IAEJ,OAAO,CACH,4BAAI,IAAI,EAAC,MAAM,EAAC,SAAS,EAAE,OAAO,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,IAC/F,IAAI,CAAC,IAAuB,CAC5B,CACR,CAAC;AACN,CAAC,CAAC,CAAC"}
@@ -3,9 +3,13 @@ import { IContextStore } from "@gooddata/sdk-ui";
3
3
  /**
4
4
  * @internal
5
5
  */
6
- export declare const UiMenuContextStore: IContextStore<IUiMenuContext<object>>;
6
+ export declare const UiMenuContextStore: IContextStore<IUiMenuContext<object, object>>;
7
7
  /**
8
8
  * @internal
9
9
  */
10
- export declare const typedUiMenuContextStore: <T extends IUiMenuItemData = object>() => IContextStore<IUiMenuContext<T>>;
10
+ export declare const typedUiMenuContextStore: <T extends IUiMenuItemData = object, M = object>() => IContextStore<IUiMenuContext<T, M>>;
11
+ /**
12
+ * @internal
13
+ */
14
+ export declare const getSelectedMenuId: <T extends IUiMenuItemData = object, M = object>(context: IUiMenuContext<T, M>) => string | undefined;
11
15
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/context.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAsB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,kBAAkB,uCAA+C,CAAC;AAC/E;;GAEG;AACH,eAAO,MAAM,uBAAuB,4EACiC,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/context.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAsB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,kBAAkB,+CAA+C,CAAC;AAC/E;;GAEG;AACH,eAAO,MAAM,uBAAuB,2FACoC,CAAC;AACzE;;GAEG;AACH,eAAO,MAAM,iBAAiB,qFAE3B,MAAM,GAAG,SAKX,CAAC"}
@@ -1,4 +1,5 @@
1
1
  // (C) 2025 GoodData Corporation
2
+ import { getItemInteractiveParent } from "./itemUtils.js";
2
3
  import { createContextStore } from "@gooddata/sdk-ui";
3
4
  /**
4
5
  * @internal
@@ -8,4 +9,13 @@ export const UiMenuContextStore = createContextStore("UiMenu");
8
9
  * @internal
9
10
  */
10
11
  export const typedUiMenuContextStore = () => UiMenuContextStore;
12
+ /**
13
+ * @internal
14
+ */
15
+ export const getSelectedMenuId = (context) => {
16
+ const { focusedItem, shownCustomContentItemId, items } = context;
17
+ return shownCustomContentItemId
18
+ ? shownCustomContentItemId
19
+ : getItemInteractiveParent(items, focusedItem.id)?.id;
20
+ };
11
21
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/@ui/UiMenu/context.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAGhC,OAAO,EAAE,kBAAkB,EAAiB,MAAM,kBAAkB,CAAC;AAErE;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAiB,QAAQ,CAAC,CAAC;AAC/E;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAuC,EAAE,CAC5E,kBAAiE,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/@ui/UiMenu/context.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAiB,MAAM,kBAAkB,CAAC;AAErE;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAiB,QAAQ,CAAC,CAAC;AAC/E;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAmD,EAAE,CACxF,kBAAoE,CAAC;AACzE;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC7B,OAA6B,EACX,EAAE;IACpB,MAAM,EAAE,WAAW,EAAE,wBAAwB,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IACjE,OAAO,wBAAwB;QAC3B,CAAC,CAAC,wBAAwB;QAC1B,CAAC,CAAC,wBAAwB,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAC9D,CAAC,CAAC"}
@@ -3,13 +3,19 @@ import React from "react";
3
3
  /**
4
4
  * @internal
5
5
  */
6
- export declare function useUiMenuContextValue<T extends IUiMenuItemData = object>(props: UiMenuProps<T>, menuComponentRef: React.RefObject<HTMLElement>, itemsContainerRef: React.RefObject<HTMLElement>): IUiMenuContext<T>;
6
+ export declare function useUiMenuContextValue<T extends IUiMenuItemData = object, M = object>(props: UiMenuProps<T, M>, menuComponentRef: React.RefObject<HTMLElement>, itemsContainerRef: React.RefObject<HTMLElement>): IUiMenuContext<T, M>;
7
7
  /**
8
8
  * @internal
9
9
  */
10
- export declare function useKeyNavigation<T extends IUiMenuItemData = object>({ menuContextValue, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, onUnhandledKeyDown, }: {
11
- menuContextValue: IUiMenuContext<T>;
12
- onUnhandledKeyDown: UiMenuProps<T>["onUnhandledKeyDown"];
10
+ export declare function useKeyNavigation<T extends IUiMenuItemData = object, M extends object = object>({ menuContextValue, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, onUnhandledKeyDown, }: {
11
+ menuContextValue: IUiMenuContext<T, M>;
12
+ onUnhandledKeyDown: UiMenuProps<T, M>["onUnhandledKeyDown"];
13
+ shouldKeyboardActionPreventDefault?: boolean;
14
+ shouldKeyboardActionStopPropagation?: boolean;
15
+ }): (event: React.KeyboardEvent<Element>) => void;
16
+ export declare function useCustomContentKeyNavigation<T extends IUiMenuItemData = object, M extends object = object>({ menuContextValue, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, onUnhandledKeyDown, }: {
17
+ menuContextValue: IUiMenuContext<T, M>;
18
+ onUnhandledKeyDown: UiMenuProps<T, M>["onUnhandledKeyDown"];
13
19
  shouldKeyboardActionPreventDefault?: boolean;
14
20
  shouldKeyboardActionStopPropagation?: boolean;
15
21
  }): (event: React.KeyboardEvent<Element>) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/hooks.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEH,cAAc,EAId,WAAW,EACX,eAAe,EAClB,MAAM,YAAY,CAAC;AAWpB,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,eAAe,GAAG,MAAM,EACpE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EACrB,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,EAC9C,iBAAiB,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAChD,cAAc,CAAC,CAAC,CAAC,CAsHnB;AAwBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,eAAe,GAAG,MAAM,EAAE,EACjE,gBAAgB,EAChB,kCAAkC,EAClC,mCAAmC,EACnC,kBAAkB,GACrB,EAAE;IACC,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACpC,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACzD,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,mCAAmC,CAAC,EAAE,OAAO,CAAC;CACjD,iDAwFA"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/hooks.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEH,cAAc,EAEd,WAAW,EACX,eAAe,EAElB,MAAM,YAAY,CAAC;AAWpB,OAAO,KAAoB,MAAM,OAAO,CAAC;AAiBzC;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,eAAe,GAAG,MAAM,EAAE,CAAC,GAAG,MAAM,EAChF,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EACxB,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,EAC9C,iBAAiB,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAChD,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CA0KtB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,eAAe,GAAG,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EAC5F,gBAAgB,EAChB,kCAAkC,EAClC,mCAAmC,EACnC,kBAAkB,GACrB,EAAE;IACC,gBAAgB,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,kBAAkB,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5D,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,mCAAmC,CAAC,EAAE,OAAO,CAAC;CACjD,iDA4FA;AAED,wBAAgB,6BAA6B,CAAC,CAAC,SAAS,eAAe,GAAG,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EACzG,gBAAgB,EAChB,kCAAkC,EAClC,mCAAmC,EACnC,kBAAkB,GACrB,EAAE;IACC,gBAAgB,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,kBAAkB,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5D,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,mCAAmC,CAAC,EAAE,OAAO,CAAC;CACjD,iDA+BA"}
@@ -1,37 +1,65 @@
1
1
  // (C) 2022-2025 GoodData Corporation
2
2
  import { makeMenuKeyboardNavigation } from "../@utils/keyboardNavigation.js";
3
- import { getClosestFocusableSibling, getInteractiveItem, getItemInteractiveParent, getItemsByInteractiveParent, getSiblingItems, unwrapGroupItems, } from "./itemUtils.js";
3
+ import { getClosestFocusableSibling, getFocusableItem, getItemInteractiveParent, getItemsByInteractiveParent, getSiblingItems, unwrapGroupItems, } from "./itemUtils.js";
4
4
  import { useAutoupdateRef } from "@gooddata/sdk-ui";
5
- import React from "react";
6
- import { DefaultUiMenuInteractiveItemComponent, DefaultUiMenuInteractiveItemWrapperComponent, } from "./defaults/DefaultUiMenuInteractiveItemComponent.js";
7
- import { DefaultUiMenuStaticItemComponent } from "./defaults/DefaultUiMenuStaticItemComponent.js";
8
- import { DefaultUiMenuGroupItemComponent } from "./defaults/DefaultUiMenuGroupItemComponent.js";
9
- import { DefaultUiMenuHeaderComponent } from "./defaults/DefaultUiMenuHeaderComponent.js";
5
+ import React, { useEffect } from "react";
6
+ import { DefaultUiMenuInteractiveItem, DefaultUiMenuInteractiveItemWrapper, } from "./components/defaults/DefaultUiMenuInteractiveItem.js";
7
+ import { DefaultUiMenuStaticItem } from "./components/defaults/DefaultUiMenuStaticItem.js";
8
+ import { DefaultUiMenuGroupItem } from "./components/defaults/DefaultUiMenuGroupItem.js";
9
+ import { DefaultUiMenuHeader } from "./components/defaults/DefaultUiMenuHeader.js";
10
10
  import { v4 as uuid } from "uuid";
11
- import { typedUiMenuContextStore } from "./context.js";
11
+ import { DefaultUiMenuContentItem, DefaultUiMenuContentItemWrapper, } from "./components/defaults/DefaultUiMenuContentItem.js";
12
+ import { DefaultUiMenuContent } from "./components/defaults/DefaultUiMenuContent.js";
13
+ import { Item } from "./components/Item.js";
14
+ import { isElementTextInput } from "../../utils/domUtilities.js";
12
15
  /**
13
16
  * @internal
14
17
  */
15
18
  export function useUiMenuContextValue(props, menuComponentRef, itemsContainerRef) {
16
- const { items, itemClassName, onSelect, onClose, InteractiveItemComponent = DefaultUiMenuInteractiveItemComponent, InteractiveItemWrapperComponent = DefaultUiMenuInteractiveItemWrapperComponent, StaticItemComponent = DefaultUiMenuStaticItemComponent, GroupItemComponent = DefaultUiMenuGroupItemComponent, MenuHeaderComponent = DefaultUiMenuHeaderComponent, shouldCloseOnSelect = true, isDisabledFocusable = true, ariaAttributes, } = props;
19
+ const { items, itemClassName, onSelect, onLevelChange, onClose, InteractiveItem: InteractiveItemComponent = DefaultUiMenuInteractiveItem, InteractiveItemWrapper: InteractiveItemWrapperComponent = DefaultUiMenuInteractiveItemWrapper, StaticItem: StaticItemComponent = DefaultUiMenuStaticItem, GroupItem: GroupItemComponent = DefaultUiMenuGroupItem, MenuHeader: MenuHeaderComponent = DefaultUiMenuHeader, ContentItem: ContentItemComponent = DefaultUiMenuContentItem, ContentItemWrapper: ContentItemWrapperComponent = DefaultUiMenuContentItemWrapper, Content: ContentComponent = DefaultUiMenuContent, shouldCloseOnSelect = true, isDisabledFocusable = true, ariaAttributes, menuCtxData, } = props;
17
20
  const [controlType, setControlType] = React.useState("unknown");
18
21
  const isItemFocusable = React.useCallback((item) => {
19
- if (!item || item.type !== "interactive") {
22
+ if (!item || (item.type !== "interactive" && item.type !== "content")) {
20
23
  return false;
21
24
  }
22
25
  return isDisabledFocusable || !item.isDisabled;
23
26
  }, [isDisabledFocusable]);
24
27
  const [focusedId, setFocusedId_internal] = React.useState(() => unwrapGroupItems(items).find(isItemFocusable)?.id);
28
+ const [shownCustomContentItemId, setShownCustomContentItemId] = React.useState(undefined);
25
29
  const setFocusedId = React.useCallback((...args) => {
26
30
  setFocusedId_internal(...args);
27
31
  // Focus is lost when clicking on an item that opens a submenu. We need to refocus the menu.
28
32
  menuComponentRef.current?.focus();
29
33
  }, [menuComponentRef]);
30
- const focusedItem = focusedId === undefined ? undefined : getInteractiveItem(items, focusedId);
34
+ const focusedItem = focusedId !== undefined ? getFocusableItem(items, focusedId) : undefined;
35
+ const parentItemId = React.useMemo(() => {
36
+ if (shownCustomContentItemId) {
37
+ return shownCustomContentItemId;
38
+ }
39
+ if (focusedItem) {
40
+ return getItemInteractiveParent(items, focusedItem.id)?.id;
41
+ }
42
+ return undefined;
43
+ }, [focusedItem, items, shownCustomContentItemId]);
44
+ useEffect(() => {
45
+ if (parentItemId) {
46
+ const item = getFocusableItem(items, parentItemId);
47
+ onLevelChange?.(1, item);
48
+ }
49
+ else {
50
+ onLevelChange?.(0, undefined);
51
+ }
52
+ }, [parentItemId, onLevelChange, items]);
31
53
  const handleSelectItem = React.useCallback((item) => {
32
54
  if (!item || item.isDisabled) {
33
55
  return;
34
56
  }
57
+ if (item.type === "content") {
58
+ if (item.Component) {
59
+ setShownCustomContentItemId(item.id);
60
+ }
61
+ return;
62
+ }
35
63
  // If there is no submenu, select the item
36
64
  if (!item.subItems) {
37
65
  onSelect?.(item);
@@ -46,7 +74,14 @@ export function useUiMenuContextValue(props, menuComponentRef, itemsContainerRef
46
74
  setFocusedId(itemToFocus.id);
47
75
  menuComponentRef.current?.focus();
48
76
  }, [isItemFocusable, items, menuComponentRef, onClose, onSelect, setFocusedId, shouldCloseOnSelect]);
49
- const makeItemId = React.useCallback((item) => (item && item.type === "interactive" ? `item-${ariaAttributes.id}-${item.id}` : uuid()), [ariaAttributes.id]);
77
+ const makeItemId = React.useCallback((item) => {
78
+ if (!item) {
79
+ return undefined;
80
+ }
81
+ return item && (item.type === "interactive" || item.type === "content")
82
+ ? `item-${ariaAttributes.id}-${item.id}`
83
+ : uuid();
84
+ }, [ariaAttributes.id]);
50
85
  const scrollToView = React.useCallback((element) => {
51
86
  if (!element) {
52
87
  return;
@@ -62,6 +97,8 @@ export function useUiMenuContextValue(props, menuComponentRef, itemsContainerRef
62
97
  setControlType,
63
98
  setFocusedId,
64
99
  focusedItem,
100
+ setShownCustomContentItemId,
101
+ shownCustomContentItemId,
65
102
  onClose,
66
103
  items,
67
104
  onSelect: handleSelectItem,
@@ -71,31 +108,18 @@ export function useUiMenuContextValue(props, menuComponentRef, itemsContainerRef
71
108
  scrollToView,
72
109
  menuComponentRef,
73
110
  itemsContainerRef,
74
- InteractiveItemWrapperComponent,
75
- InteractiveItemComponent,
76
- StaticItemComponent,
77
- GroupItemComponent,
78
- MenuHeaderComponent,
79
- ItemComponent,
111
+ InteractiveItemWrapper: InteractiveItemWrapperComponent,
112
+ InteractiveItem: InteractiveItemComponent,
113
+ StaticItem: StaticItemComponent,
114
+ GroupItem: GroupItemComponent,
115
+ MenuHeader: MenuHeaderComponent,
116
+ ContentItemWrapper: ContentItemWrapperComponent,
117
+ ContentItem: ContentItemComponent,
118
+ Content: ContentComponent,
119
+ ItemComponent: Item,
120
+ menuCtxData,
80
121
  };
81
122
  }
82
- const ItemComponent = React.memo(function ItemComponent({ item, }) {
83
- const { InteractiveItemWrapperComponent, StaticItemComponent, GroupItemComponent } = typedUiMenuContextStore().useContextStore((ctx) => ({
84
- InteractiveItemWrapperComponent: ctx.InteractiveItemWrapperComponent,
85
- StaticItemComponent: ctx.StaticItemComponent,
86
- GroupItemComponent: ctx.GroupItemComponent,
87
- }));
88
- if (item.type === "interactive") {
89
- return React.createElement(InteractiveItemWrapperComponent, { item: item });
90
- }
91
- if (item.type === "static") {
92
- return React.createElement(StaticItemComponent, { item: item });
93
- }
94
- if (item.type === "group") {
95
- return React.createElement(GroupItemComponent, { item: item });
96
- }
97
- return null;
98
- });
99
123
  /**
100
124
  * @internal
101
125
  */
@@ -148,7 +172,9 @@ export function useKeyNavigation({ menuContextValue, shouldKeyboardActionPrevent
148
172
  },
149
173
  onEnterLevel: () => {
150
174
  const { onSelect, focusedItem } = menuContextRef.current;
151
- if (focusedItem?.type !== "interactive" || !focusedItem.subItems) {
175
+ if ((focusedItem?.type !== "interactive" && focusedItem?.type !== "content") ||
176
+ (focusedItem?.type === "interactive" && !focusedItem.subItems) ||
177
+ (focusedItem?.type === "content" && !focusedItem.Component)) {
152
178
  return;
153
179
  }
154
180
  onSelect(focusedItem);
@@ -170,4 +196,29 @@ export function useKeyNavigation({ menuContextValue, shouldKeyboardActionPrevent
170
196
  },
171
197
  });
172
198
  }
199
+ export function useCustomContentKeyNavigation({ menuContextValue, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, onUnhandledKeyDown, }) {
200
+ const menuContextRef = useAutoupdateRef(menuContextValue);
201
+ return makeMenuKeyboardNavigation({
202
+ shouldPreventDefault: shouldKeyboardActionPreventDefault,
203
+ shouldStopPropagation: shouldKeyboardActionStopPropagation,
204
+ onLeaveLevel: () => {
205
+ const isInputFocused = isElementTextInput(document.activeElement);
206
+ if (isInputFocused) {
207
+ return;
208
+ }
209
+ const { setShownCustomContentItemId } = menuContextRef.current;
210
+ setShownCustomContentItemId(undefined);
211
+ },
212
+ onClose: () => {
213
+ const isInputFocused = isElementTextInput(document.activeElement);
214
+ if (isInputFocused) {
215
+ return;
216
+ }
217
+ menuContextRef.current.onClose?.();
218
+ },
219
+ onUnhandledKeyDown: (event) => {
220
+ onUnhandledKeyDown?.(event, menuContextRef.current);
221
+ },
222
+ });
223
+ }
173
224
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/@ui/UiMenu/hooks.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/@ui/UiMenu/hooks.tsx"],"names":[],"mappings":"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"}
@@ -1,18 +1,77 @@
1
- import { IUiMenuInteractiveItem, IUiMenuItem, IUiMenuItemData } from "./types.js";
1
+ import { IUiMenuContentItem, IUiMenuFocusableItem, IUiMenuInteractiveItem, IUiMenuItem, IUiMenuItemData } from "./types.js";
2
+ /**
3
+ * Recursively finds an item in the menu tree that matches the predicate.
4
+ * @internal
5
+ */
2
6
  export declare const findItem: <T extends IUiMenuItemData = object>(items: IUiMenuItem<T>[], predicate: (item: IUiMenuItem<T>) => boolean) => IUiMenuItem<T>;
7
+ /**
8
+ * Gets a menu item by its ID.
9
+ * @internal
10
+ */
3
11
  export declare const getItem: <T extends IUiMenuItemData = object>(items: IUiMenuItem<T>[], itemId: string) => IUiMenuItem<T>;
12
+ /**
13
+ * Finds an interactive menu item that matches the predicate.
14
+ * @internal
15
+ */
4
16
  export declare const findInteractiveItem: <T extends IUiMenuItemData = object>(items: IUiMenuItem<T>[], predicate: (item: IUiMenuInteractiveItem<T>) => boolean) => IUiMenuInteractiveItem<T>;
17
+ /**
18
+ * Finds a content menu item that matches the predicate.
19
+ * @internal
20
+ */
21
+ export declare const findContentItem: <T extends IUiMenuItemData = object>(items: IUiMenuItem<T>[], predicate: (item: IUiMenuContentItem<T>) => boolean) => IUiMenuContentItem<T>;
22
+ /**
23
+ * Gets an interactive menu item by its ID.
24
+ * @internal
25
+ */
5
26
  export declare const getInteractiveItem: <T extends IUiMenuItemData = object>(items: IUiMenuItem<T>[], itemId: string) => IUiMenuInteractiveItem<T>;
27
+ /**
28
+ * Gets a content menu item by its ID.
29
+ * @internal
30
+ */
31
+ export declare const getContentItem: <T extends IUiMenuItemData = object>(items: IUiMenuItem<T>[], itemId: string) => IUiMenuContentItem<T>;
32
+ /**
33
+ * Gets a focusable (either interactive or content) menu item by its ID.
34
+ * @internal
35
+ */
36
+ export declare const getFocusableItem: <T extends IUiMenuItemData = object>(items: IUiMenuItem<T>[], itemId: string) => IUiMenuFocusableItem | undefined;
37
+ /**
38
+ * Gets all items under a specific interactive parent item.
39
+ * @internal
40
+ */
6
41
  export declare const getItemsByInteractiveParent: <T extends IUiMenuItemData = object>(items: IUiMenuItem<T>[], parentId?: string) => IUiMenuItem<T>[];
42
+ /**
43
+ * Gets the interactive parent of a menu item.
44
+ * @internal
45
+ */
7
46
  export declare const getItemInteractiveParent: <T extends IUiMenuItemData = object>(items: IUiMenuItem<T>[], itemId: string) => IUiMenuInteractiveItem<T>;
47
+ /**
48
+ * Gets all sibling items of a menu item.
49
+ * @internal
50
+ */
8
51
  export declare const getSiblingItems: <T extends IUiMenuItemData = object>(items: IUiMenuItem<T>[], itemId: string) => IUiMenuItem<T>[];
52
+ /**
53
+ * Gets all next sibling items of a menu item with wraparound.
54
+ * @internal
55
+ */
9
56
  export declare const getNextSiblings: <T extends IUiMenuItemData = object>(items: IUiMenuItem<T>[], itemId: string) => IUiMenuItem<T>[];
57
+ /**
58
+ * Gets all previous sibling items of a menu item with wraparound.
59
+ * @internal
60
+ */
10
61
  export declare const getPreviousSiblings: <T extends IUiMenuItemData = object>(items: IUiMenuItem<T>[], itemId: string) => IUiMenuItem<T>[];
62
+ /**
63
+ * Gets the closest focusable sibling item in the specified direction.
64
+ * @internal
65
+ */
11
66
  export declare const getClosestFocusableSibling: <T extends IUiMenuItemData = object>(args: {
12
67
  items: IUiMenuItem<T>[];
13
68
  isItemFocusable: (item: IUiMenuItem<T>) => boolean;
14
69
  itemId?: string;
15
70
  direction: "forward" | "backward";
16
71
  }) => IUiMenuItem<T>;
72
+ /**
73
+ * Unwraps items from group containers into a flat array.
74
+ * @internal
75
+ */
17
76
  export declare function unwrapGroupItems<T extends IUiMenuItemData = object>(items: IUiMenuItem<T>[]): IUiMenuItem<T>[];
18
77
  //# sourceMappingURL=itemUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"itemUtils.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/itemUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElF,eAAO,MAAM,QAAQ,qGAEoB,OAAO,mBAgB/C,CAAC;AAEF,eAAO,MAAM,OAAO,wEAER,MAAM,mBAGjB,CAAC;AAEF,eAAO,MAAM,mBAAmB,gHAEoB,OAAO,8BAK1D,CAAC;AAEF,eAAO,MAAM,kBAAkB,wEAEnB,MAAM,8BAGjB,CAAC;AAEF,eAAO,MAAM,2BAA2B,2EAEzB,MAAM,qBAKpB,CAAC;AAEF,eAAO,MAAM,wBAAwB,wEAEzB,MAAM,8BAmBjB,CAAC;AAEF,eAAO,MAAM,eAAe,wEAEhB,MAAM,qBAQjB,CAAC;AAEF,eAAO,MAAM,eAAe,wEAEhB,MAAM,qBAWjB,CAAC;AAEF,eAAO,MAAM,mBAAmB,wEAEpB,MAAM,qBAWjB,CAAC;AAEF,eAAO,MAAM,0BAA0B;;+CAEQ,OAAO;aACzC,MAAM;eACJ,SAAS,GAAG,UAAU;oBAkBpC,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,eAAe,GAAG,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,oBAkB3F"}
1
+ {"version":3,"file":"itemUtils.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/itemUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,WAAW,EACX,eAAe,EAClB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,eAAO,MAAM,QAAQ,qGAEoB,OAAO,mBAgB/C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,OAAO,wEAER,MAAM,mBAGjB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,gHAEoB,OAAO,8BAK1D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,4GAEoB,OAAO,0BAKtD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,wEAEnB,MAAM,8BAGjB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,wEAEf,MAAM,0BAGjB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,wEAEjB,MAAM,KACf,oBAAoB,GAAG,SAEzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,2EAEzB,MAAM,qBAKpB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,wEAEzB,MAAM,8BAuBjB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,wEAEhB,MAAM,qBAQjB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,wEAEhB,MAAM,qBAWjB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,wEAEpB,MAAM,qBAWjB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;+CAEQ,OAAO;aACzC,MAAM;eACJ,SAAS,GAAG,UAAU;oBAkBpC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,eAAe,GAAG,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,oBAkB3F"}
@@ -1,4 +1,8 @@
1
1
  // (C) 2025 GoodData Corporation
2
+ /**
3
+ * Recursively finds an item in the menu tree that matches the predicate.
4
+ * @internal
5
+ */
2
6
  export const findItem = (items, predicate) => {
3
7
  for (const item of items) {
4
8
  if (predicate(item)) {
@@ -13,23 +17,67 @@ export const findItem = (items, predicate) => {
13
17
  }
14
18
  return undefined;
15
19
  };
20
+ /**
21
+ * Gets a menu item by its ID.
22
+ * @internal
23
+ */
16
24
  export const getItem = (items, itemId) => {
17
25
  return findItem(items, (item) => item.id === itemId);
18
26
  };
27
+ /**
28
+ * Finds an interactive menu item that matches the predicate.
29
+ * @internal
30
+ */
19
31
  export const findInteractiveItem = (items, predicate) => {
20
32
  const foundItem = findItem(items, (item) => item.type === "interactive" && predicate(item));
21
33
  return foundItem?.type === "interactive" ? foundItem : undefined;
22
34
  };
35
+ /**
36
+ * Finds a content menu item that matches the predicate.
37
+ * @internal
38
+ */
39
+ export const findContentItem = (items, predicate) => {
40
+ const foundItem = findItem(items, (item) => item.type === "content" && predicate(item));
41
+ return foundItem?.type === "content" ? foundItem : undefined;
42
+ };
43
+ /**
44
+ * Gets an interactive menu item by its ID.
45
+ * @internal
46
+ */
23
47
  export const getInteractiveItem = (items, itemId) => {
24
48
  return findInteractiveItem(items, (item) => item.id === itemId);
25
49
  };
50
+ /**
51
+ * Gets a content menu item by its ID.
52
+ * @internal
53
+ */
54
+ export const getContentItem = (items, itemId) => {
55
+ return findContentItem(items, (item) => item.id === itemId);
56
+ };
57
+ /**
58
+ * Gets a focusable (either interactive or content) menu item by its ID.
59
+ * @internal
60
+ */
61
+ export const getFocusableItem = (items, itemId) => {
62
+ return getContentItem(items, itemId) || getInteractiveItem(items, itemId);
63
+ };
64
+ /**
65
+ * Gets all items under a specific interactive parent item.
66
+ * @internal
67
+ */
26
68
  export const getItemsByInteractiveParent = (items, parentId) => {
27
69
  const isRootLevel = parentId === undefined;
28
70
  return isRootLevel ? items : findInteractiveItem(items, (item) => item.id === parentId)?.subItems;
29
71
  };
72
+ /**
73
+ * Gets the interactive parent of a menu item.
74
+ * @internal
75
+ */
30
76
  export const getItemInteractiveParent = (items, itemId) => {
31
77
  const parent = findItem(items, (item) => {
32
- if (item.type === "static" || item.subItems === undefined) {
78
+ if (item.type === "static" ||
79
+ (item.type === "interactive" && item.subItems === undefined) ||
80
+ item.type === "content") {
33
81
  return false;
34
82
  }
35
83
  return item.subItems.some((subMenuItem) => subMenuItem.id === itemId);
@@ -42,6 +90,10 @@ export const getItemInteractiveParent = (items, itemId) => {
42
90
  }
43
91
  return undefined;
44
92
  };
93
+ /**
94
+ * Gets all sibling items of a menu item.
95
+ * @internal
96
+ */
45
97
  export const getSiblingItems = (items, itemId) => {
46
98
  // If itemId is provided but the item doesn't exist, return undefined
47
99
  if (!getItem(items, itemId)) {
@@ -49,6 +101,10 @@ export const getSiblingItems = (items, itemId) => {
49
101
  }
50
102
  return getItemsByInteractiveParent(items, getItemInteractiveParent(items, itemId)?.id);
51
103
  };
104
+ /**
105
+ * Gets all next sibling items of a menu item with wraparound.
106
+ * @internal
107
+ */
52
108
  export const getNextSiblings = (items, itemId) => {
53
109
  const siblingItems = getSiblingItems(items, itemId);
54
110
  const itemIndex = siblingItems?.findIndex((item) => item.id === itemId) ?? -1;
@@ -58,6 +114,10 @@ export const getNextSiblings = (items, itemId) => {
58
114
  // Wraparound
59
115
  return [...siblingItems.slice(itemIndex + 1), ...siblingItems.slice(0, itemIndex)];
60
116
  };
117
+ /**
118
+ * Gets all previous sibling items of a menu item with wraparound.
119
+ * @internal
120
+ */
61
121
  export const getPreviousSiblings = (items, itemId) => {
62
122
  const siblingItems = getSiblingItems(items, itemId);
63
123
  const itemIndex = siblingItems?.findIndex((item) => item.id === itemId) ?? -1;
@@ -67,6 +127,10 @@ export const getPreviousSiblings = (items, itemId) => {
67
127
  // Wraparound
68
128
  return [...siblingItems.slice(0, itemIndex).reverse(), ...siblingItems.slice(itemIndex + 1).reverse()];
69
129
  };
130
+ /**
131
+ * Gets the closest focusable sibling item in the specified direction.
132
+ * @internal
133
+ */
70
134
  export const getClosestFocusableSibling = (args) => {
71
135
  const { items, isItemFocusable, itemId, direction } = args;
72
136
  const unwrappedItems = unwrapGroupItems(items);
@@ -83,6 +147,10 @@ export const getClosestFocusableSibling = (args) => {
83
147
  return getPreviousSiblings(unwrappedItems, itemId).find(isItemFocusable);
84
148
  }
85
149
  };
150
+ /**
151
+ * Unwraps items from group containers into a flat array.
152
+ * @internal
153
+ */
86
154
  export function unwrapGroupItems(items) {
87
155
  const result = [];
88
156
  for (const item of items) {
@@ -1 +1 @@
1
- {"version":3,"file":"itemUtils.js","sourceRoot":"","sources":["../../../src/@ui/UiMenu/itemUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"itemUtils.js","sourceRoot":"","sources":["../../../src/@ui/UiMenu/itemUtils.ts"],"names":[],"mappings":"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"}