@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
@@ -0,0 +1,73 @@
1
+ // (C) 2025 GoodData Corporation
2
+ export const findItem = (items, predicate) => {
3
+ for (const item of items) {
4
+ if (predicate(item)) {
5
+ return item;
6
+ }
7
+ if (item.type === "interactive" && item.subMenu) {
8
+ const foundItemInSubMenu = findItem(item.subMenu, predicate);
9
+ if (foundItemInSubMenu) {
10
+ return foundItemInSubMenu;
11
+ }
12
+ }
13
+ }
14
+ return undefined;
15
+ };
16
+ export const getItem = (items, itemId) => {
17
+ return findItem(items, (item) => item.id === itemId);
18
+ };
19
+ export const findInteractiveItem = (items, predicate) => {
20
+ const foundItem = findItem(items, (item) => item.type === "interactive" && predicate(item));
21
+ return foundItem?.type === "interactive" ? foundItem : undefined;
22
+ };
23
+ export const getInteractiveItem = (items, itemId) => {
24
+ return findInteractiveItem(items, (item) => item.id === itemId);
25
+ };
26
+ export const getItemsByParent = (items, parentId) => {
27
+ const isRootLevel = parentId === undefined;
28
+ return isRootLevel ? items : findInteractiveItem(items, (item) => item.id === parentId)?.subMenu;
29
+ };
30
+ export const getItemParent = (items, itemId) => {
31
+ return findInteractiveItem(items, (item) => !!item.subMenu?.some((subMenuItem) => subMenuItem.id === itemId));
32
+ };
33
+ export const getSiblingItems = (items, itemId) => {
34
+ // If itemId is provided but the item doesn't exist, return undefined
35
+ if (!getItem(items, itemId)) {
36
+ return undefined;
37
+ }
38
+ return getItemsByParent(items, getItemParent(items, itemId)?.id);
39
+ };
40
+ export const getNextSiblings = (items, itemId) => {
41
+ const siblingItems = getSiblingItems(items, itemId);
42
+ const itemIndex = siblingItems?.findIndex((item) => item.id === itemId) ?? -1;
43
+ if (itemIndex === -1 || !siblingItems) {
44
+ return [];
45
+ }
46
+ // Wraparound
47
+ return [...siblingItems.slice(itemIndex + 1), ...siblingItems.slice(0, itemIndex)];
48
+ };
49
+ export const getPreviousSiblings = (items, itemId) => {
50
+ const siblingItems = getSiblingItems(items, itemId);
51
+ const itemIndex = siblingItems?.findIndex((item) => item.id === itemId) ?? -1;
52
+ if (itemIndex === -1 || !siblingItems) {
53
+ return [];
54
+ }
55
+ // Wraparound
56
+ return [...siblingItems.slice(0, itemIndex).reverse(), ...siblingItems.slice(itemIndex + 1).reverse()];
57
+ };
58
+ export const getClosestFocusableSibling = (args) => {
59
+ const { items, isItemFocusable, itemId, direction } = args;
60
+ switch (direction) {
61
+ case "forward":
62
+ if (itemId === undefined) {
63
+ return items.find(isItemFocusable);
64
+ }
65
+ return getNextSiblings(items, itemId).find(isItemFocusable);
66
+ case "backward":
67
+ if (itemId === undefined) {
68
+ return [...items].reverse().find(isItemFocusable);
69
+ }
70
+ return getPreviousSiblings(items, itemId).find(isItemFocusable);
71
+ }
72
+ };
73
+ //# sourceMappingURL=itemUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"itemUtils.js","sourceRoot":"","sources":["../../../src/@ui/UiMenu/itemUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const b: (props?: import("../@utils/bem.js").StyleProps) => string, e: (element: string, props?: import("../@utils/bem.js").StyleProps) => string;
2
+ //# sourceMappingURL=menuBem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menuBem.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/menuBem.ts"],"names":[],"mappings":"AAGA,eAAO,MAAQ,CAAC,6DAAE,CAAC,4EAA0B,CAAC"}
@@ -0,0 +1,4 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import { bem } from "../@utils/bem.js";
3
+ export const { b, e } = bem("gd-ui-kit-menu");
4
+ //# sourceMappingURL=menuBem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menuBem.js","sourceRoot":"","sources":["../../../src/@ui/UiMenu/menuBem.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,86 @@
1
+ import React from "react";
2
+ import { IDropdownBodyRenderProps } from "../../Dropdown/index.js";
3
+ /**
4
+ * @internal
5
+ */
6
+ export interface IUiMenuStaticItem<T> {
7
+ type: "static";
8
+ id?: string;
9
+ data: T;
10
+ }
11
+ /**
12
+ * @internal
13
+ */
14
+ export interface IUiMenuInteractiveItem<InteractiveItemData, StaticItemData = React.ReactNode> {
15
+ type: "interactive";
16
+ id: string;
17
+ stringTitle: string;
18
+ isDisabled?: boolean;
19
+ data: InteractiveItemData;
20
+ subMenu?: IUiMenuItem<InteractiveItemData, StaticItemData>[];
21
+ }
22
+ /**
23
+ * @internal
24
+ */
25
+ export type IUiMenuItem<InteractiveItemData, StaticItemData = React.ReactNode> = IUiMenuStaticItem<StaticItemData> | IUiMenuInteractiveItem<InteractiveItemData, StaticItemData>;
26
+ /**
27
+ * @internal
28
+ */
29
+ export interface UiMenuInteractiveItemProps<InteractiveItemData, StaticItemData = React.ReactNode> {
30
+ item: IUiMenuInteractiveItem<InteractiveItemData, StaticItemData>;
31
+ isFocused: boolean;
32
+ onSelect: () => void;
33
+ }
34
+ /**
35
+ * @internal
36
+ */
37
+ export interface UiMenuStaticItemProps<T> {
38
+ item: IUiMenuStaticItem<T>;
39
+ }
40
+ /**
41
+ * @internal
42
+ */
43
+ export interface UiMenuHeaderProps<InteractiveItemData, StaticItemData = React.ReactNode> {
44
+ onBack?: () => void;
45
+ onClose?: () => void;
46
+ parentItem?: IUiMenuInteractiveItem<InteractiveItemData, StaticItemData>;
47
+ }
48
+ /**
49
+ * @internal
50
+ */
51
+ export type ControlType = "keyboard" | "mouse" | "unknown";
52
+ /**
53
+ * @internal
54
+ */
55
+ export interface IUiMenuContext<InteractiveItemData, StaticItemData = React.ReactNode> {
56
+ items: IUiMenuItem<InteractiveItemData, StaticItemData>[];
57
+ focusedItem: IUiMenuInteractiveItem<InteractiveItemData, StaticItemData> | undefined;
58
+ itemRefs: React.MutableRefObject<{
59
+ [id: string]: HTMLElement;
60
+ }>;
61
+ onSelect: (item: IUiMenuInteractiveItem<InteractiveItemData, StaticItemData> | undefined) => void;
62
+ onClose?: () => void;
63
+ setFocusedId: React.Dispatch<React.SetStateAction<string | undefined>>;
64
+ isItemFocusable: (item: IUiMenuItem<InteractiveItemData, StaticItemData>) => boolean;
65
+ }
66
+ /**
67
+ * @internal
68
+ */
69
+ export interface UiMenuProps<InteractiveItemData, StaticItemData = React.ReactNode> {
70
+ items: IUiMenuItem<InteractiveItemData, StaticItemData>[];
71
+ className?: string;
72
+ itemClassName?: ((item: IUiMenuItem<InteractiveItemData, StaticItemData>) => string | undefined) | string;
73
+ maxWidth?: number;
74
+ onSelect?: (item: IUiMenuInteractiveItem<InteractiveItemData, StaticItemData>) => void;
75
+ onClose?: () => void;
76
+ onUnhandledKeyDown?: (event: React.KeyboardEvent, context: IUiMenuContext<InteractiveItemData, StaticItemData>) => void;
77
+ InteractiveItemComponent?: React.ComponentType<UiMenuInteractiveItemProps<InteractiveItemData, StaticItemData>>;
78
+ StaticItemComponent?: React.ComponentType<UiMenuStaticItemProps<StaticItemData>>;
79
+ MenuHeaderComponent?: React.ComponentType<UiMenuHeaderProps<InteractiveItemData, StaticItemData>>;
80
+ shouldKeyboardActionPreventDefault?: boolean;
81
+ shouldKeyboardActionStopPropagation?: boolean;
82
+ shouldCloseOnSelect?: boolean;
83
+ isDisabledFocusable?: boolean;
84
+ ariaAttributes: Omit<IDropdownBodyRenderProps["ariaAttributes"], "role">;
85
+ }
86
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ // (C) 2025 GoodData Corporation
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/@ui/UiMenu/types.ts"],"names":[],"mappings":"AAAA,gCAAgC"}
package/esm/index.d.ts CHANGED
@@ -98,6 +98,10 @@ export type { IAccessibilityConfigBase, IMenuAccessibilityConfig, IMenuContainer
98
98
  export { UiListbox } from "./@ui/UiListbox/UiListbox.js";
99
99
  export { DefaultUiListboxInteractiveItemComponent } from "./@ui/UiListbox/defaults/DefaultUiListboxInteractiveItemComponent.js";
100
100
  export { separatorStaticItem, DefaultUiListboxStaticItemComponent, } from "./@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.js";
101
- export type { UiListboxProps, IListboxContext, IUiListboxItem, IUiListboxStaticItem, UiListboxStaticItemProps, IUiListboxInteractiveItem, UiListboxInteractiveItemProps, } from "./@ui/UiListbox/types.js";
101
+ export type { UiListboxProps, IUiListboxContext, IUiListboxItem, IUiListboxStaticItem, UiListboxStaticItemProps, IUiListboxInteractiveItem, UiListboxInteractiveItemProps, } from "./@ui/UiListbox/types.js";
102
+ export { UiMenu } from "./@ui/UiMenu/UiMenu.js";
103
+ export { DefaultUiMenuInteractiveItemComponent } from "./@ui/UiMenu/defaults/DefaultUiMenuInteractiveItemComponent.js";
104
+ export { DefaultUiMenuStaticItemComponent } from "./@ui/UiMenu/defaults/DefaultUiMenuStaticItemComponent.js";
105
+ export type { UiMenuProps, IUiMenuContext, IUiMenuItem, IUiMenuStaticItem, UiMenuStaticItemProps, IUiMenuInteractiveItem, UiMenuInteractiveItemProps, UiMenuHeaderProps, } from "./@ui/UiMenu/types.js";
102
106
  export { makeMenuKeyboardNavigation } from "./@ui/@utils/keyboardNavigation.js";
103
107
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/esm/index.js CHANGED
@@ -85,5 +85,8 @@ export { UiFocusTrap } from "./@ui/UiFocusTrap/UiFocusTrap.js";
85
85
  export { UiListbox } from "./@ui/UiListbox/UiListbox.js";
86
86
  export { DefaultUiListboxInteractiveItemComponent } from "./@ui/UiListbox/defaults/DefaultUiListboxInteractiveItemComponent.js";
87
87
  export { separatorStaticItem, DefaultUiListboxStaticItemComponent, } from "./@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.js";
88
+ export { UiMenu } from "./@ui/UiMenu/UiMenu.js";
89
+ export { DefaultUiMenuInteractiveItemComponent } from "./@ui/UiMenu/defaults/DefaultUiMenuInteractiveItemComponent.js";
90
+ export { DefaultUiMenuStaticItemComponent } from "./@ui/UiMenu/defaults/DefaultUiMenuStaticItemComponent.js";
88
91
  export { makeMenuKeyboardNavigation } from "./@ui/@utils/keyboardNavigation.js";
89
92
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -557,6 +557,17 @@ export declare function DefaultUiListboxInteractiveItemComponent<T>({ item, isFo
557
557
  */
558
558
  export declare function DefaultUiListboxStaticItemComponent<T>({ item, }: UiListboxStaticItemProps<T>): React_2.ReactNode;
559
559
 
560
+ /**
561
+ * @internal
562
+ */
563
+ export declare function DefaultUiMenuInteractiveItemComponent<InteractiveItemData, StaticItemData>({ item, isFocused, onSelect, }: UiMenuInteractiveItemProps<InteractiveItemData, StaticItemData>): React_2.ReactNode;
564
+
565
+ /**
566
+ * By default just renders the data.
567
+ * @internal
568
+ */
569
+ export declare function DefaultUiMenuStaticItemComponent<T>({ item }: UiMenuStaticItemProps<T>): React_2.ReactNode;
570
+
560
571
  /**
561
572
  * @internal
562
573
  */
@@ -2863,20 +2874,6 @@ export declare interface ILegacySingleSelectListProps<T> {
2863
2874
  width: number;
2864
2875
  }
2865
2876
 
2866
- /**
2867
- * @internal
2868
- */
2869
- export declare interface IListboxContext<InteractiveItemData, StaticItemData = React_2.ReactNode> {
2870
- items: IUiListboxItem<InteractiveItemData, StaticItemData>[];
2871
- itemRefs: React_2.MutableRefObject<(HTMLLIElement | null)[]>;
2872
- onSelect: (item: IUiListboxInteractiveItem<InteractiveItemData>) => void;
2873
- onClose?: () => void;
2874
- selectedItemId: string | undefined;
2875
- focusedIndex: number | undefined;
2876
- setFocusedIndex: React_2.Dispatch<React_2.SetStateAction<number>>;
2877
- isItemFocusable: (item: IUiListboxItem<InteractiveItemData, StaticItemData>) => boolean;
2878
- }
2879
-
2880
2877
  /**
2881
2878
  * @internal
2882
2879
  */
@@ -4321,6 +4318,20 @@ export declare interface IUiChipAccessibilityConfig extends IAccessibilityConfig
4321
4318
  deleteAriaLabel?: string;
4322
4319
  }
4323
4320
 
4321
+ /**
4322
+ * @internal
4323
+ */
4324
+ export declare interface IUiListboxContext<InteractiveItemData, StaticItemData = React_2.ReactNode> {
4325
+ items: IUiListboxItem<InteractiveItemData, StaticItemData>[];
4326
+ itemRefs: React_2.MutableRefObject<(HTMLLIElement | null)[]>;
4327
+ onSelect: (item: IUiListboxInteractiveItem<InteractiveItemData>) => void;
4328
+ onClose?: () => void;
4329
+ selectedItemId: string | undefined;
4330
+ focusedIndex: number | undefined;
4331
+ setFocusedIndex: React_2.Dispatch<React_2.SetStateAction<number | undefined>>;
4332
+ isItemFocusable: (item: IUiListboxItem<InteractiveItemData, StaticItemData>) => boolean;
4333
+ }
4334
+
4324
4335
  /**
4325
4336
  * @internal
4326
4337
  */
@@ -4346,6 +4357,47 @@ export declare interface IUiListboxStaticItem<T> {
4346
4357
  data: T;
4347
4358
  }
4348
4359
 
4360
+ /**
4361
+ * @internal
4362
+ */
4363
+ export declare interface IUiMenuContext<InteractiveItemData, StaticItemData = React_2.ReactNode> {
4364
+ items: IUiMenuItem<InteractiveItemData, StaticItemData>[];
4365
+ focusedItem: IUiMenuInteractiveItem<InteractiveItemData, StaticItemData> | undefined;
4366
+ itemRefs: React_2.MutableRefObject<{
4367
+ [id: string]: HTMLElement;
4368
+ }>;
4369
+ onSelect: (item: IUiMenuInteractiveItem<InteractiveItemData, StaticItemData> | undefined) => void;
4370
+ onClose?: () => void;
4371
+ setFocusedId: React_2.Dispatch<React_2.SetStateAction<string | undefined>>;
4372
+ isItemFocusable: (item: IUiMenuItem<InteractiveItemData, StaticItemData>) => boolean;
4373
+ }
4374
+
4375
+ /**
4376
+ * @internal
4377
+ */
4378
+ export declare interface IUiMenuInteractiveItem<InteractiveItemData, StaticItemData = React_2.ReactNode> {
4379
+ type: "interactive";
4380
+ id: string;
4381
+ stringTitle: string;
4382
+ isDisabled?: boolean;
4383
+ data: InteractiveItemData;
4384
+ subMenu?: IUiMenuItem<InteractiveItemData, StaticItemData>[];
4385
+ }
4386
+
4387
+ /**
4388
+ * @internal
4389
+ */
4390
+ export declare type IUiMenuItem<InteractiveItemData, StaticItemData = React_2.ReactNode> = IUiMenuStaticItem<StaticItemData> | IUiMenuInteractiveItem<InteractiveItemData, StaticItemData>;
4391
+
4392
+ /**
4393
+ * @internal
4394
+ */
4395
+ export declare interface IUiMenuStaticItem<T> {
4396
+ type: "static";
4397
+ id?: string;
4398
+ data: T;
4399
+ }
4400
+
4349
4401
  /**
4350
4402
  * @internal
4351
4403
  */
@@ -4964,7 +5016,10 @@ export declare type Separators = {
4964
5016
  /**
4965
5017
  * @internal
4966
5018
  */
4967
- export declare const separatorStaticItem: IUiListboxStaticItem<React_2.ReactNode>;
5019
+ export declare const separatorStaticItem: {
5020
+ data: React_2.JSX.Element;
5021
+ type: "static";
5022
+ };
4968
5023
 
4969
5024
  /**
4970
5025
  * @internal
@@ -5451,7 +5506,7 @@ export declare interface UiListboxProps<InteractiveItemData, StaticItemData = Re
5451
5506
  maxWidth?: number;
5452
5507
  onSelect?: (item: IUiListboxInteractiveItem<InteractiveItemData>) => void;
5453
5508
  onClose?: () => void;
5454
- onUnhandledKeyDown?: (event: React_2.KeyboardEvent, context: IListboxContext<InteractiveItemData, StaticItemData>) => void;
5509
+ onUnhandledKeyDown?: (event: React_2.KeyboardEvent, context: IUiListboxContext<InteractiveItemData, StaticItemData>) => void;
5455
5510
  selectedItemId?: string;
5456
5511
  InteractiveItemComponent?: React_2.ComponentType<UiListboxInteractiveItemProps<InteractiveItemData>>;
5457
5512
  StaticItemComponent?: React_2.ComponentType<UiListboxStaticItemProps<StaticItemData>>;
@@ -5459,7 +5514,7 @@ export declare interface UiListboxProps<InteractiveItemData, StaticItemData = Re
5459
5514
  shouldKeyboardActionStopPropagation?: boolean;
5460
5515
  shouldCloseOnSelect?: boolean;
5461
5516
  isDisabledFocusable?: boolean;
5462
- ariaAttributes: IDropdownBodyRenderProps["ariaAttributes"];
5517
+ ariaAttributes: Omit<IDropdownBodyRenderProps["ariaAttributes"], "role">;
5463
5518
  }
5464
5519
 
5465
5520
  /**
@@ -5469,6 +5524,61 @@ export declare interface UiListboxStaticItemProps<T> {
5469
5524
  item: IUiListboxStaticItem<T>;
5470
5525
  }
5471
5526
 
5527
+ /**
5528
+ * An accessible menu component that can be navigated by keyboard.
5529
+ * Usable in a <Dropdown /> component.
5530
+ * Should implement https://www.w3.org/WAI/ARIA/apg/patterns/menubar/
5531
+ *
5532
+ * @internal
5533
+ */
5534
+ 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_2.ReactNode;
5535
+
5536
+ /**
5537
+ * @internal
5538
+ */
5539
+ export declare interface UiMenuHeaderProps<InteractiveItemData, StaticItemData = React_2.ReactNode> {
5540
+ onBack?: () => void;
5541
+ onClose?: () => void;
5542
+ parentItem?: IUiMenuInteractiveItem<InteractiveItemData, StaticItemData>;
5543
+ }
5544
+
5545
+ /**
5546
+ * @internal
5547
+ */
5548
+ export declare interface UiMenuInteractiveItemProps<InteractiveItemData, StaticItemData = React_2.ReactNode> {
5549
+ item: IUiMenuInteractiveItem<InteractiveItemData, StaticItemData>;
5550
+ isFocused: boolean;
5551
+ onSelect: () => void;
5552
+ }
5553
+
5554
+ /**
5555
+ * @internal
5556
+ */
5557
+ export declare interface UiMenuProps<InteractiveItemData, StaticItemData = React_2.ReactNode> {
5558
+ items: IUiMenuItem<InteractiveItemData, StaticItemData>[];
5559
+ className?: string;
5560
+ itemClassName?: ((item: IUiMenuItem<InteractiveItemData, StaticItemData>) => string | undefined) | string;
5561
+ maxWidth?: number;
5562
+ onSelect?: (item: IUiMenuInteractiveItem<InteractiveItemData, StaticItemData>) => void;
5563
+ onClose?: () => void;
5564
+ onUnhandledKeyDown?: (event: React_2.KeyboardEvent, context: IUiMenuContext<InteractiveItemData, StaticItemData>) => void;
5565
+ InteractiveItemComponent?: React_2.ComponentType<UiMenuInteractiveItemProps<InteractiveItemData, StaticItemData>>;
5566
+ StaticItemComponent?: React_2.ComponentType<UiMenuStaticItemProps<StaticItemData>>;
5567
+ MenuHeaderComponent?: React_2.ComponentType<UiMenuHeaderProps<InteractiveItemData, StaticItemData>>;
5568
+ shouldKeyboardActionPreventDefault?: boolean;
5569
+ shouldKeyboardActionStopPropagation?: boolean;
5570
+ shouldCloseOnSelect?: boolean;
5571
+ isDisabledFocusable?: boolean;
5572
+ ariaAttributes: Omit<IDropdownBodyRenderProps["ariaAttributes"], "role">;
5573
+ }
5574
+
5575
+ /**
5576
+ * @internal
5577
+ */
5578
+ export declare interface UiMenuStaticItemProps<T> {
5579
+ item: IUiMenuStaticItem<T>;
5580
+ }
5581
+
5472
5582
  /**
5473
5583
  * @internal
5474
5584
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-kit",
3
- "version": "10.27.0-alpha.12",
3
+ "version": "10.27.0-alpha.13",
4
4
  "description": "GoodData SDK - UI Building Components",
5
5
  "repository": {
6
6
  "type": "git",
@@ -70,11 +70,11 @@
70
70
  "tslib": "^2.5.0",
71
71
  "uuid": "^8.3.2",
72
72
  "unified": "^11.0.5",
73
- "@gooddata/sdk-backend-spi": "10.27.0-alpha.12",
74
- "@gooddata/sdk-model": "10.27.0-alpha.12",
75
- "@gooddata/sdk-ui-theme-provider": "10.27.0-alpha.12",
76
- "@gooddata/util": "10.27.0-alpha.12",
77
- "@gooddata/sdk-ui": "10.27.0-alpha.12"
73
+ "@gooddata/sdk-model": "10.27.0-alpha.13",
74
+ "@gooddata/sdk-backend-spi": "10.27.0-alpha.13",
75
+ "@gooddata/sdk-ui": "10.27.0-alpha.13",
76
+ "@gooddata/sdk-ui-theme-provider": "10.27.0-alpha.13",
77
+ "@gooddata/util": "10.27.0-alpha.13"
78
78
  },
79
79
  "peerDependencies": {
80
80
  "react": "^16.10.0 || ^17.0.0 || ^18.0.0",
@@ -133,8 +133,8 @@
133
133
  "typescript": "5.3.3",
134
134
  "vitest": "3.0.8",
135
135
  "vitest-dom": "0.1.1",
136
- "@gooddata/reference-workspace": "10.27.0-alpha.12",
137
- "@gooddata/sdk-backend-mockingbird": "10.27.0-alpha.12"
136
+ "@gooddata/reference-workspace": "10.27.0-alpha.13",
137
+ "@gooddata/sdk-backend-mockingbird": "10.27.0-alpha.13"
138
138
  },
139
139
  "scripts": {
140
140
  "clean": "rm -rf ci dist esm coverage styles/css *.log tsconfig.tsbuildinfo",
@@ -0,0 +1,115 @@
1
+ // (C) 2025 GoodData Corporation
2
+
3
+ @use "../../../styles/scss/variables";
4
+
5
+ .gd-ui-kit-menu {
6
+ $root: &;
7
+
8
+ max-height: 300px;
9
+ width: 100%;
10
+ min-width: 200px;
11
+ position: relative;
12
+ display: flex;
13
+ flex-direction: column;
14
+ user-select: none;
15
+
16
+ &__items-container {
17
+ width: 100%;
18
+ height: 100%;
19
+ overflow-y: auto;
20
+ overflow-x: hidden;
21
+ }
22
+
23
+ @media #{variables.$small-only} {
24
+ // !important to override inline style from maxWidth prop
25
+ /* stylelint-disable-next-line declaration-no-important */
26
+ max-width: 100vw !important;
27
+ max-height: 100vh;
28
+ width: 100vw;
29
+ }
30
+
31
+ &__menu-header {
32
+ display: flex;
33
+ gap: 0.5rem;
34
+ align-items: center;
35
+ width: 100%;
36
+ background: variables.$default-is-focused-background;
37
+ border-bottom: 1px solid variables.$gd-border-color;
38
+
39
+ &-title {
40
+ line-height: 2rem;
41
+ cursor: pointer;
42
+ display: flex;
43
+ gap: 0.5rem;
44
+ align-items: center;
45
+ flex-grow: 1;
46
+ background: none;
47
+ border: none;
48
+ font-size: 11px;
49
+ color: variables.$gd-color-state-blank;
50
+ overflow: hidden;
51
+
52
+ &-text {
53
+ margin: 0;
54
+ white-space: nowrap;
55
+ font-weight: bold;
56
+ text-transform: uppercase;
57
+ overflow: hidden;
58
+ }
59
+ }
60
+ &-close-icon {
61
+ flex-shrink: 0;
62
+ }
63
+ }
64
+
65
+ &__items {
66
+ list-style: none;
67
+ margin: 0;
68
+ padding: 0;
69
+ outline: none;
70
+
71
+ &:focus-visible #{$root}__item--isFocused {
72
+ outline-offset: -2px;
73
+ outline: auto 5px Highlight; /* For Firefox */
74
+ // stylelint-disable-next-line declaration-block-no-duplicate-properties
75
+ outline: auto 5px -webkit-focus-ring-color; /* For Chrome */
76
+ }
77
+ }
78
+
79
+ &__item {
80
+ padding: 8px 10px;
81
+ cursor: pointer;
82
+ display: flex;
83
+ align-items: center;
84
+ font-size: 14px;
85
+ line-height: 20px;
86
+ color: variables.$gd-color-text;
87
+ transition: background-color 0.2s;
88
+
89
+ // Controlled by mouse and has hover
90
+ #{$root}--controlType-mouse &:hover:not(&--isDisabled) {
91
+ background-color: variables.$is-focused-background;
92
+ color: variables.$is-focused-color;
93
+ }
94
+
95
+ // Controlled by keyboard and has focus, not disabled
96
+ #{$root}--controlType-keyboard #{$root}__items:focus &--isFocused:not(&--isDisabled) {
97
+ background-color: variables.$is-focused-background;
98
+ color: variables.$is-focused-color;
99
+ }
100
+ // Controlled by keyboard and has focus, disabled
101
+ #{$root}--controlType-keyboard #{$root}__items:focus &--isFocused#{&}--isDisabled {
102
+ background-color: variables.$is-focused-background;
103
+ }
104
+
105
+ &--isDisabled {
106
+ color: variables.$gd-color-disabled;
107
+ cursor: not-allowed;
108
+ }
109
+ }
110
+
111
+ &__item-title {
112
+ width: 100%;
113
+ white-space: nowrap;
114
+ }
115
+ }
@@ -7,3 +7,4 @@
7
7
  @use "./UiPagedVirtualList/UiPagedVirtualList.scss";
8
8
  @use "./UiChip/UiChip.scss";
9
9
  @use "./UiListbox/UiListbox.scss";
10
+ @use "./UiMenu/UiMenu.scss";