@beisen/ethos
Version:
beisencloud pc react components
205 lines (169 loc) • 7.13 kB
JavaScript
;
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'];