@bydata/react-supertabs 1.1.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.
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _react = require("react");
8
+ var _TabContext = require("./TabContext");
9
+ var _reactRouterDom = require("react-router-dom");
10
+ var _ClickOutsideListener = _interopRequireDefault(require("./ClickOutsideListener"));
11
+ require("./TabList.scss");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
13
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
14
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
15
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
16
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
17
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
18
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
19
+ var TabList = function TabList(_ref) {
20
+ var closeList = _ref.closeList,
21
+ handleTabClick = _ref.handleTabClick,
22
+ id = _ref.id,
23
+ isTabExpanded = _ref.isTabExpanded,
24
+ onAddButtonClick = _ref.onAddButtonClick,
25
+ onClose = _ref.onClose,
26
+ _ref$showAddButton = _ref.showAddButton,
27
+ showAddButton = _ref$showAddButton === void 0 ? true : _ref$showAddButton,
28
+ showTabStack = _ref.showTabStack,
29
+ tabs = _ref.tabs,
30
+ parentIndex = _ref.parentIndex,
31
+ customAddButtons = _ref.customAddButtons,
32
+ tabListSearch = _ref.tabListSearch,
33
+ setTabListSearch = _ref.setTabListSearch,
34
+ hasCustomAddButtons = _ref.hasCustomAddButtons;
35
+ var timeOutRef = (0, _react.useRef)(null);
36
+ var searchWrapperRef = (0, _react.useRef)(null);
37
+ // const { setOpeningUnexpandedSubTab, openingUnexpandedSubTabTimeoutRef, setSubTabChange, } = useTabContext();
38
+ var _useTabContext = (0, _TabContext.useTabContext)(),
39
+ activeTab = _useTabContext.activeTab,
40
+ activeSubTab = _useTabContext.activeSubTab,
41
+ updateSubTabChange = _useTabContext.updateSubTabChange;
42
+ var _useState = (0, _react.useState)(false),
43
+ _useState2 = _slicedToArray(_useState, 2),
44
+ searchExpanded = _useState2[0],
45
+ setSearchExpanded = _useState2[1];
46
+ var _useState3 = (0, _react.useState)(showTabStack === id),
47
+ _useState4 = _slicedToArray(_useState3, 2),
48
+ showList = _useState4[0],
49
+ setShowList = _useState4[1];
50
+ var _useState5 = (0, _react.useState)({}),
51
+ _useState6 = _slicedToArray(_useState5, 2),
52
+ position = _useState6[0],
53
+ setPosition = _useState6[1];
54
+ (0, _react.useEffect)(function () {
55
+ if (showTabStack === '') {
56
+ setShowList(showTabStack === id);
57
+ } else {
58
+ timeOutRef.current = setTimeout(function () {
59
+ setShowList(showTabStack === id);
60
+ if (showTabStack !== id) {
61
+ setSearchExpanded(false);
62
+ }
63
+ }, 200);
64
+ }
65
+ return function () {
66
+ return clearTimeout(timeOutRef.current);
67
+ };
68
+ }, [showTabStack, id]);
69
+ (0, _react.useLayoutEffect)(function () {
70
+ var popupElem = document.querySelector(".stack-".concat(id));
71
+ var position = null;
72
+ if (popupElem) {
73
+ var popupRect = popupElem.getBoundingClientRect();
74
+ var windowWidth = window.innerWidth;
75
+ if (popupRect.right + 300 > windowWidth) {
76
+ position = {
77
+ right: "".concat(window.innerWidth - (popupRect === null || popupRect === void 0 ? void 0 : popupRect.right), "px")
78
+ };
79
+ } else {
80
+ position = {
81
+ left: "".concat((popupRect === null || popupRect === void 0 ? void 0 : popupRect.left) + 5, "px")
82
+ };
83
+ }
84
+ }
85
+ if (position && showTabStack) setPosition(position);
86
+ }, [id, showTabStack]);
87
+ var handleSearch = function handleSearch(e) {
88
+ setTabListSearch(e.target.value);
89
+ };
90
+ var expandSearch = function expandSearch() {
91
+ if (!searchExpanded) {
92
+ setSearchExpanded(true);
93
+ searchWrapperRef.current.focus();
94
+ }
95
+ };
96
+ var handlePlusButtonClick = function handlePlusButtonClick() {
97
+ onAddButtonClick();
98
+ closeList();
99
+ };
100
+ var handleOutsideClick = function handleOutsideClick(e) {
101
+ var _e$target, _e$target2;
102
+ if (typeof (e === null || e === void 0 || (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.className) === 'string' && e !== null && e !== void 0 && (_e$target2 = e.target) !== null && _e$target2 !== void 0 && (_e$target2 = _e$target2.className) !== null && _e$target2 !== void 0 && _e$target2.includes('tab-list')) return; // This is to handle the case when the click is outside the tab list (breaking page for svg )
103
+ showAddButton && setSearchExpanded(false);
104
+ setTabListSearch('');
105
+ setShowList(false);
106
+ closeList();
107
+ };
108
+ var filterTabs = function filterTabs(tabList) {
109
+ var searchString = tabListSearch.toLowerCase().trim();
110
+ if (!searchString) return tabList;
111
+ var exactMatches = [];
112
+ var otherMatches = [];
113
+ tabList.forEach(function (tab) {
114
+ var title = tab.title || tab.name || (tab !== null && tab !== void 0 && tab.firstName ? "".concat(tab.firstName, " ").concat(tab.lastName || "") : "Untitled");
115
+ var tabTitle = title.toLowerCase().trim();
116
+ if (tabTitle.includes(searchString)) {
117
+ var nameParts = tabTitle.split(" ");
118
+ var isExactMatch = false;
119
+ for (var i = 0; i < nameParts.length; i++) {
120
+ if (nameParts[i].startsWith(searchString)) {
121
+ if (!exactMatches[i]) exactMatches[i] = [];
122
+ exactMatches[i].push(tab);
123
+ isExactMatch = true;
124
+ break; // no need to check further parts
125
+ }
126
+ }
127
+ if (!isExactMatch) {
128
+ otherMatches.push(tab);
129
+ }
130
+ }
131
+ });
132
+ return exactMatches.flat().concat(otherMatches);
133
+ };
134
+ var filteredTabs = filterTabs(tabs);
135
+ return /*#__PURE__*/React.createElement(_ClickOutsideListener["default"], {
136
+ onOutsideClick: handleOutsideClick
137
+ }, /*#__PURE__*/React.createElement("div", {
138
+ className: "tab-list-wrapper ".concat(showList ? 'show' : ''),
139
+ style: position
140
+ }, /*#__PURE__*/React.createElement("div", {
141
+ className: "tab-list"
142
+ }, /*#__PURE__*/React.createElement("div", {
143
+ className: "tab-list-header ".concat(hasCustomAddButtons ? 'wrap' : '')
144
+ }, customAddButtons.length > 0 ? customAddButtons.map(function (predefinedSubTab, index) {
145
+ var title = predefinedSubTab.title || predefinedSubTab.name || (predefinedSubTab !== null && predefinedSubTab !== void 0 && predefinedSubTab.firstName ? "".concat(predefinedSubTab.firstName, " ").concat(predefinedSubTab.lastName || '') : 'Untitled');
146
+ return /*#__PURE__*/React.createElement(_react.Fragment, {
147
+ key: predefinedSubTab.id || index
148
+ }, /*#__PURE__*/React.createElement("button", {
149
+ className: "icon-add",
150
+ onClick: function onClick() {
151
+ onAddButtonClick(predefinedSubTab);
152
+ closeList();
153
+ setShowList(false);
154
+ }
155
+ }, title), !(index == customAddButtons.length - 1) && /*#__PURE__*/React.createElement("span", {
156
+ className: "pipe"
157
+ }));
158
+ }) : showAddButton && !hasCustomAddButtons && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("button", {
159
+ className: "icon-add",
160
+ onClick: handlePlusButtonClick
161
+ }, "Tab"), /*#__PURE__*/React.createElement("span", {
162
+ className: "pipe"
163
+ })), /*#__PURE__*/React.createElement("div", {
164
+ className: "tab-list-search-wrapper ".concat(!showAddButton || hasCustomAddButtons ? 'no-add-tab' : '', " ").concat(searchExpanded || !showAddButton || hasCustomAddButtons ? 'expanded' : ''),
165
+ onClick: expandSearch
166
+ }, /*#__PURE__*/React.createElement("div", {
167
+ className: "tab-list-search-wrapper-inner"
168
+ }, /*#__PURE__*/React.createElement("input", {
169
+ ref: searchWrapperRef,
170
+ type: "text",
171
+ className: "tab-list-search",
172
+ value: tabListSearch,
173
+ onChange: handleSearch
174
+ }), tabListSearch.trim() && /*#__PURE__*/React.createElement("button", {
175
+ className: "tab-list-close tab-close-btn",
176
+ onClick: function onClick() {
177
+ return setTabListSearch('');
178
+ }
179
+ })))), /*#__PURE__*/React.createElement("div", {
180
+ className: "tab-list-open-tabs"
181
+ }, /*#__PURE__*/React.createElement("div", {
182
+ className: "tab-list-tabs-wrapper"
183
+ }, filteredTabs.length > 0 ? filteredTabs.map(function (tab, index) {
184
+ var title = tab.title || tab.name || (tab !== null && tab !== void 0 && tab.firstName ? "".concat(tab.firstName, " ").concat(tab.lastName || '') : 'Untitled');
185
+ return /*#__PURE__*/React.createElement(_reactRouterDom.NavLink, {
186
+ className: "tab-list-open-tab ".concat(id === activeTab.id && tab.id === activeSubTab.id ? 'active' : ''),
187
+ key: tab.id || index,
188
+ onClick: function onClick(e) {
189
+ // e.preventDefault();
190
+ handleTabClick({
191
+ tab: tab,
192
+ isSubTab: true,
193
+ parentId: id,
194
+ sort: true
195
+ });
196
+ // clearTimeout(openingUnexpandedSubTabTimeoutRef.current);
197
+ updateSubTabChange({
198
+ parentTabId: id,
199
+ newTab: tab,
200
+ oldTab: tabs.find(function (t) {
201
+ return t.open_order === 1;
202
+ })
203
+ });
204
+ // setOpeningUnexpandedSubTab(true);
205
+ // openingUnexpandedSubTabTimeoutRef.current = setTimeout(() => {
206
+ // setOpeningUnexpandedSubTab(false);
207
+ // }, 300);
208
+ closeList();
209
+ setShowList(false);
210
+ },
211
+ to: tab.url
212
+ }, tab.icon && /*#__PURE__*/React.createElement("span", {
213
+ className: "icon-container ".concat(tab.icon)
214
+ }), /*#__PURE__*/React.createElement("div", {
215
+ className: "title-wrapper"
216
+ }, title, !tab.isFixed && /*#__PURE__*/React.createElement("span", {
217
+ className: "tab-list-close-btn tab-close-btn",
218
+ onClick: function onClick(e) {
219
+ e.preventDefault();
220
+ e.stopPropagation();
221
+ onClose({
222
+ tab: tab,
223
+ isSubTab: true,
224
+ parentIndex: parentIndex
225
+ });
226
+ closeList();
227
+ setShowList(false);
228
+ }
229
+ })));
230
+ }) : /*#__PURE__*/React.createElement("div", {
231
+ className: "tab-list-no-data"
232
+ }, "No data found"))))));
233
+ };
234
+ var _default = exports["default"] = TabList;
@@ -0,0 +1,274 @@
1
+ .tab-list-wrapper {
2
+ padding-top: 12px;
3
+ position: fixed;
4
+ top: calc(var(--header-height-other-tab) - 8px);
5
+ opacity: 0;
6
+ visibility: hidden;
7
+ transition: opacity 0.3s;
8
+ pointer-events: none;
9
+
10
+ &.show {
11
+ opacity: 1;
12
+ visibility: visible;
13
+ pointer-events: auto;
14
+ }
15
+
16
+ .pipe {
17
+ width: 1px;
18
+ height: 12px;
19
+ background-color: var(--tab-text-normal);
20
+ }
21
+
22
+ .icon-add {
23
+ background-color: transparent;
24
+ border: none;
25
+ color: var(--tab-text-normal);
26
+ transition: all 0.3s;
27
+ padding: 0 0 0 13px;
28
+ font-weight: 600;
29
+ position: relative;
30
+
31
+ &::before,
32
+ &::after {
33
+ content: '';
34
+ position: absolute;
35
+ background-color: var(--tab-text-normal);
36
+ height: 1.5px;
37
+ width: 8px;
38
+ left: 0;
39
+ top: 50%;
40
+ transition: all 0.3s;
41
+ }
42
+
43
+ &::after {
44
+ transform: rotate(90deg);
45
+ }
46
+
47
+ &:hover {
48
+ color: var(--tab-text-active);
49
+
50
+ &::before,
51
+ &::after {
52
+ background-color: var(--tab-text-active);
53
+ }
54
+ }
55
+ }
56
+
57
+ .tab-list {
58
+ background-color: var(--tab-background-overlay, #272B32);
59
+ width: 300px;
60
+ border-radius: 2px;
61
+ padding: 7px;
62
+ overflow: hidden;
63
+ display: flex;
64
+ flex-direction: column;
65
+ gap: 2px;
66
+ box-shadow: 0px 5px 10px 0px #00000080;
67
+
68
+ .tab-list-open-tabs,
69
+ .tab-list-tabs-wrapper {
70
+ display: flex;
71
+ flex-direction: column;
72
+ gap: 2px;
73
+ }
74
+
75
+ .tab-list-tabs-wrapper {
76
+ max-height: 50vh;
77
+ overflow-y: auto;
78
+ }
79
+
80
+ .tab-list-no-data,
81
+ .tab-list-open-tab {
82
+ display: flex;
83
+ align-items: center;
84
+ justify-content: space-between;
85
+ min-height: 38px;
86
+ padding: 0 10px;
87
+ }
88
+
89
+ .tab-list-no-data {
90
+ justify-content: center;
91
+ color: var(--tab-text-normal);
92
+ }
93
+
94
+ .tab-list-open-tab {
95
+ font-weight: 600;
96
+ cursor: pointer;
97
+ transition: all 0.3s;
98
+ background-color: transparent;
99
+ border: none;
100
+ color: var(--tab-text-active);
101
+ display: flex;
102
+ justify-content: flex-start;
103
+ column-gap: 10px;
104
+
105
+ .icon-container {
106
+ display: inline-block;
107
+ width: 14px;
108
+ height: 11px;
109
+ background-color: var(--tab-text-active);
110
+ }
111
+
112
+ .title-wrapper {
113
+ display: flex;
114
+ justify-content: space-between;
115
+ width: 100%;
116
+ }
117
+
118
+ .tab-close-btn {
119
+ opacity: 0;
120
+ visibility: hidden;
121
+ transition: all 0.3s;
122
+ }
123
+
124
+ &.active,
125
+ &:hover {
126
+ background-color: var(--tab-background-button-secondary);
127
+
128
+ .tab-close-btn {
129
+ opacity: 1;
130
+ visibility: visible;
131
+ }
132
+ }
133
+ }
134
+
135
+ .close-btn {
136
+ color: var(--tab-text-normal);
137
+ cursor: pointer;
138
+ }
139
+
140
+ .close-btn:hover {
141
+ color: var(--tab-text-active);
142
+ }
143
+ }
144
+
145
+ .tab-list-header {
146
+ display: flex;
147
+ align-items: center;
148
+ gap: 15px;
149
+ height: 38px;
150
+ padding: 7px 10px;
151
+
152
+ &.wrap {
153
+ flex-wrap: wrap;
154
+ justify-content: flex-start;
155
+ height: unset;
156
+ }
157
+
158
+ // .icon-plus {
159
+ // width: 30px;
160
+ // height: 30px;
161
+ // border-radius: 2px;
162
+ // background-color: #26282B;
163
+
164
+ // &:hover {
165
+
166
+ // &::before,
167
+ // &::after {
168
+ // background-color: #FFF;
169
+ // }
170
+ // }
171
+ // }
172
+
173
+ .tab-list-search-wrapper {
174
+ height: 38px;
175
+ display: flex;
176
+ align-items: center;
177
+ transition: all 0.3s;
178
+
179
+ .tab-list-search-wrapper-inner {
180
+ position: relative;
181
+ left: 0;
182
+ transition: left 0.3s;
183
+
184
+ &::before {
185
+ content: '';
186
+ background-color: var(--tab-text-normal);
187
+ z-index: 1;
188
+ position: absolute;
189
+ height: 12px;
190
+ width: 12px;
191
+ left: 0;
192
+ top: 50%;
193
+ transform: translateY(-50%);
194
+ transition: background-color 0.3s;
195
+ mask: url(./images/icon-search.svg) no-repeat center center;
196
+ mask-size: 12px;
197
+ }
198
+ }
199
+
200
+ &:hover:not(.expanded) {
201
+ cursor: pointer;
202
+
203
+ .tab-list-search-wrapper-inner::before {
204
+ background-color: var(--tab-text-active);
205
+ }
206
+ }
207
+
208
+ &.expanded {
209
+ .tab-list-search-wrapper-inner {
210
+ height: 38px;
211
+ left: -74px;
212
+
213
+ &::before {
214
+ left: 10px;
215
+ }
216
+ }
217
+
218
+ input[type="text"] {
219
+ height: 38px;
220
+ width: 286px;
221
+ padding: 0 10px 0 30px;
222
+ border-radius: 2px;
223
+ position: relative;
224
+ color: var(--tab-text-active);
225
+ transition: all 0.3s;
226
+ }
227
+
228
+ .tab-close-btn {
229
+ opacity: 1;
230
+ visibility: visible;
231
+ }
232
+ }
233
+
234
+ &.no-add-tab {
235
+ .tab-list-search-wrapper-inner {
236
+ left: -10px;
237
+ }
238
+ }
239
+
240
+ // .icon-search {
241
+ // background-color: #646464;
242
+ // display: inline-block;
243
+ // border: none;
244
+ // height: 36px;
245
+ // width: 12px;
246
+ // mask: url(../../images/icon-search.svg) no-repeat center center;
247
+ // mask-size: 12px;
248
+ // transition: all 0.3s;
249
+
250
+ // &:hover {
251
+ // background-color: #FFF;
252
+ // }
253
+ // }
254
+
255
+ input[type="text"] {
256
+ width: 0;
257
+ padding: 0;
258
+ border: none;
259
+ background-color: var(--tab-background-button-secondary);
260
+ }
261
+
262
+ .tab-close-btn {
263
+ opacity: 0;
264
+ visibility: hidden;
265
+ transition: background-color 0.3s;
266
+
267
+ position: absolute;
268
+ right: 7px;
269
+ top: 50%;
270
+ transform: translateY(-50%);
271
+ }
272
+ }
273
+ }
274
+ }
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _react = require("react");
8
+ var _TabContext = require("./TabContext");
9
+ var _TabList = _interopRequireDefault(require("./TabList"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
12
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
13
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
14
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
15
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
16
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
17
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
18
+ var TabStack = function TabStack(_ref) {
19
+ var handleTabClick = _ref.handleTabClick,
20
+ handleTabClose = _ref.handleTabClose,
21
+ index = _ref.index,
22
+ isActive = _ref.isActive,
23
+ isTabClosing = _ref.isTabClosing,
24
+ showAddButton = _ref.showAddButton,
25
+ showChevron = _ref.showChevron,
26
+ showSubTabs = _ref.showSubTabs,
27
+ subTabsInList = _ref.subTabsInList,
28
+ tab = _ref.tab,
29
+ toggleSubTabs = _ref.toggleSubTabs,
30
+ addButtonCallBackRefs = _ref.addButtonCallBackRefs,
31
+ SITE_PREFIX = _ref.SITE_PREFIX,
32
+ isMobileView = _ref.isMobileView;
33
+ var _useState = (0, _react.useState)(null),
34
+ _useState2 = _slicedToArray(_useState, 2),
35
+ showTabStack = _useState2[0],
36
+ setShowTabStack = _useState2[1];
37
+ var _useState3 = (0, _react.useState)(''),
38
+ _useState4 = _slicedToArray(_useState3, 2),
39
+ tabListSearch = _useState4[0],
40
+ setTabListSearch = _useState4[1];
41
+ var _useTabContext = (0, _TabContext.useTabContext)(),
42
+ hasPrivilege = _useTabContext.hasPrivilege;
43
+ var customAddButtons = (0, _react.useMemo)(function () {
44
+ if (!tab.customAddButtons || !Array.isArray(tab.customAddButtons) || tab.customAddButtons.length == 0 || !!isMobileView) return [];
45
+ return tab.customAddButtons.filter(function (item) {
46
+ return hasPrivilege(item.privilege);
47
+ });
48
+ }, [tab.customAddButtons, hasPrivilege]);
49
+ var hasAddBtnPrivilege = typeof tab.showAddButton === 'boolean' ? tab.showAddButton : _typeof(tab.showAddButton) === 'object' && Array.isArray(tab.showAddButton) ? hasPrivilege(tab.showAddButton) : false;
50
+ var hasCustomAddButtons = tab.customAddButtons && Array.isArray(tab.customAddButtons) && tab.customAddButtons.length > 0;
51
+ return /*#__PURE__*/React.createElement("div", {
52
+ className: "stack-wrapper stack-".concat(tab.id, " ").concat(showSubTabs || isActive ? 'expanded' : '', " ").concat(isTabClosing ? 'stack-closing' : ''),
53
+ onMouseEnter: function onMouseEnter() {
54
+ return !showAddButton && subTabsInList.length > 1 && setShowTabStack(tab.id);
55
+ },
56
+ onMouseLeave: function onMouseLeave() {
57
+ return !showAddButton && subTabsInList.length > 1 && !tabListSearch.trim() && setShowTabStack(null);
58
+ }
59
+ }, /*#__PURE__*/React.createElement("button", {
60
+ className: "icon-stack",
61
+ onClick: function onClick() {
62
+ setShowTabStack('');
63
+ if (hasCustomAddButtons && subTabsInList.length <= 1) {
64
+ !showTabStack && setShowTabStack(tab.id);
65
+ } else if (showAddButton) {
66
+ var _addButtonCallBackRef, _addButtonCallBackRef2;
67
+ (_addButtonCallBackRef = addButtonCallBackRefs.current) === null || _addButtonCallBackRef === void 0 || (_addButtonCallBackRef2 = _addButtonCallBackRef[tab.id]) === null || _addButtonCallBackRef2 === void 0 || _addButtonCallBackRef2.call(_addButtonCallBackRef);
68
+ } else {
69
+ toggleSubTabs(tab, tab.subTabs);
70
+ }
71
+ }
72
+ }, showAddButton && !showChevron && /*#__PURE__*/React.createElement("span", {
73
+ className: "icon-plus"
74
+ }), showChevron && /*#__PURE__*/React.createElement("span", {
75
+ className: "icon-chevron ".concat(showSubTabs ? 'open' : '')
76
+ })), /*#__PURE__*/React.createElement(_TabList["default"], {
77
+ id: tab.id,
78
+ isTabExpanded: showSubTabs,
79
+ showTabStack: showTabStack,
80
+ showAddButton: hasAddBtnPrivilege,
81
+ handleTabClick: handleTabClick,
82
+ tabs: subTabsInList,
83
+ onClose: handleTabClose,
84
+ parentIndex: index,
85
+ hasCustomAddButtons: hasCustomAddButtons,
86
+ customAddButtons: customAddButtons,
87
+ onAddButtonClick: function onAddButtonClick(data) {
88
+ var _addButtonCallBackRef3, _addButtonCallBackRef4;
89
+ return (_addButtonCallBackRef3 = addButtonCallBackRefs.current) === null || _addButtonCallBackRef3 === void 0 || (_addButtonCallBackRef4 = _addButtonCallBackRef3[tab.id]) === null || _addButtonCallBackRef4 === void 0 ? void 0 : _addButtonCallBackRef4.call(_addButtonCallBackRef3, data);
90
+ },
91
+ closeList: function closeList() {
92
+ return setShowTabStack(null);
93
+ },
94
+ tabListSearch: tabListSearch,
95
+ setTabListSearch: setTabListSearch
96
+ }));
97
+ };
98
+ var _default = exports["default"] = TabStack;