@hitachivantara/uikit-react-pentaho 0.10.20 → 6.0.0-next.2

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 (34) hide show
  1. package/dist/{esm/Canvas → Canvas}/ToolbarTabs/ToolbarTabEditor.js +1 -1
  2. package/dist/{types/index.d.ts → index.d.ts} +1 -1
  3. package/package.json +13 -13
  4. package/dist/cjs/Canvas/BottomPanel/BottomPanel.cjs +0 -208
  5. package/dist/cjs/Canvas/BottomPanel/BottomPanel.styles.cjs +0 -79
  6. package/dist/cjs/Canvas/CanvasContext.cjs +0 -46
  7. package/dist/cjs/Canvas/PanelTab/PanelTab.cjs +0 -18
  8. package/dist/cjs/Canvas/PanelTab/PanelTab.styles.cjs +0 -36
  9. package/dist/cjs/Canvas/PanelTabs/PanelTabs.cjs +0 -30
  10. package/dist/cjs/Canvas/PanelTabs/PanelTabs.styles.cjs +0 -16
  11. package/dist/cjs/Canvas/SidePanel/SidePanel.cjs +0 -139
  12. package/dist/cjs/Canvas/SidePanel/SidePanel.styles.cjs +0 -59
  13. package/dist/cjs/Canvas/SidePanel/useResizable.cjs +0 -76
  14. package/dist/cjs/Canvas/Toolbar/Toolbar.cjs +0 -59
  15. package/dist/cjs/Canvas/Toolbar/Toolbar.styles.cjs +0 -40
  16. package/dist/cjs/Canvas/ToolbarTabs/ToolbarTabEditor.cjs +0 -154
  17. package/dist/cjs/Canvas/ToolbarTabs/ToolbarTabs.cjs +0 -231
  18. package/dist/cjs/Canvas/ToolbarTabs/ToolbarTabs.styles.cjs +0 -125
  19. package/dist/cjs/index.cjs +0 -30
  20. /package/dist/{esm/Canvas → Canvas}/BottomPanel/BottomPanel.js +0 -0
  21. /package/dist/{esm/Canvas → Canvas}/BottomPanel/BottomPanel.styles.js +0 -0
  22. /package/dist/{esm/Canvas → Canvas}/CanvasContext.js +0 -0
  23. /package/dist/{esm/Canvas → Canvas}/PanelTab/PanelTab.js +0 -0
  24. /package/dist/{esm/Canvas → Canvas}/PanelTab/PanelTab.styles.js +0 -0
  25. /package/dist/{esm/Canvas → Canvas}/PanelTabs/PanelTabs.js +0 -0
  26. /package/dist/{esm/Canvas → Canvas}/PanelTabs/PanelTabs.styles.js +0 -0
  27. /package/dist/{esm/Canvas → Canvas}/SidePanel/SidePanel.js +0 -0
  28. /package/dist/{esm/Canvas → Canvas}/SidePanel/SidePanel.styles.js +0 -0
  29. /package/dist/{esm/Canvas → Canvas}/SidePanel/useResizable.js +0 -0
  30. /package/dist/{esm/Canvas → Canvas}/Toolbar/Toolbar.js +0 -0
  31. /package/dist/{esm/Canvas → Canvas}/Toolbar/Toolbar.styles.js +0 -0
  32. /package/dist/{esm/Canvas → Canvas}/ToolbarTabs/ToolbarTabs.js +0 -0
  33. /package/dist/{esm/Canvas → Canvas}/ToolbarTabs/ToolbarTabs.styles.js +0 -0
  34. /package/dist/{esm/index.js → index.js} +0 -0
