UNPKG

zent

Version:

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

221 lines (191 loc) 8.01 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _class, _temp; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactDom = require('react-dom'); var _reactDom2 = _interopRequireDefault(_reactDom); var _Tab = require('../Tab/Tab'); var _Tab2 = _interopRequireDefault(_Tab); var _navUtil = require('./navUtil'); var _navUtil2 = _interopRequireDefault(_navUtil); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } function noop() {} var Nav = (_temp = _class = function (_React$Component) { _inherits(Nav, _React$Component); function Nav() { _classCallCheck(this, Nav); return _possibleConstructorReturn(this, (Nav.__proto__ || Object.getPrototypeOf(Nav)).apply(this, arguments)); } _createClass(Nav, [{ key: 'componentDidMount', value: function componentDidMount() { this.componentDidUpdate(); } }, { key: 'componentDidUpdate', value: function componentDidUpdate() { // 设置navContent的宽度 this.positionInkBar(); } }, { key: 'positionInkBar', value: function positionInkBar() { var type = this.props.type; if (type === 'slider') { var activeTabDom = _reactDom2['default'].findDOMNode(this.activeTab); if (activeTabDom) { var activeTabInner = activeTabDom.children[0]; var activeTabInnerContentDom = activeTabInner.children[0]; var targetDom = activeTabInnerContentDom || activeTabInner; var tWidth = _navUtil2['default'].getOffsetWH(targetDom); var tLeft = _navUtil2['default'].getOffsetLT(targetDom); var wrapLeft = _navUtil2['default'].getOffsetLT(this.tabwrapDom); if (!activeTabInnerContentDom) { var cssStyle = window.getComputedStyle(activeTabInner); var paddingLeft = window.parseInt(cssStyle.paddingLeft); var paddingRight = window.parseInt(cssStyle.paddingRight); tWidth = tWidth - paddingLeft - paddingRight; wrapLeft = wrapLeft - paddingLeft; } this.inkBarDom.style.width = tWidth + 'px'; this.inkBarDom.style.left = tLeft - wrapLeft + 'px'; } } } }, { key: 'renderTabs', value: function renderTabs() { var _this2 = this; var renderData = _navUtil2['default'].modifyTabListData(this.props); var TabList = []; renderData.forEach(function (renderDataItem) { var refParam = {}; if (renderDataItem.actived) { refParam.ref = function (c) { _this2.activeTab = c; }; } TabList.push(_react2['default'].createElement( _Tab2['default'], _extends({ prefix: _this2.props.prefix, onSelected: _this2.onTabSelected.bind(_this2), onDelete: _this2.onTabDel.bind(_this2), uniqueId: _this2.props.uniqueId }, renderDataItem, { id: renderDataItem.key }, refParam), renderDataItem.title )); }); return TabList; } }, { key: 'onTabSelected', value: function onTabSelected(id) { var onChange = this.props.onChange; // change onChange(id); } }, { key: 'onTabDel', value: function onTabDel(id) { var onDelete = this.props.onDelete; onDelete(id); } }, { key: 'onTabAdd', value: function onTabAdd() { var onTabAdd = this.props.onTabAdd; onTabAdd(); } }, { key: 'render', value: function render() { var _this3 = this; var _props = this.props, prefix = _props.prefix, align = _props.align, canadd = _props.canadd, size = _props.size, type = _props.type; var classes = prefix + '-tabs-size-' + size + ' ' + prefix + '-tabs-type-' + type + ' ' + prefix + '-tabs-align-' + align; var addOperation = ''; if (canadd && align !== 'center') { addOperation = _react2['default'].createElement( 'div', { className: prefix + '-tabs-nav-add', onClick: this.onTabAdd.bind(this) }, _react2['default'].createElement( 'span', null, '+' ) ); } return _react2['default'].createElement( 'div', { className: prefix + '-tabs-nav ' + classes }, _react2['default'].createElement( 'div', { className: prefix + '-tabs-nav-content', ref: function ref(r) { _this3.navContentDom = _reactDom2['default'].findDOMNode(r); } }, addOperation, _react2['default'].createElement( 'div', { className: prefix + '-tabs-scroll' }, _react2['default'].createElement( 'div', { className: prefix + '-tabs-tabwrap', role: 'tablist', ref: function ref(c) { _this3.tabwrapDom = c; } }, _react2['default'].createElement('span', { className: prefix + '-tabs-nav-ink-bar', ref: function ref(c) { _this3.inkBarDom = c; } }), _react2['default'].createElement( 'div', null, this.renderTabs() ) ) ) ) ); } }]); return Nav; }(_react2['default'].Component), _class.propTypes = { prefix: _react2['default'].PropTypes.string, tabListData: _react2['default'].PropTypes.array, onChange: _react2['default'].PropTypes.func, type: _react2['default'].PropTypes.string, align: _react2['default'].PropTypes.string, size: _react2['default'].PropTypes.string, onDelete: _react2['default'].PropTypes.func, onTabAdd: _react2['default'].PropTypes.func, candel: _react2['default'].PropTypes.bool, canadd: _react2['default'].PropTypes.bool, uniqueId: _react2['default'].PropTypes.number }, _class.defaultProps = { prefix: 'zent', onChange: noop, tabListData: [], type: 'normal', align: 'left', size: 'normal', onDelete: noop, candel: false, canadd: false, onTabAdd: noop, uniqueId: 0 }, _temp); exports['default'] = Nav; module.exports = exports['default'];