UNPKG

@zohodesk/components

Version:

In this Package, we Provide Some Basic Components to Build Web App

688 lines (585 loc) • 28.4 kB
"use strict"; 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;