@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
@@ -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
- // Save fn typing is missed by some reason.
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;