@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.
- 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/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 +2 -2
- package/esm/@ui/UiIconButton/UiIconButton.d.ts.map +1 -1
- package/esm/@ui/UiIconButton/UiIconButton.js +23 -2
- package/esm/@ui/UiIconButton/UiIconButton.js.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 +44 -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 +86 -35
- 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/Button/Button.d.ts.map +1 -1
- package/esm/Button/Button.js +2 -2
- package/esm/Button/Button.js.map +1 -1
- package/esm/Button/typings.d.ts +1 -0
- package/esm/Button/typings.d.ts.map +1 -1
- package/esm/Dropdown/Dropdown.js +18 -19
- package/esm/Dropdown/Dropdown.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/index.d.ts +10 -4
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +8 -2
- package/esm/index.js.map +1 -1
- package/esm/sdk-ui-kit.d.ts +230 -54
- package/esm/utils/domUtilities.d.ts +6 -0
- 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 +7 -0
- package/esm/utils/useAutofocusOnMount.d.ts.map +1 -0
- package/esm/utils/useAutofocusOnMount.js +40 -0
- package/esm/utils/useAutofocusOnMount.js.map +1 -0
- package/package.json +8 -8
- package/src/@ui/UiMenu/UiMenu.scss +15 -7
- package/styles/css/main.css +14 -7
- package/styles/css/main.css.map +1 -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
package/esm/@ui/@types/size.d.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../../src/@ui/@types/size.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"size.d.ts","sourceRoot":"","sources":["../../../src/@ui/@types/size.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC;AAEhC;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC"}
|
package/esm/@ui/@types/size.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"size.js","sourceRoot":"","sources":["../../../src/@ui/@types/size.ts"],"names":[],"mappings":""}
|
1
|
+
{"version":3,"file":"size.js","sourceRoot":"","sources":["../../../src/@ui/@types/size.ts"],"names":[],"mappings":"AAAA,qCAAqC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"UiFocusTrap.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiFocusTrap/UiFocusTrap.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAM9D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;;OAIG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;IAEtD;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;IACrD;;;OAGG;IACH,+BAA+B,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CACpE;AA8FD;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,
|
1
|
+
{"version":3,"file":"UiFocusTrap.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiFocusTrap/UiFocusTrap.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAM9D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;;OAIG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;IAEtD;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;IACrD;;;OAGG;IACH,+BAA+B,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CACpE;AA8FD;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA6FlD,CAAC"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
// (C) 2025 GoodData Corporation
|
2
2
|
import React, { useEffect, useRef, useCallback } from "react";
|
3
3
|
import { makeDialogKeyboardNavigation } from "../@utils/keyboardNavigation.js";
|
4
|
-
import { getFocusableElements } from "../../utils/domUtilities.js";
|
4
|
+
import { getFocusableElements, isElementTextInput } from "../../utils/domUtilities.js";
|
5
5
|
/**
|
6
6
|
* Attempts to find a truly focusable element by trying subsequent elements in the focusable elements collection
|
7
7
|
* This is useful when some elements are focusable but not reachable (e.g., out of viewport or disabled)
|
@@ -112,6 +112,9 @@ export const UiFocusTrap = ({ children, onDeactivate, returnFocusTo: returnFocus
|
|
112
112
|
// Do not change focus, if the focused element is already inside the trap
|
113
113
|
return;
|
114
114
|
}
|
115
|
+
if (isElementTextInput(document.activeElement)) {
|
116
|
+
return;
|
117
|
+
}
|
115
118
|
if (initialFocus) {
|
116
119
|
if (typeof initialFocus === "string") {
|
117
120
|
const element = document.getElementById(initialFocus);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"UiFocusTrap.js","sourceRoot":"","sources":["../../../src/@ui/UiFocusTrap/UiFocusTrap.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;
|
1
|
+
{"version":3,"file":"UiFocusTrap.js","sourceRoot":"","sources":["../../../src/@ui/UiFocusTrap/UiFocusTrap.tsx"],"names":[],"mappings":"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"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import React from "react";
|
2
2
|
import { IconType } from "../@types/icon.js";
|
3
|
-
import { SizeLarge, SizeMedium, SizeSmall } from "../@types/size.js";
|
3
|
+
import { SizeLarge, SizeMedium, SizeSmall, SizeXSmall } from "../@types/size.js";
|
4
4
|
import { VariantDanger, VariantPopOut, VariantPrimary, VariantSecondary, VariantTertiary } from "../@types/variant.js";
|
5
5
|
/**
|
6
6
|
* @internal
|
@@ -8,7 +8,7 @@ import { VariantDanger, VariantPopOut, VariantPrimary, VariantSecondary, Variant
|
|
8
8
|
export interface UiIconButtonProps {
|
9
9
|
icon: IconType;
|
10
10
|
label: string;
|
11
|
-
size?: SizeSmall | SizeMedium | SizeLarge;
|
11
|
+
size?: SizeXSmall | SizeSmall | SizeMedium | SizeLarge;
|
12
12
|
variant?: VariantPrimary | VariantSecondary | VariantTertiary | VariantPopOut | VariantDanger;
|
13
13
|
isDisabled?: boolean;
|
14
14
|
onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"UiIconButton.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiIconButton/UiIconButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;
|
1
|
+
{"version":3,"file":"UiIconButton.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiIconButton/UiIconButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EACH,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,eAAe,EAClB,MAAM,sBAAsB,CAAC;AAI9B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IACvD,OAAO,CAAC,EAAE,cAAc,GAAG,gBAAgB,GAAG,eAAe,GAAG,aAAa,GAAG,aAAa,CAAC;IAC9F,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAmBD;;GAEG;AACH,eAAO,MAAM,YAAY,6FAyBxB,CAAC"}
|
@@ -3,12 +3,33 @@ import React, { forwardRef } from "react";
|
|
3
3
|
import { bem } from "../@utils/bem.js";
|
4
4
|
import { UiIcon } from "../UiIcon/UiIcon.js";
|
5
5
|
const { b } = bem("gd-ui-kit-icon-button");
|
6
|
+
const getSize = (size) => {
|
7
|
+
switch (size) {
|
8
|
+
case "xsmall":
|
9
|
+
return 12;
|
10
|
+
case "small":
|
11
|
+
return 16;
|
12
|
+
case "medium":
|
13
|
+
return 18;
|
14
|
+
case "large":
|
15
|
+
return 20;
|
16
|
+
default:
|
17
|
+
return 18;
|
18
|
+
}
|
19
|
+
};
|
6
20
|
/**
|
7
21
|
* @internal
|
8
22
|
*/
|
9
23
|
export const UiIconButton = forwardRef(({ icon, label, size = "medium", variant = "secondary", isDisabled, onClick, dataId }, ref) => {
|
10
|
-
const iconSize = size
|
11
|
-
|
24
|
+
const iconSize = getSize(size);
|
25
|
+
const onClickHandler = (e) => {
|
26
|
+
if (isDisabled) {
|
27
|
+
e.preventDefault();
|
28
|
+
return;
|
29
|
+
}
|
30
|
+
onClick?.(e);
|
31
|
+
};
|
32
|
+
return (React.createElement("button", { ref: ref, "aria-label": label, className: b({ size, variant }), "aria-disabled": isDisabled, onClick: onClickHandler, "data-id": dataId },
|
12
33
|
React.createElement(UiIcon, { type: icon, size: iconSize, ariaHidden: true })));
|
13
34
|
});
|
14
35
|
UiIconButton.displayName = "UiIconButton";
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"UiIconButton.js","sourceRoot":"","sources":["../../../src/@ui/UiIconButton/UiIconButton.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAU1C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAe7C,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAClC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,QAAQ,EAAE,OAAO,GAAG,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE;IAC1F,MAAM,QAAQ,GAAG,
|
1
|
+
{"version":3,"file":"UiIconButton.js","sourceRoot":"","sources":["../../../src/@ui/UiIconButton/UiIconButton.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAU1C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAe7C,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAE3C,MAAM,OAAO,GAAG,CAAC,IAAqD,EAAE,EAAE;IACtE,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,QAAQ;YACT,OAAO,EAAE,CAAC;QACd,KAAK,OAAO;YACR,OAAO,EAAE,CAAC;QACd,KAAK,QAAQ;YACT,OAAO,EAAE,CAAC;QACd,KAAK,OAAO;YACR,OAAO,EAAE,CAAC;QACd;YACI,OAAO,EAAE,CAAC;IAClB,CAAC;AACL,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAClC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,QAAQ,EAAE,OAAO,GAAG,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE;IAC1F,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/B,MAAM,cAAc,GAAG,CAAC,CAAsC,EAAE,EAAE;QAC9D,IAAI,UAAU,EAAE,CAAC;YACb,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QACD,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,CACH,gCACI,GAAG,EAAE,GAAG,gBACI,KAAK,EACjB,SAAS,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,mBAChB,UAAU,EACzB,OAAO,EAAE,cAAc,aACd,MAAM;QAEf,oBAAC,MAAM,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,SAAG,CAC5C,CACZ,CAAC;AACN,CAAC,CACJ,CAAC;AAEF,YAAY,CAAC,WAAW,GAAG,cAAc,CAAC"}
|
@@ -7,5 +7,5 @@ import { IUiMenuItemData, UiMenuProps } from "./types.js";
|
|
7
7
|
*
|
8
8
|
* @internal
|
9
9
|
*/
|
10
|
-
export declare function UiMenu<T extends IUiMenuItemData = object>(props: UiMenuProps<T>): React.ReactNode;
|
10
|
+
export declare function UiMenu<T extends IUiMenuItemData = object, M extends object = object>(props: UiMenuProps<T, M>): React.ReactNode;
|
11
11
|
//# sourceMappingURL=UiMenu.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"UiMenu.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/UiMenu.tsx"],"names":[],"mappings":"AACA,OAAO,
|
1
|
+
{"version":3,"file":"UiMenu.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/UiMenu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAa,MAAM,OAAO,CAAC;AAGlC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAoB1D;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,eAAe,GAAG,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EAChF,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GACzB,KAAK,CAAC,SAAS,CA+FjB"}
|
package/esm/@ui/UiMenu/UiMenu.js
CHANGED
@@ -2,9 +2,15 @@
|
|
2
2
|
import React from "react";
|
3
3
|
import cx from "classnames";
|
4
4
|
import { b, e } from "./menuBem.js";
|
5
|
-
import { getSiblingItems } from "./itemUtils.js";
|
6
|
-
import { useKeyNavigation, useUiMenuContextValue } from "./hooks.js";
|
5
|
+
import { getContentItem, getSiblingItems } from "./itemUtils.js";
|
6
|
+
import { useCustomContentKeyNavigation, useKeyNavigation, useUiMenuContextValue } from "./hooks.js";
|
7
7
|
import { typedUiMenuContextStore } from "./context.js";
|
8
|
+
import { useAutofocusOnMount } from "../../utils/useAutofocusOnMount.js";
|
9
|
+
const ContentWrapper = (props) => {
|
10
|
+
// autofocus always first element in the custom content for now
|
11
|
+
const autofocusRef = useAutofocusOnMount();
|
12
|
+
return (React.createElement("div", { onKeyDown: props.keyboardNavigationHandler, ref: autofocusRef }, props.children));
|
13
|
+
};
|
8
14
|
/**
|
9
15
|
* An accessible menu component that can be navigated by keyboard.
|
10
16
|
* Usable in a <Dropdown /> component.
|
@@ -24,13 +30,27 @@ export function UiMenu(props) {
|
|
24
30
|
shouldKeyboardActionPreventDefault,
|
25
31
|
shouldKeyboardActionStopPropagation,
|
26
32
|
});
|
27
|
-
const
|
33
|
+
const handleKeyDownInCustomContent = useCustomContentKeyNavigation({
|
34
|
+
menuContextValue: contextStoreValue,
|
35
|
+
onUnhandledKeyDown,
|
36
|
+
shouldKeyboardActionPreventDefault,
|
37
|
+
shouldKeyboardActionStopPropagation,
|
38
|
+
});
|
39
|
+
const { focusedItem, items, controlType, setControlType, MenuHeader, ItemComponent, Content, makeItemId, shownCustomContentItemId, } = contextStoreValue;
|
28
40
|
const focusedId = focusedItem?.id;
|
29
41
|
const currentMenuLevelItems = React.useMemo(() => (focusedId === undefined ? [] : getSiblingItems(items, focusedId) ?? []), [items, focusedId]);
|
42
|
+
React.useEffect(() => {
|
43
|
+
// Only focus when shownCustomContentItemId becomes undefined (was previously set)
|
44
|
+
if (shownCustomContentItemId === undefined && menuComponentRef.current) {
|
45
|
+
menuComponentRef.current.focus();
|
46
|
+
}
|
47
|
+
}, [shownCustomContentItemId, menuComponentRef]);
|
48
|
+
const menuClassName = typeof className === "function" ? className(contextStoreValue) : className;
|
30
49
|
return (React.createElement(UiMenuContextStore, { value: contextStoreValue },
|
31
|
-
React.createElement("div", { className: cx(b(), b({ controlType }),
|
32
|
-
React.createElement(
|
50
|
+
React.createElement("div", { className: cx(b(), b({ controlType }), menuClassName), style: { maxWidth }, onKeyDownCapture: () => setControlType("keyboard"), onMouseMoveCapture: () => setControlType("mouse") }, shownCustomContentItemId ? (React.createElement(ContentWrapper, { keyboardNavigationHandler: handleKeyDownInCustomContent },
|
51
|
+
React.createElement(Content, { item: getContentItem(items, shownCustomContentItemId) }))) : (React.createElement(React.Fragment, null,
|
52
|
+
React.createElement(MenuHeader, null),
|
33
53
|
React.createElement("div", { className: e("items-container"), ref: itemsContainerRef },
|
34
|
-
React.createElement("menu", { className: e("items"), tabIndex: 0, onKeyDown: handleKeyDown, "aria-activedescendant":
|
54
|
+
React.createElement("menu", { className: e("items"), tabIndex: 0, onKeyDown: handleKeyDown, "aria-activedescendant": makeItemId(focusedItem), ...ariaAttributes, role: "menu", ref: menuComponentRef }, currentMenuLevelItems.map((item, index) => (React.createElement(ItemComponent, { key: "id" in item ? item.id : index, item: item }))))))))));
|
35
55
|
}
|
36
56
|
//# sourceMappingURL=UiMenu.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"UiMenu.js","sourceRoot":"","sources":["../../../src/@ui/UiMenu/UiMenu.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,
|
1
|
+
{"version":3,"file":"UiMenu.js","sourceRoot":"","sources":["../../../src/@ui/UiMenu/UiMenu.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { IUiMenuItemProps, IUiMenuItemData } from "../types.js";
|
3
|
+
export declare const Item: React.MemoExoticComponent<(<T extends IUiMenuItemData = object>({ item, }: IUiMenuItemProps<T>) => React.JSX.Element)>;
|
4
|
+
//# sourceMappingURL=Item.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiMenu/components/Item.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEhE,eAAO,MAAM,IAAI,wHAyBf,CAAC"}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
2
|
+
import React from "react";
|
3
|
+
import { typedUiMenuContextStore } from "../context.js";
|
4
|
+
export const Item = React.memo(function Item({ item, }) {
|
5
|
+
const { InteractiveItemWrapper, StaticItem, GroupItem, ContentItemWrapper } = typedUiMenuContextStore().useContextStore((ctx) => ({
|
6
|
+
InteractiveItemWrapper: ctx.InteractiveItemWrapper,
|
7
|
+
StaticItem: ctx.StaticItem,
|
8
|
+
GroupItem: ctx.GroupItem,
|
9
|
+
ContentItem: ctx.ContentItem,
|
10
|
+
ContentItemWrapper: ctx.ContentItemWrapper,
|
11
|
+
}));
|
12
|
+
if (item.type === "interactive") {
|
13
|
+
return React.createElement(InteractiveItemWrapper, { item: item });
|
14
|
+
}
|
15
|
+
if (item.type === "static") {
|
16
|
+
return React.createElement(StaticItem, { item: item });
|
17
|
+
}
|
18
|
+
if (item.type === "group") {
|
19
|
+
return React.createElement(GroupItem, { item: item });
|
20
|
+
}
|
21
|
+
if (item.type === "content") {
|
22
|
+
return React.createElement(ContentItemWrapper, { item: item });
|
23
|
+
}
|
24
|
+
return null;
|
25
|
+
});
|
26
|
+
//# sourceMappingURL=Item.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Item.js","sourceRoot":"","sources":["../../../../src/@ui/UiMenu/components/Item.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAGxD,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAqC,EAC7E,IAAI,GACc;IAClB,MAAM,EAAE,sBAAsB,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,GACvE,uBAAuB,EAAK,CAAC,eAAe,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnD,sBAAsB,EAAE,GAAG,CAAC,sBAAsB;QAClD,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;KAC7C,CAAC,CAAC,CAAC;IAER,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC9B,OAAO,oBAAC,sBAAsB,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC;IAClD,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,oBAAC,UAAU,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC;IACtC,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,oBAAC,SAAS,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC;IACrC,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,oBAAC,kBAAkB,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC,CAAC"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { IUiMenuContentItem, IUiMenuItemData } from "../../types.js";
|
3
|
+
/**
|
4
|
+
* Container for rendering custom content in menu.
|
5
|
+
* @internal
|
6
|
+
*/
|
7
|
+
export declare const DefaultUiMenuContent: React.MemoExoticComponent<(<T extends IUiMenuItemData = object>({ item }: {
|
8
|
+
item: IUiMenuContentItem<T>;
|
9
|
+
}) => React.ReactElement)>;
|
10
|
+
//# sourceMappingURL=DefaultUiMenuContent.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DefaultUiMenuContent.d.ts","sourceRoot":"","sources":["../../../../../src/@ui/UiMenu/components/defaults/DefaultUiMenuContent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAIrE;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;MAEa,MAAM,YAAY,EA2B9D,CAAC"}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
2
|
+
import React from "react";
|
3
|
+
import { e } from "../../menuBem.js";
|
4
|
+
import { typedUiMenuContextStore } from "../../context.js";
|
5
|
+
import { DefaultUiMenuHeader } from "./DefaultUiMenuHeader.js";
|
6
|
+
/**
|
7
|
+
* Container for rendering custom content in menu.
|
8
|
+
* @internal
|
9
|
+
*/
|
10
|
+
export const DefaultUiMenuContent = React.memo(function DefaultUiMenuContent({ item }) {
|
11
|
+
const { useContextStore, createSelector } = typedUiMenuContextStore();
|
12
|
+
const selector = createSelector((ctx) => ({
|
13
|
+
onClose: ctx.onClose,
|
14
|
+
setShownCustomContentItemId: ctx.setShownCustomContentItemId,
|
15
|
+
setFocusedId: ctx.setFocusedId,
|
16
|
+
shownCustomContentItemId: ctx.shownCustomContentItemId,
|
17
|
+
}));
|
18
|
+
const { onClose, setShownCustomContentItemId, setFocusedId, shownCustomContentItemId } = useContextStore(selector);
|
19
|
+
const handleBack = React.useCallback(() => {
|
20
|
+
setFocusedId(shownCustomContentItemId);
|
21
|
+
setShownCustomContentItemId(undefined);
|
22
|
+
}, [setShownCustomContentItemId, shownCustomContentItemId, setFocusedId]);
|
23
|
+
const ContentComponent = item.Component;
|
24
|
+
return (React.createElement(React.Fragment, null,
|
25
|
+
item.showComponentOnly ? null : React.createElement(DefaultUiMenuHeader, null),
|
26
|
+
React.createElement("div", { className: e("content-container") },
|
27
|
+
React.createElement(ContentComponent, { onBack: handleBack, onClose: onClose }))));
|
28
|
+
});
|
29
|
+
//# sourceMappingURL=DefaultUiMenuContent.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DefaultUiMenuContent.js","sourceRoot":"","sources":["../../../../../src/@ui/UiMenu/components/defaults/DefaultUiMenuContent.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AAErC,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,oBAAoB,CAE1E,EAAE,IAAI,EAAmC;IACvC,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,uBAAuB,EAAK,CAAC;IACzE,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtC,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,2BAA2B,EAAE,GAAG,CAAC,2BAA2B;QAC5D,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,wBAAwB,EAAE,GAAG,CAAC,wBAAwB;KACzD,CAAC,CAAC,CAAC;IAEJ,MAAM,EAAE,OAAO,EAAE,2BAA2B,EAAE,YAAY,EAAE,wBAAwB,EAAE,GAClF,eAAe,CAAC,QAAQ,CAAC,CAAC;IAE9B,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACtC,YAAY,CAAC,wBAAwB,CAAC,CAAC;QACvC,2BAA2B,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,2BAA2B,EAAE,wBAAwB,EAAE,YAAY,CAAC,CAAC,CAAC;IAE1E,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC;IAExC,OAAO,CACH;QACK,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAC,mBAAmB,OAAG;QACxD,6BAAK,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC;YAClC,oBAAC,gBAAgB,IAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAI,CACxD,CACP,CACN,CAAC;AACN,CAAC,CAAC,CAAC"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { IUiMenuContentItemProps, IUiMenuContentItemWrapperProps, IUiMenuItemData } from "../../types.js";
|
3
|
+
/**
|
4
|
+
* Default component for rendering content menu items.
|
5
|
+
* @internal
|
6
|
+
*/
|
7
|
+
export declare const DefaultUiMenuContentItemWrapper: React.MemoExoticComponent<(<T extends IUiMenuItemData = object>({ item }: IUiMenuContentItemWrapperProps<T>) => React.ReactElement)>;
|
8
|
+
/**
|
9
|
+
* @internal
|
10
|
+
*/
|
11
|
+
export declare function DefaultUiMenuContentItem<T extends IUiMenuItemData = object>({ item, isFocused, onSelect, }: IUiMenuContentItemProps<T>): React.ReactNode;
|
12
|
+
//# sourceMappingURL=DefaultUiMenuContentItem.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DefaultUiMenuContentItem.d.ts","sourceRoot":"","sources":["../../../../../src/@ui/UiMenu/components/defaults/DefaultUiMenuContentItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAG1G;;;GAGG;AACH,eAAO,MAAM,+BAA+B,kHAEI,MAAM,YAAY,EAoEhE,CAAC;AAEH;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,eAAe,GAAG,MAAM,EAAE,EACzE,IAAI,EACJ,SAAS,EACT,QAAQ,GACX,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAgB9C"}
|
@@ -0,0 +1,60 @@
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
2
|
+
import React from "react";
|
3
|
+
import cx from "classnames";
|
4
|
+
import { e } from "../../menuBem.js";
|
5
|
+
import { typedUiMenuContextStore } from "../../context.js";
|
6
|
+
import { ShortenedText } from "../../../../ShortenedText/index.js";
|
7
|
+
/**
|
8
|
+
* Default component for rendering content menu items.
|
9
|
+
* @internal
|
10
|
+
*/
|
11
|
+
export const DefaultUiMenuContentItemWrapper = React.memo(function DefaultUiMenuContentItemWrapper({ item }) {
|
12
|
+
const { useContextStore, createSelector } = typedUiMenuContextStore();
|
13
|
+
const selector = createSelector((ctx) => ({
|
14
|
+
onSelect: ctx.onSelect,
|
15
|
+
controlType: ctx.controlType,
|
16
|
+
scrollToView: ctx.scrollToView,
|
17
|
+
setFocusedId: ctx.setFocusedId,
|
18
|
+
makeItemId: ctx.makeItemId,
|
19
|
+
itemClassName: ctx.itemClassName,
|
20
|
+
ContentItemComponent: ctx.ContentItem,
|
21
|
+
isFocused: ctx.focusedItem?.id === item.id,
|
22
|
+
}));
|
23
|
+
const { scrollToView, controlType, setFocusedId, onSelect, makeItemId, itemClassName, ContentItemComponent, isFocused, } = useContextStore(selector);
|
24
|
+
const scrollToItem = (element) => {
|
25
|
+
if (!element || !isFocused) {
|
26
|
+
return;
|
27
|
+
}
|
28
|
+
scrollToView(element);
|
29
|
+
};
|
30
|
+
const handleMouseFocus = React.useCallback(() => {
|
31
|
+
if (controlType !== "mouse") {
|
32
|
+
return;
|
33
|
+
}
|
34
|
+
setFocusedId(item.id);
|
35
|
+
}, [controlType, item.id, setFocusedId]);
|
36
|
+
const handleSelect = React.useCallback(() => {
|
37
|
+
if (item.isDisabled) {
|
38
|
+
return;
|
39
|
+
}
|
40
|
+
onSelect(item);
|
41
|
+
}, [item, onSelect]);
|
42
|
+
const classNames = cx(e("item-wrapper", {
|
43
|
+
isFocused,
|
44
|
+
isDisabled: !!item.isDisabled,
|
45
|
+
}), typeof itemClassName === "function" ? itemClassName(item) : itemClassName);
|
46
|
+
return (React.createElement("li", { ref: scrollToItem, role: "menuitem", "aria-haspopup": "dialog", className: classNames, tabIndex: -1, "aria-disabled": item.isDisabled, id: makeItemId(item), onMouseMove: handleMouseFocus },
|
47
|
+
React.createElement(ContentItemComponent, { item: item, isFocused: isFocused, onSelect: handleSelect })));
|
48
|
+
});
|
49
|
+
/**
|
50
|
+
* @internal
|
51
|
+
*/
|
52
|
+
export function DefaultUiMenuContentItem({ item, isFocused, onSelect, }) {
|
53
|
+
return (React.createElement("div", { className: e("item", {
|
54
|
+
isFocused,
|
55
|
+
isDisabled: !!item.isDisabled,
|
56
|
+
}), onClick: onSelect },
|
57
|
+
React.createElement(ShortenedText, { className: e("item-title"), ellipsisPosition: "end" }, item.stringTitle),
|
58
|
+
!!item.Component && React.createElement("i", { className: "gd-icon-navigateright" })));
|
59
|
+
}
|
60
|
+
//# sourceMappingURL=DefaultUiMenuContentItem.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DefaultUiMenuContentItem.js","sourceRoot":"","sources":["../../../../../src/@ui/UiMenu/components/defaults/DefaultUiMenuContentItem.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { IUiMenuItemData, IUiMenuGroupItemProps } from "../../types.js";
|
3
|
+
/**
|
4
|
+
* @internal
|
5
|
+
*/
|
6
|
+
export declare function DefaultUiMenuGroupItem<T extends IUiMenuItemData = object>({ item, }: IUiMenuGroupItemProps<T>): React.ReactNode;
|
7
|
+
//# sourceMappingURL=DefaultUiMenuGroupItem.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DefaultUiMenuGroupItem.d.ts","sourceRoot":"","sources":["../../../../../src/@ui/UiMenu/components/defaults/DefaultUiMenuGroupItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAExE;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,eAAe,GAAG,MAAM,EAAE,EACvE,IAAI,GACP,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAwB5C"}
|
@@ -1,12 +1,12 @@
|
|
1
1
|
// (C) 2025 GoodData Corporation
|
2
2
|
import React from "react";
|
3
|
-
import { e } from "
|
4
|
-
import { ShortenedText } from "
|
5
|
-
import { typedUiMenuContextStore } from "
|
3
|
+
import { e } from "../../menuBem.js";
|
4
|
+
import { ShortenedText } from "../../../../ShortenedText/index.js";
|
5
|
+
import { typedUiMenuContextStore } from "../../context.js";
|
6
6
|
/**
|
7
7
|
* @internal
|
8
8
|
*/
|
9
|
-
export function
|
9
|
+
export function DefaultUiMenuGroupItem({ item, }) {
|
10
10
|
const { createSelector, useContextStore } = typedUiMenuContextStore();
|
11
11
|
const selector = createSelector((ctx) => ({
|
12
12
|
makeItemId: ctx.makeItemId,
|
@@ -19,4 +19,4 @@ export function DefaultUiMenuGroupItemComponent({ item, }) {
|
|
19
19
|
React.createElement(ShortenedText, { className: e("group-title"), ellipsisPosition: "end" }, item.stringTitle)),
|
20
20
|
item.subItems.map((groupItem, index) => (React.createElement(ItemComponent, { key: "id" in groupItem ? groupItem.id : index, item: groupItem })))));
|
21
21
|
}
|
22
|
-
//# sourceMappingURL=
|
22
|
+
//# sourceMappingURL=DefaultUiMenuGroupItem.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"
|
1
|
+
{"version":3,"file":"DefaultUiMenuGroupItem.js","sourceRoot":"","sources":["../../../../../src/@ui/UiMenu/components/defaults/DefaultUiMenuGroupItem.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAqC,EACvE,IAAI,GACmB;IACvB,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,uBAAuB,EAAK,CAAC;IACzE,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtC,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,aAAa,EAAE,GAAG,CAAC,aAAa;KACnC,CAAC,CAAC,CAAC;IAEJ,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAEhE,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAEzC,OAAO,CACH,4BAAI,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,qBAAmB,eAAe;QACtE,4BAAI,SAAS,EAAE,CAAC,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,eAAe;YAChF,oBAAC,aAAa,IAAC,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,gBAAgB,EAAE,KAAK,IAC9D,IAAI,CAAC,WAAW,CACL,CACf;QAEJ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CACrC,oBAAC,aAAa,IAAC,GAAG,EAAE,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,GAAI,CACpF,CAAC,CACD,CACR,CAAC;AACN,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DefaultUiMenuHeader.d.ts","sourceRoot":"","sources":["../../../../../src/@ui/UiMenu/components/defaults/DefaultUiMenuHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAyDtC,CAAC"}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
// (C) 2025 GoodData Corporation
|
2
|
+
import React from "react";
|
3
|
+
import cx from "classnames";
|
4
|
+
import { e } from "../../menuBem.js";
|
5
|
+
import { UiIconButton } from "../../../UiIconButton/UiIconButton.js";
|
6
|
+
import { useIntl } from "react-intl";
|
7
|
+
import { ShortenedText } from "../../../../ShortenedText/index.js";
|
8
|
+
import { Button } from "../../../../Button/index.js";
|
9
|
+
import { typedUiMenuContextStore } from "../../context.js";
|
10
|
+
import { getItemInteractiveParent } from "../../itemUtils.js";
|
11
|
+
/**
|
12
|
+
* Renders the submenu header when in a submenu.
|
13
|
+
* If not in a submenu, returns null.
|
14
|
+
* @internal
|
15
|
+
*/
|
16
|
+
export const DefaultUiMenuHeader = React.memo(function DefaultUiMenuHeader() {
|
17
|
+
const { formatMessage } = useIntl();
|
18
|
+
const { useContextStore, createSelector } = typedUiMenuContextStore();
|
19
|
+
const selector = createSelector((ctx) => ({
|
20
|
+
setFocusedId: ctx.setFocusedId,
|
21
|
+
onClose: ctx.onClose,
|
22
|
+
parentItem: ctx.focusedItem ? getItemInteractiveParent(ctx.items, ctx.focusedItem.id) : undefined,
|
23
|
+
focusedItem: ctx.focusedItem,
|
24
|
+
}));
|
25
|
+
const { setFocusedId, onClose, parentItem, focusedItem } = useContextStore(selector);
|
26
|
+
const parentItemId = parentItem?.id;
|
27
|
+
const handleBack = React.useCallback(() => {
|
28
|
+
if (parentItemId === undefined) {
|
29
|
+
return;
|
30
|
+
}
|
31
|
+
setFocusedId(parentItemId);
|
32
|
+
}, [setFocusedId, parentItemId]);
|
33
|
+
if (!parentItem && focusedItem?.type !== "content") {
|
34
|
+
return null;
|
35
|
+
}
|
36
|
+
const title = parentItem?.stringTitle ?? focusedItem?.stringTitle;
|
37
|
+
return (React.createElement("div", { role: "presentation", className: e("menu-header") },
|
38
|
+
React.createElement(Button, { onClick: handleBack, className: cx(e("menu-header-title"), "gd-icon-navigateleft"), accessibilityConfig: {
|
39
|
+
ariaLabel: formatMessage({ id: "menu.back" }),
|
40
|
+
} },
|
41
|
+
React.createElement(ShortenedText, { tagName: "h3", ellipsisPosition: "end", className: e("menu-header-title-text") }, title)),
|
42
|
+
React.createElement(UiIconButton, { size: "xsmall", variant: "tertiary", icon: "close", label: formatMessage({ id: "menu.close" }), onClick: onClose })));
|
43
|
+
});
|
44
|
+
//# sourceMappingURL=DefaultUiMenuHeader.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DefaultUiMenuHeader.js","sourceRoot":"","sources":["../../../../../src/@ui/UiMenu/components/defaults/DefaultUiMenuHeader.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAG9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAa,KAAK,CAAC,IAAI,CAAC,SAAS,mBAAmB;IAGhF,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IAEpC,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,uBAAuB,EAAK,CAAC;IACzE,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtC,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,UAAU,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;QACjG,WAAW,EAAE,GAAG,CAAC,WAAW;KAC/B,CAAC,CAAC,CAAC;IAEJ,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAErF,MAAM,YAAY,GAAG,UAAU,EAAE,EAAE,CAAC;IAEpC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACtC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO;QACX,CAAC;QAED,YAAY,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;IAEjC,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,EAAE,WAAW,IAAI,WAAW,EAAE,WAAW,CAAC;IAElE,OAAO,CACH,6BAAK,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC;QAClD,oBAAC,MAAM,IACH,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,sBAAsB,CAAC,EAC7D,mBAAmB,EAAE;gBACjB,SAAS,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC;aAChD;YAED,oBAAC,aAAa,IACV,OAAO,EAAE,IAAI,EACb,gBAAgB,EAAE,KAAK,EACvB,SAAS,EAAE,CAAC,CAAC,wBAAwB,CAAC,IAErC,KAAK,CACM,CACX;QACT,oBAAC,YAAY,IACT,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,aAAa,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAC1C,OAAO,EAAE,OAAO,GAClB,CACA,CACT,CAAC;AACN,CAAC,CAAC,CAAC"}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { IUiMenuItemData, IUiMenuInteractiveItemProps, IUiMenuInteractiveItemWrapperProps } from "../../types.js";
|
3
|
+
/**
|
4
|
+
* @internal
|
5
|
+
*/
|
6
|
+
export declare function DefaultUiMenuInteractiveItemWrapper<T extends IUiMenuItemData = object>({ item, }: IUiMenuInteractiveItemWrapperProps<T>): React.ReactNode;
|
7
|
+
/**
|
8
|
+
* @internal
|
9
|
+
*/
|
10
|
+
export declare function DefaultUiMenuInteractiveItem<T extends IUiMenuItemData = object>({ item, isFocused, onSelect, }: IUiMenuInteractiveItemProps<T>): React.ReactNode;
|
11
|
+
//# sourceMappingURL=DefaultUiMenuInteractiveItem.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DefaultUiMenuInteractiveItem.d.ts","sourceRoot":"","sources":["../../../../../src/@ui/UiMenu/components/defaults/DefaultUiMenuInteractiveItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EACH,eAAe,EACf,2BAA2B,EAC3B,kCAAkC,EACrC,MAAM,gBAAgB,CAAC;AAIxB;;GAEG;AACH,wBAAgB,mCAAmC,CAAC,CAAC,SAAS,eAAe,GAAG,MAAM,EAAE,EACpF,IAAI,GACP,EAAE,kCAAkC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAqEzD;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,eAAe,GAAG,MAAM,EAAE,EAC7E,IAAI,EACJ,SAAS,EACT,QAAQ,GACX,EAAE,2BAA2B,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAgBlD"}
|
@@ -1,13 +1,13 @@
|
|
1
1
|
// (C) 2025 GoodData Corporation
|
2
2
|
import React from "react";
|
3
|
-
import { e } from "
|
4
|
-
import { ShortenedText } from "
|
5
|
-
import { typedUiMenuContextStore } from "
|
3
|
+
import { e } from "../../menuBem.js";
|
4
|
+
import { ShortenedText } from "../../../../ShortenedText/index.js";
|
5
|
+
import { typedUiMenuContextStore } from "../../context.js";
|
6
6
|
import cx from "classnames";
|
7
7
|
/**
|
8
8
|
* @internal
|
9
9
|
*/
|
10
|
-
export function
|
10
|
+
export function DefaultUiMenuInteractiveItemWrapper({ item, }) {
|
11
11
|
const { useContextStore, createSelector } = typedUiMenuContextStore();
|
12
12
|
const selector = createSelector((ctx) => ({
|
13
13
|
onSelect: ctx.onSelect,
|
@@ -16,7 +16,7 @@ export function DefaultUiMenuInteractiveItemWrapperComponent({ item, }) {
|
|
16
16
|
setFocusedId: ctx.setFocusedId,
|
17
17
|
makeItemId: ctx.makeItemId,
|
18
18
|
itemClassName: ctx.itemClassName,
|
19
|
-
InteractiveItemComponent: ctx.
|
19
|
+
InteractiveItemComponent: ctx.InteractiveItem,
|
20
20
|
isFocused: ctx.focusedItem?.id === item.id,
|
21
21
|
}));
|
22
22
|
const { onSelect, scrollToView, controlType, setFocusedId, makeItemId, itemClassName, InteractiveItemComponent, isFocused, } = useContextStore(selector);
|
@@ -48,7 +48,7 @@ export function DefaultUiMenuInteractiveItemWrapperComponent({ item, }) {
|
|
48
48
|
/**
|
49
49
|
* @internal
|
50
50
|
*/
|
51
|
-
export function
|
51
|
+
export function DefaultUiMenuInteractiveItem({ item, isFocused, onSelect, }) {
|
52
52
|
return (React.createElement("div", { className: e("item", {
|
53
53
|
isFocused,
|
54
54
|
isDisabled: !!item.isDisabled,
|
@@ -56,4 +56,4 @@ export function DefaultUiMenuInteractiveItemComponent({ item, isFocused, onSelec
|
|
56
56
|
React.createElement(ShortenedText, { className: e("item-title"), ellipsisPosition: "end" }, item.stringTitle),
|
57
57
|
!!item.subItems && React.createElement("i", { className: "gd-icon-navigateright" })));
|
58
58
|
}
|
59
|
-
//# sourceMappingURL=
|
59
|
+
//# sourceMappingURL=DefaultUiMenuInteractiveItem.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DefaultUiMenuInteractiveItem.js","sourceRoot":"","sources":["../../../../../src/@ui/UiMenu/components/defaults/DefaultUiMenuInteractiveItem.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import { IUiMenuItemData, IUiMenuStaticItemProps } from "../../types.js";
|
3
|
+
/**
|
4
|
+
* By default just renders the data.
|
5
|
+
* @internal
|
6
|
+
*/
|
7
|
+
export declare const DefaultUiMenuStaticItem: React.MemoExoticComponent<(<T extends IUiMenuItemData = object>({ item }: IUiMenuStaticItemProps<T>) => React.ReactElement)>;
|
8
|
+
//# sourceMappingURL=DefaultUiMenuStaticItem.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DefaultUiMenuStaticItem.d.ts","sourceRoot":"","sources":["../../../../../src/@ui/UiMenu/components/defaults/DefaultUiMenuStaticItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAGzE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,0GAEI,MAAM,YAAY,EAUxD,CAAC"}
|