UNPKG

zent

Version:

一套前端设计语言和基于React的实现

91 lines (90 loc) 3.91 kB
import { __assign, __extends } from "tslib"; import { jsx as _jsx } from "react/jsx-runtime"; import { isElement } from 'react-is'; import cn from 'classnames'; import { Children } from 'react'; import isNil from '../utils/isNil'; import noop from '../utils/noop'; import LazyMount from '../utils/component/LazyMount'; import TabPanel from './components/TabPanel'; import NormalTabsNav from './components/tabs-nav/NormalTabsNav'; import CardTabsNav from './components/tabs-nav/CardTabsNav'; import ButtonTabsNav from './components/tabs-nav/ButtonTabsNav'; import BaseTabs from './components/base/BaseTabs'; import { getTabDataFromChild } from './utils'; var TabsNavComponents = { normal: NormalTabsNav, card: CardTabsNav, button: ButtonTabsNav, }; var Tabs = (function (_super) { __extends(Tabs, _super); function Tabs() { return _super !== null && _super.apply(this, arguments) || this; } Object.defineProperty(Tabs.prototype, "tabsCls", { get: function () { var _a = this.props, className = _a.className, type = _a.type; return cn('zent-tabs', "zent-tabs-type__" + type, className); }, enumerable: false, configurable: true }); Tabs.prototype.getTabDataListFromTabs = function (tabs) { var activeId = this.props.activeId; return tabs.map(function (tab) { return (__assign(__assign({}, tab), { actived: tab.key === activeId })); }); }; Tabs.prototype.getTabDataListFromChildren = function (children) { var activeId = this.props.activeId; return Children.map(children, function (child) { if (!isElement(child)) { return null; } return getTabDataFromChild(child, activeId); }).filter(function (v) { return !isNil(v); }); }; Tabs.prototype.renderNav = function (tabDataList) { var _a = this.props, type = _a.type, candel = _a.candel, canFixed = _a.canFixed, fixedIds = _a.fixedIds, onFixedChange = _a.onFixedChange, stretch = _a.stretch, navExtraContent = _a.navExtraContent, onChange = _a.onChange, onDelete = _a.onDelete, onAdd = _a.onAdd, overflowMode = _a.overflowMode, activeId = _a.activeId, renderTabBar = _a.renderTabBar; var TabsNavComp = (TabsNavComponents[type] || TabsNavComponents['normal']); var tabNavProps = { onChange: onChange, tabDataList: tabDataList, onDelete: onDelete, onAdd: onAdd, candel: candel, canFixed: canFixed, stretch: stretch, overflowMode: overflowMode, navExtraContent: navExtraContent, type: type, activeId: activeId, onFixedChange: onFixedChange, }; if ('fixedIds' in this.props) { tabNavProps.fixedIds = fixedIds; } if (renderTabBar) { return renderTabBar(tabNavProps, TabsNavComp); } return _jsx(TabsNavComp, __assign({}, tabNavProps), void 0); }; Tabs.prototype.renderTabPanel = function (tabItem) { var _a = this.props, unmountPanelOnHide = _a.unmountPanelOnHide, disableLazyMount = _a.disableLazyMount; return (_jsx(LazyMount, __assign({ mount: disableLazyMount || tabItem.actived }, { children: _jsx(TabPanel, __assign({ tab: tabItem.title, actived: tabItem.actived, unmountOnHide: tabItem.unmountOnHide || unmountPanelOnHide, className: tabItem.className, id: tabItem.key }, { children: tabItem.panelChildren }), void 0) }), tabItem.key)); }; Tabs.TabPanel = TabPanel; Tabs.defaultProps = { type: 'normal', activeId: '', candel: false, canFixed: false, stretch: false, onChange: noop, onDelete: noop, unmountPanelOnHide: false, }; return Tabs; }(BaseTabs)); export { Tabs }; export default Tabs;