@gooddata/sdk-ui-kit 10.28.0-alpha.9 → 10.28.0-alpha.91
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.
- package/esm/@ui/@types/size.d.ts +4 -0
- package/esm/@ui/@types/size.d.ts.map +1 -1
- package/esm/@ui/@types/size.js +1 -0
- package/esm/@ui/@types/size.js.map +1 -1
- package/esm/@ui/@utils/keyboardNavigation.d.ts +44 -12
- package/esm/@ui/@utils/keyboardNavigation.d.ts.map +1 -1
- package/esm/@ui/@utils/keyboardNavigation.js +55 -65
- package/esm/@ui/@utils/keyboardNavigation.js.map +1 -1
- package/esm/@ui/UiButton/UiButton.d.ts +8 -1
- package/esm/@ui/UiButton/UiButton.d.ts.map +1 -1
- package/esm/@ui/UiButton/UiButton.js +9 -4
- package/esm/@ui/UiButton/UiButton.js.map +1 -1
- package/esm/@ui/UiChip/UiChip.d.ts +3 -1
- package/esm/@ui/UiChip/UiChip.d.ts.map +1 -1
- package/esm/@ui/UiChip/UiChip.js +3 -3
- package/esm/@ui/UiChip/UiChip.js.map +1 -1
- package/esm/@ui/UiFocusTrap/UiFocusTrap.d.ts.map +1 -1
- package/esm/@ui/UiFocusTrap/UiFocusTrap.js +4 -1
- package/esm/@ui/UiFocusTrap/UiFocusTrap.js.map +1 -1
- package/esm/@ui/UiIconButton/UiIconButton.d.ts +3 -2
- package/esm/@ui/UiIconButton/UiIconButton.d.ts.map +1 -1
- package/esm/@ui/UiIconButton/UiIconButton.js +26 -3
- package/esm/@ui/UiIconButton/UiIconButton.js.map +1 -1
- package/esm/@ui/UiListbox/UiListbox.d.ts +1 -1
- package/esm/@ui/UiListbox/UiListbox.d.ts.map +1 -1
- package/esm/@ui/UiListbox/UiListbox.js +6 -7
- package/esm/@ui/UiListbox/UiListbox.js.map +1 -1
- package/esm/@ui/UiListbox/types.d.ts +1 -0
- package/esm/@ui/UiListbox/types.d.ts.map +1 -1
- package/esm/@ui/UiMenu/UiMenu.d.ts +1 -1
- package/esm/@ui/UiMenu/UiMenu.d.ts.map +1 -1
- package/esm/@ui/UiMenu/UiMenu.js +26 -6
- package/esm/@ui/UiMenu/UiMenu.js.map +1 -1
- package/esm/@ui/UiMenu/components/Item.d.ts +4 -0
- package/esm/@ui/UiMenu/components/Item.d.ts.map +1 -0
- package/esm/@ui/UiMenu/components/Item.js +26 -0
- package/esm/@ui/UiMenu/components/Item.js.map +1 -0
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuContent.d.ts +10 -0
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuContent.d.ts.map +1 -0
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuContent.js +29 -0
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuContent.js.map +1 -0
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuContentItem.d.ts +12 -0
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuContentItem.d.ts.map +1 -0
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuContentItem.js +60 -0
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuContentItem.js.map +1 -0
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuGroupItem.d.ts +7 -0
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuGroupItem.d.ts.map +1 -0
- package/esm/@ui/UiMenu/{defaults/DefaultUiMenuGroupItemComponent.js → components/defaults/DefaultUiMenuGroupItem.js} +5 -5
- package/esm/@ui/UiMenu/{defaults/DefaultUiMenuGroupItemComponent.js.map → components/defaults/DefaultUiMenuGroupItem.js.map} +1 -1
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuHeader.d.ts +8 -0
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuHeader.d.ts.map +1 -0
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuHeader.js +49 -0
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuHeader.js.map +1 -0
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuInteractiveItem.d.ts +11 -0
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuInteractiveItem.d.ts.map +1 -0
- package/esm/@ui/UiMenu/{defaults/DefaultUiMenuInteractiveItemComponent.js → components/defaults/DefaultUiMenuInteractiveItem.js} +7 -7
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuInteractiveItem.js.map +1 -0
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuStaticItem.d.ts +8 -0
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuStaticItem.d.ts.map +1 -0
- package/esm/@ui/UiMenu/{defaults/DefaultUiMenuStaticItemComponent.js → components/defaults/DefaultUiMenuStaticItem.js} +3 -3
- package/esm/@ui/UiMenu/components/defaults/DefaultUiMenuStaticItem.js.map +1 -0
- package/esm/@ui/UiMenu/context.d.ts +6 -2
- package/esm/@ui/UiMenu/context.d.ts.map +1 -1
- package/esm/@ui/UiMenu/context.js +10 -0
- package/esm/@ui/UiMenu/context.js.map +1 -1
- package/esm/@ui/UiMenu/hooks.d.ts +10 -4
- package/esm/@ui/UiMenu/hooks.d.ts.map +1 -1
- package/esm/@ui/UiMenu/hooks.js +90 -37
- package/esm/@ui/UiMenu/hooks.js.map +1 -1
- package/esm/@ui/UiMenu/itemUtils.d.ts +60 -1
- package/esm/@ui/UiMenu/itemUtils.d.ts.map +1 -1
- package/esm/@ui/UiMenu/itemUtils.js +69 -1
- package/esm/@ui/UiMenu/itemUtils.js.map +1 -1
- package/esm/@ui/UiMenu/types.d.ts +65 -18
- package/esm/@ui/UiMenu/types.d.ts.map +1 -1
- package/esm/@ui/hooks/useListWithActionsKeyboardNavigation.d.ts +21 -0
- package/esm/@ui/hooks/useListWithActionsKeyboardNavigation.d.ts.map +1 -0
- package/esm/@ui/hooks/useListWithActionsKeyboardNavigation.js +128 -0
- package/esm/@ui/hooks/useListWithActionsKeyboardNavigation.js.map +1 -0
- package/esm/Button/Button.d.ts.map +1 -1
- package/esm/Button/Button.js +10 -3
- package/esm/Button/Button.js.map +1 -1
- package/esm/Button/typings.d.ts +2 -0
- package/esm/Button/typings.d.ts.map +1 -1
- package/esm/Dialog/DialogCloseButton.d.ts +3 -0
- package/esm/Dialog/DialogCloseButton.d.ts.map +1 -1
- package/esm/Dialog/DialogCloseButton.js +6 -2
- package/esm/Dialog/DialogCloseButton.js.map +1 -1
- package/esm/Dialog/DialogList/DialogListItemBasic.d.ts.map +1 -1
- package/esm/Dialog/DialogList/DialogListItemBasic.js +7 -4
- package/esm/Dialog/DialogList/DialogListItemBasic.js.map +1 -1
- package/esm/Dialog/DialogList/typings.d.ts +1 -0
- package/esm/Dialog/DialogList/typings.d.ts.map +1 -1
- package/esm/Dialog/DialogList/typings.js +1 -1
- package/esm/Dialog/DialogList/typings.js.map +1 -1
- package/esm/Dialog/ExportDialogBase.js +3 -3
- package/esm/Dialog/ExportDialogBase.js.map +1 -1
- package/esm/Dialog/index.d.ts +1 -0
- package/esm/Dialog/index.d.ts.map +1 -1
- package/esm/Dialog/index.js +2 -1
- package/esm/Dialog/index.js.map +1 -1
- package/esm/Dialog/typings.d.ts +5 -3
- package/esm/Dialog/typings.d.ts.map +1 -1
- package/esm/Dropdown/Dropdown.d.ts +1 -0
- package/esm/Dropdown/Dropdown.d.ts.map +1 -1
- package/esm/Dropdown/Dropdown.js +19 -20
- package/esm/Dropdown/Dropdown.js.map +1 -1
- package/esm/Header/generateHeaderAccountMenuItems.d.ts +0 -4
- package/esm/Header/generateHeaderAccountMenuItems.d.ts.map +1 -1
- package/esm/Header/generateHeaderAccountMenuItems.js +2 -6
- package/esm/Header/generateHeaderAccountMenuItems.js.map +1 -1
- package/esm/List/ListItem.d.ts +1 -0
- package/esm/List/ListItem.d.ts.map +1 -1
- package/esm/List/ListItem.js +4 -3
- package/esm/List/ListItem.js.map +1 -1
- package/esm/List/MenuList.d.ts.map +1 -1
- package/esm/List/MenuList.js +2 -2
- package/esm/List/MenuList.js.map +1 -1
- package/esm/List/guid.d.ts.map +1 -1
- package/esm/List/guid.js +5 -2
- package/esm/List/guid.js.map +1 -1
- package/esm/Menu/menuOpener/MenuOpener.js +2 -2
- package/esm/Menu/menuOpener/MenuOpener.js.map +1 -1
- package/esm/Overlay/Overlay.d.ts.map +1 -1
- package/esm/Overlay/Overlay.js +6 -2
- package/esm/Overlay/Overlay.js.map +1 -1
- package/esm/RecurrenceForm/DateTime.d.ts +1 -0
- package/esm/RecurrenceForm/DateTime.d.ts.map +1 -1
- package/esm/RecurrenceForm/DateTime.js +3 -3
- package/esm/RecurrenceForm/DateTime.js.map +1 -1
- package/esm/RecurrenceForm/Recurrence.d.ts +1 -0
- package/esm/RecurrenceForm/Recurrence.d.ts.map +1 -1
- package/esm/RecurrenceForm/Recurrence.js +2 -2
- package/esm/RecurrenceForm/Recurrence.js.map +1 -1
- package/esm/RecurrenceForm/RecurrenceForm.d.ts +1 -0
- package/esm/RecurrenceForm/RecurrenceForm.d.ts.map +1 -1
- package/esm/RecurrenceForm/RecurrenceForm.js +3 -3
- package/esm/RecurrenceForm/RecurrenceForm.js.map +1 -1
- package/esm/RecurrenceForm/RepeatTypeSelect.d.ts +1 -0
- package/esm/RecurrenceForm/RepeatTypeSelect.d.ts.map +1 -1
- package/esm/RecurrenceForm/RepeatTypeSelect.js +16 -6
- package/esm/RecurrenceForm/RepeatTypeSelect.js.map +1 -1
- package/esm/RecurrenceForm/constants.d.ts +0 -1
- package/esm/RecurrenceForm/constants.d.ts.map +1 -1
- package/esm/RecurrenceForm/constants.js +0 -1
- package/esm/RecurrenceForm/constants.js.map +1 -1
- package/esm/Timepicker/Timepicker.d.ts +1 -0
- package/esm/Timepicker/Timepicker.d.ts.map +1 -1
- package/esm/Timepicker/Timepicker.js +19 -8
- package/esm/Timepicker/Timepicker.js.map +1 -1
- package/esm/ZoomContext/ZoomContext.js +6 -6
- package/esm/ZoomContext/ZoomContext.js.map +1 -1
- package/esm/index.d.ts +16 -7
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +12 -4
- package/esm/index.js.map +1 -1
- package/esm/responsive/useMediaQuery.d.ts.map +1 -1
- package/esm/responsive/useMediaQuery.js +3 -1
- package/esm/responsive/useMediaQuery.js.map +1 -1
- package/esm/sdk-ui-kit.d.ts +365 -79
- package/esm/syntaxHighlightingInput/SyntaxHighlightingInput.d.ts +14 -5
- package/esm/syntaxHighlightingInput/SyntaxHighlightingInput.d.ts.map +1 -1
- package/esm/syntaxHighlightingInput/SyntaxHighlightingInput.js +5 -1
- package/esm/syntaxHighlightingInput/SyntaxHighlightingInput.js.map +1 -1
- package/esm/syntaxHighlightingInput/hooks/useAutocompletion.d.ts +18 -0
- package/esm/syntaxHighlightingInput/hooks/useAutocompletion.d.ts.map +1 -0
- package/esm/syntaxHighlightingInput/hooks/useAutocompletion.js +66 -0
- package/esm/syntaxHighlightingInput/hooks/useAutocompletion.js.map +1 -0
- package/esm/syntaxHighlightingInput/hooks/useChangeHandler.d.ts +8 -0
- package/esm/syntaxHighlightingInput/hooks/useChangeHandler.d.ts.map +1 -0
- package/esm/syntaxHighlightingInput/hooks/useChangeHandler.js +21 -0
- package/esm/syntaxHighlightingInput/hooks/useChangeHandler.js.map +1 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirror.d.ts +12 -9
- package/esm/syntaxHighlightingInput/hooks/useCodemirror.d.ts.map +1 -1
- package/esm/syntaxHighlightingInput/hooks/useCodemirror.js +42 -96
- package/esm/syntaxHighlightingInput/hooks/useCodemirror.js.map +1 -1
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorChange.d.ts +4 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorChange.d.ts.map +1 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorChange.js +35 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorChange.js.map +1 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorEditable.d.ts +6 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorEditable.d.ts.map +1 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorEditable.js +24 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorEditable.js.map +1 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorEvents.d.ts +9 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorEvents.d.ts.map +1 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorEvents.js +26 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorEvents.js.map +1 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorKeymap.d.ts +8 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorKeymap.d.ts.map +1 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorKeymap.js +32 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorKeymap.js.map +1 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorOptions.d.ts +10 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorOptions.d.ts.map +1 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorOptions.js +21 -0
- package/esm/syntaxHighlightingInput/hooks/useCodemirrorOptions.js.map +1 -0
- package/esm/syntaxHighlightingInput/hooks/useEventHandlers.d.ts +20 -0
- package/esm/syntaxHighlightingInput/hooks/useEventHandlers.d.ts.map +1 -0
- package/esm/syntaxHighlightingInput/hooks/useEventHandlers.js +25 -0
- package/esm/syntaxHighlightingInput/hooks/useEventHandlers.js.map +1 -0
- package/esm/typings/accessibility.d.ts +3 -2
- package/esm/typings/accessibility.d.ts.map +1 -1
- package/esm/utils/domUtilities.d.ts +8 -1
- package/esm/utils/domUtilities.d.ts.map +1 -1
- package/esm/utils/domUtilities.js +8 -0
- package/esm/utils/domUtilities.js.map +1 -1
- package/esm/utils/useAutofocusOnMount.d.ts +12 -0
- package/esm/utils/useAutofocusOnMount.d.ts.map +1 -0
- package/esm/utils/useAutofocusOnMount.js +51 -0
- package/esm/utils/useAutofocusOnMount.js.map +1 -0
- package/package.json +9 -8
- package/src/@ui/UiMenu/UiMenu.scss +15 -7
- package/styles/css/dialogList.css +17 -0
- package/styles/css/dialogList.css.map +1 -1
- package/styles/css/header.css.map +1 -1
- package/styles/css/list.css +10 -0
- package/styles/css/list.css.map +1 -1
- package/styles/css/main.css +52 -7
- package/styles/css/main.css.map +1 -1
- package/styles/css/menu.css +10 -0
- package/styles/css/menu.css.map +1 -1
- package/styles/css/recurrenceForm.css +3 -0
- package/styles/css/recurrenceForm.css.map +1 -1
- package/styles/css/shareDialogSelectControl.css.map +1 -1
- package/styles/css/timepicker.css +8 -0
- package/styles/css/timepicker.css.map +1 -1
- package/styles/scss/dialogList.scss +21 -1
- package/styles/scss/header.scss +2 -4
- package/styles/scss/list.scss +11 -0
- package/styles/scss/recurrenceForm.scss +5 -0
- package/styles/scss/shareDialogSelectControl.scss +0 -1
- package/styles/scss/timepicker.scss +10 -1
- package/esm/@ui/UiMenu/defaults/DefaultUiMenuGroupItemComponent.d.ts +0 -7
- package/esm/@ui/UiMenu/defaults/DefaultUiMenuGroupItemComponent.d.ts.map +0 -1
- package/esm/@ui/UiMenu/defaults/DefaultUiMenuHeaderComponent.d.ts +0 -9
- package/esm/@ui/UiMenu/defaults/DefaultUiMenuHeaderComponent.d.ts.map +0 -1
- package/esm/@ui/UiMenu/defaults/DefaultUiMenuHeaderComponent.js +0 -39
- package/esm/@ui/UiMenu/defaults/DefaultUiMenuHeaderComponent.js.map +0 -1
- package/esm/@ui/UiMenu/defaults/DefaultUiMenuInteractiveItemComponent.d.ts +0 -11
- package/esm/@ui/UiMenu/defaults/DefaultUiMenuInteractiveItemComponent.d.ts.map +0 -1
- package/esm/@ui/UiMenu/defaults/DefaultUiMenuInteractiveItemComponent.js.map +0 -1
- package/esm/@ui/UiMenu/defaults/DefaultUiMenuStaticItemComponent.d.ts +0 -8
- package/esm/@ui/UiMenu/defaults/DefaultUiMenuStaticItemComponent.d.ts.map +0 -1
- package/esm/@ui/UiMenu/defaults/DefaultUiMenuStaticItemComponent.js.map +0 -1
@@ -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,
|
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,KAAK,MAAM,OAAO,CAAC;AAiB1B;;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,CA6KtB;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,iDA+FA;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,iDAkCA"}
|
package/esm/@ui/UiMenu/hooks.js
CHANGED
@@ -1,37 +1,65 @@
|
|
1
1
|
// (C) 2022-2025 GoodData Corporation
|
2
2
|
import { makeMenuKeyboardNavigation } from "../@utils/keyboardNavigation.js";
|
3
|
-
import { getClosestFocusableSibling,
|
3
|
+
import { getClosestFocusableSibling, getFocusableItem, getItemInteractiveParent, getItemsByInteractiveParent, getSiblingItems, unwrapGroupItems, } from "./itemUtils.js";
|
4
4
|
import { useAutoupdateRef } from "@gooddata/sdk-ui";
|
5
5
|
import React from "react";
|
6
|
-
import {
|
7
|
-
import {
|
8
|
-
import {
|
9
|
-
import {
|
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 {
|
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 =
|
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
|
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
|
+
React.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);
|
@@ -39,14 +67,21 @@ export function useUiMenuContextValue(props, menuComponentRef, itemsContainerRef
|
|
39
67
|
return;
|
40
68
|
}
|
41
69
|
// Otherwise focus the first focusable child
|
42
|
-
const itemToFocus = getItemsByInteractiveParent(items, item.id)
|
70
|
+
const itemToFocus = unwrapGroupItems(getItemsByInteractiveParent(items, item.id) ?? []).filter(isItemFocusable)[0];
|
43
71
|
if (!itemToFocus) {
|
44
72
|
return;
|
45
73
|
}
|
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) =>
|
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,39 +108,24 @@ 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
|
-
|
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
|
*/
|
102
126
|
export function useKeyNavigation({ menuContextValue, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, onUnhandledKeyDown, }) {
|
103
127
|
const menuContextRef = useAutoupdateRef(menuContextValue);
|
104
128
|
return makeMenuKeyboardNavigation({
|
105
|
-
shouldPreventDefault: shouldKeyboardActionPreventDefault,
|
106
|
-
shouldStopPropagation: shouldKeyboardActionStopPropagation,
|
107
129
|
onFocusPrevious: () => {
|
108
130
|
const { setFocusedId, items, isItemFocusable } = menuContextRef.current;
|
109
131
|
setFocusedId((prevId) => getClosestFocusableSibling({
|
@@ -148,7 +170,9 @@ export function useKeyNavigation({ menuContextValue, shouldKeyboardActionPrevent
|
|
148
170
|
},
|
149
171
|
onEnterLevel: () => {
|
150
172
|
const { onSelect, focusedItem } = menuContextRef.current;
|
151
|
-
if (focusedItem?.type !== "interactive"
|
173
|
+
if ((focusedItem?.type !== "interactive" && focusedItem?.type !== "content") ||
|
174
|
+
(focusedItem?.type === "interactive" && !focusedItem.subItems) ||
|
175
|
+
(focusedItem?.type === "content" && !focusedItem.Component)) {
|
152
176
|
return;
|
153
177
|
}
|
154
178
|
onSelect(focusedItem);
|
@@ -168,6 +192,35 @@ export function useKeyNavigation({ menuContextValue, shouldKeyboardActionPrevent
|
|
168
192
|
onUnhandledKeyDown: (event) => {
|
169
193
|
onUnhandledKeyDown?.(event, menuContextRef.current);
|
170
194
|
},
|
195
|
+
}, {
|
196
|
+
shouldPreventDefault: shouldKeyboardActionPreventDefault,
|
197
|
+
shouldStopPropagation: shouldKeyboardActionStopPropagation,
|
198
|
+
});
|
199
|
+
}
|
200
|
+
export function useCustomContentKeyNavigation({ menuContextValue, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, onUnhandledKeyDown, }) {
|
201
|
+
const menuContextRef = useAutoupdateRef(menuContextValue);
|
202
|
+
return makeMenuKeyboardNavigation({
|
203
|
+
onLeaveLevel: () => {
|
204
|
+
const isInputFocused = isElementTextInput(document.activeElement);
|
205
|
+
if (isInputFocused) {
|
206
|
+
return;
|
207
|
+
}
|
208
|
+
const { setShownCustomContentItemId } = menuContextRef.current;
|
209
|
+
setShownCustomContentItemId(undefined);
|
210
|
+
},
|
211
|
+
onClose: () => {
|
212
|
+
const isInputFocused = isElementTextInput(document.activeElement);
|
213
|
+
if (isInputFocused) {
|
214
|
+
return;
|
215
|
+
}
|
216
|
+
menuContextRef.current.onClose?.();
|
217
|
+
},
|
218
|
+
onUnhandledKeyDown: (event) => {
|
219
|
+
onUnhandledKeyDown?.(event, menuContextRef.current);
|
220
|
+
},
|
221
|
+
}, {
|
222
|
+
shouldPreventDefault: shouldKeyboardActionPreventDefault,
|
223
|
+
shouldStopPropagation: shouldKeyboardActionStopPropagation,
|
171
224
|
});
|
172
225
|
}
|
173
226
|
//# sourceMappingURL=hooks.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/@ui/UiMenu/hooks.tsx"],"names":[],"mappings":"AAAA,qCAAqC;
|
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,
|
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" ||
|
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":"AAAA,gCAAgC;
|
1
|
+
{"version":3,"file":"itemUtils.js","sourceRoot":"","sources":["../../../src/@ui/UiMenu/itemUtils.ts"],"names":[],"mappings":"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"}
|