@plesk/ui-library 3.40.7 → 3.40.9

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 (113) hide show
  1. package/cjs/components/Action/Action.js +1 -1
  2. package/cjs/components/Badge/Badge.js +1 -1
  3. package/cjs/components/Button/Button.js +1 -1
  4. package/cjs/components/Card/Card.js +3 -3
  5. package/cjs/components/CardList/CardListToolbar.js +1 -1
  6. package/cjs/components/CodeEditor/CodeEditor.js +1 -1
  7. package/cjs/components/ComboBox/ComboBox.js +1 -1
  8. package/cjs/components/ComboBoxDropdown/ComboBoxDropdown.js +2 -2
  9. package/cjs/components/Cuttable/Cuttable.js +59 -88
  10. package/cjs/components/Cuttable/useContentOverflow.js +35 -0
  11. package/cjs/components/Dialog/Dialog.js +2 -2
  12. package/cjs/components/Drawer/Drawer.js +1 -1
  13. package/cjs/components/Dropdown/Dropdown.js +1 -1
  14. package/cjs/components/Form/Form.js +1 -1
  15. package/cjs/components/Icon/utils.js +1 -1
  16. package/cjs/components/Item/Item.js +1 -1
  17. package/cjs/components/ItemList/ItemList.js +3 -3
  18. package/cjs/components/Layer/Layer.js +2 -2
  19. package/cjs/components/List/List.js +4 -4
  20. package/cjs/components/List/ListActions.js +2 -2
  21. package/cjs/components/LocaleProvider/LocaleProvider.js +1 -1
  22. package/cjs/components/Media/Media.js +1 -1
  23. package/cjs/components/Menu/Menu.js +1 -1
  24. package/cjs/components/Overlay/Overlay.js +1 -1
  25. package/cjs/components/Progress/Progress.js +1 -1
  26. package/cjs/components/SegmentedControl/ButtonGroupControl.js +65 -0
  27. package/cjs/components/SegmentedControl/DropdownControl.js +46 -0
  28. package/cjs/components/SegmentedControl/SegmentedControl.js +70 -265
  29. package/cjs/components/SegmentedControl/getSelectedValues.js +18 -0
  30. package/cjs/components/SegmentedControl/useResponsive.js +29 -0
  31. package/cjs/components/SegmentedControl/useSelected.js +55 -0
  32. package/cjs/components/Select/Select.js +2 -2
  33. package/cjs/components/Squeezer/Squeezer.js +10 -88
  34. package/cjs/components/Tabs/Tabs.js +1 -1
  35. package/cjs/components/Toaster/Toaster.js +1 -1
  36. package/cjs/components/Toolbar/RegistryContext.js +13 -8
  37. package/cjs/components/Toolbar/ToolbarMenu.js +2 -2
  38. package/cjs/components/Tour/Tour.js +1 -1
  39. package/cjs/components/Translate/isLikeText.js +1 -1
  40. package/cjs/hooks/index.js +7 -0
  41. package/cjs/hooks/useSqueeze.js +2 -1
  42. package/cjs/index.js +1 -1
  43. package/dist/plesk-ui-library-rtl.css +1 -1
  44. package/dist/plesk-ui-library-rtl.css.map +1 -1
  45. package/dist/plesk-ui-library.css +1 -1
  46. package/dist/plesk-ui-library.css.map +1 -1
  47. package/dist/plesk-ui-library.js +519 -500
  48. package/dist/plesk-ui-library.js.map +1 -1
  49. package/dist/plesk-ui-library.min.js +4 -4
  50. package/dist/plesk-ui-library.min.js.map +1 -1
  51. package/esm/components/Action/Action.js +1 -1
  52. package/esm/components/Badge/Badge.js +1 -1
  53. package/esm/components/Button/Button.js +1 -1
  54. package/esm/components/Card/Card.js +3 -3
  55. package/esm/components/CardList/CardListToolbar.js +1 -1
  56. package/esm/components/CodeEditor/CodeEditor.js +1 -1
  57. package/esm/components/ComboBox/ComboBox.js +1 -1
  58. package/esm/components/ComboBoxDropdown/ComboBoxDropdown.js +2 -2
  59. package/esm/components/Cuttable/Cuttable.js +60 -89
  60. package/esm/components/Cuttable/useContentOverflow.js +28 -0
  61. package/esm/components/Dialog/Dialog.js +2 -2
  62. package/esm/components/Drawer/Drawer.js +1 -1
  63. package/esm/components/Dropdown/Dropdown.js +1 -1
  64. package/esm/components/Form/Form.js +1 -1
  65. package/esm/components/Icon/utils.js +1 -1
  66. package/esm/components/Item/Item.js +1 -1
  67. package/esm/components/ItemList/ItemList.js +3 -3
  68. package/esm/components/Layer/Layer.js +2 -2
  69. package/esm/components/List/List.js +4 -4
  70. package/esm/components/List/ListActions.js +2 -2
  71. package/esm/components/LocaleProvider/LocaleProvider.js +1 -1
  72. package/esm/components/Media/Media.js +1 -1
  73. package/esm/components/Menu/Menu.js +1 -1
  74. package/esm/components/Overlay/Overlay.js +1 -1
  75. package/esm/components/Progress/Progress.js +1 -1
  76. package/esm/components/SegmentedControl/ButtonGroupControl.js +58 -0
  77. package/esm/components/SegmentedControl/DropdownControl.js +37 -0
  78. package/esm/components/SegmentedControl/SegmentedControl.js +71 -264
  79. package/esm/components/SegmentedControl/getSelectedValues.js +11 -0
  80. package/esm/components/SegmentedControl/useResponsive.js +21 -0
  81. package/esm/components/SegmentedControl/useSelected.js +48 -0
  82. package/esm/components/Select/Select.js +2 -2
  83. package/esm/components/Squeezer/Squeezer.js +11 -88
  84. package/esm/components/Tabs/Tabs.js +1 -1
  85. package/esm/components/Toaster/Toaster.js +1 -1
  86. package/esm/components/Toolbar/RegistryContext.js +13 -8
  87. package/esm/components/Toolbar/ToolbarMenu.js +2 -2
  88. package/esm/components/Tour/Tour.js +1 -1
  89. package/esm/components/Translate/isLikeText.js +1 -1
  90. package/esm/hooks/index.js +1 -0
  91. package/esm/hooks/useSqueeze.js +2 -1
  92. package/esm/index.js +1 -1
  93. package/package.json +19 -19
  94. package/styleguide/build/bundle.56f21860.js +2 -0
  95. package/styleguide/index.html +2 -2
  96. package/types/src/components/Cuttable/Cuttable.d.ts +3 -25
  97. package/types/src/components/Cuttable/useContentOverflow.d.ts +8 -0
  98. package/types/src/components/List/List.d.ts +1 -0
  99. package/types/src/components/SegmentedControl/ButtonGroupControl.d.ts +12 -0
  100. package/types/src/components/SegmentedControl/DropdownControl.d.ts +8 -0
  101. package/types/src/components/SegmentedControl/SegmentedControl.d.ts +6 -50
  102. package/types/src/components/SegmentedControl/getSelectedValues.d.ts +1 -0
  103. package/types/src/components/SegmentedControl/index.d.ts +1 -1
  104. package/types/src/components/SegmentedControl/types.d.ts +11 -0
  105. package/types/src/components/SegmentedControl/useResponsive.d.ts +6 -0
  106. package/types/src/components/SegmentedControl/useSelected.d.ts +17 -0
  107. package/types/src/components/Squeezer/Squeezer.d.ts +5 -21
  108. package/types/src/components/Toolbar/RegistryContext.d.ts +2 -2
  109. package/types/src/components/index.d.ts +1 -1
  110. package/types/src/hooks/index.d.ts +2 -0
  111. package/types/src/hooks/useSqueeze.d.ts +1 -4
  112. package/styleguide/build/bundle.52d1d9a1.js +0 -2
  113. /package/styleguide/build/{bundle.52d1d9a1.js.LICENSE.txt → bundle.56f21860.js.LICENSE.txt} +0 -0