@@ -1,59 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const uikitReactCore = require("@hitachivantara/uikit-react-core");
4
- const boxShadow = `4px 0px 8px -4px ${uikitReactCore.theme.alpha("textDark", "12%")}`;
5
- const { staticClasses, useClasses } = uikitReactCore.createClasses(
6
- "HvCanvasSidePanel",
7
- {
8
- root: {
9
- height: "100%",
10
- position: "absolute",
11
- top: 0,
12
- left: 0,
13
- boxShadow,
14
- backgroundColor: "transparent",
15
- transition: "visibility 0.3s ease, width 0.3s ease",
16
- overflow: "hidden",
17
- "&$open": {
18
- width: 320,
19
- visibility: "visible"
20
- },
21
- "&$close": {
22
- width: 0,
23
- visibility: "hidden"
24
- }
25
- },
26
- tabs: {},
27
- content: {
28
- height: "100%"
29
- },
30
- handle: {
31
- height: 44,
32
- width: 44,
33
- display: "flex",
34
- justifyContent: "center",
35
- boxShadow,
36
- borderRadius: `0px ${uikitReactCore.theme.radii.large} ${uikitReactCore.theme.radii.large} 0px`,
37
- position: "absolute",
38
- transition: "left 0.3s ease",
39
- "&&": {
40
- // override action state styles
41
- backgroundColor: uikitReactCore.theme.colors.bgContainer
42
- },
43
- top: "calc(50% - 44px)",
44
- // subtract handle's full height
45
- "&$handleOpen": {
46
- left: 320
47
- },
48
- "&$handleClose": {
49
- left: 0
50
- }
51
- },
52
- open: {},
53
- close: {},
54
- handleOpen: {},
55
- handleClose: {}
56
- }
57
- );
58
- exports.staticClasses = staticClasses;
59
- exports.useClasses = useClasses;
@@ -1,76 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const react = require("react");
4
- const uikitReactCore = require("@hitachivantara/uikit-react-core");
5
- const useResizable = (resizableOptions) => {
6
- const { ref, initialWidth, minWidth, maxWidth, onResize } = resizableOptions;
7
- const [width, setWidth] = react.useState(initialWidth);
8
- const [isHover, setIsHover] = react.useState(false);
9
- const [isDragging, setIsDragging] = react.useState(false);
10
- const panelRef = react.useRef(null);
11
- const forkedRef = uikitReactCore.useForkRef(ref, panelRef);
12
- const mouseMove = (event) => {
13
- if (panelRef.current) {
14
- const rect = panelRef.current.getBoundingClientRect();
15
- const newWidth = event.clientX - rect.left;
16
- if (newWidth >= minWidth && newWidth <= maxWidth) {
17
- setWidth(newWidth);
18
- onResize?.(newWidth);
19
- }
20
- }
21
- };
22
- const handleMouseMove = (event) => {
23
- if (panelRef.current) {
24
- const rect = panelRef.current.getBoundingClientRect();
25
- const isHoverBorder = event.clientX >= rect.right - 5 && event.clientX <= rect.right + 5;
26
- setIsHover(isHoverBorder);
27
- }
28
- };
29
- const handleMouseUp = () => {
30
- if (!panelRef.current) return;
31
- panelRef.current.style.userSelect = "";
32
- panelRef.current?.parentElement?.removeEventListener(
33
- "mousemove",
34
- mouseMove
35
- );
36
- panelRef.current?.parentElement?.removeEventListener(
37
- "mouseup",
38
- handleMouseUp
39
- );
40
- setIsDragging(false);
41
- };
42
- const startResizing = () => {
43
- if (!panelRef.current) return;
44
- panelRef.current.style.userSelect = "none";
45
- panelRef.current.parentElement?.addEventListener("mousemove", mouseMove);
46
- panelRef.current.parentElement?.addEventListener("mouseup", handleMouseUp);
47
- setIsDragging(true);
48
- };
49
- const getContainerProps = (overrides = {}) => ({
50
- ref: forkedRef,
51
- style: {
52
- width,
53
- transition: isDragging ? "none" : void 0,
54
- ...overrides.style
55
- }
56
- });
57
- const getSeparatorProps = (overrides = {}) => ({
58
- style: {
59
- left: width,
60
- position: "absolute",
61
- top: 0,
62
- bottom: 0,
63
- width: 5,
64
- cursor: "col-resize",
65
- ...overrides.style
66
- },
67
- onMouseMove: handleMouseMove,
68
- onMouseLeave: () => setIsHover(false),
69
- onMouseDown: () => {
70
- if (isHover) startResizing();
71
- },
72
- role: "separator"
73
- });
74
- return { width, isDragging, getContainerProps, getSeparatorProps };
75
- };
76
- exports.useResizable = useResizable;
@@ -1,59 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const react = require("react");
5
- const uikitReactCore = require("@hitachivantara/uikit-react-core");
6
- const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
7
- const uikitReactUtils = require("@hitachivantara/uikit-react-utils");
8
- const CanvasContext = require("../CanvasContext.cjs");
9
- const Toolbar_styles = require("./Toolbar.styles.cjs");
10
- const DEFAULT_LABELS = {
11
- back: "Back"
12
- };
13
- const HvCanvasToolbar = react.forwardRef(
14
- function HvCanvasToolbar2(props, ref) {
15
- const {
16
- title: titleProp,
17
- backButton,
18
- labels: labelsProp,
19
- className,
20
- style,
21
- children,
22
- backButtonProps,
23
- classes: classesProp,
24
- ...others
25
- } = uikitReactCore.useDefaultProps("HvCanvasToolbar", props);
26
- const { classes, cx } = Toolbar_styles.useClasses(classesProp);
27
- const labels = uikitReactCore.useLabels(DEFAULT_LABELS, labelsProp);
28
- const canvasContext = CanvasContext.useCanvasContext();
29
- const sidePanelWidth = canvasContext?.sidePanelWidth ?? 0;
30
- const title = typeof titleProp === "string" ? /* @__PURE__ */ jsxRuntime.jsx(uikitReactCore.HvTypography, { variant: "title4", children: titleProp }) : titleProp;
31
- return /* @__PURE__ */ jsxRuntime.jsxs(
32
- "div",
33
- {
34
- ref,
35
- className: cx(classes.root, className),
36
- style: uikitReactUtils.mergeStyles(style, {
37
- "--sidepanel-width": `${sidePanelWidth}px`,
38
- transition: canvasContext?.sidePanelDragging ? void 0 : "width 0.3s ease"
39
- }),
40
- ...others,
41
- children: [
42
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.back, children: backButton ?? /* @__PURE__ */ jsxRuntime.jsx(
43
- uikitReactCore.HvIconButton,
44
- {
45
- title: labels.back,
46
- variant: "primaryGhost",
47
- ...backButtonProps,
48
- children: /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Previous, {})
49
- }
50
- ) }),
51
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.title, children: title }),
52
- children && /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.actions, children })
53
- ]
54
- }
55
- );
56
- }
57
- );
58
- exports.canvasToolbarClasses = Toolbar_styles.staticClasses;
59
- exports.HvCanvasToolbar = HvCanvasToolbar;
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const uikitReactCore = require("@hitachivantara/uikit-react-core");
4
- const { staticClasses, useClasses } = uikitReactCore.createClasses("HvCanvasToolbar", {
5
- root: {
6
- width: `calc(100% - var(--sidepanel-width) - 2 * ${uikitReactCore.theme.space.sm})`,
7
- height: 54,
8
- display: "flex",
9
- alignItems: "center",
10
- borderRadius: uikitReactCore.theme.radii.full,
11
- backgroundColor: uikitReactCore.theme.colors.bgContainer,
12
- position: "absolute",
13
- right: uikitReactCore.theme.space.sm,
14
- top: 0
15
- },
16
- back: {
17
- borderRadius: `${uikitReactCore.theme.radii.full} 0 0 ${uikitReactCore.theme.radii.full}`,
18
- minWidth: 68,
19
- backgroundColor: uikitReactCore.theme.colors.bgHover,
20
- height: "100%",
21
- display: "flex",
22
- alignItems: "center",
23
- justifyContent: "center"
24
- },
25
- title: {
26
- display: "flex",
27
- alignItems: "center",
28
- padding: uikitReactCore.theme.spacing(0, "md"),
29
- height: "100%",
30
- flexGrow: 1
31
- },
32
- actions: {
33
- display: "flex",
34
- flexWrap: "nowrap",
35
- overflow: "auto",
36
- paddingRight: uikitReactCore.theme.space.md
37
- }
38
- });
39
- exports.staticClasses = staticClasses;
40
- exports.useClasses = useClasses;
@@ -1,154 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const react = require("react");
5
- const uikitReactCore = require("@hitachivantara/uikit-react-core");
6
- const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
7
- const { staticClasses, useClasses } = uikitReactCore.createClasses(
8
- "HvCanvasToolbarTabs-editor",
9
- {
10
- root: {
11
- position: "relative",
12
- display: "flex",
13
- width: "100%",
14
- overflow: "hidden",
15
- "&:has($label:hover:not($edit))": {
16
- color: uikitReactCore.theme.colors.textSubtle,
17
- "& $editIcon": { visibility: "visible" }
18
- }
19
- },
20
- edit: {
21
- color: uikitReactCore.theme.colors.textSubtle,
22
- borderColor: "currentColor",
23
- backgroundColor: uikitReactCore.theme.colors.bgContainer,
24
- cursor: "text"
25
- },
26
- label: {
27
- width: "100%",
28
- boxSizing: "border-box",
29
- border: "1px solid transparent",
30
- borderRadius: uikitReactCore.theme.radii.base,
31
- padding: uikitReactCore.theme.spacing(0, "sm", 0, "xs"),
32
- textAlign: "start",
33
- whiteSpace: "nowrap",
34
- overflow: "hidden",
35
- outline: "none",
36
- "&:not($edit)": {
37
- textOverflow: "ellipsis"
38
- },
39
- "&:hover:not($edit)": {
40
- color: uikitReactCore.theme.colors.textSubtle,
41
- borderColor: uikitReactCore.theme.colors.bgHover,
42
- backgroundColor: uikitReactCore.theme.colors.bgHover
43
- }
44
- },
45
- editIcon: {
46
- position: "absolute",
47
- right: uikitReactCore.theme.space.xxs,
48
- top: 4,
49
- width: 16,
50
- height: 16,
51
- visibility: "hidden",
52
- pointerEvents: "none"
53
- }
54
- }
55
- );
56
- const sanitize = (value) => value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
57
- const ToolbarTabEditor = ({
58
- id,
59
- className,
60
- edit: editProp,
61
- value: valueProp,
62
- defaultValue: defaultValueProp = "",
63
- classes: classesProp,
64
- onInput: onInputProp,
65
- onClick: onClickProp,
66
- onBlur: onBlurProp,
67
- onKeyDown: onKeyDownProp,
68
- onChange: onChangeProp,
69
- onEditChange: onEditChangeProp,
70
- ...others
71
- }) => {
72
- const { cx, classes } = useClasses(classesProp);
73
- const contentEditableRef = react.useRef(null);
74
- const [value, setValue] = uikitReactCore.useControlled(
75
- valueProp ? sanitize(valueProp) : valueProp,
76
- defaultValueProp ? sanitize(defaultValueProp) : defaultValueProp
77
- );
78
- const [cachedValue, setCachedValue] = react.useState(value);
79
- const [isEditing, setIsEditing] = uikitReactCore.useControlled(editProp, false);
80
- const moveCursorToEnd = () => {
81
- if (!contentEditableRef.current) return;
82
- const element = contentEditableRef.current;
83
- const range = document.createRange();
84
- const selection = window.getSelection();
85
- range.selectNodeContents(element);
86
- range.collapse(false);
87
- selection?.removeAllRanges();
88
- selection?.addRange(range);
89
- element.scrollLeft = element.scrollWidth;
90
- };
91
- const scrollContentToStart = () => {
92
- if (!contentEditableRef.current) return;
93
- const element = contentEditableRef.current;
94
- element.scrollLeft = 0;
95
- };
96
- const changeEdit = (edit) => {
97
- setIsEditing(edit);
98
- onEditChangeProp?.(edit);
99
- };
100
- uikitReactCore.useEnhancedEffect(() => {
101
- if (isEditing) moveCursorToEnd();
102
- }, [isEditing, value]);
103
- const handleInput = (event) => {
104
- const newValue = sanitize(event.target.textContent) || "";
105
- setValue(newValue);
106
- onInputProp?.(event);
107
- onChangeProp?.(event, newValue);
108
- };
109
- const handleClick = (event) => {
110
- setCachedValue(value);
111
- changeEdit(true);
112
- onClickProp?.(event);
113
- };
114
- const handleBlur = (event) => {
115
- changeEdit(false);
116
- scrollContentToStart();
117
- const newValue = value.trim() || cachedValue;
118
- setValue(newValue);
119
- onBlurProp?.(event, newValue);
120
- };
121
- const handleKeyDown = (event) => {
122
- if (uikitReactCore.isKey(event, "Enter")) {
123
- handleBlur(event);
124
- } else if (uikitReactCore.isKey(event, "Esc")) {
125
- changeEdit(false);
126
- setValue(cachedValue);
127
- onChangeProp?.(event, cachedValue);
128
- }
129
- onKeyDownProp?.(event);
130
- };
131
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { id, className: cx(classes.root, className), children: [
132
- /* @__PURE__ */ jsxRuntime.jsx(
133
- uikitReactCore.HvTypography,
134
- {
135
- ref: contentEditableRef,
136
- contentEditable: isEditing,
137
- className: cx(classes.label, { [classes.edit]: isEditing }),
138
- variant: "label",
139
- component: "span",
140
- onInput: handleInput,
141
- onClick: handleClick,
142
- onBlur: handleBlur,
143
- onKeyDown: handleKeyDown,
144
- dangerouslySetInnerHTML: {
145
- __html: value
146
- },
147
- ...others
148
- }
149
- ),
150
- /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Edit, { className: classes.editIcon, iconSize: "XS" })
151
- ] });
152
- };
153
- exports.ToolbarTabEditor = ToolbarTabEditor;
154
- exports.toolbarTabEditorClasses = staticClasses;
@@ -1,231 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const react = require("react");
5
- const reactResizeDetector = require("react-resize-detector");
6
- const uikitReactCore = require("@hitachivantara/uikit-react-core");
7
- const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
8
- const uikitReactUtils = require("@hitachivantara/uikit-react-utils");
9
- const ToolbarTabEditor = require("./ToolbarTabEditor.cjs");
10
- const ToolbarTabs_styles = require("./ToolbarTabs.styles.cjs");
11
- const PanelTabs = require("../PanelTabs/PanelTabs.cjs");
12
- const PanelTab = require("../PanelTab/PanelTab.cjs");
13
- const DEFAULT_LABELS = {
14
- create: "Create new",
15
- undefined: "Undefined",
16
- dropdownMenu: "Dropdown menu"
17
- };
18
- const HvCanvasToolbarTabs = react.forwardRef(function HvCanvasToolbarTabs2(props, ref) {
19
- const {
20
- children,
21
- className,
22
- selectedTabId: selectedTabIdProp,
23
- icon: iconProp,
24
- disableTabEdit = false,
25
- hideCreateNew = false,
26
- tabs: tabsProp,
27
- defaultTabs: defaultTabsProp = [],
28
- labels: labelsProp,
29
- classes: classesProp,
30
- onTabChange: onTabChangeProp,
31
- onChange: onChangeProp,
32
- ...others
33
- } = uikitReactCore.useDefaultProps("HvCanvasToolbarTabs", props);
34
- const { classes, cx } = ToolbarTabs_styles.useClasses(classesProp);
35
- const labels = uikitReactCore.useLabels(DEFAULT_LABELS, labelsProp);
36
- const { width: actionsWidth = 0, ref: actionsRef } = reactResizeDetector.useResizeDetector({
37
- handleHeight: false
38
- });
39
- const { width: rootWidth = 0, ref: rootRef } = reactResizeDetector.useResizeDetector({
40
- handleHeight: false
41
- });
42
- const [tabs, setTabs] = uikitReactCore.useControlled(tabsProp, defaultTabsProp);
43
- const [selectedTab, setSelectedTab] = uikitReactCore.useControlled(
44
- selectedTabIdProp,
45
- tabs?.[0]?.id ?? "none"
46
- );
47
- const [isEditing, setIsEditing] = react.useState(false);
48
- const rootForkedRef = uikitReactCore.useForkRef(ref, rootRef);
49
- const handleChangeTabs = (event, newTabs) => {
50
- setTabs(newTabs);
51
- onChangeProp?.(event, newTabs);
52
- };
53
- const handleChangeSelectedTab = (event, value) => {
54
- setSelectedTab(String(value));
55
- onTabChangeProp?.(event, String(value));
56
- };
57
- const handleCreateNew = (event) => {
58
- const newTabs = [...tabs];
59
- const newTab = {
60
- id: uikitReactCore.uniqueId(),
61
- label: `${labels.undefined} ${newTabs.length + 1}`,
62
- icon: iconProp
63
- };
64
- newTabs.push(newTab);
65
- handleChangeSelectedTab(event, newTab.id);
66
- handleChangeTabs?.(event, newTabs);
67
- };
68
- const handleEdit = (event, value, tabId) => handleChangeTabs(
69
- event,
70
- tabs.map((tab) => tab.id === tabId ? { ...tab, label: value } : tab)
71
- );
72
- const handleDeleteTab = (event, tabId) => {
73
- const newTabs = tabs.filter((tab) => tab.id !== tabId);
74
- if (tabId === selectedTab) {
75
- const currentIndex = tabs.findIndex((tab) => tab.id === tabId);
76
- const newIndex = currentIndex - 1 < 0 ? 0 : currentIndex - 1;
77
- handleChangeSelectedTab(event, newTabs[newIndex]?.id ?? "none");
78
- }
79
- handleChangeTabs(event, newTabs);
80
- };
81
- const handleKeyDownTab = (event, tabId, removable) => {
82
- if (removable && (uikitReactCore.isKey(event, "Delete") || uikitReactCore.isKey(event, "Backspace"))) {
83
- handleDeleteTab(event, tabId);
84
- event.stopPropagation();
85
- } else if (uikitReactCore.isKey(event, "Enter")) {
86
- setIsEditing(true);
87
- }
88
- };
89
- const { tabWidth, hiddenTabs, visibleTabs } = react.useMemo(() => {
90
- let availableWidth = rootWidth - actionsWidth;
91
- let calculatedTabWidth = availableWidth / tabs.length;
92
- let clamped = uikitReactUtils.clamp(calculatedTabWidth, ToolbarTabs_styles.MAX_TAB_WIDTH, ToolbarTabs_styles.MIN_TAB_WIDTH);
93
- if (calculatedTabWidth < ToolbarTabs_styles.MIN_TAB_WIDTH) {
94
- availableWidth -= ToolbarTabs_styles.DROPDOWN_MENU_WIDTH;
95
- const visibleCount = Math.floor(availableWidth / ToolbarTabs_styles.MIN_TAB_WIDTH);
96
- calculatedTabWidth = availableWidth / visibleCount;
97
- clamped = uikitReactUtils.clamp(calculatedTabWidth, ToolbarTabs_styles.MAX_TAB_WIDTH, ToolbarTabs_styles.MIN_TAB_WIDTH);
98
- const temporaryHiddenTabs = tabs.slice(visibleCount);
99
- const selectedTabHiddenIndex = temporaryHiddenTabs.findIndex(
100
- (tab) => tab.id === selectedTab
101
- );
102
- const excludedTabIndex = visibleCount - 1;
103
- const shouldShuffle = selectedTabHiddenIndex !== -1 && visibleCount > 0;
104
- if (shouldShuffle) {
105
- return {
106
- tabWidth: clamped,
107
- visibleTabs: [
108
- ...tabs.slice(0, excludedTabIndex),
109
- temporaryHiddenTabs[selectedTabHiddenIndex]
110
- ].filter(Boolean),
111
- hiddenTabs: [
112
- tabs[excludedTabIndex],
113
- ...temporaryHiddenTabs.filter(
114
- (tab, i) => i !== selectedTabHiddenIndex
115
- )
116
- ].filter(Boolean)
117
- };
118
- }
119
- return {
120
- tabWidth: clamped,
121
- visibleTabs: tabs.slice(0, visibleCount),
122
- hiddenTabs: temporaryHiddenTabs
123
- };
124
- }
125
- return {
126
- tabWidth: clamped,
127
- visibleTabs: tabs,
128
- hiddenTabs: []
129
- };
130
- }, [actionsWidth, rootWidth, selectedTab, tabs]);
131
- return /* @__PURE__ */ jsxRuntime.jsxs(
132
- "div",
133
- {
134
- ref: rootForkedRef,
135
- className: cx(classes.root, className),
136
- ...others,
137
- children: [
138
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.tabsContainer, children: [
139
- visibleTabs.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
140
- PanelTabs.HvCanvasPanelTabs,
141
- {
142
- classes: { list: classes.tabsList },
143
- value: selectedTab,
144
- onChange: handleChangeSelectedTab,
145
- children: visibleTabs.map((tab, index) => {
146
- const btnSelected = selectedTab === tab.id;
147
- const removable = !tab.fixed;
148
- return /* @__PURE__ */ jsxRuntime.jsx(
149
- PanelTab.HvCanvasPanelTab,
150
- {
151
- style: {
152
- width: tabWidth
153
- },
154
- id: String(tab.id),
155
- className: classes.tab,
156
- value: tab.id,
157
- onKeyDown: (event) => handleKeyDownTab(event, tab.id, removable),
158
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.tabContent, children: [
159
- tab.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.tabIconContainer, children: tab.icon }),
160
- !btnSelected || disableTabEdit ? /* @__PURE__ */ jsxRuntime.jsx(
161
- uikitReactCore.HvOverflowTooltip,
162
- {
163
- classes: {
164
- tooltipAnchor: classes.tabLabel
165
- },
166
- data: tab.label
167
- }
168
- ) : /* @__PURE__ */ jsxRuntime.jsx(
169
- ToolbarTabEditor.ToolbarTabEditor,
170
- {
171
- classes: {
172
- label: cx(classes.tabLabel, classes.tabLabelEditor)
173
- },
174
- value: tab.label,
175
- edit: isEditing,
176
- onEditChange: setIsEditing,
177
- onChange: (event, value) => handleEdit(event, value, tab.id),
178
- onBlur: (event, value) => handleEdit(event, value, tab.id),
179
- onKeyDown: (e) => e.stopPropagation()
180
- }
181
- ),
182
- removable && /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.closeIconContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
183
- uikitReactIcons.CloseXS,
184
- {
185
- "aria-hidden": true,
186
- size: "xs",
187
- onClick: (event) => {
188
- handleDeleteTab(event, tab.id);
189
- event.stopPropagation();
190
- }
191
- }
192
- ) }),
193
- selectedTab !== tab.id && visibleTabs[index + 1]?.id !== selectedTab && /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.tabDivider })
194
- ] })
195
- },
196
- tab.id
197
- );
198
- })
199
- }
200
- ),
201
- hiddenTabs.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.dropdownMenuContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
202
- uikitReactCore.HvDropDownMenu,
203
- {
204
- classes: {
205
- menuListRoot: classes.dropdownMenuListRoot
206
- },
207
- dataList: hiddenTabs,
208
- icon: /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.MoreOptionsHorizontal, {}),
209
- labels: { dropdownMenu: labels.dropdownMenu },
210
- onClick: (event, value) => handleChangeSelectedTab(event, value.id ?? "none")
211
- }
212
- ) })
213
- ] }),
214
- /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: actionsRef, className: classes.actionsContainer, children: [
215
- children,
216
- !hideCreateNew && /* @__PURE__ */ jsxRuntime.jsx(
217
- uikitReactCore.HvButton,
218
- {
219
- variant: "primaryGhost",
220
- startIcon: /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.AddAlt, {}),
221
- onClick: handleCreateNew,
222
- children: labels.create
223
- }
224
- )
225
- ] })
226
- ]
227
- }
228
- );
229
- });
230
- exports.canvasToolbarTabsClasses = ToolbarTabs_styles.staticClasses;
231
- exports.HvCanvasToolbarTabs = HvCanvasToolbarTabs;