UNPKG

@beisen/ethos

Version:

beisencloud pc react components

205 lines (169 loc) 7.13 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = undefined; var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _toolTip = require('../tool-tip'); var _toolTip2 = _interopRequireDefault(_toolTip); var _commonFunc = require('../common-func'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var TreeItem = function (_Component) { (0, _inherits3.default)(TreeItem, _Component); function TreeItem(props) { (0, _classCallCheck3.default)(this, TreeItem); var _this = (0, _possibleConstructorReturn3.default)(this, (TreeItem.__proto__ || (0, _getPrototypeOf2.default)(TreeItem)).call(this, props)); _this.defaultProps = { hiddenTip: false, sideTip: false }; _this.handleClick = function (e) { (0, _commonFunc.clearToolTipDom)(); e.stopPropagation(); var _this$props = _this.props, itemClick = _this$props.itemClick, data = _this$props.data; if (data.clickable == false) return false; itemClick && itemClick(data, e); }; _this.handletoggle = function (e) { e.stopPropagation(); var _this$props2 = _this.props, treeData = _this$props2.treeData, clickId = _this$props2.clickId, async = _this$props2.async, data = _this$props2.data, getTreeData = _this$props2.getTreeData, getTreeDataAPI = _this$props2.getTreeDataAPI, hideLi = _this$props2.hideLi, showLi = _this$props2.showLi; var toggle = _this.state.toggle; var findLi = data.li; if (data.li) { var liSon = findLi.filter(function (child) { var childLi = child.li; if (childLi) { return childLi.length > 0; } }); var findfromAll = treeData.findIndex(function (value, index, arr) { return value.id == clickId; }); var findResult = findLi.findIndex(function (value, index, arr) { return value.id == clickId; }); if (toggle == false && findResult == -1 && findfromAll == -1 || toggle == false && findResult != -1 || toggle == true && findResult == -1 && findfromAll == -1 || toggle == false && liSon.length != 0) { hideLi(); } else { showLi(); } } _this.setState({ toggle: !toggle, flag: false, hasClick: true }, _this.forceUpdate()); //防止快速点击两次发送多次请求 if (!data.li && _this.state.flag) getTreeData(data.id, async, getTreeDataAPI); //如果无子数据则请求 }; _this.state = { toggle: true, flag: true, hasClick: false }; return _this; } (0, _createClass3.default)(TreeItem, [{ key: 'componentWillMount', value: function componentWillMount() { var _props = this.props, async = _props.async, data = _props.data, getTreeData = _props.getTreeData, getTreeDataAPI = _props.getTreeDataAPI, changeFetching = _props.changeFetching; var toggle = data.is_open ? false : true; var getData = data.is_open; if (getData && !data.li && this.state.flag) { if (!window["getTree"][data.id]) changeFetching(); if (!window["getTree"][data.id]) getTreeData(data.id, async, getTreeDataAPI); //如果无子数据则请求 window["getTree"][data.id] = true; } this.setState({ flag: true, toggle: toggle }); } }, { key: 'componentDidUpdate', value: function componentDidUpdate() { var _props2 = this.props, data = _props2.data, changeTop = _props2.changeTop; if (this.state.hasClick) { if (data.li) { changeTop(); this.setState({ hasClick: false }); } } } }, { key: 'render', value: function render() { var _this2 = this; var toggle = this.state.toggle; var _props3 = this.props, data = _props3.data, handleMouseOver = _props3.handleMouseOver, hiddenTip = _props3.hiddenTip, sideTip = _props3.sideTip; var iconTv = void 0, disableClick = void 0; disableClick = data.clickable == undefined ? false : data.clickable ? false : true; var filterData = data.li && data.li.map(function (data, index) { return _react2.default.createElement(TreeItem, (0, _extends3.default)({}, _this2.props, { data: data, key: index })); }); var paddingLeft = parseInt(data.level) > 2 ? (parseInt(data.level) - 2) * 7 + 'px' : '0px'; if (data.has_child) iconTv = _react2.default.createElement('span', { className: 'icon-tv ' + (toggle ? "sys-icon-foldup" : "sys-icon-spread") + (parseInt(data.level) >= 2 && data.has_child ? ' has-child-icon ' : ' '), onClick: this.handletoggle }); var isFirstLevel = parseInt(data.level) != 1 ? "empty-child-text" : "empty-child-text-first"; var showTitle = (0, _commonFunc.decode)(data.name); return _react2.default.createElement( 'li', { id: data.id, className: toggle ? '' : 'unfold', parentId: data.parentId, onClick: this.handleClick }, _react2.default.createElement( 'div', { style: { "paddingLeft": paddingLeft, 'cursor': disableClick ? 'not-allowed' : '' }, className: "title-tv " + (data.is_checked ? ' tree-li-active ' : ' '), onMouseOver: handleMouseOver }, iconTv, _react2.default.createElement( 'div', { className: 'text_tv_parent' }, _react2.default.createElement( _toolTip2.default, { title: showTitle, hidden: hiddenTip, side: sideTip }, _react2.default.createElement( 'div', { className: "text_tv text_width " + (data.has_child ? '' : isFirstLevel), style: { 'cursor': disableClick ? 'not-allowed' : '' } }, showTitle ) ) ) ), _react2.default.createElement( 'ul', null, filterData ) ); } }]); return TreeItem; }(_react.Component); exports.default = TreeItem; module.exports = exports['default'];