UNPKG

ming-demo3

Version:
424 lines (378 loc) 13.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.SearchTreeControl = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _baseui = require("@mdf/baseui"); var TreeNode = _baseui.Tree.TreeNode; var Option = _baseui.Select.Option; var SearchTreeControl = function (_React$Component) { (0, _inherits2["default"])(SearchTreeControl, _React$Component); function SearchTreeControl(props) { var _this; (0, _classCallCheck2["default"])(this, SearchTreeControl); _this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(SearchTreeControl).call(this, props)); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onCheck", function (checkedKeys) { if (_this.props.model) _this.props.model.check(checkedKeys); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleSearch", function () { var _this$state = _this.state, searchValue = _this$state.searchValue, dataSource = _this$state.dataSource, keyField = _this$state.keyField, titleField = _this$state.titleField; var _ids = []; dataSource.forEach(function (v) { if (v[titleField] === searchValue) { _ids.unshift(v[keyField]); } }); if (_ids[0]) { _this.setState({ selectedKeys: _ids }); } _this.searchSelect(_ids[0]); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleSearchClick", function (e) { _this.flag = true; }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleTreeClick", function (e) { _this.flag = true; }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleClick", function (e) { if (_this.flag) { _this.flag = false; return; } _this.onSelect([]); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "clearSearchValue", function () { _this.setState({ searchValue: '' }); }); var filterProps = ['name']; var placeholder = null; var substractHeight = 0; if (props.config) { var config = null; try { config = JSON.parse(_this.props.config); } catch (e) { config = {}; } if (cb.utils.isArray(config.filters)) filterProps = config.filters; if (config.placeholder) placeholder = config.placeholder; if (config.substractHeight) substractHeight = config.substractHeight; } _this.state = { multiple: _this.props.multiple || false, checkable: _this.props.checkable || false, expandAll: _this.props.expandAll || false, keyField: _this.props.keyField || 'key', titleField: _this.props.titleField || 'title', childrenField: _this.props.childrenField || 'children', expandedKeys: _this.props.expandedKeys || [], buttonGroup: _this.props.buttonGroup || [{ type: 'edit-disabled' }], visible: !props.bHidden, autoExpandParent: false, selectedKeys: [], checkedKeys: [], dataSource: [], optionData: [], renderFlag: true, searchValue: '', selectKey: '', filterProps: filterProps, placeholder: placeholder || "请输入关键字", substractHeight: substractHeight }; _this.selectDataSource = []; return _this; } (0, _createClass2["default"])(SearchTreeControl, [{ key: "componentDidMount", value: function componentDidMount() { if (this.props.model) this.props.model.addListener(this); } }, { key: "componentDidUpdate", value: function componentDidUpdate() { if (this.props.model) this.props.model.addListener(this); } }, { key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps) { var childrenField = this.state.childrenField; if (!nextProps.dataSource || this.props.id === nextProps.id) return; var states = { dataSource: nextProps.dataSource, optionData: nextProps.dataSource }; if (this.state.expandAll) { var keyField = this.state.keyField; var expandedKeys = []; var loop = function loop(data) { return data.map(function (item) { expandedKeys.push(item[keyField]); if (item[childrenField]) loop(item[childrenField]); }); }; loop(nextProps.dataSource); states.expandedKeys = expandedKeys; } this.setState(states); } }, { key: "componentWillUnmount", value: function componentWillUnmount() { if (this.props.model) this.props.model.removeListener(this); } }, { key: "onSelect", value: function onSelect(selectedKeys, e) { if (this.props.onSelect) this.props.onSelect(selectedKeys, e); if (this.props.model) this.props.model.select(selectedKeys); } }, { key: "onExpand", value: function onExpand(expandedKeys, e) { if (e) { this.setState({ expandedKeys: expandedKeys, autoExpandParent: false }); } else { this.setState({ expandedKeys: expandedKeys, autoExpandParent: true }); } } }, { key: "searchSelect", value: function searchSelect(value, option) { var _this$state2 = this.state, selectData = _this$state2.selectData, expandedKeys = _this$state2.expandedKeys; var currentData = selectData.find(function (item) { return item.id == value; }); var newExpandedKeys = [].concat(expandedKeys); if (currentData && currentData.parent) { var expandedKey = currentData.parent.toString(); if (newExpandedKeys.indexOf(expandedKey) === -1) newExpandedKeys.push(expandedKey); } this.onExpand(newExpandedKeys); this.onSelect([value]); } }, { key: "fetch", value: function fetch(value, callback) { var dataSource = this.selectDataSource; var filterProps = this.state.filterProps; var data = []; if (!dataSource) { console.log("search Tree fetch of dataSource is null ! "); return; } dataSource.forEach(function (ele) { filterProps.forEach(function (field) { if (ele[field].toString().indexOf(value) < 0) return; data.push(ele); }); }); callback(data); } }, { key: "getSelectData", value: function getSelectData(data, parent) { var childrenField = this.props.childrenField; data.forEach(function (ele) { var item = { parent: parent }; for (var attr in ele) { if (attr === childrenField) continue; item[attr] = ele[attr]; } this.selectDataSource.push(item); if (ele.children) { this.getSelectData(ele.children, ele.id); } }, this); } }, { key: "onSearch", value: function onSearch(value) { var _this2 = this; this.setState({ searchValue: value }); this.fetch(value, function (selectData) { return _this2.setState({ selectData: selectData }); }); } }, { key: "getSearchOptions", value: function getSearchOptions() { var searchValue = this.state.searchValue; if (searchValue == '') return; var selectData = this.state.selectData; var options = []; selectData.forEach(function (ele) { options.push(_react["default"].createElement(Option, { key: ele[this.state.keyField] }, ele[this.state.titleField])); }, this); return options; } }, { key: "setDataSource", value: function setDataSource(dataSource) { this.selectDataSource = []; this.getSelectData(dataSource); this.setState({ dataSource: dataSource, checkedKeys: [] }); } }, { key: "onActionClick", value: function onActionClick(e, id) { e.stopPropagation(); } }, { key: "render", value: function render() { var _this3 = this; var titleField = this.state.titleField; var keyField = this.state.keyField; var childrenField = this.state.childrenField; var loop = function loop(data) { return data.map(function (item) { var buttonGroup = _this3.state.buttonGroup.map(function (element) { return _react["default"].createElement(_baseui.Icon, { type: element.type, onClick: function onClick(e) { return _this3.onActionClick(e, item.id); } }); }); var title = _react["default"].createElement("span", null, item[titleField]); var selectable = cb.utils.getBooleanValue(item.selectable) === false ? false : true; if (item[childrenField]) { return _react["default"].createElement(TreeNode, { data: item, title: title, key: item[keyField], selectable: selectable }, loop(item[childrenField])); } return _react["default"].createElement(TreeNode, { data: item, title: title, key: item[keyField], isLeaf: item.isLeaf, disabled: item.disabled, selectable: selectable }); }); }; var treeNodes = loop(this.state.dataSource); var treeProps = { multiple: this.state.multiple, checkable: this.state.checkable, expandedKeys: this.state.expandedKeys, selectedKeys: this.state.selectedKeys, checkedKeys: this.state.checkedKeys, autoExpandParent: this.state.autoExpandParent }; if (treeProps.selectedKeys.length) { treeProps.selectedKeys = treeProps.selectedKeys.map(function (v) { return v + ''; }); } var style = this.state.visible ? {} : { display: "none" }; var options = this.getSearchOptions(); var height = (this.props.height || document.body.clientHeight) - this.state.substractHeight; var tree3style = {}; if (this.props.parentType == 'TreeTable') tree3style.height = height - 44; return _react["default"].createElement("div", { onClick: this.handleClick, className: "bg-white border-r", style: { width: '240px', height: height } }, _react["default"].createElement("div", { onClick: this.handleSearchClick, className: "search-tree-2" }, this.state.searchValue ? _react["default"].createElement(_baseui.Icon, { type: "close-circle", onClick: this.clearSearchValue, style: { cursor: "pointer" } }) : null, _react["default"].createElement(_baseui.Button, { icon: "search", onClick: function onClick() { _this3.handleSearch(); } }), _react["default"].createElement(_baseui.Select, { placeholder: this.state.placeholder, mode: "combobox", value: this.state.searchValue, notFoundContent: "\u554A\u54E6\uFF01\u6CA1\u6B64\u8282\u70B9\u54E6\uFF01", onSelect: function onSelect(value, option) { return _this3.searchSelect(value, option); }, onSearch: function onSearch(value) { return _this3.onSearch(value); }, defaultActiveFirstOption: false, showArrow: false, filterOption: false, onChange: this.handleChange, dropdownMatchSelectWidth: false }, options)), _react["default"].createElement("div", { style: tree3style, onClick: this.handleTreeClick, className: "search-tree-3 edit" }, _react["default"].createElement(_baseui.Tree, (0, _extends2["default"])({ key: treeNodes.length, style: style, onExpand: function onExpand(expandedKeys, e) { return _this3.onExpand(expandedKeys, e); }, onSelect: function onSelect(selectedKeys, e) { return _this3.onSelect(selectedKeys, e); }, onCheck: this.onCheck }, treeProps), treeNodes))); } }]); return SearchTreeControl; }(_react["default"].Component); exports.SearchTreeControl = SearchTreeControl; ; var _default = SearchTreeControl; exports["default"] = _default; //# sourceMappingURL=SearchTree.js.map