UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

270 lines (219 loc) 9.02 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _noop = _interopRequireDefault(require("lodash/noop")); var _classnames2 = _interopRequireDefault(require("classnames")); var _KeyCode = _interopRequireDefault(require("./KeyCode")); var _TabPane = _interopRequireDefault(require("./TabPane")); var _utils = require("./utils"); function _createSuper(Derived) { function isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } return function () { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (isNativeReflectConstruct()) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function getDefaultActiveKey(props) { var activeKey; _react.Children.forEach(props.children, function (child, index) { if (child && !activeKey && !child.props.disabled) { activeKey = (0, _utils.generateKey)(child.key, index); } }); return activeKey; } function activeKeyIsValid(props, key) { var keys = _react.Children.map(props.children, function (child, index) { return child && (0, _utils.generateKey)(child.key, index); }); return keys.indexOf(key) >= 0; } var Tabs = /*#__PURE__*/ function (_Component) { (0, _inherits2["default"])(Tabs, _Component); var _super = _createSuper(Tabs); function Tabs(props) { var _this; (0, _classCallCheck2["default"])(this, Tabs); _this = _super.call(this, props); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onTabClick", function (activeKey) { if (_this.tabBar.props.onTabClick) { _this.tabBar.props.onTabClick(activeKey); } _this.setActiveKey(activeKey); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onNavKeyDown", function (e) { var eventKeyCode = e.keyCode; if (eventKeyCode === _KeyCode["default"].RIGHT || eventKeyCode === _KeyCode["default"].DOWN) { e.preventDefault(); var nextKey = _this.getNextActiveKey(true); _this.onTabClick(nextKey); } else if (eventKeyCode === _KeyCode["default"].LEFT || eventKeyCode === _KeyCode["default"].UP) { e.preventDefault(); var previousKey = _this.getNextActiveKey(false); _this.onTabClick(previousKey); } }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "setActiveKey", function (activeKey) { if (_this.state.activeKey !== activeKey) { if (!('activeKey' in _this.props)) { _this.setState({ activeKey: activeKey }); } _this.props.onChange(activeKey); } }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getNextActiveKey", function (next) { var activeKey = _this.state.activeKey; var children = []; _react.Children.forEach(_this.props.children, function (c) { if (c && !c.props.disabled) { if (next) { children.push(c); } else { children.unshift(c); } } }); var length = children.length; var ret = length && (0, _utils.generateKey)(children[0].key, 0); children.forEach(function (child, i) { if ((0, _utils.generateKey)(child.key, i) === activeKey) { if (i === length - 1) { ret = (0, _utils.generateKey)(children[0].key, 0); } else { ret = (0, _utils.generateKey)(children[i + 1].key, i + 1); } } }); return ret; }); var _activeKey; if ('activeKey' in props) { _activeKey = props.activeKey; } else if ('defaultActiveKey' in props) { _activeKey = props.defaultActiveKey; } else { _activeKey = getDefaultActiveKey(props); } _this.state = { activeKey: _activeKey }; return _this; } (0, _createClass2["default"])(Tabs, [{ key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps) { if ('activeKey' in nextProps) { this.setState({ activeKey: nextProps.activeKey }); } else if (!activeKeyIsValid(nextProps, this.state.activeKey)) { this.setState({ activeKey: getDefaultActiveKey(nextProps) }); } } }, { key: "render", value: function render() { var _classnames; var props = this.props; var prefixCls = props.prefixCls, tabBarPosition = props.tabBarPosition, className = props.className, renderTabContent = props.renderTabContent, renderTabBar = props.renderTabBar, destroyInactiveTabPane = props.destroyInactiveTabPane, keyboard = props.keyboard, restProps = (0, _objectWithoutProperties2["default"])(props, ["prefixCls", "tabBarPosition", "className", "renderTabContent", "renderTabBar", "destroyInactiveTabPane", "keyboard"]); var cls = (0, _classnames2["default"])((_classnames = {}, (0, _defineProperty2["default"])(_classnames, prefixCls, 1), (0, _defineProperty2["default"])(_classnames, "".concat(prefixCls, "-").concat(tabBarPosition), 1), (0, _defineProperty2["default"])(_classnames, className, !!className), _classnames)); var onKeyDown = keyboard === false ? _noop["default"] : this.onNavKeyDown; this.tabBar = renderTabBar(); var contents = [(0, _react.cloneElement)(this.tabBar, { prefixCls: prefixCls, key: 'tabBar', onKeyDown: onKeyDown, tabBarPosition: tabBarPosition, onTabClick: this.onTabClick, panels: props.children, activeKey: this.state.activeKey }), (0, _react.cloneElement)(renderTabContent(), { prefixCls: prefixCls, tabBarPosition: tabBarPosition, activeKey: this.state.activeKey, destroyInactiveTabPane: destroyInactiveTabPane, children: props.children, onChange: this.setActiveKey, key: 'tabContent' })]; if (tabBarPosition === 'bottom') { contents.reverse(); } return _react["default"].createElement("div", (0, _extends2["default"])({ className: cls, style: props.style }, (0, _utils.getDataAttr)(restProps)), contents); } }]); return Tabs; }(_react.Component); exports["default"] = Tabs; (0, _defineProperty2["default"])(Tabs, "propTypes", { destroyInactiveTabPane: _propTypes["default"].bool, renderTabBar: _propTypes["default"].func.isRequired, renderTabContent: _propTypes["default"].func.isRequired, onChange: _propTypes["default"].func, children: _propTypes["default"].any, prefixCls: _propTypes["default"].string, className: _propTypes["default"].string, tabBarPosition: _propTypes["default"].string, style: _propTypes["default"].object, activeKey: _propTypes["default"].string, defaultActiveKey: _propTypes["default"].string, keyboard: _propTypes["default"].bool }); (0, _defineProperty2["default"])(Tabs, "defaultProps", { prefixCls: 'rc-tabs', destroyInactiveTabPane: false, onChange: _noop["default"], keyboard: true, tabBarPosition: 'top', style: {} }); (0, _defineProperty2["default"])(Tabs, "TabPane", _TabPane["default"]); //# sourceMappingURL=Tabs.js.map