@@ -1,286 +1,93 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
1
  // Copyright 1999-2023. Plesk International GmbH. All rights reserved.
3
2
 
4
3
  import classNames from 'classnames';
5
- import { Component, createRef } from 'react';
4
+ import { useRef } from 'react';
6
5
  import { CLS_PREFIX } from '../../constants';
7
- import Button from '../Button';
8
- import ButtonGroup from '../ButtonGroup';
9
- import Dropdown from '../Dropdown';
10
- import Menu, { MenuItem } from '../Menu';
11
6
  import ResponsiveContext from '../ResponsiveContext';
12
7
  import Squeezer from '../Squeezer';
8
+ import DropdownControl from './DropdownControl';
9
+ import ButtonGroupControl from './ButtonGroupControl';
10
+ import { useResponsive } from './useResponsive';
11
+ import { useSelected } from './useSelected';
13
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
- const alphaSort = (a, b) => a > b ? 1 : -1;
15
13
  export const SEGMENTED_CONTROL_BASE_CLASS_NAME = `${CLS_PREFIX}segmented-control`;
16
14
 
17
15
  /**
18
- * `Segmented Control` is a group of several [Buttons](#!/Button)
16
+ * `Segmented Control` is a group of several [Buttons](#!/Button)
19
17
  * each of which functions as a mutually exclusive option.
20
18
  * @since 0.0.68
21
19
  */
