@plesk/ui-library 3.42.0 → 3.43.0
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/cjs/components/CodeEditor/CodeEditor.js +1 -2
- package/cjs/components/Icon/constants.js +0 -1
- package/cjs/components/List/List.js +6 -3
- package/cjs/components/Tabs/FakeTabs.js +58 -0
- package/cjs/components/Tabs/Tab.js +0 -1
- package/cjs/components/Tabs/TabClose.js +35 -0
- package/cjs/components/Tabs/TabIcon.js +22 -0
- package/cjs/components/Tabs/TabLabel.js +34 -0
- package/cjs/components/Tabs/TabList.js +120 -0
- package/cjs/components/Tabs/TabListItem.js +75 -0
- package/cjs/components/Tabs/Tabs.js +98 -537
- package/cjs/components/Tabs/useActive.js +19 -0
- package/cjs/components/Tabs/useWidths.js +102 -0
- package/cjs/components/Toaster/PanelView.js +15 -13
- package/cjs/components/Toolbar/ToolbarMenu.js +0 -1
- package/cjs/components/Toolbar/index.js +1 -8
- package/cjs/components/index.js +0 -7
- package/cjs/index.js +1 -1
- package/dist/plesk-ui-library-rtl.css +1 -1
- package/dist/plesk-ui-library-rtl.css.map +1 -1
- package/dist/plesk-ui-library.css +1 -1
- package/dist/plesk-ui-library.css.map +1 -1
- package/dist/plesk-ui-library.js +668 -608
- package/dist/plesk-ui-library.js.map +1 -1
- package/dist/plesk-ui-library.min.js +5 -5
- package/dist/plesk-ui-library.min.js.map +1 -1
- package/esm/components/CodeEditor/CodeEditor.js +1 -2
- package/esm/components/Icon/constants.js +0 -1
- package/esm/components/List/List.js +6 -3
- package/esm/components/Tabs/FakeTabs.js +51 -0
- package/esm/components/Tabs/Tab.js +0 -1
- package/esm/components/Tabs/TabClose.js +28 -0
- package/esm/components/Tabs/TabIcon.js +14 -0
- package/esm/components/Tabs/TabLabel.js +27 -0
- package/esm/components/Tabs/TabList.js +111 -0
- package/esm/components/Tabs/TabListItem.js +68 -0
- package/esm/components/Tabs/Tabs.js +100 -537
- package/esm/components/Tabs/useActive.js +12 -0
- package/esm/components/Tabs/useWidths.js +95 -0
- package/esm/components/Toaster/PanelView.js +15 -13
- package/esm/components/Toolbar/ToolbarMenu.js +0 -1
- package/esm/components/Toolbar/index.js +1 -2
- package/esm/components/index.js +1 -1
- package/esm/index.js +1 -1
- package/package.json +9 -10
- package/styleguide/build/bundle.ef040f7a.js +2 -0
- package/styleguide/index.html +2 -2
- package/types/components/Carousel/Carousel.d.ts +1 -1
- package/types/components/Label/Label.d.ts +1 -1
- package/types/components/List/List.d.ts +8 -2
- package/types/components/Tabs/FakeTabs.d.ts +9 -0
- package/types/components/Tabs/SearchBar.d.ts +3 -3
- package/types/components/Tabs/TabClose.d.ts +9 -0
- package/types/components/Tabs/TabIcon.d.ts +7 -0
- package/types/components/Tabs/TabLabel.d.ts +9 -0
- package/types/components/Tabs/TabList.d.ts +14 -0
- package/types/components/Tabs/TabListItem.d.ts +12 -0
- package/types/components/Tabs/Tabs.d.ts +2 -52
- package/types/components/Tabs/useActive.d.ts +1 -0
- package/types/components/Tabs/useWidths.d.ts +16 -0
- package/types/components/Toolbar/index.d.ts +0 -1
- package/types/components/index.d.ts +1 -1
- package/types/utils/types/ComponentProps.d.ts +1 -1
- package/types/utils/types/PolymorphicComponent.d.ts +2 -2
- package/cjs/components/Toolbar/ToolbarBetaProvider.js +0 -23
- package/esm/components/Toolbar/ToolbarBetaProvider.js +0 -16
- package/styleguide/build/bundle.7ac8a2af.js +0 -2
- package/types/components/Toolbar/ToolbarBetaProvider.d.ts +0 -5
- /package/styleguide/build/{bundle.7ac8a2af.js.LICENSE.txt → bundle.ef040f7a.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useWidths = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _hooks = require("../../hooks");
|
|
9
|
+
// Copyright 1999-2025. WebPros International GmbH. All rights reserved.
|
|
10
|
+
|
|
11
|
+
const useWidths = _ref => {
|
|
12
|
+
let {
|
|
13
|
+
tabNavRef,
|
|
14
|
+
tabListRef,
|
|
15
|
+
fakeAddonRef,
|
|
16
|
+
baseClassName,
|
|
17
|
+
monospaced = false,
|
|
18
|
+
childrenCount
|
|
19
|
+
} = _ref;
|
|
20
|
+
const [compact, setCompact] = (0, _react.useState)(false);
|
|
21
|
+
const [monospacedWidth, setMonospacedWidth] = (0, _react.useState)(undefined);
|
|
22
|
+
const [visibleLength, setVisibleLength] = (0, _react.useState)(childrenCount);
|
|
23
|
+
const lastCollapsedKey = (0, _react.useRef)('');
|
|
24
|
+
const recalculateWidths = (0, _react.useCallback)(() => {
|
|
25
|
+
if (!tabNavRef.current || !tabListRef.current) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const fakeTabElements = tabNavRef.current.querySelectorAll(`.${baseClassName}__tab-list--fake .${baseClassName}__tab`);
|
|
29
|
+
const moreElement = fakeTabElements[fakeTabElements.length - 1];
|
|
30
|
+
const tabLength = fakeTabElements.length - 1;
|
|
31
|
+
const fakeTabWidths = Array.from(fakeTabElements).slice(0, -1).map(el => el.getBoundingClientRect().width);
|
|
32
|
+
let tabWidths = fakeTabWidths;
|
|
33
|
+
let monospacedWidth = undefined;
|
|
34
|
+
if (monospaced) {
|
|
35
|
+
const linkElements = tabNavRef.current.querySelectorAll(`.${baseClassName}__tab-list--fake .${baseClassName}__link`);
|
|
36
|
+
const linkWidths = Array.from(linkElements).slice(0, -1).map(el => el.getBoundingClientRect().width);
|
|
37
|
+
monospacedWidth = linkWidths.length ? Math.max(...linkWidths) : undefined;
|
|
38
|
+
tabWidths = fakeTabWidths.map((width, index) => (monospacedWidth ?? 0) + width - linkWidths[index]);
|
|
39
|
+
}
|
|
40
|
+
setMonospacedWidth(monospacedWidth);
|
|
41
|
+
const tabsWidth = tabWidths.reduce((acc, width) => acc + width, 0);
|
|
42
|
+
const tabNavWidth = tabNavRef.current.getBoundingClientRect().width;
|
|
43
|
+
const addon = tabNavRef.current.querySelector(`.${baseClassName}__addon`) ?? tabNavRef.current.querySelector(`.${baseClassName}__search`);
|
|
44
|
+
const addonWidth = addon ? addon.getBoundingClientRect().width : 0;
|
|
45
|
+
let availableSpace = tabNavWidth - addonWidth;
|
|
46
|
+
const allTabsFit = availableSpace >= tabsWidth;
|
|
47
|
+
const getContentKey = () => {
|
|
48
|
+
const fakeAddonWidth = fakeAddonRef.current?.getBoundingClientRect().width ?? 0;
|
|
49
|
+
return `${fakeTabWidths.join('-')}-${tabNavWidth}-${fakeAddonWidth}-${monospacedWidth}`;
|
|
50
|
+
};
|
|
51
|
+
if (allTabsFit) {
|
|
52
|
+
setVisibleLength(tabLength);
|
|
53
|
+
if (!compact) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (lastCollapsedKey.current !== getContentKey()) {
|
|
57
|
+
setCompact(false);
|
|
58
|
+
}
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (!allTabsFit && !compact) {
|
|
62
|
+
setCompact(true);
|
|
63
|
+
lastCollapsedKey.current = getContentKey();
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const moreWidth = moreElement ? moreElement.getBoundingClientRect().width : 0;
|
|
67
|
+
availableSpace -= moreWidth;
|
|
68
|
+
const calculateVisibleLength = () => {
|
|
69
|
+
let totalWidth = 0;
|
|
70
|
+
for (let i = 0; i < tabWidths.length; i++) {
|
|
71
|
+
totalWidth += tabWidths[i];
|
|
72
|
+
if (totalWidth > availableSpace) {
|
|
73
|
+
return i;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return 0;
|
|
77
|
+
};
|
|
78
|
+
setVisibleLength(calculateVisibleLength());
|
|
79
|
+
}, [tabNavRef, tabListRef, fakeAddonRef, baseClassName, monospaced, compact]);
|
|
80
|
+
(0, _react.useLayoutEffect)(() => {
|
|
81
|
+
recalculateWidths();
|
|
82
|
+
}, [recalculateWidths]);
|
|
83
|
+
(0, _hooks.useResizeObserver)({
|
|
84
|
+
ref: tabNavRef,
|
|
85
|
+
onResize: recalculateWidths
|
|
86
|
+
});
|
|
87
|
+
(0, _hooks.useResizeObserver)({
|
|
88
|
+
ref: tabListRef,
|
|
89
|
+
onResize: recalculateWidths
|
|
90
|
+
});
|
|
91
|
+
(0, _hooks.useResizeObserver)({
|
|
92
|
+
ref: fakeAddonRef,
|
|
93
|
+
onResize: recalculateWidths
|
|
94
|
+
});
|
|
95
|
+
return {
|
|
96
|
+
recalculateWidths,
|
|
97
|
+
monospacedWidth,
|
|
98
|
+
compact,
|
|
99
|
+
visibleLength
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
exports.useWidths = useWidths;
|
|
@@ -59,6 +59,20 @@ const PanelView = _ref => {
|
|
|
59
59
|
if (isEmpty && isCollapsed) {
|
|
60
60
|
onCollapseStateChange?.(false);
|
|
61
61
|
}
|
|
62
|
+
const panelHeaderLabels = /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
63
|
+
className: `${baseClassName}__header-labels`,
|
|
64
|
+
children: notEmptyGroups.map(group => /*#__PURE__*/(0, _jsxRuntime.jsx)(_GroupLabel.default, {
|
|
65
|
+
group: group,
|
|
66
|
+
onClose: () => onToastGroupClose?.(group.keys)
|
|
67
|
+
}, group.groupKey))
|
|
68
|
+
});
|
|
69
|
+
const panelHeaderCollapseButton = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
|
|
70
|
+
ghost: true,
|
|
71
|
+
icon: isCollapsed ? 'chevron-up' : 'chevron-down',
|
|
72
|
+
onClick: () => onCollapseStateChange?.(!isCollapsed),
|
|
73
|
+
className: `${baseClassName}__header-collapse`,
|
|
74
|
+
"aria-label": "Collapse"
|
|
75
|
+
});
|
|
62
76
|
const panelHeader = /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactTransitionGroup.CSSTransition, {
|
|
63
77
|
nodeRef: headerRef,
|
|
64
78
|
in: isHeaderVisible,
|
|
@@ -75,19 +89,7 @@ const PanelView = _ref => {
|
|
|
75
89
|
'--_pul-toaster--panel-header-enter-delay': isSingleNonClosableToast ? '300ms' : 0,
|
|
76
90
|
'--_pul-toaster--panel-header-exit-delay': isEmpty ? '300ms' : undefined
|
|
77
91
|
},
|
|
78
|
-
children: [
|
|
79
|
-
className: `${baseClassName}__header-labels`,
|
|
80
|
-
children: notEmptyGroups.map(group => /*#__PURE__*/(0, _jsxRuntime.jsx)(_GroupLabel.default, {
|
|
81
|
-
group: group,
|
|
82
|
-
onClose: () => onToastGroupClose?.(group.keys)
|
|
83
|
-
}, group.groupKey))
|
|
84
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
|
|
85
|
-
ghost: true,
|
|
86
|
-
icon: isCollapsed ? 'chevron-up' : 'chevron-down',
|
|
87
|
-
onClick: () => onCollapseStateChange?.(!isCollapsed),
|
|
88
|
-
className: `${baseClassName}__header-collapse`,
|
|
89
|
-
"aria-label": "Collapse"
|
|
90
|
-
})]
|
|
92
|
+
children: [panelHeaderLabels, panelHeaderCollapseButton]
|
|
91
93
|
})
|
|
92
94
|
});
|
|
93
95
|
const panelContent = /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
@@ -4,12 +4,6 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
Object.defineProperty(exports, "ToolbarBetaProvider", {
|
|
8
|
-
enumerable: true,
|
|
9
|
-
get: function () {
|
|
10
|
-
return _ToolbarBetaProvider.default;
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
7
|
Object.defineProperty(exports, "ToolbarExpander", {
|
|
14
8
|
enumerable: true,
|
|
15
9
|
get: function () {
|
|
@@ -30,5 +24,4 @@ Object.defineProperty(exports, "default", {
|
|
|
30
24
|
});
|
|
31
25
|
var _Toolbar = _interopRequireDefault(require("./Toolbar"));
|
|
32
26
|
var _ToolbarGroup = _interopRequireDefault(require("./ToolbarGroup"));
|
|
33
|
-
var _ToolbarExpander = _interopRequireDefault(require("./ToolbarExpander"));
|
|
34
|
-
var _ToolbarBetaProvider = _interopRequireDefault(require("./ToolbarBetaProvider"));
|
|
27
|
+
var _ToolbarExpander = _interopRequireDefault(require("./ToolbarExpander"));
|
package/cjs/components/index.js
CHANGED
|
@@ -107,7 +107,6 @@ var _exportNames = {
|
|
|
107
107
|
Toolbar: true,
|
|
108
108
|
ToolbarGroup: true,
|
|
109
109
|
ToolbarExpander: true,
|
|
110
|
-
ToolbarBetaProvider: true,
|
|
111
110
|
Tooltip: true,
|
|
112
111
|
Tour: true,
|
|
113
112
|
Translate: true,
|
|
@@ -748,12 +747,6 @@ Object.defineProperty(exports, "Toolbar", {
|
|
|
748
747
|
return _Toolbar.default;
|
|
749
748
|
}
|
|
750
749
|
});
|
|
751
|
-
Object.defineProperty(exports, "ToolbarBetaProvider", {
|
|
752
|
-
enumerable: true,
|
|
753
|
-
get: function () {
|
|
754
|
-
return _Toolbar.ToolbarBetaProvider;
|
|
755
|
-
}
|
|
756
|
-
});
|
|
757
750
|
Object.defineProperty(exports, "ToolbarExpander", {
|
|
758
751
|
enumerable: true,
|
|
759
752
|
get: function () {
|
package/cjs/index.js
CHANGED
|
@@ -46,5 +46,5 @@ Object.keys(_components).forEach(function (key) {
|
|
|
46
46
|
});
|
|
47
47
|
});
|
|
48
48
|
// Copyright 1999-2025. WebPros International GmbH. All rights reserved.
|
|
49
|
-
const version = exports.version = "3.
|
|
49
|
+
const version = exports.version = "3.43.0";
|
|
50
50
|
(0, _svg4everybody.default)();
|