@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.
- package/cjs/components/Action/Action.js +1 -1
- package/cjs/components/Badge/Badge.js +1 -1
- package/cjs/components/Button/Button.js +1 -1
- package/cjs/components/Card/Card.js +3 -3
- package/cjs/components/CardList/CardListToolbar.js +1 -1
- package/cjs/components/CodeEditor/CodeEditor.js +1 -1
- package/cjs/components/ComboBox/ComboBox.js +1 -1
- package/cjs/components/ComboBoxDropdown/ComboBoxDropdown.js +2 -2
- package/cjs/components/Cuttable/Cuttable.js +59 -88
- package/cjs/components/Cuttable/useContentOverflow.js +35 -0
- package/cjs/components/Dialog/Dialog.js +2 -2
- package/cjs/components/Drawer/Drawer.js +1 -1
- package/cjs/components/Dropdown/Dropdown.js +1 -1
- package/cjs/components/Form/Form.js +1 -1
- package/cjs/components/Icon/utils.js +1 -1
- package/cjs/components/Item/Item.js +1 -1
- package/cjs/components/ItemList/ItemList.js +3 -3
- package/cjs/components/Layer/Layer.js +2 -2
- package/cjs/components/List/List.js +4 -4
- package/cjs/components/List/ListActions.js +2 -2
- package/cjs/components/LocaleProvider/LocaleProvider.js +1 -1
- package/cjs/components/Media/Media.js +1 -1
- package/cjs/components/Menu/Menu.js +1 -1
- package/cjs/components/Overlay/Overlay.js +1 -1
- package/cjs/components/Progress/Progress.js +1 -1
- package/cjs/components/SegmentedControl/ButtonGroupControl.js +65 -0
- package/cjs/components/SegmentedControl/DropdownControl.js +46 -0
- package/cjs/components/SegmentedControl/SegmentedControl.js +70 -265
- package/cjs/components/SegmentedControl/getSelectedValues.js +18 -0
- package/cjs/components/SegmentedControl/useResponsive.js +29 -0
- package/cjs/components/SegmentedControl/useSelected.js +55 -0
- package/cjs/components/Select/Select.js +2 -2
- package/cjs/components/Squeezer/Squeezer.js +10 -88
- package/cjs/components/Tabs/Tabs.js +1 -1
- package/cjs/components/Toaster/Toaster.js +1 -1
- package/cjs/components/Toolbar/RegistryContext.js +13 -8
- package/cjs/components/Toolbar/ToolbarMenu.js +2 -2
- package/cjs/components/Tour/Tour.js +1 -1
- package/cjs/components/Translate/isLikeText.js +1 -1
- package/cjs/hooks/index.js +7 -0
- package/cjs/hooks/useSqueeze.js +2 -1
- 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 +519 -500
- package/dist/plesk-ui-library.js.map +1 -1
- package/dist/plesk-ui-library.min.js +4 -4
- package/dist/plesk-ui-library.min.js.map +1 -1
- package/esm/components/Action/Action.js +1 -1
- package/esm/components/Badge/Badge.js +1 -1
- package/esm/components/Button/Button.js +1 -1
- package/esm/components/Card/Card.js +3 -3
- package/esm/components/CardList/CardListToolbar.js +1 -1
- package/esm/components/CodeEditor/CodeEditor.js +1 -1
- package/esm/components/ComboBox/ComboBox.js +1 -1
- package/esm/components/ComboBoxDropdown/ComboBoxDropdown.js +2 -2
- package/esm/components/Cuttable/Cuttable.js +60 -89
- package/esm/components/Cuttable/useContentOverflow.js +28 -0
- package/esm/components/Dialog/Dialog.js +2 -2
- package/esm/components/Drawer/Drawer.js +1 -1
- package/esm/components/Dropdown/Dropdown.js +1 -1
- package/esm/components/Form/Form.js +1 -1
- package/esm/components/Icon/utils.js +1 -1
- package/esm/components/Item/Item.js +1 -1
- package/esm/components/ItemList/ItemList.js +3 -3
- package/esm/components/Layer/Layer.js +2 -2
- package/esm/components/List/List.js +4 -4
- package/esm/components/List/ListActions.js +2 -2
- package/esm/components/LocaleProvider/LocaleProvider.js +1 -1
- package/esm/components/Media/Media.js +1 -1
- package/esm/components/Menu/Menu.js +1 -1
- package/esm/components/Overlay/Overlay.js +1 -1
- package/esm/components/Progress/Progress.js +1 -1
- package/esm/components/SegmentedControl/ButtonGroupControl.js +58 -0
- package/esm/components/SegmentedControl/DropdownControl.js +37 -0
- package/esm/components/SegmentedControl/SegmentedControl.js +71 -264
- package/esm/components/SegmentedControl/getSelectedValues.js +11 -0
- package/esm/components/SegmentedControl/useResponsive.js +21 -0
- package/esm/components/SegmentedControl/useSelected.js +48 -0
- package/esm/components/Select/Select.js +2 -2
- package/esm/components/Squeezer/Squeezer.js +11 -88
- package/esm/components/Tabs/Tabs.js +1 -1
- package/esm/components/Toaster/Toaster.js +1 -1
- package/esm/components/Toolbar/RegistryContext.js +13 -8
- package/esm/components/Toolbar/ToolbarMenu.js +2 -2
- package/esm/components/Tour/Tour.js +1 -1
- package/esm/components/Translate/isLikeText.js +1 -1
- package/esm/hooks/index.js +1 -0
- package/esm/hooks/useSqueeze.js +2 -1
- package/esm/index.js +1 -1
- package/package.json +19 -19
- package/styleguide/build/bundle.56f21860.js +2 -0
- package/styleguide/index.html +2 -2
- package/types/src/components/Cuttable/Cuttable.d.ts +3 -25
- package/types/src/components/Cuttable/useContentOverflow.d.ts +8 -0
- package/types/src/components/List/List.d.ts +1 -0
- package/types/src/components/SegmentedControl/ButtonGroupControl.d.ts +12 -0
- package/types/src/components/SegmentedControl/DropdownControl.d.ts +8 -0
- package/types/src/components/SegmentedControl/SegmentedControl.d.ts +6 -50
- package/types/src/components/SegmentedControl/getSelectedValues.d.ts +1 -0
- package/types/src/components/SegmentedControl/index.d.ts +1 -1
- package/types/src/components/SegmentedControl/types.d.ts +11 -0
- package/types/src/components/SegmentedControl/useResponsive.d.ts +6 -0
- package/types/src/components/SegmentedControl/useSelected.d.ts +17 -0
- package/types/src/components/Squeezer/Squeezer.d.ts +5 -21
- package/types/src/components/Toolbar/RegistryContext.d.ts +2 -2
- package/types/src/components/index.d.ts +1 -1
- package/types/src/hooks/index.d.ts +2 -0
- package/types/src/hooks/useSqueeze.d.ts +1 -4
- package/styleguide/build/bundle.52d1d9a1.js +0 -2
- /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 {
|
|
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
|
-
*
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
} =
|
|
53
|
+
} = _ref2;
|
|
136
54
|
return !!icon;
|
|
137
55
|
});
|
|
138
|
-
if (!hasIcons && !multiple &&
|
|
139
|
-
return
|
|
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:
|
|
245
|
-
children: /*#__PURE__*/_jsx(
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
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
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
})
|
|
285
|
-
|
|
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,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 (
|
|
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 (
|
|
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 {
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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 (
|
|
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(
|
|
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 (
|
|
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
|
|
50
|
-
return this.items.some(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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(
|
|
59
|
+
constructor(_ref3) {
|
|
58
60
|
let {
|
|
59
61
|
onCompactStateChange
|
|
60
|
-
} =
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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 (
|
|
9
|
+
if (/*#__PURE__*/isValidElement(node) && node.type === Translate) {
|
|
10
10
|
const {
|
|
11
11
|
component,
|
|
12
12
|
children
|
package/esm/hooks/index.js
CHANGED
package/esm/hooks/useSqueeze.js
CHANGED
|
@@ -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 {
|