UNPKG

@alilc/lowcode-plugin-components-pane

Version:
126 lines (125 loc) 4.12 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var _react = _interopRequireDefault(require("react")); var _bind = _interopRequireDefault(require("classnames/bind")); var _indexModule = _interopRequireDefault(require("./index.module.scss")); var cx = _bind["default"].bind(_indexModule["default"]); var Tab = /*#__PURE__*/function (_React$Component) { (0, _inheritsLoose2["default"])(Tab, _React$Component); function Tab() { var _this; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this; _this.state = { active: 0, offset: 0 }; _this.menus = /*#__PURE__*/_react["default"].createRef(); _this.getIndicatorPos = function (index) { var active = _this.state.active; index = typeof index === 'undefined' ? active : index; var dom = _this.menus.current; if (dom) { var children = dom.childNodes; var target = children[index]; if (!target) { return 0; } return target.offsetLeft; } return 0; }; _this.format = function () { var children = _this.props.children; var childs = _react["default"].Children.toArray(children); var menus = []; for (var i = 0; i < childs.length; i += 1) { var _ref = childs[i], props = _ref.props; menus.push({ title: props === null || props === void 0 ? void 0 : props.title, index: i, children: props.children }); } return { menus: menus }; }; _this.handleSelect = function (active) { _this.setState({ active: active, offset: _this.getIndicatorPos(active) }); }; return _this; } var _proto = Tab.prototype; _proto.componentDidMount = function componentDidMount() { var offset = this.getIndicatorPos(); // eslint-disable-next-line this.setState({ offset: offset }); }; _proto.render = function render() { var _this2 = this; var _this$state = this.state, active = _this$state.active, offset = _this$state.offset; var className = this.props.className; var _this$format = this.format(), menus = _this$format.menus; return /*#__PURE__*/_react["default"].createElement("div", { className: (0, _bind["default"])(className, cx('tab')) }, /*#__PURE__*/_react["default"].createElement("div", { className: cx('header') }, /*#__PURE__*/_react["default"].createElement("div", { className: cx('indicator'), style: { left: offset } }), /*#__PURE__*/_react["default"].createElement("div", { className: cx('items'), ref: this.menus }, menus.map(function (menu) { return /*#__PURE__*/_react["default"].createElement("div", { key: menu.index, className: cx('item', { active: active === menu.index }), onClick: function onClick() { return _this2.handleSelect(menu.index); } }, menu.title); }))), /*#__PURE__*/_react["default"].createElement("div", { className: cx('tabs') }, /*#__PURE__*/_react["default"].createElement("div", { className: cx('contents'), style: { transform: "translate3d(-" + active + "00%, 0, 0)" } }, menus.map(function (_ref2) { var children = _ref2.children, index = _ref2.index; return /*#__PURE__*/_react["default"].createElement("div", { className: cx('content', { active: active === index }), key: index }, children); })))); }; return Tab; }(_react["default"].Component); exports["default"] = Tab; Tab.Item = void 0; Tab.Item = function TabItem(_ref3) { var children = _ref3.children; return children; };