@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
|
@@ -112,8 +112,7 @@ class CodeEditor extends _react.Component {
|
|
|
112
112
|
this.codeMirror.scrollTo(scrollPosition.left, scrollPosition.top);
|
|
113
113
|
}
|
|
114
114
|
this.updateMode(this.props);
|
|
115
|
-
//
|
|
116
|
-
// @ts-ignore
|
|
115
|
+
// @ts-expect-error save fn typing is missed by some reason
|
|
117
116
|
CodeMirror.commands.save = this.props.onSave;
|
|
118
117
|
CodeMirror.commands.find = CodeMirror.commands.findPersistent;
|
|
119
118
|
CodeMirror.commands.findNext = CodeMirror.commands.findPersistentNext;
|
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.NAMES_12 = exports.NAMES = void 0;
|
|
7
7
|
// Copyright 1999-2025. WebPros International GmbH. All rights reserved.
|
|
8
|
-
/* eslint-disable max-len */
|
|
9
8
|
// This file is generated by create-svg-sprite. Do not edit.
|
|
10
9
|
|
|
11
10
|
const NAMES_12 = exports.NAMES_12 = ['advisor', 'archive', 'arrow-back', 'arrow-diagonal-out', 'arrow-down', 'arrow-down-circle-filled', 'arrow-down-in', 'arrow-down-out', 'arrow-down-tray', 'arrow-left', 'arrow-left-circle-filled', 'arrow-right', 'arrow-right-circle-filled', 'arrow-right-in', 'arrow-right-out', 'arrow-up', 'arrow-up-circle', 'arrow-up-circle-filled', 'arrow-up-in', 'arrow-up-in-cloud', 'arrow-up-out', 'arrow-up-tray', 'arrows-four-directions', 'arrows-inward', 'arrows-loop', 'arrows-opposite', 'arrows-outward', 'backup', 'backup2', 'bar-chart-vertical', 'bar-chart-vertical-arrow-up', 'bar-chart-vertical-lock', 'bell', 'book-email', 'boost', 'boundary', 'box-diagonal-bottom-in', 'box-diagonal-top-in', 'brush', 'bug', 'calendar', 'calendar-clock', 'camera', 'card', 'card-ribbon', 'card-row', 'card-tile', 'cd', 'cd-up-in-cloud', 'chain', 'chain-broken', 'chat', 'check-list', 'check-mark', 'check-mark-circle', 'check-mark-circle-filled', 'chevron-double-down', 'chevron-double-up', 'chevron-down', 'chevron-left', 'chevron-right', 'chevron-up', 'circle-diagonal', 'clean', 'clip', 'clock', 'clone', 'cloud', 'cloud-checkmark', 'cloud-crossed', 'cloud-graph', 'code', 'connection', 'console', 'console-filled', 'copy', 'copy-indicator', 'cpu', 'crane', 'credit-cards', 'cross-mark', 'cross-mark-circle', 'cross-mark-circle-filled', 'crown-transfer', 'dashboard', 'database', 'database-box', 'database-filled', 'database-plus', 'deploy', 'docker-filled', 'dollar', 'dollar-filled', 'dot', 'dot-big', 'emoticon-confused', 'emoticon-dead', 'emoticon-excited', 'emoticon-happy', 'emoticon-neutral', 'emoticon-sad', 'emoticon-smile', 'enter', 'exclamation-mark-circle', 'exclamation-mark-circle-filled', 'eye', 'eye-closed', 'facebook', 'facebook-filled', 'feedback', 'file', 'filter', 'filter-check-mark', 'fire', 'flag', 'flag-filled', 'flag-globe', 'floppy-disk', 'folder-closed', 'folder-key', 'folder-network', 'folder-open', 'folders-tree', 'forward-circle-filled', 'four-squares', 'gear', 'git', 'github', 'globe', 'hard-drive', 'hard-drive-key', 'hat', 'hexagons', 'home', 'info-circle', 'info-circle-filled', 'ip-addresses', 'joomla', 'kebab', 'key', 'label', 'label-plus', 'laravel', 'lifebuoy', 'lightbulb', 'limit', 'linux', 'list', 'list-check-mark', 'location', 'lock-closed', 'lock-closed-check', 'lock-closed-filled', 'lock-open', 'lock-open-cross', 'lock-open-filled', 'mail', 'mail-circle-filled', 'mail-settings', 'megaphone', 'menu', 'menu-thin', 'microsoft', 'minimize', 'minus', 'minus-circle', 'minus-circle-filled', 'monitoring', 'monitoring-off', 'my-little-admin', 'net', 'nine-dots', 'node-js', 'package', 'panel', 'panel-check', 'panel-eye', 'panel-key', 'panel-settings', 'panels', 'pause-circle', 'pencil', 'pencil-dialog', 'php', 'phpmyadmin', 'pin', 'pipette', 'plans', 'plugins', 'plus', 'plus-circle', 'plus-circle-filled', 'power', 'projects', 'puzzle', 'python', 'question-mark-circle', 'question-mark-circle-filled', 'ram', 'react-js', 'recycle', 'redirect-circle-filled', 'refresh', 'reload', 'remove', 'reset', 'resource', 'ribbon', 'rocket', 'ruby', 'sand-clock', 'scan', 'screen', 'search', 'security-check', 'send', 'server', 'servers', 'share', 'shield', 'shield-attention-filled', 'shield-chain', 'shield-filled', 'shopping-cart', 'sidebar-right-hide', 'sidebar-right-show', 'signal-light', 'site-page', 'sleep', 'sliders', 'square-with-circles', 'ssl-it', 'star', 'star-circle-filled', 'star-filled', 'star-half-filled', 'start', 'start-circle', 'start-filled', 'stop', 'stop-circle', 'storage', 'themes', 'three-dots-horizontal', 'three-dots-vertical', 'tools', 'transfer', 'triangle-exclamation-mark', 'triangle-exclamation-mark-filled', 'unarchive', 'user', 'volume', 'web', 'web-plus', 'web-settings', 'windows', 'woocommerce', 'wordpress', 'wordpress-minus', 'zero-circle-filled'];
|
|
@@ -370,7 +370,8 @@ class List extends _react.Component {
|
|
|
370
370
|
vertical,
|
|
371
371
|
rowKey,
|
|
372
372
|
totalRows,
|
|
373
|
-
filtered
|
|
373
|
+
filtered,
|
|
374
|
+
autoExpandSingleItem
|
|
374
375
|
} = _ref5;
|
|
375
376
|
let {
|
|
376
377
|
prevSortColumn,
|
|
@@ -394,7 +395,7 @@ class List extends _react.Component {
|
|
|
394
395
|
const isSingleElementInCurrentExpanded = () => data && state.expandedRows.includes(getRowKey(data[0], {
|
|
395
396
|
rowKey
|
|
396
397
|
}));
|
|
397
|
-
if (renderRowBody && data?.length === 1 && (!pagination || totalRows === 1) && (!prevData || prevData?.length === 0 || isSingleElementInCurrentExpanded()) && (!filtered || isSingleElementInCurrentExpanded())) {
|
|
398
|
+
if (renderRowBody && data?.length === 1 && (!pagination || totalRows === 1) && (!prevData || prevData?.length === 0 || isSingleElementInCurrentExpanded()) && (!filtered || isSingleElementInCurrentExpanded()) && autoExpandSingleItem) {
|
|
398
399
|
const key = getRowKey(data[0], {
|
|
399
400
|
rowKey
|
|
400
401
|
});
|
|
@@ -1071,6 +1072,7 @@ class List extends _react.Component {
|
|
|
1071
1072
|
rowProps,
|
|
1072
1073
|
reorderable,
|
|
1073
1074
|
onReorderEnd,
|
|
1075
|
+
autoExpandSingleItem,
|
|
1074
1076
|
...props
|
|
1075
1077
|
} = this.props;
|
|
1076
1078
|
const {
|
|
@@ -1446,6 +1448,7 @@ class List extends _react.Component {
|
|
|
1446
1448
|
loading: false,
|
|
1447
1449
|
rowProps: undefined,
|
|
1448
1450
|
reorderable: false,
|
|
1449
|
-
onReorderEnd: undefined
|
|
1451
|
+
onReorderEnd: undefined,
|
|
1452
|
+
autoExpandSingleItem: true
|
|
1450
1453
|
});
|
|
1451
1454
|
var _default = exports.default = List;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
|
+
var _hooks = require("../../hooks");
|
|
11
|
+
var _Icon = _interopRequireDefault(require("../Icon"));
|
|
12
|
+
var _Tab = _interopRequireDefault(require("./Tab"));
|
|
13
|
+
var _TabListItem = _interopRequireDefault(require("./TabListItem"));
|
|
14
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
// Copyright 1999-2025. WebPros International GmbH. All rights reserved.
|
|
16
|
+
|
|
17
|
+
const FakeTabs = _ref => {
|
|
18
|
+
let {
|
|
19
|
+
children,
|
|
20
|
+
onResize,
|
|
21
|
+
baseClassName
|
|
22
|
+
} = _ref;
|
|
23
|
+
const tabsRef = (0, _react.useRef)(null);
|
|
24
|
+
(0, _hooks.useResizeObserver)({
|
|
25
|
+
ref: tabsRef,
|
|
26
|
+
onResize
|
|
27
|
+
});
|
|
28
|
+
const list = /*#__PURE__*/(0, _jsxRuntime.jsxs)("ul", {
|
|
29
|
+
ref: tabsRef,
|
|
30
|
+
className: (0, _classnames.default)(`${baseClassName}__tab-list`, `${baseClassName}__tab-list--fake`),
|
|
31
|
+
children: [_react.Children.map(children, (tab, index) => {
|
|
32
|
+
if (!tab || tab.type !== _Tab.default) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TabListItem.default, {
|
|
36
|
+
// eslint-disable-line react/no-array-index-key
|
|
37
|
+
tab: tab,
|
|
38
|
+
baseClassName: baseClassName,
|
|
39
|
+
isFake: true
|
|
40
|
+
}, index);
|
|
41
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
|
|
42
|
+
className: (0, _classnames.default)(`${baseClassName}__tab`, `${baseClassName}__tab--more`),
|
|
43
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
|
|
44
|
+
className: `${baseClassName}__link`,
|
|
45
|
+
tabIndex: -1,
|
|
46
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
|
|
47
|
+
name: "three-dots-horizontal"
|
|
48
|
+
})
|
|
49
|
+
})
|
|
50
|
+
})]
|
|
51
|
+
});
|
|
52
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
53
|
+
className: `${baseClassName}__fake-list-wrapper`,
|
|
54
|
+
"aria-hidden": true,
|
|
55
|
+
children: list
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
var _default = exports.default = FakeTabs;
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
8
8
|
// Copyright 1999-2025. WebPros International GmbH. All rights reserved.
|
|
9
|
-
/* eslint-disable react/no-unused-prop-types */
|
|
10
9
|
|
|
11
10
|
/**
|
|
12
11
|
* `Tab` is an individual element of the [Tabs](#!/Tabs) component.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _Icon = _interopRequireDefault(require("../Icon"));
|
|
9
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
+
// Copyright 1999-2025. WebPros International GmbH. All rights reserved.
|
|
11
|
+
|
|
12
|
+
const TabClose = _ref => {
|
|
13
|
+
let {
|
|
14
|
+
tabMode,
|
|
15
|
+
onClose,
|
|
16
|
+
baseClassName
|
|
17
|
+
} = _ref;
|
|
18
|
+
if (typeof onClose !== 'function') {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
|
|
22
|
+
className: `${baseClassName}__${tabMode}-close`,
|
|
23
|
+
type: "button",
|
|
24
|
+
onClick: e => {
|
|
25
|
+
e.preventDefault();
|
|
26
|
+
e.stopPropagation();
|
|
27
|
+
onClose(e);
|
|
28
|
+
},
|
|
29
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
|
|
30
|
+
className: `${baseClassName}__${tabMode}-close-icon`,
|
|
31
|
+
name: "cross-mark"
|
|
32
|
+
})
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
var _default = exports.default = TabClose;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _Icon = _interopRequireWildcard(require("../Icon"));
|
|
8
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
9
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
10
|
+
// Copyright 1999-2025. WebPros International GmbH. All rights reserved.
|
|
11
|
+
|
|
12
|
+
const TabIcon = _ref => {
|
|
13
|
+
let {
|
|
14
|
+
icon,
|
|
15
|
+
baseClassName
|
|
16
|
+
} = _ref;
|
|
17
|
+
return _Icon.default.create(icon, {
|
|
18
|
+
size: _Icon.ICON_SIZE_16,
|
|
19
|
+
className: `${baseClassName}__tab-icon`
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var _default = exports.default = TabIcon;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
|
+
var _Label = _interopRequireDefault(require("../Label"));
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
// Copyright 1999-2025. WebPros International GmbH. All rights reserved.
|
|
13
|
+
|
|
14
|
+
const TabLabel = _ref => {
|
|
15
|
+
let {
|
|
16
|
+
label,
|
|
17
|
+
tabMode,
|
|
18
|
+
baseClassName
|
|
19
|
+
} = _ref;
|
|
20
|
+
if (typeof label === 'string') {
|
|
21
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Label.default, {
|
|
22
|
+
className: `${baseClassName}__${tabMode}-label`,
|
|
23
|
+
intent: "danger",
|
|
24
|
+
children: label
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
if (/*#__PURE__*/(0, _react.isValidElement)(label)) {
|
|
28
|
+
return /*#__PURE__*/(0, _react.cloneElement)(label, {
|
|
29
|
+
className: (0, _classnames.default)(`${baseClassName}__${tabMode}-label`, label.props.className)
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
};
|
|
34
|
+
var _default = exports.default = TabLabel;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
|
+
var _Dropdown = _interopRequireDefault(require("../Dropdown"));
|
|
11
|
+
var _Icon = _interopRequireDefault(require("../Icon"));
|
|
12
|
+
var _Menu = _interopRequireWildcard(require("../Menu"));
|
|
13
|
+
var _Tab = _interopRequireDefault(require("./Tab"));
|
|
14
|
+
var _TabClose = _interopRequireDefault(require("./TabClose"));
|
|
15
|
+
var _TabIcon = _interopRequireDefault(require("./TabIcon"));
|
|
16
|
+
var _TabLabel = _interopRequireDefault(require("./TabLabel"));
|
|
17
|
+
var _TabListItem = _interopRequireDefault(require("./TabListItem"));
|
|
18
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
20
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
21
|
+
// Copyright 1999-2025. WebPros International GmbH. All rights reserved.
|
|
22
|
+
|
|
23
|
+
const TabList = _ref => {
|
|
24
|
+
let {
|
|
25
|
+
children,
|
|
26
|
+
tabListRef,
|
|
27
|
+
active,
|
|
28
|
+
onTabClick,
|
|
29
|
+
visibleLength,
|
|
30
|
+
monospacedWidth,
|
|
31
|
+
baseClassName
|
|
32
|
+
} = _ref;
|
|
33
|
+
if (!_react.Children.toArray(children).length) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
let tabs = _react.Children.toArray(children);
|
|
37
|
+
tabs = tabs.filter(child => child?.type === _Tab.default);
|
|
38
|
+
const listChildren = tabs.slice(0, visibleLength);
|
|
39
|
+
const menuChildren = tabs.slice(visibleLength);
|
|
40
|
+
const listItems = _react.Children.map(listChildren, (tab, index) => {
|
|
41
|
+
const position = index + 1;
|
|
42
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TabListItem.default, {
|
|
43
|
+
// eslint-disable-line react/no-array-index-key
|
|
44
|
+
tab: tab,
|
|
45
|
+
baseClassName: baseClassName,
|
|
46
|
+
selected: position === active,
|
|
47
|
+
onClick: () => onTabClick(position),
|
|
48
|
+
monospacedWidth: monospacedWidth
|
|
49
|
+
}, index);
|
|
50
|
+
});
|
|
51
|
+
const menuItems = _react.Children.map(menuChildren, (tab, index) => {
|
|
52
|
+
const position = listChildren.length + index + 1;
|
|
53
|
+
const {
|
|
54
|
+
title,
|
|
55
|
+
label,
|
|
56
|
+
icon,
|
|
57
|
+
onActivate,
|
|
58
|
+
onClose,
|
|
59
|
+
component: Tag = 'a',
|
|
60
|
+
...tabProps
|
|
61
|
+
} = tab.props;
|
|
62
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Menu.MenuItem, {
|
|
63
|
+
// eslint-disable-line react/no-array-index-key
|
|
64
|
+
icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TabIcon.default, {
|
|
65
|
+
icon: icon,
|
|
66
|
+
baseClassName: baseClassName
|
|
67
|
+
}),
|
|
68
|
+
label: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
69
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_TabLabel.default, {
|
|
70
|
+
label: label,
|
|
71
|
+
tabMode: "menu-item",
|
|
72
|
+
baseClassName: baseClassName
|
|
73
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TabClose.default, {
|
|
74
|
+
onClose: onClose,
|
|
75
|
+
tabMode: "menu-item",
|
|
76
|
+
baseClassName: baseClassName
|
|
77
|
+
})]
|
|
78
|
+
}),
|
|
79
|
+
active: active === position,
|
|
80
|
+
onClick: () => onTabClick(position),
|
|
81
|
+
className: `${baseClassName}__menu-item`,
|
|
82
|
+
component: Tag,
|
|
83
|
+
...tabProps,
|
|
84
|
+
children: title
|
|
85
|
+
}, index);
|
|
86
|
+
});
|
|
87
|
+
const moreSelected = active > listChildren.length;
|
|
88
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("ul", {
|
|
89
|
+
ref: tabListRef,
|
|
90
|
+
className: `${baseClassName}__tab-list`,
|
|
91
|
+
role: "tablist",
|
|
92
|
+
children: [listItems, menuItems.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
|
|
93
|
+
className: (0, _classnames.default)(`${baseClassName}__tab`, moreSelected && `${baseClassName}__tab--selected`, `${baseClassName}__tab--more`),
|
|
94
|
+
role: "presentation",
|
|
95
|
+
"aria-selected": moreSelected || undefined,
|
|
96
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dropdown.default, {
|
|
97
|
+
className: `${baseClassName}__dropdown`,
|
|
98
|
+
menu: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Menu.default, {
|
|
99
|
+
children: menuItems
|
|
100
|
+
}),
|
|
101
|
+
menuPlacement: "bottom-end",
|
|
102
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
|
|
103
|
+
className: `${baseClassName}__link`,
|
|
104
|
+
role: "tab",
|
|
105
|
+
tabIndex: 0,
|
|
106
|
+
"aria-selected": moreSelected || undefined,
|
|
107
|
+
onKeyDown: e => {
|
|
108
|
+
if (e.key === 'Enter') {
|
|
109
|
+
e.currentTarget.click();
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
|
|
113
|
+
name: "three-dots-horizontal"
|
|
114
|
+
})
|
|
115
|
+
})
|
|
116
|
+
})
|
|
117
|
+
})]
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
var _default = exports.default = TabList;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
9
|
+
var _utils = require("../utils");
|
|
10
|
+
var _TabClose = _interopRequireDefault(require("./TabClose"));
|
|
11
|
+
var _TabIcon = _interopRequireDefault(require("./TabIcon"));
|
|
12
|
+
var _TabLabel = _interopRequireDefault(require("./TabLabel"));
|
|
13
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
+
// Copyright 1999-2025. WebPros International GmbH. All rights reserved.
|
|
15
|
+
|
|
16
|
+
const TabListItem = _ref => {
|
|
17
|
+
let {
|
|
18
|
+
tab,
|
|
19
|
+
selected,
|
|
20
|
+
onClick,
|
|
21
|
+
monospacedWidth,
|
|
22
|
+
baseClassName,
|
|
23
|
+
isFake = false
|
|
24
|
+
} = _ref;
|
|
25
|
+
const {
|
|
26
|
+
title,
|
|
27
|
+
label,
|
|
28
|
+
icon,
|
|
29
|
+
onActivate,
|
|
30
|
+
onClose,
|
|
31
|
+
component: Tag = 'a',
|
|
32
|
+
style = {},
|
|
33
|
+
...tabProps
|
|
34
|
+
} = tab.props;
|
|
35
|
+
const closable = typeof onClose === 'function';
|
|
36
|
+
tabProps.tabIndex = isFake ? -1 : tabProps.tabIndex || 0;
|
|
37
|
+
if (!isFake) {
|
|
38
|
+
tabProps.onKeyDown = (0, _utils.wrapFunction)(tabProps.onKeyDown, e => {
|
|
39
|
+
if (e.key === 'Enter') {
|
|
40
|
+
e.currentTarget.click();
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
|
|
45
|
+
className: (0, _classnames.default)(`${baseClassName}__tab`, selected && `${baseClassName}__tab--selected`, closable && `${baseClassName}__tab--closable`),
|
|
46
|
+
role: isFake ? undefined : 'presentation',
|
|
47
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(Tag, {
|
|
48
|
+
className: `${baseClassName}__link`,
|
|
49
|
+
role: isFake ? undefined : 'tab',
|
|
50
|
+
"aria-selected": selected || undefined,
|
|
51
|
+
onClick: onClick,
|
|
52
|
+
style: {
|
|
53
|
+
width: monospacedWidth || undefined,
|
|
54
|
+
...style
|
|
55
|
+
},
|
|
56
|
+
...tabProps,
|
|
57
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_TabIcon.default, {
|
|
58
|
+
icon: icon,
|
|
59
|
+
baseClassName: baseClassName
|
|
60
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
61
|
+
className: `${baseClassName}__tab-title`,
|
|
62
|
+
children: title
|
|
63
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TabLabel.default, {
|
|
64
|
+
label: label,
|
|
65
|
+
tabMode: "tab",
|
|
66
|
+
baseClassName: baseClassName
|
|
67
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TabClose.default, {
|
|
68
|
+
onClose: onClose,
|
|
69
|
+
tabMode: "tab",
|
|
70
|
+
baseClassName: baseClassName
|
|
71
|
+
})]
|
|
72
|
+
})
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
var _default = exports.default = TabListItem;
|