@zohodesk/components
Version:
In this Package, we Provide Some Basic Components to Build Web App
688 lines (585 loc) • 28.4 kB
JavaScript
;
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireWildcard(require("react"));
var _useEffectCallOnlyAfterState = _interopRequireDefault(require("@zohodesk/hooks/es/utils/useEffectCallOnlyAfterState"));
var _TextBoxIcon = _interopRequireDefault(require("../TextBoxIcon/TextBoxIcon"));
var _EmptySearch = _interopRequireDefault(require("@zohodesk/svg/lib/emptystate/version3/EmptySearch"));
var _Tab = _interopRequireDefault(require("./Tab"));
var _defaultProps = require("./props/defaultProps");
var _propTypes = require("./props/propTypes");
var _Common = require("../../utils/Common");
var _Layout = require("../Layout");
var _ResizeObserver = _interopRequireDefault(require("../../Responsive/ResizeObserver"));
var _ListItem = _interopRequireDefault(require("../ListItem/ListItem"));
var _icons = require("@zohodesk/icons");
var _v1TabsModule = _interopRequireDefault(require("./v1Tabs.module.css"));
var _Popup = _interopRequireDefault(require("../Popup/Popup"));
var _ResponsiveDropBox = _interopRequireDefault(require("../ResponsiveDropBox/ResponsiveDropBox"));
var _CustomResponsive = require("../../Responsive/CustomResponsive");
var _semanticButtonModule = _interopRequireDefault(require("../../semantic/Button/semanticButton.module.css"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
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."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
var Tabs = function Tabs(props) {
var _useState = (0, _react.useState)(null),
_useState2 = _slicedToArray(_useState, 2),
totalDimension = _useState2[0],
setTotalDimension = _useState2[1];
var _useState3 = (0, _react.useState)({}),
_useState4 = _slicedToArray(_useState3, 2),
tabDimensions = _useState4[0],
setTabDimensions = _useState4[1];
var highlightInitialDimension = (0, _react.useRef)(null);
var _useState5 = (0, _react.useState)(true),
_useState6 = _slicedToArray(_useState5, 2),
renderVirtualTabs = _useState6[0],
setRenderVirtualTabs = _useState6[1];
var _useState7 = (0, _react.useState)([]),
_useState8 = _slicedToArray(_useState7, 2),
tabKeys = _useState8[0],
setTabKeys = _useState8[1];
var _useState9 = (0, _react.useState)(''),
_useState10 = _slicedToArray(_useState9, 2),
searchValue = _useState10[0],
setSearchValue = _useState10[1];
var tabsObserver = (0, _react.useRef)(new _ResizeObserver["default"](onResize));
var tabObserver = (0, _react.useRef)({});
var highlight = (0, _react.useRef)(null);
var tabsEle = (0, _react.useRef)(null);
var tabElement = (0, _react.useRef)({});
var style = props.style,
className = props.className,
dataId = props.dataId,
highlightClass = props.highlightClass,
type = props.type,
isAnimate = props.isAnimate,
needTabBorder = props.needTabBorder,
needBorder = props.needBorder,
needPadding = props.needPadding,
align = props.align,
boxPosition = props.boxPosition,
removeClose = props.removeClose,
togglePopup = props.togglePopup,
needAppearance = props.needAppearance,
children = props.children,
onSelect = props.onSelect,
onScroll = props.onScroll,
isResponsive = props.isResponsive,
maxTabsCount = props.maxTabsCount,
minTabsCount = props.minTabsCount,
childType = props.childType,
containerClass = props.containerClass,
dataSelectorId = props.dataSelectorId,
selectedTab = props.selectedTab,
showTitleInMoreOptions = props.showTitleInMoreOptions,
searchErrorText = props.searchErrorText,
placeHolderText = props.placeHolderText,
searchBoxSize = props.searchBoxSize,
isPopupOpen = props.isPopupOpen,
closePopupOnly = props.closePopupOnly;
function handleChange(value, e) {
setSearchValue(value);
}
function handleSearchValueClear(e) {
setSearchValue('');
}
function getMoreList(_ref) {
var moreTabs = _ref.moreTabs;
var validElements = [];
_react["default"].Children.map(moreTabs, function (child) {
var isValidElement = /*#__PURE__*/_react["default"].isValidElement(child);
if (isValidElement) {
validElements.push(child.props);
}
});
return validElements;
}
function handleFilterSuggestions(_ref2) {
var moreTabs = _ref2.moreTabs;
var options = getMoreList({
moreTabs: moreTabs
});
var filteredOptions = options.filter(function (list) {
var text = list.text,
title = list.title;
var value = text ? text : showTitleInMoreOptions ? title : '';
return value.toLowerCase().includes(searchValue.toLowerCase());
});
return filteredOptions;
}
function renderEmptyState() {
return /*#__PURE__*/_react["default"].createElement("div", {
className: _v1TabsModule["default"].emptyStateContainer
}, /*#__PURE__*/_react["default"].createElement(_EmptySearch["default"], {
size: "small"
}), /*#__PURE__*/_react["default"].createElement("div", {
className: _v1TabsModule["default"].emptyStateTitle
}, searchErrorText));
}
function onTabResize(size, target) {
var newDim = Object.assign({}, tabDimensions);
var elemDim = (0, _Common.getTotalDimension)(target, align);
if (elemDim !== 0) {
newDim[target.dataset.key] = elemDim;
}
setTabDimensions(newDim);
}
(0, _react.useEffect)(function () {
var totalDimension = getTotalDimensionLocal();
var tabDimensions = getTabDimensions();
var tabKeys = [];
var restrictedKeys = ['state', 'props', 'refs', 'context'];
_react["default"].Children.toArray(children).forEach(function (child) {
if (child && child.props.id && child.type === childType) {
if (restrictedKeys.includes(child.props.id)) {
throw new Error('Restricted id name found in Tabs, Please avoid these names => ' + restrictedKeys.toString());
} else {
tabKeys.push(child.props.id);
}
}
});
setTotalDimension(totalDimension);
setTabDimensions(tabDimensions);
setRenderVirtualTabs(false);
setTabKeys(tabKeys);
if (highlight.current) {
highlightInitialDimension.current = getHighlightDim();
moveHighlight();
}
return function () {
if (tabsObserver.current) {
tabsObserver.current.disconnect();
tabsObserver.current = null;
}
if (tabObserver.current) {
Object.keys(tabObserver.current).forEach(function (observer) {
tabObserver.current[observer] && tabObserver.current[observer].disconnect();
});
tabObserver.current = null;
}
};
}, []);
(0, _react.useEffect)(function () {
if (searchValue.length) {
handleSearchValueClear();
}
}, [isPopupOpen]);
function setMaxDim() {
var totalDimension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
// let actual = Object.keys(tabDimensions).reduce(
// (sum, tab) => sum + (tabDimensions[tab] || 0),
// 0
// );
if (totalDimension && tabElement.current[selectedTab]) {
var newDim = "".concat((0, _Common.remConvert)(totalDimension), "rem");
align === 'vertical' ? tabElement.current[selectedTab].style.maxWidth = newDim : tabElement.current[selectedTab].style.maxHeight = newDim;
}
}
function getHighlightDim() {
return align === 'vertical' ? highlight.current.offsetLeft : highlight.current.offsetTop;
}
(0, _useEffectCallOnlyAfterState["default"])(function () {
if (children) {
/**
* To recalculate the dimensions of tabs we are checking the children length.
* and also checking the tab id and their order.
*/
var newTabKeys = [];
_react["default"].Children.toArray(children).forEach(function (child) {
if (child && child.props.id && child.type === childType) {
newTabKeys.push(child.props.id);
}
});
var isSameTabKeys = newTabKeys.every(function (current, index) {
return tabKeys[index] === current;
});
if (newTabKeys.length !== tabKeys.length || !isSameTabKeys) {
setRenderVirtualTabs(true);
setTabKeys(newTabKeys);
setTimeout(function () {
setTabDimensions(getTabDimensions());
setTotalDimension(getTotalDimensionLocal());
setRenderVirtualTabs(false);
});
}
if (newTabKeys.length === 1) {
moveHighlight();
}
}
});
(0, _useEffectCallOnlyAfterState["default"])(function () {
tabsObserver.current && tabsObserver.current.replaceResizeHandler(onResize);
if (children) {
moveHighlight();
}
}, [selectedTab]);
function moveHighlight() {
var node = highlight.current;
if (isAnimate && needTabBorder && node) {
var tabActive = tabElement.current[selectedTab];
if (tabActive) {
var position, dimension;
if (align === 'vertical') {
position = tabActive.offsetLeft;
dimension = tabActive.offsetWidth;
node.style.transform = "translateX(".concat((0, _Common.remConvert)(position - highlightInitialDimension.current), "rem)");
node.style.width = "".concat((0, _Common.remConvert)(dimension), "rem");
} else if (align === 'horizontal') {
position = tabActive.offsetTop;
dimension = tabActive.offsetHeight;
node.style.transform = "translateY(".concat((0, _Common.remConvert)(position - highlightInitialDimension.current), "rem)");
node.style.height = "".concat((0, _Common.remConvert)(dimension), "rem");
}
}
}
}
var getHighlightRef = (0, _react.useCallback)(function (ele) {
highlight.current = ele;
}, []);
var getTabsRef = (0, _react.useCallback)(function (ele) {
tabsEle.current = ele;
if (ele) {
tabsObserver.current.observe(ele);
} else {
tabsObserver.current && tabsObserver.current.disconnect();
}
}, []);
function onSizeChange() {
var totalDimension = getTotalDimensionLocal();
setTotalDimension(totalDimension);
if (highlight.current) {
highlightInitialDimension.current = getHighlightDim();
moveHighlight();
}
}
function onResize(timer) {
if (tabsEle.current && isResponsive) {
if (!timer) {
onSizeChange();
} else {
setTimeout(function () {
onSizeChange();
}, timer);
}
}
}
function getTotalDimensionLocal() {
var totalDimension = tabsEle.current && (0, _Common.getTotalDimension)(tabsEle.current, align);
return totalDimension;
}
function getTabDimensions() {
var tabDimensions = {};
_react["default"].Children.forEach(children, function (child) {
return /*#__PURE__*/_react["default"].isValidElement(child) && child.type === childType && tabElement.current[child.props.id] && Object.assign(tabDimensions, _defineProperty({}, child.props.id, tabElement.current[child.props.id] && (0, _Common.getTotalDimension)(tabElement.current[child.props.id], align)));
});
return tabDimensions;
}
function responsiveTab(totalDimension, tabDimensions) {
var mainTabs = [],
moreTabs = [],
otherTabs = [];
if (totalDimension && isResponsive) {
var selectedTabDimension = tabDimensions[selectedTab] || 0;
var remainingDimension = totalDimension - selectedTabDimension;
var maxTabsTobeVisible = maxTabsCount - 1;
var minTabsToBeVisible = 1;
_react["default"].Children.forEach(children, function (child) {
if (child && child.type === childType && child.props.id) {
var elemDimension = tabDimensions[child.props.id];
var isMaxCountExceeded = maxTabsTobeVisible <= 0 ? true : false;
var isMinCountNotExceeded = minTabsToBeVisible < minTabsCount ? true : false;
if (child.props.id === selectedTab) {
mainTabs.push(child);
} else if (isMinCountNotExceeded) {
mainTabs.push(child);
remainingDimension -= tabDimensions[child.props.id];
minTabsToBeVisible++;
maxTabsTobeVisible--;
} else if (remainingDimension - elemDimension >= 20 && !moreTabs.length && !isMaxCountExceeded) {
mainTabs.push(child);
remainingDimension -= tabDimensions[child.props.id];
maxTabsTobeVisible--;
} else {
moreTabs.push(child);
}
} else if ( /*#__PURE__*/_react["default"].isValidElement(child)) {
otherTabs.push(child);
}
});
if (selectedTabDimension > totalDimension) {
/* let { align } = this.props;
let newDim = `${remConvert(totalDimension)}rem`;
let newTabs;
if (align === 'vertical') {
newTabs = mainTabs.map(tab => React.cloneElement(tab, { style: { maxWidth: newDim } }));
} else {
newTabs = mainTabs.map(tab => React.cloneElement(tab, { style: { maxHeight: newDim } }));
}
mainTabs = newTabs; */
setMaxDim(totalDimension);
}
} else if (!isResponsive) {
_react["default"].Children.forEach(children, function (child) {
if (child && child.type === childType && child.props.id) {
mainTabs.push(child);
} else {
otherTabs.push(child);
}
});
} else {
moreTabs = children;
}
return {
mainTabs: mainTabs,
moreTabs: moreTabs,
otherTabs: otherTabs
};
}
function getTabRef(refName, ele, isVirtual) {
if (ele) {
tabElement.current[refName] = ele;
} // tabElement.current[refName] = ele
var key = isVirtual ? "virtual_".concat(refName) : refName;
if (ele) {
tabObserver.current[key] = new _ResizeObserver["default"](onTabResize);
tabObserver.current[key].observe(ele);
} else {
if (tabObserver.current && tabObserver.current[key]) {
tabObserver.current[key].disconnect();
}
}
}
function moreTabSelect(tab, value, index, e) {
if (e && e.target && e.target.parentElement.tagName === 'A' && (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)) {
(0, _Common.cancelBubblingEffect)(e);
return;
}
e.preventDefault();
onSelect(tab);
closePopupOnly();
}
function onScrollLocal(e) {
e.persist();
onScroll && (0, _Common.throttle)(onScroll, 100, e);
}
function togglePopupLocal(e) {
removeClose && removeClose(e);
var popupPosition = align === 'vertical' ? 'bottomLeft' : 'rightTop';
boxPosition = boxPosition ? boxPosition : popupPosition;
togglePopup(e, boxPosition);
}
function responsiveFunc(_ref3) {
var mediaQueryOR = _ref3.mediaQueryOR;
return {
tabletMode: mediaQueryOR([{
maxWidth: 700
}])
};
}
function renderTabs(mainTabs, moreTabs, isVirtual) {
var moreButtonClass = props.moreButtonClass,
moreButtonActiveClass = props.moreButtonActiveClass,
moreBoxClass = props.moreBoxClass,
menuItemClass = props.menuItemClass,
itemClass = props.itemClass,
itemActiveClass = props.itemActiveClass,
iconName = props.iconName,
isPopupReady = props.isPopupReady,
isPopupOpen = props.isPopupOpen,
getContainerRef = props.getContainerRef,
showTitleInMoreOptions = props.showTitleInMoreOptions,
moreContainerClass = props.moreContainerClass,
align = props.align,
type = props.type,
isAnimate = props.isAnimate,
needTabBorder = props.needTabBorder,
needAppearance = props.needAppearance,
iconSize = props.iconSize,
getTargetRef = props.getTargetRef,
position = props.position,
customProps = props.customProps,
getCustomDropBoxHeaderPlaceHolder = props.getCustomDropBoxHeaderPlaceHolder,
dataId = props.dataId,
isAbsolutePositioningNeeded = props.isAbsolutePositioningNeeded,
isRestrictScroll = props.isRestrictScroll,
positionsOffset = props.positionsOffset,
targetOffset = props.targetOffset;
var _customProps$DropBoxP = customProps.DropBoxProps,
DropBoxProps = _customProps$DropBoxP === void 0 ? {} : _customProps$DropBoxP,
_customProps$ListItem = customProps.ListItemProps,
ListItemProps = _customProps$ListItem === void 0 ? {} : _customProps$ListItem,
_customProps$MoreButt = customProps.MoreButtonProps,
MoreButtonProps = _customProps$MoreButt === void 0 ? {} : _customProps$MoreButt,
_customProps$TextBoxI = customProps.TextBoxIconProps,
TextBoxIconProps = _customProps$TextBoxI === void 0 ? {} : _customProps$TextBoxI;
var popupClass = align === 'vertical' ? _v1TabsModule["default"][position] ? _v1TabsModule["default"][position] : '' : '';
var moreTabsListItems = handleFilterSuggestions({
moreTabs: moreTabs
});
var hasSearch = moreTabs.length > 4;
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, _react["default"].Children.map(mainTabs, function (child) {
if (!child) {
return null;
}
var MainTab = child.type;
var classProps = {};
if (itemActiveClass) {
classProps.activeClass = itemActiveClass;
}
if (itemClass) {
classProps.className = itemClass;
}
return /*#__PURE__*/_react["default"].isValidElement(child) && /*#__PURE__*/_react["default"].createElement(MainTab, _extends({}, child.props, {
key: child.props.id,
getTabRef: getTabRef,
onSelect: onSelect // recalculateDimension={tabElement.current[recalculateDimension]}
,
isActive: child.props.id === selectedTab,
type: type,
isAnimate: isAnimate,
needBorder: needTabBorder,
needAppearance: needAppearance,
align: align,
isVirtual: isVirtual
}, classProps));
}), _react["default"].Children.count(moreTabs) ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
className: "".concat(_v1TabsModule["default"].menu, " "),
dataSelectorId: "".concat(dataSelectorId, "_moreIcon")
}, /*#__PURE__*/_react["default"].createElement(_Layout.Container, _extends({
className: "".concat(_semanticButtonModule["default"].buttonReset, " ").concat(moreButtonClass, " ").concat(isPopupOpen ? moreButtonActiveClass : ''),
align: "both",
onClick: togglePopupLocal,
dataId: "moreTabs",
eleRef: getTargetRef
}, MoreButtonProps, {
"aria-label": "MoreTabs",
role: "link",
tagName: "button"
}), /*#__PURE__*/_react["default"].createElement(_icons.Icon, {
name: iconName,
size: iconSize
})), isPopupOpen && /*#__PURE__*/_react["default"].createElement(_CustomResponsive.ResponsiveReceiver, {
query: responsiveFunc,
responsiveId: "Helmet"
}, function (_ref4) {
var tabletMode = _ref4.tabletMode;
return /*#__PURE__*/_react["default"].createElement(_ResponsiveDropBox["default"], _extends({
isActive: isPopupReady,
isAnimate: true,
size: "medium",
customClass: {
customDropBoxWrap: "".concat(moreContainerClass, " ").concat(popupClass)
},
boxPosition: position,
getRef: getContainerRef,
isBoxPaddingNeed: false,
isArrow: false,
isAbsolutePositioningNeeded: isAbsolutePositioningNeeded,
isRestrictScroll: isRestrictScroll,
positionsOffset: positionsOffset,
targetOffset: targetOffset
}, DropBoxProps, {
isResponsivePadding: true,
needFocusScope: true,
onClose: togglePopupLocal,
onClick: removeClose,
dataId: "".concat(dataId, "_dropbox")
}), getCustomDropBoxHeaderPlaceHolder && getCustomDropBoxHeaderPlaceHolder(props), hasSearch ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
className: _v1TabsModule["default"].search
}, /*#__PURE__*/_react["default"].createElement(_TextBoxIcon["default"], _extends({
placeHolder: placeHolderText,
onChange: handleChange,
value: searchValue,
onClear: handleSearchValueClear,
size: searchBoxSize,
customProps: {
TextBoxProps: {
'data-a11y-autofocus': true
}
},
dataId: "".concat(dataId, "_search"),
autoComplete: false,
name: "search"
}, TextBoxIconProps))) : null, /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
flexible: true,
shrink: true,
scroll: "vertical",
className: "".concat(_v1TabsModule["default"].listWrapper, " ").concat(tabletMode ? '' : _v1TabsModule["default"].menuBox, " ").concat(moreBoxClass),
onScroll: onScrollLocal,
dataId: "".concat(dataId, "_Tabs")
}, moreTabsListItems.length ? moreTabsListItems.map(function (data) {
var text = data.text,
id = data.id,
title = data.title,
isLink = data.isLink,
href = data.href,
children = data.children,
dataId = data.dataId;
var value = text ? text : showTitleInMoreOptions ? title : null;
return /*#__PURE__*/_react["default"].createElement(_ListItem["default"], _extends({
key: id,
value: value,
onClick: moreTabSelect,
id: id,
title: title || text,
isLink: isLink,
href: href,
autoHover: true,
customClass: {
customListItem: menuItemClass
},
target: "self",
dataId: "".concat(dataId, "_Tab")
}, ListItemProps), !showTitleInMoreOptions ? children : null);
}) : renderEmptyState()));
})) : null);
}
var _responsiveTab = responsiveTab(totalDimension, tabDimensions),
mainTabs = _responsiveTab.mainTabs,
moreTabs = _responsiveTab.moreTabs,
otherTabs = _responsiveTab.otherTabs;
var appearanceClass = (0, _Common.cs)([_v1TabsModule["default"][type], needBorder && _v1TabsModule["default"]["".concat(type, "_border")], needPadding && _v1TabsModule["default"]["".concat(type, "_padding")]]);
var tabsClass = (0, _Common.cs)([_v1TabsModule["default"].tab, className, needAppearance && appearanceClass]);
var hlClass = (0, _Common.cs)([_v1TabsModule["default"].highlight, highlightClass, isAnimate && _v1TabsModule["default"].lineAnimate]);
return /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
className: containerClass,
dataSelectorId: dataSelectorId
}, /*#__PURE__*/_react["default"].createElement(_Layout.Container, {
alignBox: align === 'vertical' ? 'row' : 'column',
className: tabsClass,
style: style
}, /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
eleRef: getTabsRef,
flexible: true
}, renderVirtualTabs && /*#__PURE__*/_react["default"].createElement(_Layout.Container, {
alignBox: align === 'vertical' ? 'row' : 'column',
className: _v1TabsModule["default"].hidden
}, renderTabs(children, [], true)), /*#__PURE__*/_react["default"].createElement(_Layout.Container, {
alignBox: align === 'vertical' ? 'row' : 'column'
}, renderTabs(mainTabs, moreTabs, false))), otherTabs.length ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, null, otherTabs) : null, isAnimate && needTabBorder && needAppearance && /*#__PURE__*/_react["default"].createElement("div", {
className: hlClass,
ref: getHighlightRef,
"data-id": dataId,
"data-test-id": dataId
})));
};
Tabs.propTypes = _propTypes.Tabs_propTypes;
Tabs.defaultProps = _objectSpread(_objectSpread({}, _defaultProps.Tabs_defaultProps), {}, {
childType: _Tab["default"]
});
var _default = (0, _Popup["default"])(Tabs);
exports["default"] = _default;