@gooddata/sdk-ui-kit 11.48.0-alpha.3 → 11.48.0-alpha.5
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/UiListbox/UiListbox.d.ts +1 -1
- package/esm/@ui/UiListbox/UiListbox.d.ts.map +1 -1
- package/esm/@ui/UiListbox/UiListbox.js +11 -4
- package/esm/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.d.ts +0 -11
- package/esm/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.d.ts.map +1 -1
- package/esm/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.js +1 -15
- package/esm/@ui/UiListbox/types.d.ts +7 -2
- package/esm/@ui/UiListbox/types.d.ts.map +1 -1
- package/esm/@ui/UiMenu/components/Item.d.ts.map +1 -1
- package/esm/@ui/UiMenu/components/Item.js +4 -0
- package/esm/@ui/UiMenu/components/MenuDivider.d.ts +8 -0
- package/esm/@ui/UiMenu/components/MenuDivider.d.ts.map +1 -0
- package/esm/@ui/UiMenu/components/MenuDivider.js +10 -0
- package/esm/@ui/UiMenu/hooks.d.ts.map +1 -1
- package/esm/@ui/UiMenu/hooks.js +3 -2
- package/esm/@ui/UiMenu/itemUtils.d.ts +17 -0
- package/esm/@ui/UiMenu/itemUtils.d.ts.map +1 -1
- package/esm/@ui/UiMenu/itemUtils.js +38 -1
- package/esm/@ui/UiMenu/types.d.ts +11 -1
- package/esm/@ui/UiMenu/types.d.ts.map +1 -1
- package/esm/@ui/UiTabs/defaultComponents/DefaultUiTabsAllTabs.d.ts.map +1 -1
- package/esm/@ui/UiTabs/defaultComponents/DefaultUiTabsAllTabs.js +4 -3
- package/esm/@ui/UiTabs/defaultComponents/DefaultUiTabsTabActions.js +4 -4
- package/esm/@ui/UiTabs/defaultComponents/DefaultUiTabsTabActionsButton.d.ts.map +1 -1
- package/esm/@ui/UiTabs/defaultComponents/DefaultUiTabsTabActionsButton.js +2 -1
- package/esm/@ui/UiTabs/itemUtils.d.ts +11 -0
- package/esm/@ui/UiTabs/itemUtils.d.ts.map +1 -0
- package/esm/@ui/UiTabs/itemUtils.js +13 -0
- package/esm/@ui/UiTabs/types.d.ts +2 -2
- package/esm/@ui/UiTabs/types.d.ts.map +1 -1
- package/esm/EditableLabel/EditableLabel.d.ts.map +1 -1
- package/esm/EditableLabel/EditableLabel.js +4 -0
- package/esm/Header/generateHeaderMenuItemsGroups.js +9 -15
- package/esm/index.d.ts +3 -3
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -1
- package/esm/sdk-ui-kit.d.ts +21 -18
- package/package.json +11 -11
- package/styles/css/editableLabel.css +9 -0
- package/styles/css/editableLabel.css.map +1 -1
- package/styles/css/main.css +10 -0
- package/styles/css/main.css.map +1 -1
- package/styles/css/separatorLine.css +1 -0
- package/styles/css/separatorLine.css.map +1 -1
- package/styles/scss/editableLabel.scss +11 -1
- package/styles/scss/separatorLine.scss +1 -0
|
@@ -7,5 +7,5 @@ import { type IUiListboxProps } from "./types.js";
|
|
|
7
7
|
*
|
|
8
8
|
* @internal
|
|
9
9
|
*/
|
|
10
|
-
export declare function UiListbox<InteractiveItemData, StaticItemData>({ items, dataTestId, itemDataTestId, width, maxWidth, maxHeight, onSelect, onClose, onUnhandledKeyDown, selectedItemId, InteractiveItemComponent, StaticItemComponent, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, shouldCloseOnSelect, isDisabledFocusable, isCompact, reference, ariaAttributes }: IUiListboxProps<InteractiveItemData, StaticItemData>): ReactNode;
|
|
10
|
+
export declare function UiListbox<InteractiveItemData, StaticItemData>({ items: rawItems, dataTestId, itemDataTestId, width, maxWidth, maxHeight, onSelect, onClose, onUnhandledKeyDown, selectedItemId, InteractiveItemComponent, StaticItemComponent, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, shouldCloseOnSelect, isDisabledFocusable, isCompact, reference, ariaAttributes }: IUiListboxProps<InteractiveItemData, StaticItemData>): ReactNode;
|
|
11
11
|
//# sourceMappingURL=UiListbox.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UiListbox.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiListbox/UiListbox.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAqD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"UiListbox.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiListbox/UiListbox.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAqD,MAAM,OAAO,CAAC;AAY1F,OAAO,EAIH,KAAK,eAAe,EACvB,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,mBAAmB,EAAE,cAAc,EAAE,EAC3D,KAAK,EAAE,QAAQ,EAEf,UAAU,EACV,cAAc,EACd,KAAK,EACL,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,OAAO,EACP,kBAAyC,EAEzC,cAAc,EAEd,wBAAmE,EACnE,mBAAyD,EAEzD,kCAAkC,EAClC,mCAAmC,EACnC,mBAA0B,EAC1B,mBAA2B,EAC3B,SAAiB,EAEjB,SAAS,EACT,cAAc,EACjB,EAAE,eAAe,CAAC,mBAAmB,EAAE,cAAc,CAAC,GAAG,SAAS,CAgNlE"}
|
|
@@ -3,6 +3,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
4
|
import { useAutoupdateRef } from "@gooddata/sdk-ui";
|
|
5
5
|
import { makeMenuKeyboardNavigation } from "../@utils/keyboardNavigation.js";
|
|
6
|
+
import { MenuDivider } from "../UiMenu/components/MenuDivider.js";
|
|
7
|
+
import { collapseSeparators } from "../UiMenu/itemUtils.js";
|
|
6
8
|
import { DefaultUiListboxInteractiveItemComponent } from "./defaults/DefaultUiListboxInteractiveItemComponent.js";
|
|
7
9
|
import { DefaultUiListboxStaticItemComponent } from "./defaults/DefaultUiListboxStaticItemComponent.js";
|
|
8
10
|
import { firstCharacterSearch } from "./defaults/firstCharacterSearch.js";
|
|
@@ -14,7 +16,8 @@ import { b, e } from "./listboxBem.js";
|
|
|
14
16
|
*
|
|
15
17
|
* @internal
|
|
16
18
|
*/
|
|
17
|
-
export function UiListbox({ items, dataTestId, itemDataTestId, width, maxWidth, maxHeight, onSelect, onClose, onUnhandledKeyDown = firstCharacterSearch, selectedItemId, InteractiveItemComponent = DefaultUiListboxInteractiveItemComponent, StaticItemComponent = DefaultUiListboxStaticItemComponent, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, shouldCloseOnSelect = true, isDisabledFocusable = false, isCompact = false, reference, ariaAttributes, }) {
|
|
19
|
+
export function UiListbox({ items: rawItems, dataTestId, itemDataTestId, width, maxWidth, maxHeight, onSelect, onClose, onUnhandledKeyDown = firstCharacterSearch, selectedItemId, InteractiveItemComponent = DefaultUiListboxInteractiveItemComponent, StaticItemComponent = DefaultUiListboxStaticItemComponent, shouldKeyboardActionPreventDefault, shouldKeyboardActionStopPropagation, shouldCloseOnSelect = true, isDisabledFocusable = false, isCompact = false, reference, ariaAttributes, }) {
|
|
20
|
+
const items = useMemo(() => collapseSeparators(rawItems), [rawItems]);
|
|
18
21
|
const isItemFocusable = useCallback((item) => {
|
|
19
22
|
if (item?.type !== "interactive") {
|
|
20
23
|
return false;
|
|
@@ -127,7 +130,11 @@ export function UiListbox({ items, dataTestId, itemDataTestId, width, maxWidth,
|
|
|
127
130
|
shouldKeyboardActionStopPropagation,
|
|
128
131
|
]);
|
|
129
132
|
return (_jsx("div", { className: b(), style: { width, maxWidth, maxHeight }, "data-testid": dataTestId, children: _jsx("ul", { className: e("items"), ref: reference, tabIndex: 0, onKeyDown: handleKeyDown, "aria-activedescendant": makeItemId(ariaAttributes.id, focusedItem), ...ariaAttributes, role: "listbox", children: items.map((item, index) => {
|
|
130
|
-
const testId =
|
|
133
|
+
const testId = item.type === "separator"
|
|
134
|
+
? undefined
|
|
135
|
+
: typeof itemDataTestId === "function"
|
|
136
|
+
? itemDataTestId(item)
|
|
137
|
+
: itemDataTestId;
|
|
131
138
|
return item.type === "interactive" ? (_jsx("li", { ref: (el) => {
|
|
132
139
|
itemRefs.current[index] = el;
|
|
133
140
|
}, id: makeItemId(ariaAttributes.id, item), role: "option", "aria-selected": item.id === selectedItemId, "aria-disabled": item.isDisabled, "data-testid": testId, "aria-controls": ariaAttributes["aria-controls"], children: _jsx(InteractiveItemComponent, { onSelect: (e) => {
|
|
@@ -136,12 +143,12 @@ export function UiListbox({ items, dataTestId, itemDataTestId, width, maxWidth,
|
|
|
136
143
|
newTab: e.ctrlKey || e.metaKey || e.button === 1,
|
|
137
144
|
});
|
|
138
145
|
}, item: item, isFocused: index === focusedIndex, isSelected: item.id === selectedItemId, isCompact: isCompact }) }, item.id)) : (
|
|
139
|
-
// Static
|
|
146
|
+
// Static and separator items are presentational; `role="presentation"`
|
|
140
147
|
// keeps the <li> out of the a11y tree so it isn't exposed as a `listitem`,
|
|
141
148
|
// which is an invalid child of `role="listbox"` (only `option`/`group` allowed).
|
|
142
149
|
_jsx("li", { ref: (el) => {
|
|
143
150
|
itemRefs.current[index] = el;
|
|
144
|
-
}, role: "presentation", "data-testid": testId, children: _jsx(StaticItemComponent, { item: item }) }, item.id ?? index));
|
|
151
|
+
}, role: "presentation", "data-testid": testId, children: item.type === "separator" ? (_jsx(MenuDivider, {})) : (_jsx(StaticItemComponent, { item: item })) }, item.id ?? index));
|
|
145
152
|
}) }) }));
|
|
146
153
|
}
|
|
147
154
|
const makeItemId = (listboxId, item) => item?.type === "interactive" ? `item-${listboxId}-${item.id}` : undefined;
|
|
@@ -1,16 +1,5 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
2
|
import { type IUiListboxStaticItemProps } from "../types.js";
|
|
3
|
-
/**
|
|
4
|
-
* @internal
|
|
5
|
-
*/
|
|
6
|
-
export declare const separatorStaticItem: {
|
|
7
|
-
data: import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
type: "static";
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* @internal
|
|
12
|
-
*/
|
|
13
|
-
export declare function isSeparator(item: unknown): item is typeof separatorStaticItem;
|
|
14
3
|
/**
|
|
15
4
|
* By default just renders the data.
|
|
16
5
|
* @internal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultUiListboxStaticItemComponent.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultUiListboxStaticItemComponent.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiListbox/defaults/DefaultUiListboxStaticItemComponent.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,SAAS,CAExG"}
|
|
@@ -1,18 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import { Separator } from "../../../List/MenuList.js";
|
|
3
|
-
/**
|
|
4
|
-
* @internal
|
|
5
|
-
*/
|
|
6
|
-
export const separatorStaticItem = {
|
|
7
|
-
data: _jsx(Separator, {}),
|
|
8
|
-
type: "static",
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* @internal
|
|
12
|
-
*/
|
|
13
|
-
export function isSeparator(item) {
|
|
14
|
-
return item === separatorStaticItem;
|
|
15
|
-
}
|
|
1
|
+
// (C) 2025-2026 GoodData Corporation
|
|
16
2
|
/**
|
|
17
3
|
* By default just renders the data.
|
|
18
4
|
* @internal
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type ComponentType, type Dispatch, type KeyboardEvent, type MouseEvent, type MutableRefObject, type ReactNode, type RefObject, type SetStateAction } from "react";
|
|
2
2
|
import { type IDropdownBodyRenderProps } from "../../Dropdown/Dropdown.js";
|
|
3
3
|
import { type IconType } from "../@types/icon.js";
|
|
4
|
+
import { type IUiMenuSeparatorItem } from "../UiMenu/types.js";
|
|
4
5
|
/**
|
|
5
6
|
* @internal
|
|
6
7
|
*/
|
|
@@ -24,7 +25,11 @@ export interface IUiListboxInteractiveItem<T> {
|
|
|
24
25
|
/**
|
|
25
26
|
* @internal
|
|
26
27
|
*/
|
|
27
|
-
export type
|
|
28
|
+
export type IUiListboxSeparatorItem = IUiMenuSeparatorItem;
|
|
29
|
+
/**
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
export type IUiListboxItem<InteractiveItemData, StaticItemData = ReactNode> = IUiListboxStaticItem<StaticItemData> | IUiListboxSeparatorItem | IUiListboxInteractiveItem<InteractiveItemData>;
|
|
28
33
|
/**
|
|
29
34
|
* @internal
|
|
30
35
|
*/
|
|
@@ -69,7 +74,7 @@ export type UiListboxAriaAttributes = Omit<IDropdownBodyRenderProps["ariaAttribu
|
|
|
69
74
|
export interface IUiListboxProps<InteractiveItemData, StaticItemData = ReactNode> {
|
|
70
75
|
items: IUiListboxItem<InteractiveItemData, StaticItemData>[];
|
|
71
76
|
dataTestId?: string;
|
|
72
|
-
itemDataTestId?: string | ((item:
|
|
77
|
+
itemDataTestId?: string | ((item: IUiListboxStaticItem<StaticItemData> | IUiListboxInteractiveItem<InteractiveItemData>) => string | undefined);
|
|
73
78
|
width?: number;
|
|
74
79
|
maxWidth?: number;
|
|
75
80
|
maxHeight?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiListbox/types.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,cAAc,EACtB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiListbox/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiMenu/components/Item.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiMenu/components/Item.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,eAAO,MAAM,IAAI,gEA6Bf,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
// (C) 2025-2026 GoodData Corporation
|
|
3
3
|
import { memo } from "react";
|
|
4
4
|
import { typedUiMenuContextStore } from "../context.js";
|
|
5
|
+
import { MenuDivider } from "./MenuDivider.js";
|
|
5
6
|
export const Item = memo(function Item({ item }) {
|
|
6
7
|
const { InteractiveItemWrapper, StaticItem, GroupItem, ContentItemWrapper } = typedUiMenuContextStore().useContextStoreValues([
|
|
7
8
|
"InteractiveItemWrapper",
|
|
@@ -15,6 +16,9 @@ export const Item = memo(function Item({ item }) {
|
|
|
15
16
|
if (item.type === "static") {
|
|
16
17
|
return _jsx(StaticItem, { item: item });
|
|
17
18
|
}
|
|
19
|
+
if (item.type === "separator") {
|
|
20
|
+
return (_jsx("li", { role: "separator", children: _jsx(MenuDivider, {}) }));
|
|
21
|
+
}
|
|
18
22
|
if (item.type === "group") {
|
|
19
23
|
return _jsx(GroupItem, { item: item });
|
|
20
24
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ReactElement } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* The design-system menu divider visual, shared by every widget that renders separator items.
|
|
4
|
+
*
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export declare function MenuDivider(): ReactElement;
|
|
8
|
+
//# sourceMappingURL=MenuDivider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MenuDivider.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiMenu/components/MenuDivider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAI1C;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,YAAY,CAE1C"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { SeparatorLine } from "../../../SeparatorLine/SeparatorLine.js";
|
|
3
|
+
/**
|
|
4
|
+
* The design-system menu divider visual, shared by every widget that renders separator items.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export function MenuDivider() {
|
|
9
|
+
return _jsx(SeparatorLine, { pT: 5, pR: 10, pB: 4, pL: 10 });
|
|
10
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/hooks.tsx"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,aAAa,EAElB,KAAK,SAAS,EAKjB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/hooks.tsx"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,aAAa,EAElB,KAAK,SAAS,EAKjB,MAAM,OAAO,CAAC;AA+Bf,OAAO,EACH,KAAK,cAAc,EAInB,KAAK,eAAe,EACpB,KAAK,YAAY,EAEpB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,eAAe,GAAG,MAAM,EAAE,CAAC,GAAG,MAAM,EAChF,KAAK,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EACzB,gBAAgB,EAAE,SAAS,CAAC,WAAW,CAAC,EACxC,iBAAiB,EAAE,SAAS,CAAC,WAAW,CAAC,GAC1C,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CA2OtB;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,EACrB,EAAE;IACC,gBAAgB,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,kBAAkB,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC7D,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,mCAAmC,CAAC,EAAE,OAAO,CAAC;CACjD,2CAuGA;AAED,wBAAgB,6BAA6B,CAAC,CAAC,SAAS,eAAe,GAAG,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EACzG,gBAAgB,EAChB,kCAAkC,EAClC,mCAAmC,EACnC,kBAAkB,EACrB,EAAE;IACC,gBAAgB,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,kBAAkB,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC7D,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,mCAAmC,CAAC,EAAE,OAAO,CAAC;CACjD,2CAkCA"}
|
package/esm/@ui/UiMenu/hooks.js
CHANGED
|
@@ -11,12 +11,13 @@ import { DefaultUiMenuHeader } from "./components/defaults/DefaultUiMenuHeader.j
|
|
|
11
11
|
import { DefaultUiMenuInteractiveItem, DefaultUiMenuInteractiveItemWrapper, } from "./components/defaults/DefaultUiMenuInteractiveItem.js";
|
|
12
12
|
import { DefaultUiMenuStaticItem } from "./components/defaults/DefaultUiMenuStaticItem.js";
|
|
13
13
|
import { Item } from "./components/Item.js";
|
|
14
|
-
import { getClosestFocusableSibling, getFocusableItem, getItemInteractiveParent, getItemsByInteractiveParent, getSiblingItems, unwrapGroupItems, } from "./itemUtils.js";
|
|
14
|
+
import { getClosestFocusableSibling, getFocusableItem, getItemInteractiveParent, getItemsByInteractiveParent, getSiblingItems, normalizeMenuItems, unwrapGroupItems, } from "./itemUtils.js";
|
|
15
15
|
/**
|
|
16
16
|
* @internal
|
|
17
17
|
*/
|
|
18
18
|
export function useUiMenuContextValue(props, menuComponentRef, itemsContainerRef) {
|
|
19
|
-
const { items, size = "medium", itemDataTestId, onSelect, onLeaveLevel, onEnterLevel, 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;
|
|
19
|
+
const { items: rawItems, size = "medium", itemDataTestId, onSelect, onLeaveLevel, onEnterLevel, 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;
|
|
20
|
+
const items = useMemo(() => normalizeMenuItems(rawItems), [rawItems]);
|
|
20
21
|
const [controlType, setControlType] = useState("unknown");
|
|
21
22
|
const isItemFocusable = useCallback((item) => {
|
|
22
23
|
if (!item || (item.type !== "interactive" && item.type !== "content")) {
|
|
@@ -1,4 +1,21 @@
|
|
|
1
1
|
import { type IUiMenuContentItem, type IUiMenuFocusableItem, type IUiMenuInteractiveItem, type IUiMenuItem, type IUiMenuItemData } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Normalizes menu items on every level: collapses dangling separators and drops
|
|
4
|
+
* interactive or group items whose submenu normalizes to empty, so no item renders
|
|
5
|
+
* as an entry point to nothing.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare const normalizeMenuItems: <T extends IUiMenuItemData = object>(items: IUiMenuItem<T>[]) => IUiMenuItem<T>[];
|
|
9
|
+
/**
|
|
10
|
+
* Drops separators that would render dangling: at the start or end of the list, or directly
|
|
11
|
+
* after another separator. Lets callers place separators between groups unconditionally, even
|
|
12
|
+
* when a whole group is filtered out.
|
|
13
|
+
*
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
export declare function collapseSeparators<T extends {
|
|
17
|
+
type: string;
|
|
18
|
+
}>(items: T[]): T[];
|
|
2
19
|
/**
|
|
3
20
|
* Recursively finds an item in the menu tree that matches the predicate.
|
|
4
21
|
* @internal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"itemUtils.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/itemUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,eAAe,EACvB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,uIAkBzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,yGAKxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,CAAC,6JAOpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,qJAOhC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,oHAKnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,gHAK/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,+GAKjC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,GAAI,CAAC,0HAO5C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"itemUtils.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/itemUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,eAAe,EACvB,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,+EAYnC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAa9E;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,uIAkBzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,yGAKxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,CAAC,6JAOpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,qJAOhC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,oHAKnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,gHAK/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,+GAKjC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,GAAI,CAAC,0HAO5C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GAAI,CAAC,oHA0BzC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,2GAUhC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,+FAahC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,CAAC,+FAapC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GAAI,CAAC;;;;;gCAsB3C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,eAAe,GAAG,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,oBAkB3F"}
|
|
@@ -1,4 +1,40 @@
|
|
|
1
|
-
// (C) 2025 GoodData Corporation
|
|
1
|
+
// (C) 2025-2026 GoodData Corporation
|
|
2
|
+
/**
|
|
3
|
+
* Normalizes menu items on every level: collapses dangling separators and drops
|
|
4
|
+
* interactive or group items whose submenu normalizes to empty, so no item renders
|
|
5
|
+
* as an entry point to nothing.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export const normalizeMenuItems = (items) => {
|
|
9
|
+
return collapseSeparators(items.flatMap((item) => {
|
|
10
|
+
if ((item.type === "interactive" || item.type === "group") && item.subItems !== undefined) {
|
|
11
|
+
const subItems = normalizeMenuItems(item.subItems);
|
|
12
|
+
return subItems.length === 0 ? [] : [{ ...item, subItems }];
|
|
13
|
+
}
|
|
14
|
+
return [item];
|
|
15
|
+
}));
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Drops separators that would render dangling: at the start or end of the list, or directly
|
|
19
|
+
* after another separator. Lets callers place separators between groups unconditionally, even
|
|
20
|
+
* when a whole group is filtered out.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export function collapseSeparators(items) {
|
|
25
|
+
const result = [];
|
|
26
|
+
for (const item of items) {
|
|
27
|
+
const previous = result[result.length - 1];
|
|
28
|
+
if (item.type === "separator" && (previous === undefined || previous.type === "separator")) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
result.push(item);
|
|
32
|
+
}
|
|
33
|
+
if (result[result.length - 1]?.type === "separator") {
|
|
34
|
+
result.pop();
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
2
38
|
/**
|
|
3
39
|
* Recursively finds an item in the menu tree that matches the predicate.
|
|
4
40
|
* @internal
|
|
@@ -76,6 +112,7 @@ export const getItemsByInteractiveParent = (items, parentId) => {
|
|
|
76
112
|
export const getItemInteractiveParent = (items, itemId) => {
|
|
77
113
|
const parent = findItem(items, (item) => {
|
|
78
114
|
if (item.type === "static" ||
|
|
115
|
+
item.type === "separator" ||
|
|
79
116
|
(item.type === "interactive" && item.subItems === undefined) ||
|
|
80
117
|
item.type === "content") {
|
|
81
118
|
return false;
|
|
@@ -15,6 +15,16 @@ export type IUiMenuStaticItem<T extends IUiMenuItemData = object> = {
|
|
|
15
15
|
id?: string;
|
|
16
16
|
data: T["static"];
|
|
17
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* Renders as the design-system menu divider. Dangling separators (leading, trailing, or adjacent
|
|
20
|
+
* after conditional items drop out) are collapsed automatically.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export type IUiMenuSeparatorItem = {
|
|
25
|
+
type: "separator";
|
|
26
|
+
id?: string;
|
|
27
|
+
};
|
|
18
28
|
/**
|
|
19
29
|
* @internal
|
|
20
30
|
*/
|
|
@@ -62,7 +72,7 @@ export type IUiMenuContentItem<T extends IUiMenuItemData = object> = {
|
|
|
62
72
|
/**
|
|
63
73
|
* @internal
|
|
64
74
|
*/
|
|
65
|
-
export type IUiMenuItem<T extends IUiMenuItemData = object> = IUiMenuStaticItem<T> | IUiMenuInteractiveItem<T> | IUiMenuGroupItem<T> | IUiMenuContentItem<T>;
|
|
75
|
+
export type IUiMenuItem<T extends IUiMenuItemData = object> = IUiMenuStaticItem<T> | IUiMenuSeparatorItem | IUiMenuInteractiveItem<T> | IUiMenuGroupItem<T> | IUiMenuContentItem<T>;
|
|
66
76
|
/**
|
|
67
77
|
* @internal
|
|
68
78
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiMenu/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultUiTabsAllTabs.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiTabs/defaultComponents/DefaultUiTabsAllTabs.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultUiTabsAllTabs.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiTabs/defaultComponents/DefaultUiTabsAllTabs.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAalD,OAAO,EAAe,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAErE;;GAEG;AACH,wBAAgB,oBAAoB,CAChC,SAAS,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,WAAW,EAChD,eAAe,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,WAAW,EACxD,MAAM,EAAE,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,CAAC,kDAoIpE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
// (C) 2025 GoodData Corporation
|
|
2
|
+
// (C) 2025-2026 GoodData Corporation
|
|
3
3
|
import { useCallback, useEffect, useState } from "react";
|
|
4
4
|
import { useMediaQuery } from "../../../responsive/useMediaQuery.js";
|
|
5
5
|
import { useFocusWithinContainer } from "../../hooks/useFocusWithinContainer.js";
|
|
@@ -8,6 +8,7 @@ import { ScopedIdStore, useScopedIdStoreValue } from "../../hooks/useScopedId.js
|
|
|
8
8
|
import { UiDropdown } from "../../UiDropdown/UiDropdown.js";
|
|
9
9
|
import { UiTabsBem } from "../bem.js";
|
|
10
10
|
import { getTypedUiTabsContextStore } from "../context.js";
|
|
11
|
+
import { hasInteractiveTabActions } from "../itemUtils.js";
|
|
11
12
|
/**
|
|
12
13
|
* @internal
|
|
13
14
|
*/
|
|
@@ -29,7 +30,7 @@ export function DefaultUiTabsAllTabs(_props) {
|
|
|
29
30
|
}, [onTabSelect]);
|
|
30
31
|
const { onKeyboardNavigation, focusedItem, focusedAction, setFocusedIndex, setFocusedAction } = useListWithActionsKeyboardNavigation({
|
|
31
32
|
items: tabs,
|
|
32
|
-
getItemAdditionalActions: (item) => ((item
|
|
33
|
+
getItemAdditionalActions: (item) => (hasInteractiveTabActions(item) ? ["selectTabActions"] : []),
|
|
33
34
|
actionHandlers: {
|
|
34
35
|
selectItem: handleDropdownSelect,
|
|
35
36
|
selectTabActions: () => undefined,
|
|
@@ -93,7 +94,7 @@ function TabListItem({ item, index, focusedAction, onApply, }) {
|
|
|
93
94
|
"select-item": focusedAction === SELECT_ITEM_ACTION,
|
|
94
95
|
"actions-open": isActionsOpen,
|
|
95
96
|
}), role: "row", "aria-rowindex": index + 1, "aria-labelledby": makeId?.({ item, specifier: SELECT_ITEM_ACTION }), tabIndex: -1, id: makeId?.({ item, specifier: "container" }), children: [
|
|
96
|
-
_jsx("div", { className: UiTabsBem.e("tab-list-item-value"), onClick: onApply, role: "gridcell", children: _jsx("div", { role: "button", tabIndex: isSelected ? 0 : -1, id: makeId?.({ item, specifier: SELECT_ITEM_ACTION }), className: UiTabsBem.e("tab-list-item-value-button"), "aria-label": item.label, children: _jsx(TabValue, { tab: item, isSelected: isSelected, location: "allList" }) }) }), (item
|
|
97
|
+
_jsx("div", { className: UiTabsBem.e("tab-list-item-value"), onClick: onApply, role: "gridcell", children: _jsx("div", { role: "button", tabIndex: isSelected ? 0 : -1, id: makeId?.({ item, specifier: SELECT_ITEM_ACTION }), className: UiTabsBem.e("tab-list-item-value-button"), "aria-label": item.label, children: _jsx(TabValue, { tab: item, isSelected: isSelected, location: "allList" }) }) }), hasInteractiveTabActions(item) ? (_jsx("div", { className: UiTabsBem.e("tab-list-item-actions", {
|
|
97
98
|
focused: isFocused,
|
|
98
99
|
}), role: "gridcell", id: makeId?.({ item, specifier: "actions" }), children: _jsx(TabActions, { tab: item, location: "allList", tabIndex: -1, id: makeId?.({ item, specifier: "selectTabActions" }), isOpen: isActionsOpen, onToggleOpen: handleToggleActionsOpen }) })) : null] }));
|
|
99
100
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
// (C) 2025 GoodData Corporation
|
|
2
|
+
// (C) 2025-2026 GoodData Corporation
|
|
3
3
|
import { useCallback, useMemo } from "react";
|
|
4
4
|
import { useScopedId } from "../../hooks/useScopedId.js";
|
|
5
5
|
import { UiDropdown } from "../../UiDropdown/UiDropdown.js";
|
|
6
|
-
import { isSeparator } from "../../UiListbox/defaults/DefaultUiListboxStaticItemComponent.js";
|
|
7
6
|
import { UiMenu } from "../../UiMenu/UiMenu.js";
|
|
8
7
|
import { UiTabsBem } from "../bem.js";
|
|
9
8
|
import { getTypedUiTabsContextStore } from "../context.js";
|
|
9
|
+
import { hasInteractiveTabActions, isSeparatorAction } from "../itemUtils.js";
|
|
10
10
|
/**
|
|
11
11
|
* @internal
|
|
12
12
|
*/
|
|
@@ -19,7 +19,7 @@ export function DefaultUiTabsTabActions({ tab, location, id, tabIndex, isOpen, o
|
|
|
19
19
|
const tabElementId = useScopedId(tab, "tab-scroll-target");
|
|
20
20
|
const tabActionsId = useScopedId(tab, "actions");
|
|
21
21
|
const menuItems = useMemo(() => tab.actions?.map((action) => {
|
|
22
|
-
return
|
|
22
|
+
return isSeparatorAction(action)
|
|
23
23
|
? action
|
|
24
24
|
: {
|
|
25
25
|
type: "interactive",
|
|
@@ -67,7 +67,7 @@ export function DefaultUiTabsTabActions({ tab, location, id, tabIndex, isOpen, o
|
|
|
67
67
|
item.data.onSelect?.({ tab });
|
|
68
68
|
}, [tab]);
|
|
69
69
|
const itemDataTestId = useCallback((item) => item.type === "interactive" ? item.data.dataTestId : undefined, []);
|
|
70
|
-
if (
|
|
70
|
+
if (!hasInteractiveTabActions(tab)) {
|
|
71
71
|
return null;
|
|
72
72
|
}
|
|
73
73
|
return (_jsx("div", { className: UiTabsBem.e("actions-wrapper", { location }), children: _jsx(UiDropdown, { renderButton: ({ toggleDropdown, isOpen, ariaAttributes }) => (_jsx(TabActionsButton, { tab: tab, isOpen: isOpen, location: location, onClick: toggleDropdown, ariaAttributes: ariaAttributes, id: id, tabIndex: tabIndex })), renderBody: ({ ariaAttributes, closeDropdown }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultUiTabsTabActionsButton.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiTabs/defaultComponents/DefaultUiTabsTabActionsButton.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultUiTabsTabActionsButton.d.ts","sourceRoot":"","sources":["../../../../src/@ui/UiTabs/defaultComponents/DefaultUiTabsTabActionsButton.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAOlD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD;;GAEG;AACH,wBAAgB,6BAA6B,CACzC,SAAS,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,WAAW,EAChD,eAAe,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,WAAW,EACxD,EACE,GAAG,EACH,OAAO,EACP,cAAc,EACd,QAAQ,EACR,EAAE,EACL,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,SAAS,EAAE,eAAe,CAAC,kDA4BtE"}
|
|
@@ -4,6 +4,7 @@ import { useIntl } from "react-intl";
|
|
|
4
4
|
import { UiIcon } from "../../UiIcon/UiIcon.js";
|
|
5
5
|
import { UiLink } from "../../UiLink/UiLink.js";
|
|
6
6
|
import { getTypedUiTabsContextStore } from "../context.js";
|
|
7
|
+
import { hasInteractiveTabActions } from "../itemUtils.js";
|
|
7
8
|
import { messages } from "../messages.js";
|
|
8
9
|
/**
|
|
9
10
|
* @internal
|
|
@@ -12,7 +13,7 @@ export function DefaultUiTabsTabActionsButton({ tab, onClick, ariaAttributes, ta
|
|
|
12
13
|
const intl = useIntl();
|
|
13
14
|
const store = getTypedUiTabsContextStore();
|
|
14
15
|
const { size } = store.useContextStoreValues(["size"]);
|
|
15
|
-
if ((tab
|
|
16
|
+
if (!hasInteractiveTabActions(tab)) {
|
|
16
17
|
return null;
|
|
17
18
|
}
|
|
18
19
|
return (_jsx(UiLink, { variant: "secondary", role: "button", "aria-label": intl.formatMessage(messages["actions"]), ...ariaAttributes, onClick: onClick, tabIndex: tabIndex, id: id, dataTestId: "s-tab-actions", children: _jsx(UiIcon, { type: "ellipsisVertical", size: size === "large" ? 18 : 14, layout: "block", color: "complementary-5" }) }));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type IUiMenuSeparatorItem } from "../UiMenu/types.js";
|
|
2
|
+
import { type IUiTab, type IUiTabAction } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export declare function isSeparatorAction<TTabProps extends Record<any, any>, TTabActionProps extends Record<any, any>>(action: IUiTabAction<TTabProps, TTabActionProps> | IUiMenuSeparatorItem): action is IUiMenuSeparatorItem;
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export declare function hasInteractiveTabActions<TTabProps extends Record<any, any>, TTabActionProps extends Record<any, any>>(tab: IUiTab<TTabProps, TTabActionProps>): boolean;
|
|
11
|
+
//# sourceMappingURL=itemUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"itemUtils.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiTabs/itemUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,SAAS,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAClC,eAAe,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAC1C,MAAM,EAAE,YAAY,CAAC,SAAS,EAAE,eAAe,CAAC,GAAG,oBAAoB,GAAG,MAAM,IAAI,oBAAoB,CAEzG;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACpC,SAAS,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAClC,eAAe,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAC1C,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,GAAG,OAAO,CAElD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// (C) 2025-2026 GoodData Corporation
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
export function isSeparatorAction(action) {
|
|
6
|
+
return "type" in action && action.type === "separator";
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export function hasInteractiveTabActions(tab) {
|
|
12
|
+
return (tab.actions ?? []).some((action) => !isSeparatorAction(action));
|
|
13
|
+
}
|
|
@@ -3,7 +3,7 @@ import { type EmptyObject } from "@gooddata/util";
|
|
|
3
3
|
import { type IDropdownButtonRenderProps } from "../../Dropdown/Dropdown.js";
|
|
4
4
|
import { type IAccessibilityConfigBase } from "../../typings/accessibility.js";
|
|
5
5
|
import { type SizeLarge, type SizeMedium, type SizeSmall } from "../@types/size.js";
|
|
6
|
-
import { type
|
|
6
|
+
import { type IUiMenuSeparatorItem } from "../UiMenu/types.js";
|
|
7
7
|
/**
|
|
8
8
|
* @internal
|
|
9
9
|
*/
|
|
@@ -57,7 +57,7 @@ export type IUiTab<TTabProps extends Record<any, any> = EmptyObject, TTabActionP
|
|
|
57
57
|
* When provided, used instead of `label` for the `aria-label` attribute.
|
|
58
58
|
*/
|
|
59
59
|
ariaLabel?: string;
|
|
60
|
-
actions?: Array<IUiTabAction<TTabProps, TTabActionProps> |
|
|
60
|
+
actions?: Array<IUiTabAction<TTabProps, TTabActionProps> | IUiMenuSeparatorItem>;
|
|
61
61
|
} & TTabProps;
|
|
62
62
|
/**
|
|
63
63
|
* @internal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiTabs/types.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,SAAS,EACjB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/@ui/UiTabs/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableLabel.d.ts","sourceRoot":"","sources":["../../src/EditableLabel/EditableLabel.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAOxD;;GAEG;AACH,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"EditableLabel.d.ts","sourceRoot":"","sources":["../../src/EditableLabel/EditableLabel.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAOxD;;GAEG;AACH,eAAO,MAAM,aAAa,gHA8VxB,CAAC"}
|
|
@@ -142,6 +142,10 @@ export const EditableLabel = forwardRef((props, ref) => {
|
|
|
142
142
|
// Measure the hidden span to compute dynamic textarea width before paint
|
|
143
143
|
useLayoutEffect(() => {
|
|
144
144
|
if (isEditableLabelWidthDynamic && isEditing && measureSpanRef.current) {
|
|
145
|
+
/**
|
|
146
|
+
* NOTE: In the future consider using `field-sizing: content` to automatically adjust size when typing. This CSS property
|
|
147
|
+
* is only 2026 baseline so as of this writing, the current solution is kept for backward browser compatibility.
|
|
148
|
+
*/
|
|
145
149
|
const width = Math.ceil(measureSpanRef.current.getBoundingClientRect().width) + 2;
|
|
146
150
|
setDynamicWidth(width);
|
|
147
151
|
}
|