@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.
Files changed (69) hide show
  1. package/cjs/components/CodeEditor/CodeEditor.js +1 -2
  2. package/cjs/components/Icon/constants.js +0 -1
  3. package/cjs/components/List/List.js +6 -3
  4. package/cjs/components/Tabs/FakeTabs.js +58 -0
  5. package/cjs/components/Tabs/Tab.js +0 -1
  6. package/cjs/components/Tabs/TabClose.js +35 -0
  7. package/cjs/components/Tabs/TabIcon.js +22 -0
  8. package/cjs/components/Tabs/TabLabel.js +34 -0
  9. package/cjs/components/Tabs/TabList.js +120 -0
  10. package/cjs/components/Tabs/TabListItem.js +75 -0
  11. package/cjs/components/Tabs/Tabs.js +98 -537
  12. package/cjs/components/Tabs/useActive.js +19 -0
  13. package/cjs/components/Tabs/useWidths.js +102 -0
  14. package/cjs/components/Toaster/PanelView.js +15 -13
  15. package/cjs/components/Toolbar/ToolbarMenu.js +0 -1
  16. package/cjs/components/Toolbar/index.js +1 -8
  17. package/cjs/components/index.js +0 -7
  18. package/cjs/index.js +1 -1
  19. package/dist/plesk-ui-library-rtl.css +1 -1
  20. package/dist/plesk-ui-library-rtl.css.map +1 -1
  21. package/dist/plesk-ui-library.css +1 -1
  22. package/dist/plesk-ui-library.css.map +1 -1
  23. package/dist/plesk-ui-library.js +668 -608
  24. package/dist/plesk-ui-library.js.map +1 -1
  25. package/dist/plesk-ui-library.min.js +5 -5
  26. package/dist/plesk-ui-library.min.js.map +1 -1
  27. package/esm/components/CodeEditor/CodeEditor.js +1 -2
  28. package/esm/components/Icon/constants.js +0 -1
  29. package/esm/components/List/List.js +6 -3
  30. package/esm/components/Tabs/FakeTabs.js +51 -0
  31. package/esm/components/Tabs/Tab.js +0 -1
  32. package/esm/components/Tabs/TabClose.js +28 -0
  33. package/esm/components/Tabs/TabIcon.js +14 -0
  34. package/esm/components/Tabs/TabLabel.js +27 -0
  35. package/esm/components/Tabs/TabList.js +111 -0
  36. package/esm/components/Tabs/TabListItem.js +68 -0
  37. package/esm/components/Tabs/Tabs.js +100 -537
  38. package/esm/components/Tabs/useActive.js +12 -0
  39. package/esm/components/Tabs/useWidths.js +95 -0
  40. package/esm/components/Toaster/PanelView.js +15 -13
  41. package/esm/components/Toolbar/ToolbarMenu.js +0 -1
  42. package/esm/components/Toolbar/index.js +1 -2
  43. package/esm/components/index.js +1 -1
  44. package/esm/index.js +1 -1
  45. package/package.json +9 -10
  46. package/styleguide/build/bundle.ef040f7a.js +2 -0
  47. package/styleguide/index.html +2 -2
  48. package/types/components/Carousel/Carousel.d.ts +1 -1
  49. package/types/components/Label/Label.d.ts +1 -1
  50. package/types/components/List/List.d.ts +8 -2
  51. package/types/components/Tabs/FakeTabs.d.ts +9 -0
  52. package/types/components/Tabs/SearchBar.d.ts +3 -3
  53. package/types/components/Tabs/TabClose.d.ts +9 -0
  54. package/types/components/Tabs/TabIcon.d.ts +7 -0
  55. package/types/components/Tabs/TabLabel.d.ts +9 -0
  56. package/types/components/Tabs/TabList.d.ts +14 -0
  57. package/types/components/Tabs/TabListItem.d.ts +12 -0
  58. package/types/components/Tabs/Tabs.d.ts +2 -52
  59. package/types/components/Tabs/useActive.d.ts +1 -0
  60. package/types/components/Tabs/useWidths.d.ts +16 -0
  61. package/types/components/Toolbar/index.d.ts +0 -1
  62. package/types/components/index.d.ts +1 -1
  63. package/types/utils/types/ComponentProps.d.ts +1 -1
  64. package/types/utils/types/PolymorphicComponent.d.ts +2 -2
  65. package/cjs/components/Toolbar/ToolbarBetaProvider.js +0 -23
  66. package/esm/components/Toolbar/ToolbarBetaProvider.js +0 -16
  67. package/styleguide/build/bundle.7ac8a2af.js +0 -2
  68. package/types/components/Toolbar/ToolbarBetaProvider.d.ts +0 -5
  69. /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: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
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", {
@@ -45,7 +45,6 @@ const toMenuItem = (child, isLast, onItemClick) => {
45
45
  ...props,
46
46
  children: props.children
47
47
  });
48
- /* eslint-enable react/prop-types */
49
48
  }
50
49
  case _ToolbarGroup.default:
51
50
  {
@@ -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"));
@@ -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.42.0";
49
+ const version = exports.version = "3.43.0";
50
50
  (0, _svg4everybody.default)();