UNPKG

deer-ui

Version:

React.js UI components for PC Web

179 lines (148 loc) 6.64 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 _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); function _createSuper(Derived) { 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 _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; } } // require("./style.less"); var Tabs = /*#__PURE__*/function (_PureComponent) { (0, _inherits2.default)(Tabs, _PureComponent); 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), "state", { lineWidth: 0, lineOffsetLeft: 0, activeKey: ~~(_this.props.activeKey || _this.props.defaultActiveKey) }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onTabChange", function (disabled) { return function (key) { return function () { if (!disabled) { _this.setState({ activeKey: key }, function () { _this.setActiveLineStyle(); }); _this.props.onChange(key); } }; }; }); _this.tabsHeader = _react.default.createRef(); return _this; } (0, _createClass2.default)(Tabs, [{ key: "componentDidMount", value: function componentDidMount() { this.setActiveLineStyle(); } }, { key: "setActiveLineStyle", value: function setActiveLineStyle() { var _ref = this.activeTab && this.activeTab.getBoundingClientRect() || {}, width = _ref.width, left = _ref.left; var _ref2 = this.tabsHeader.current && this.tabsHeader.current.getBoundingClientRect() || {}, headerOffset = _ref2.left; this.setState({ lineWidth: width, lineOffsetLeft: left - headerOffset }); } }, { key: "render", value: function render() { var _this2 = this; var _this$props = this.props, children = _this$props.children, arr = _this$props.arr, prefixCls = _this$props.prefixCls; var _this$state = this.state, activeKey = _this$state.activeKey, lineWidth = _this$state.lineWidth, lineOffsetLeft = _this$state.lineOffsetLeft; var childrenWithProps = _react.default.Children.map(children, function (_ref3, index) { var _ref3$props = _ref3.props, tab = _ref3$props.tab, disabled = _ref3$props.disabled, key = _ref3.key; var Mkey = key >> 0; var bindActiveRef = activeKey === Mkey ? { ref: function ref(node) { return _this2["activeTab"] = node; } } : {}; return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({ key: Mkey, role: "tab" }, bindActiveRef, { className: "".concat(prefixCls, "-header-item ").concat(activeKey === Mkey ? "active" : "", " ").concat(disabled ? "disabled" : ""), onClick: _this2.onTabChange(disabled)(Mkey) }), tab); }); var content = _react.default.Children.map(children, function (element, index) { var _key = ~~element.key; return _react.default.cloneElement(element, { activeKey: activeKey, visible: activeKey === _key, key1: _key }); }); return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({ className: "".concat(prefixCls) }, arr), /*#__PURE__*/_react.default.createElement("div", { className: "".concat(prefixCls, "-header"), ref: this.tabsHeader }, childrenWithProps, /*#__PURE__*/_react.default.createElement("div", { className: "".concat(prefixCls, "-line"), style: { width: lineWidth, transform: "translate3d(".concat(lineOffsetLeft, "px,0,0)") } })), /*#__PURE__*/_react.default.createElement("div", { className: "".concat(prefixCls, "-content") }, content)); } }], [{ key: "getDerivedStateFromProps", value: function getDerivedStateFromProps(nextProps, prevState) { var activeKey = nextProps.activeKey; var _activeKey = ~~activeKey; if (_activeKey !== prevState.activeKey) { return { _activeKey: _activeKey }; } } }]); return Tabs; }(_react.PureComponent); (0, _defineProperty2.default)(Tabs, "defaultProps", { prefixCls: "deer-ui-tabs", defaultActiveKey: "1", onChange: function onChange() {} }); (0, _defineProperty2.default)(Tabs, "propTypes", { prefixCls: _propTypes.default.string.isRequired, defaultActiveKey: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]), activeKey: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]), onChange: _propTypes.default.func }); var _default = Tabs; exports.default = _default;