deer-ui
Version:
React.js UI components for PC Web
179 lines (148 loc) • 6.64 kB
JavaScript
;
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;