22
- class SegmentedControl extends Component {
23
- constructor() {
24
- super(...arguments);
25
- _defineProperty(this, "state", {
26
- selected: this.props.selected,
27
- monoWidth: 0
28
- });
29
- _defineProperty(this, "context", void 0);
30
- _defineProperty(this, "isCompact", false);
31
- _defineProperty(this, "rootRef", /*#__PURE__*/createRef());
32
- _defineProperty(this, "adjustMonospaced", () => {
33
- const {
34
- baseClassName,
35
- monospaced
36
- } = this.props;
37
- if (monospaced) {
38
- let monoWidth = 0;
39
- this.rootRef.current?.querySelectorAll(`.${baseClassName}__button`).forEach(el => {
40
- monoWidth = Math.max(monoWidth, el.getBoundingClientRect().width);
41
- });
42
- if (monoWidth !== this.state.monoWidth) {
43
- this.setState({
44
- monoWidth
45
- });
46
- }
47
- }
48
- });
49
- _defineProperty(this, "handleChange", value => () => {
50
- const {
51
- multiple,
52
- onChange
53
- } = this.props;
54
- const {
55
- selected
56
- } = this.state;
57
- let prevSelected = selected;
58
- let newSelected;
59
- if (multiple) {
60
- const isSelectedArray = Array.isArray(selected);
61
- newSelected = isSelectedArray ? [...selected] : [];
62
- if (!isSelectedArray || selected.indexOf(value) === -1) {
63
- newSelected.push(value);
64
- } else {
65
- newSelected.splice(selected.indexOf(value), 1);
66
- }
67
- newSelected.sort(alphaSort);
68
- if (isSelectedArray) {
69
- prevSelected = [...selected].sort(alphaSort);
70
- }
71
- } else {
72
- newSelected = value;
73
- }
74
- if (JSON.stringify(prevSelected) !== JSON.stringify(newSelected)) {
75
- this.setState({
76
- selected: newSelected
77
- });
78
- onChange?.(newSelected);
79
- }
80
- });
81
- _defineProperty(this, "compact", () => {
82
- if (this.isCompact) {
83
- return false;
84
- }
85
- this.isCompact = true;
86
- this.forceUpdate();
87
- return true;
88
- });
89
- _defineProperty(this, "uncompact", () => {
90
- if (!this.isCompact) {
91
- return false;
92
- }
93
- this.isCompact = false;
94
- this.forceUpdate();
95
- return true;
96
- });
97
- }
98
- static getDerivedStateFromProps(props, state) {
99
- const {
100
- selected,
101
- multiple
102
- } = props;
103
- const {
104
- prevSelected
105
- } = state;
106
- const nextState = {
107
- selected: state.selected
108
- };
109
- if (selected !== prevSelected) {
110
- nextState.selected = selected;
111
- }
112
- if (multiple && nextState.selected && !(nextState.selected instanceof Array)) {
113
- nextState.selected = [nextState.selected];
114
- }
115
- nextState.prevSelected = selected;
116
- return nextState;
117
- }
118
- componentDidMount() {
119
- this.adjustMonospaced();
120
- }
121
- componentDidUpdate() {
122
- this.adjustMonospaced();
123
- }
124
- isResponsive() {
125
- return this.context === undefined ? this.isCompact : this.context;
126
- }
127
- renderControl() {
128
- const {
129
- buttons,
130
- multiple
131
- } = this.props;
132
- const hasIcons = buttons.some(_ref => {
20
+ const SegmentedControl = _ref => {
21
+ let {
22
+ label,
23
+ labelPlacement = 'top',
24
+ buttons,
25
+ monospaced = false,
26
+ multiple = false,
27
+ selected: externalSelected,
28
+ onChange,
29
+ inline = false,
30
+ ghost = false,
31
+ className,
32
+ baseClassName = SEGMENTED_CONTROL_BASE_CLASS_NAME,
33
+ ...props
34
+ } = _ref;
35
+ const rootRef = useRef(null);
36
+ const {
37
+ isResponsive,
38
+ isInResponsiveContext,
39
+ ...squeezerProps
40
+ } = useResponsive();
41
+ const {
42
+ selectedValues,
43
+ handleChange
44
+ } = useSelected({
45
+ multiple,
46
+ externalSelected,
47
+ onChange
48
+ });
49
+ const renderControl = () => {
50
+ const hasIcons = buttons.some(_ref2 => {
133
51
  let {
134
52
  icon
135
- } = _ref;
53
+ } = _ref2;
136
54
  return !!icon;
137
55
  });
138
- if (!hasIcons && !multiple && this.isResponsive()) {
139
- return this.renderDropdown();
56
+ if (!hasIcons && !multiple && isResponsive) {
57
+ return /*#__PURE__*/_jsx(DropdownControl, {
58
+ buttons: buttons,
59
+ selected: selectedValues[0],
60
+ onClick: handleChange
61
+ });
140
62
  }
141
- return this.renderButtonGroup();
142
- }
143
- renderDropdown() {
144
- const {
145
- buttons,
146
- onChange
147
- } = this.props;
148
- const {
149
- selected
150
- } = this.state;
151
- const {
152
- title = ''
153
- } = buttons.find(button => button.value === selected) || {};
154
- const menu = /*#__PURE__*/_jsx(Menu, {
155
- children: buttons.map(_ref2 => {
156
- let {
157
- title,
158
- value,
159
- ...buttonProps
160
- } = _ref2;
161
- const menuItemProps = {};
162
- if (onChange !== null) {
163
- menuItemProps.onClick = this.handleChange(value);
164
- }
165
- return /*#__PURE__*/_jsx(MenuItem, {
166
- ...buttonProps,
167
- ...menuItemProps,
168
- children: title
169
- }, `${value}`);
170
- })
171
- });
172
- return /*#__PURE__*/_jsx(Dropdown, {
173
- menu: menu,
174
- children: title
175
- });
176
- }
177
- renderButtonGroup() {
178
- const {
179
- buttons,
180
- monospaced,
181
- multiple,
182
- onChange,
183
- ghost,
184
- baseClassName
185
- } = this.props;
186
- const {
187
- selected,
188
- monoWidth
189
- } = this.state;
190
- const isCollapsed = this.state.compact;
191
- return /*#__PURE__*/_jsx(ButtonGroup, {
192
- className: `${baseClassName}__button-group`,
193
- children: buttons.map(_ref3 => {
194
- let {
195
- value,
196
- title,
197
- ...buttonProps
198
- } = _ref3;
199
- // uncontrolled
200
- const handler = {};
201
- if (onChange !== null) {
202
- handler.onClick = this.handleChange(value);
203
- }
204
- let buttonSelected = false;
205
- if (multiple && selected && selected instanceof Array && selected.indexOf(value) !== -1) {
206
- buttonSelected = true;
207
- } else if (!multiple && selected === value) {
208
- buttonSelected = true;
209
- }
210
- buttonProps.className = classNames(buttonProps.className, `${baseClassName}__button`);
211
- if (!isCollapsed && monospaced && monoWidth) {
212
- buttonProps.style = {
213
- width: monoWidth,
214
- ...buttonProps.style
215
- };
216
- }
217
- return /*#__PURE__*/_jsx(Button, {
218
- selected: buttonSelected,
219
- ghost: ghost,
220
- ...handler,
221
- ...buttonProps,
222
- children: title
223
- }, `${value}`);
224
- })
225
- });
226
- }
227
- render() {
228
- const {
229
- label,
230
- labelPlacement,
231
- buttons,
232
- monospaced,
233
- multiple,
234
- selected: selectedProp,
235
- onChange,
236
- inline,
237
- ghost,
238
- className,
239
- baseClassName,
240
- ...props
241
- } = this.props;
242
- const isCollapsed = this.isResponsive();
243
63
  return /*#__PURE__*/_jsx(ResponsiveContext.Provider, {
244
- value: isCollapsed,
245
- children: /*#__PURE__*/_jsx(Squeezer, {
246
- compact: this.compact,
247
- uncompact: this.uncompact,
248
- innerRef: el => {
249
- // @ts-ignore
250
- this.rootRef.current = el;
251
- },
252
- children: _ref4 => {
253
- let {
254
- ref
255
- } = _ref4;
256
- return /*#__PURE__*/_jsxs("div", {
257
- ref: ref,
258
- className: classNames(baseClassName, {
259
- [`${baseClassName}--inline`]: inline,
260
- [`${baseClassName}--collapsed`]: isCollapsed,
261
- [`${baseClassName}--vertical`]: label && labelPlacement === 'top'
262
- }, className),
263
- ...props,
264
- children: [label && /*#__PURE__*/_jsx("div", {
265
- className: `${baseClassName}__label`,
266
- children: label
267
- }), this.renderControl()]
268
- });
269
- }
64
+ value: isResponsive,
65
+ children: /*#__PURE__*/_jsx(ButtonGroupControl, {
66
+ buttons: buttons,
67
+ selectedValues: selectedValues,
68
+ onClick: handleChange,
69
+ ghost: ghost,
70
+ isResponsive: isResponsive,
71
+ monospaced: monospaced,
72
+ baseClassName: baseClassName
270
73
  })
271
74
  });
272
- }
273
- }
274
- _defineProperty(SegmentedControl, "defaultProps", {
275
- label: null,
276
- labelPlacement: 'top',
277
- monospaced: false,
278
- multiple: false,
279
- onChange: null,
280
- inline: false,
281
- ghost: false,
282
- className: null,
283
- baseClassName: SEGMENTED_CONTROL_BASE_CLASS_NAME
284
- });
285
- _defineProperty(SegmentedControl, "contextType", ResponsiveContext);
75
+ };
76
+ return /*#__PURE__*/_jsxs("div", {
77
+ ref: rootRef,
78
+ className: classNames(baseClassName, {
79
+ [`${baseClassName}--inline`]: inline,
80
+ [`${baseClassName}--collapsed`]: isResponsive,
81
+ [`${baseClassName}--vertical`]: label && labelPlacement === 'top'
82
+ }, className),
83
+ ...props,
84
+ children: [label && /*#__PURE__*/_jsx("div", {
85
+ className: `${baseClassName}__label`,
86
+ children: label
87
+ }), renderControl(), !isInResponsiveContext && /*#__PURE__*/_jsx(Squeezer, {
88
+ ref: rootRef,
89
+ ...squeezerProps
90
+ })]
91
+ });
92
+ };
286
93
  export default SegmentedControl;
@@ -0,0 +1,11 @@
1
+ // Copyright 1999-2023. Plesk International GmbH. All rights reserved.
2
+
3
+ export const getSelectedValues = selected => {
4
+ if (selected === undefined) {
5
+ return [];
6
+ }
7
+ if (Array.isArray(selected)) {
8
+ return selected;
9
+ }
10
+ return [selected];
11
+ };
@@ -0,0 +1,21 @@
1
+ // Copyright 1999-2023. Plesk International GmbH. All rights reserved.
2
+
3
+ import { useContext, useState } from 'react';
4
+ import ResponsiveContext from '../ResponsiveContext';
5
+ export const useResponsive = () => {
6
+ const isResponsive = useContext(ResponsiveContext);
7
+ const isInResponsiveContext = typeof isResponsive === 'boolean';
8
+ const [isResponsiveInternal, setIsResponsiveInternal] = useState(false);
9
+ return {
10
+ isResponsive: isInResponsiveContext ? isResponsive : isResponsiveInternal,
11
+ isInResponsiveContext,
12
+ compact: () => {
13
+ setIsResponsiveInternal(true);
14
+ return false;
15
+ },
16
+ expand: () => {
17
+ setIsResponsiveInternal(false);
18
+ return false;
19
+ }
20
+ };
21
+ };
@@ -0,0 +1,48 @@
1
+ // Copyright 1999-2023. Plesk International GmbH. All rights reserved.
2
+
3
+ import { useState } from 'react';
4
+ import { getSelectedValues } from './getSelectedValues';
5
+ const alphaSort = (a, b) => a > b ? 1 : -1;
6
+ export const useSelected = _ref => {
7
+ let {
8
+ multiple,
9
+ externalSelected,
10
+ onChange
11
+ } = _ref;
12
+ const getExternal = () => multiple ? getSelectedValues(externalSelected) : externalSelected;
13
+ const [selected, setSelected] = useState(getExternal());
14
+ const [prevExternalSelected, setPrevExternalSelected] = useState(externalSelected);
15
+ if (prevExternalSelected !== externalSelected) {
16
+ setPrevExternalSelected(externalSelected);
17
+ if (selected !== externalSelected) {
18
+ setSelected(getExternal());
19
+ }
20
+ }
21
+ const handleChange = value => {
22
+ let prevSelected = selected;
23
+ let newSelected;
24
+ if (multiple) {
25
+ const isSelectedArray = Array.isArray(selected);
26
+ newSelected = isSelectedArray ? [...selected] : [];
27
+ if (!isSelectedArray || selected.indexOf(value) === -1) {
28
+ newSelected.push(value);
29
+ } else {
30
+ newSelected.splice(selected.indexOf(value), 1);
31
+ }
32
+ newSelected.sort(alphaSort);
33
+ if (isSelectedArray) {
34
+ prevSelected = [...selected].sort(alphaSort);
35
+ }
36
+ } else {
37
+ newSelected = value;
38
+ }
39
+ if (JSON.stringify(prevSelected) !== JSON.stringify(newSelected)) {
40
+ setSelected(newSelected);
41
+ onChange?.(newSelected);
42
+ }
43
+ };
44
+ return {
45
+ selectedValues: getSelectedValues(selected),
46
+ handleChange
47
+ };
48
+ };
@@ -16,7 +16,7 @@ const collect = function (children) {
16
16
  let group = arguments.length > 2 ? arguments[2] : undefined;
17
17
  const groups = [];
18
18
  Children.forEach(children, child => {
19
- if ( /*#__PURE__*/isValidElement(child) && (child.type === SelectOptionGroup || child.type === 'optgroup')) {
19
+ if (/*#__PURE__*/isValidElement(child) && (child.type === SelectOptionGroup || child.type === 'optgroup')) {
20
20
  const {
21
21
  label,
22
22
  children,
@@ -29,7 +29,7 @@ const collect = function (children) {
29
29
  };
30
30
  groups.push(group);
31
31
  collect(children, options, group);
32
- } else if ( /*#__PURE__*/isValidElement(child) && (child.type === SelectOption || child.type === 'option')) {
32
+ } else if (/*#__PURE__*/isValidElement(child) && (child.type === SelectOption || child.type === 'option')) {
33
33
  // eslint-disable-next-line prefer-const
34
34
  let {
35
35
  value,
@@ -1,91 +1,14 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
1
  // Copyright 1999-2023. Plesk International GmbH. All rights reserved.
3
2
 
4
- import { Component, createRef } from 'react';
5
- import Measure from 'react-measure';
6
- import { safeInvoke } from '../utils';
7
- import { jsx as _jsx } from "react/jsx-runtime";
8
- class Squeezer extends Component {
9
- constructor() {
10
- super(...arguments);
11
- _defineProperty(this, "rootRef", /*#__PURE__*/createRef());
12
- _defineProperty(this, "measuring", false);
13
- _defineProperty(this, "measurements", []);
14
- _defineProperty(this, "minWidth", 0);
15
- _defineProperty(this, "handleResize", () => {
16
- this.measure();
17
- });
18
- }
19
- addMeasurement(width) {
20
- this.measurements.push(width);
21
- if (this.measurements.length > 2) {
22
- this.measurements.shift();
23
- }
24
- }
25
- measure() {
26
- let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
27
- const {
28
- compact,
29
- uncompact
30
- } = this.props;
31
- if (this.measuring && !force) {
32
- return;
33
- }
34
- this.measuring = true;
35
- const root = this.rootRef.current;
36
- const width = Math.ceil(root.getBoundingClientRect().width);
37
- const scrollWidth = Math.ceil(root.scrollWidth);
38
- let checkForce = false;
39
- if (width < scrollWidth) {
40
- if (compact()) {
41
- this.minWidth = scrollWidth;
42
- checkForce = true;
43
- }
44
- } else if (width > this.minWidth) {
45
- if (uncompact()) {
46
- this.minWidth = width;
47
- checkForce = true;
48
- }
49
- }
50
- this.addMeasurement(width);
51
- this.check(checkForce);
52
- }
53
- check() {
54
- let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
55
- if (!force && this.measurements.length === 2 && this.measurements[0] === this.measurements[1]) {
56
- this.measuring = false;
57
- } else {
58
- this.setState({}, () => {
59
- this.measure(true);
60
- });
61
- }
62
- }
63
- render() {
64
- const {
65
- children,
66
- innerRef,
67
- innerMeasure
68
- } = this.props;
69
- return /*#__PURE__*/_jsx(Measure, {
70
- onResize: this.handleResize,
71
- innerRef: el => {
72
- if (el) {
73
- this.rootRef.current = el;
74
- safeInvoke(innerRef, el);
75
- safeInvoke(innerMeasure, () => {
76
- this.measure(true);
77
- });
78
- }
79
- },
80
- children: _ref => {
81
- let {
82
- measureRef
83
- } = _ref;
84
- return children({
85
- ref: measureRef
86
- });
87
- }
88
- });
89
- }
90
- }
3
+ import { forwardRef } from 'react';
4
+ import { useSqueeze } from '../../hooks';
5
+ /** Render-less useSqueeze wrapper */
6
+ const Squeezer = /*#__PURE__*/forwardRef((props, ref) => {
7
+ useSqueeze({
8
+ ref: ref,
9
+ ...props
10
+ });
11
+ return null;
12
+ });
13
+ Squeezer.displayName = 'Squeezer';
91
14
  export default Squeezer;
@@ -290,7 +290,7 @@ class Tabs extends Component {
290
290
  children: label
291
291
  });
292
292
  }
293
- if ( /*#__PURE__*/isValidElement(label)) {
293
+ if (/*#__PURE__*/isValidElement(label)) {
294
294
  return /*#__PURE__*/cloneElement(label, {
295
295
  className: classNames(`${baseClassName}__${tabMode}-label`, label.props.className)
296
296
  });
@@ -196,7 +196,7 @@ _defineProperty(Toaster, "create", function () {
196
196
  let container = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.body;
197
197
  const containerElement = document.createElement('div');
198
198
  container.appendChild(containerElement);
199
- return render( /*#__PURE__*/_jsx(_Toaster, {
199
+ return render(/*#__PURE__*/_jsx(_Toaster, {
200
200
  ...props
201
201
  }), containerElement);
202
202
  });
@@ -30,7 +30,7 @@ class Registry {
30
30
  expand() {
31
31
  let changed = false;
32
32
  for (const item of this.items) {
33
- if (this.checkItemIsCompactOrHasCompactItems(item)) {
33
+ if (item.isExpandable) {
34
34
  item.expand();
35
35
  changed = true;
36
36
  break;
@@ -46,18 +46,20 @@ class Registry {
46
46
  return isCompact;
47
47
  });
48
48
  }
49
- get hasCompactItems() {
50
- return this.items.some(this.checkItemIsCompactOrHasCompactItems);
51
- }
52
- checkItemIsCompactOrHasCompactItems(item) {
53
- return item.isCompact || 'hasCompactItems' in item && item.hasCompactItems;
49
+ get isExpandable() {
50
+ return this.items.some(_ref2 => {
51
+ let {
52
+ isExpandable
53
+ } = _ref2;
54
+ return isExpandable;
55
+ });
54
56
  }
55
57
  }
56
58
  class RegistryItem {
57
- constructor(_ref2) {
59
+ constructor(_ref3) {
58
60
  let {
59
61
  onCompactStateChange
60
- } = _ref2;
62
+ } = _ref3;
61
63
  _defineProperty(this, "_isCompact", false);
62
64
  _defineProperty(this, "onCompactStateChange", void 0);
63
65
  this.onCompactStateChange = onCompactStateChange;
@@ -73,6 +75,9 @@ class RegistryItem {
73
75
  get isCompact() {
74
76
  return this._isCompact;
75
77
  }
78
+ get isExpandable() {
79
+ return this._isCompact;
80
+ }
76
81
  }
77
82
  export const useRegistry = () => {
78
83
  const parentRegistry = useRegistryContext();
@@ -53,7 +53,7 @@ const toMenuItem = (child, isLast, onItemClick) => {
53
53
  case Dropdown:
54
54
  {
55
55
  let onMenuItemClick;
56
- if ( /*#__PURE__*/isValidElement(child.props.menu)) {
56
+ if (/*#__PURE__*/isValidElement(child.props.menu)) {
57
57
  ({
58
58
  onItemClick: onMenuItemClick
59
59
  } = child.props.menu.props);
@@ -65,7 +65,7 @@ const toMenuItem = (child, isLast, onItemClick) => {
65
65
  case ListOperation:
66
66
  {
67
67
  const menuItem = toMenuItem(child.props.children, true, onItemClick);
68
- if ( /*#__PURE__*/isValidElement(menuItem)) {
68
+ if (/*#__PURE__*/isValidElement(menuItem)) {
69
69
  return /*#__PURE__*/cloneElement(child, {
70
70
  children: /*#__PURE__*/cloneElement(menuItem, {
71
71
  onClick: e => {
@@ -17,7 +17,7 @@ const Tour = _ref => {
17
17
  const spots = Children.toArray(children);
18
18
  if (current !== undefined && current in spots) {
19
19
  const spot = spots[current];
20
- if ( /*#__PURE__*/isValidElement(spot)) {
20
+ if (/*#__PURE__*/isValidElement(spot)) {
21
21
  let popup;
22
22
  if (onClose && spot.props.popup) {
23
23
  popup = {
@@ -6,7 +6,7 @@ export const isLikeText = node => {
6
6
  if (typeof node === 'string') {
7
7
  return true;
8
8
  }
9
- if ( /*#__PURE__*/isValidElement(node) && node.type === Translate) {
9
+ if (/*#__PURE__*/isValidElement(node) && node.type === Translate) {
10
10
  const {
11
11
  component,
12
12
  children
@@ -1,3 +1,4 @@
1
1
  // Copyright 1999-2024. Plesk International GmbH. All rights reserved.
2
2
 
3
+ export { useResizeObserver } from './useResizeObserver';
3
4
  export { useSqueeze } from './useSqueeze';
@@ -5,7 +5,8 @@ import { useResizeObserver } from './useResizeObserver';
5
5
  import { useMutationObserver } from './useMutationObserver';
6
6
  const MUTATION_OBSERVER_OPTIONS = {
7
7
  subtree: true,
8
- childList: true
8
+ childList: true,
9
+ characterData: true
9
10
  };
10
11
  export const useSqueeze = _ref => {
11
12
  let {