UNPKG

@beisen/ethos

Version:

beisencloud pc react components

308 lines (262 loc) 10.2 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 _class, _temp; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _TreeItem = require('./TreeItem'); var _TreeItem2 = _interopRequireDefault(_TreeItem); require('./index.scss'); var _loading = require('../loading'); var _loading2 = _interopRequireDefault(_loading); var _commonFunc = require('../common-func'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } if (!String.prototype.includes) { String.prototype.includes = function () { 'use strict'; return String.prototype.indexOf.apply(this, arguments) !== -1; }; }; var defaultTranslation = { emptyBgText: '这里什么都没有...' }; var Tree = (_temp = _class = function (_Component) { (0, _inherits3.default)(Tree, _Component); function Tree(props) { (0, _classCallCheck3.default)(this, Tree); var _this = (0, _possibleConstructorReturn3.default)(this, (Tree.__proto__ || (0, _getPrototypeOf2.default)(Tree)).call(this, props)); _this.handleCheckBoxClick = function (e, dataPath) { //修改dataId数据的checked _this.props.treeData.map(function (data) { if (data.path === dataPath) { data.checked = data.checked ? false : true; if (data.li && data.li.length > 0) { data.li.map(function (item) { item.checked = data.checked; }); } } }); _this.setState(_this.state); }; _this.itemClick = function (val, e) { var treeData = _this.state.treeData; var clickLiTop = _this.state.clickLiTop; treeData.map(function (item) { item.id == val.id ? item.is_checked = true : item.is_checked ? item.is_checked = false : item.is_checked = item.is_checked; }); var tar = e.target; var tarPosition = tar.className == 'title-tv ' ? tar.offsetTop : tar.parentNode.parentNode.offsetTop; clickLiTop = tarPosition + 'px'; _this.setState({ clickLiTop: clickLiTop, clickStatus: 'block', clickId: val.id, clickPId: val.pid }); _this.props.onClick && _this.props.onClick(e, val); }; _this.hideLi = function () { _this.setState({ clickStatus: 'none' }); }; _this.showLi = function () { _this.setState({ clickStatus: 'block' }); }; _this.changeTop = function () { var treeData = _this.props.treeData; var findActive = treeData.filter(function (data) { return data.is_checked == true; }); var activeDom = document.getElementsByClassName("tree-li-active")[0]; if (findActive.length !== 0 && activeDom) { _this.setState({ clickLiTop: activeDom.offsetTop + 'px' }); } }; _this.changeFetching = function () { _this.setState({ isFetch: true }); }; _this.handleMouseOver = function (e) { var hoverLiTop = _this.state.hoverLiTop; var baseTreeCom = document.getElementsByClassName('base-tree-component')[0]; var scrollWidth = baseTreeCom.scrollWidth + 'px'; var tar = e.target; var tarNodePosition = tar.className.includes('title-tv') ? tar.offsetTop : tar.parentNode.parentNode.offsetTop; if (tar.className.includes('icon-tv')) { tarNodePosition = tar.offsetTop - 2; } hoverLiTop = tarNodePosition + 'px'; _this.setState({ hoverLiTop: hoverLiTop, hoverWidth: scrollWidth }); }; _this.hoverMouseOut = function () { _this.setState({ hoverLiTop: '-40px' }); }; _this.transData = function (data1) { var data = (0, _commonFunc.deepClone)(data1); var filter = [], getData = {}; for (var i in data) { if (data[i] != undefined && data[i].id == (_this.state && _this.state.clickId)) data[i].is_checked = true; if (data[i] != undefined) getData[data[i]["id"]] = data[i]; } for (var j in data) { if (data[j]) { var item = data[j], temp = getData[item["pid"]]; if (temp && temp.id !== temp.pid) { !temp["li"] && (temp["li"] = []); temp["li"].push(item); } else { filter.push(item); } } } return filter; }; _this.translation = (0, _extends3.default)({}, defaultTranslation, props.translation); _this.state = { treeData: [], hoverLiTop: '-40px', clickStatus: 'none', clickLiTop: '0px', hoverWidth: '100%', filterData: _this.transData(props.treeData), isFetch: true }; window["getTree"] = {}; return _this; } (0, _createClass3.default)(Tree, [{ key: 'componentWillUnmount', value: function componentWillUnmount() { window["getTree"] = {}; } }, { key: 'componentWillReceiveProps', value: function componentWillReceiveProps(nextProps) { if (nextProps.treeData !== this.state.treeData) { this.setState({ treeData: nextProps.treeData, filterData: this.transData(nextProps.treeData) }); } if (!nextProps.isFetching) { this.setState({ isFetch: false }); } } }, { key: 'componentDidMount', value: function componentDidMount() { var _props = this.props, treeData = _props.treeData, getTreeData = _props.getTreeData, id = _props.id, async = _props.async, getTreeDataAPI = _props.getTreeDataAPI, initGetData = _props.initGetData, postData = _props.postData, methodType = _props.methodType; this.setState({ treeData: treeData }); if (initGetData) getTreeData && getTreeData(id, async, getTreeDataAPI, postData ? postData : {}, methodType ? methodType : 'GET'); } }, { key: 'componentDidUpdate', value: function componentDidUpdate(nextProps) { var _props2 = this.props, getTreeSize = _props2.getTreeSize, treeData = _props2.treeData; if (nextProps.treeData !== this.state.treeData) { var findActive = treeData.filter(function (data) { return data.is_checked == true; }); if (findActive.length !== 0) { this.setState({ clickStatus: 'block' }); var _defaultTop = document.getElementsByClassName("tree-li-active")[0].offsetTop + 'px'; if (_defaultTop !== undefined) { this.setState({ clickLiTop: _defaultTop }, this.forceUpdate()); } } var treeH = document.getElementsByClassName('base-tree-component')[0].offsetHeight; getTreeSize && getTreeSize(treeH); } } }, { key: 'render', value: function render() { var _this2 = this; var _state = this.state, hoverWidth = _state.hoverWidth, clickId = _state.clickId, clickStatus = _state.clickStatus, clickLiTop = _state.clickLiTop, hoverLiTop = _state.hoverLiTop, treeData = _state.treeData, filterData = _state.filterData, isFetch = _state.isFetch; var _props3 = this.props, style = _props3.style, hidden = _props3.hidden, hiddenTip = _props3.hiddenTip, sideTip = _props3.sideTip; var Li = filterData.map(function (data, index) { return _react2.default.createElement(_TreeItem2.default, (0, _extends3.default)({}, _this2.props, { treeData: treeData, hideLi: _this2.hideLi, showLi: _this2.showLi, handleCheckBoxClick: _this2.handleCheckBoxClick, changeTop: _this2.changeTop, handleMouseOver: _this2.handleMouseOver, changeFetching: _this2.changeFetching, isFetch: _this2.state.isFetch, data: data, itemClick: _this2.itemClick, clickId: clickId, key: index, hiddenTip: hiddenTip, sideTip: sideTip })); }); var component = treeData.length == 0 ? _react2.default.createElement('div', { className: 'us-no-data empty-con', 'data-bg-text': this.translation.emptyBgText }) : Li; if (hidden) { return _react2.default.createElement('div', null); } else { return _react2.default.createElement( 'div', { ref: 'BaseTree', className: 'base-tree-component', style: style, onMouseOut: this.hoverMouseOut }, _react2.default.createElement( 'div', { className: 'base-tree-view base-tree-style' }, _react2.default.createElement( 'ul', null, isFetch ? _react2.default.createElement( 'div', { style: { backgroundColor: "#FFF", height: '295px' } }, _react2.default.createElement(_loading2.default, { type: 'small' }) ) : component ), _react2.default.createElement('li', { className: 'hover-style', style: { 'top': hoverLiTop } }), _react2.default.createElement('li', { className: 'click-style', style: { "width": hoverWidth, "display": clickStatus, "top": clickLiTop } }) ) ); } } }]); return Tree; }(_react.Component), _class.defaultProps = { initGetData: true, style: {} }, _temp); exports.default = Tree; module.exports = Tree; module.exports = exports['default'];