UNPKG

ming-demo3

Version:
643 lines (557 loc) 22 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = 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 = _interopRequireWildcard(require("react")); var _baseui = require("@mdf/baseui"); var _label = _interopRequireDefault(require("./label")); var _text = _interopRequireDefault(require("./text")); var _SvgIcon = _interopRequireDefault(require("@mdf/metaui-web/lib/components/common/SvgIcon")); var _extend = require("@mdf/cube/lib/extend"); var Option = _baseui.Select.Option; var Search = _baseui.Input.Search; var ListRefer = function (_Component) { (0, _inherits2["default"])(ListRefer, _Component); function ListRefer(props) { var _this; (0, _classCallCheck2["default"])(this, ListRefer); _this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(ListRefer).call(this, props)); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getModel", function () { return _this.props.model || _this.model; }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "open", function (e) { _this.referViewModel = e.vm; _this.gridModel = e.vm.get('table'); _this.gridModel.addListener((0, _assertThisInitialized2["default"])(_this)); if (typeof _this.props.afterOkClick === 'function') _this.referViewModel.on('afterOkClick', _this.props.afterOkClick); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "setValue", function (value) { _this.setState({ value: value }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "setDataSource", function (dataSource) { _this.dataSourceReady = true; _this.setState({ dataSource: dataSource, _dataSource: [].concat(dataSource) }); var _this$state = _this.state, multiple = _this$state.multiple, dataStatus = _this$state.dataStatus, textField = _this$state.textField; if (multiple) { if (!dataStatus || dataStatus == {}) { dataSource.map(function (ele, index) { dataStatus[ele.id] = { name: ele[textField], checked: false, index: ele.id }; }); } else { dataSource.map(function (ele, index) { if (!dataStatus[ele.id]) { dataStatus[ele.id] = { name: ele[textField], checked: false, index: ele.id }; } }); } _this.setState({ dataStatus: dataStatus }); } }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleClick", function () { if (_this.hasClicked) return; _this.hasClicked = true; _this.onClick(); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onClick", function () { if (_this.state.showPop) return; _this.setState({ dataSource: [], _dataSource: [] }); var model = _this.getModel(); if (!model && _this.props.cRefType) { _this.model = new cb.models.ReferModel({ cRefType: _this.props.cRefType, multiple: _this.props.multiple, isList: _this.props.isList ? true : false, value: _this.props.value }); _this.model.addListener((0, _assertThisInitialized2["default"])(_this)); } model = _this.getModel(); if (model && model.browse) model.browse(true); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleJointQuery", function () { var model = _this.getModel(); if (!model && _this.props.cRefType) { _this.model = new cb.models.ReferModel({ cRefType: _this.props.cRefType, multiple: _this.props.multiple, isList: _this.props.isList ? true : false, value: _this.props.value }); _this.model.addListener((0, _assertThisInitialized2["default"])(_this)); } model = _this.getModel(); if (model) model.fireEvent('jointQuery'); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChange", function (e, value) { var textField = _this.state.textField; var index = _this.state.dataSource.findIndex(function (item) { return item[textField] === value; }); var referValue; if (value == null) { referValue = value; } else { _this.gridModel.select([index]); referValue = _this.gridModel.getSelectedRows(); } _this.referViewModel.execute('afterOkClick', referValue); _this.setState({ showPop: false }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onButtonClick", function (e, type) { var _this$state2 = _this.state, checkedKeys = _this$state2.checkedKeys, dataSource = _this$state2.dataSource; if (type == 'submit') { var rows = dataSource.filter(function (v) { return checkedKeys.includes(v.id); }); _this.referViewModel.execute('afterOkClick', rows); } _this.setState({ showPop: false }); var model = _this.getModel(); model.execute('blur'); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChecked", function (e, id) { var _this$state3 = _this.state, dataStatus = _this$state3.dataStatus, checkedKeys = _this$state3.checkedKeys; var checked = e.target.checked; dataStatus[id].checked = checked; if (checked) { checkedKeys.push(dataStatus[id].index); } else { checkedKeys = []; for (var key in dataStatus) { if (dataStatus[key].checked) { checkedKeys.push(dataStatus[key].index); } } } _this.setState({ dataStatus: dataStatus, checkedKeys: checkedKeys }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onPopClick", function () { var disabled = _this.state.disabled; if (disabled) return; _this.setState({ showPop: !_this.state.showPop }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onClear", function (e) { e.preventDefault(); e.stopPropagation(); _this.getModel().setValue(null, true); _this.setState({ dataStatus: {}, checkedKeys: [] }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onVisibleChange", function (visible) { var disabled = _this.state.disabled; if (disabled) return; _this.setState({ showPop: visible }); if (!visible) { _this.dataSourceReady = false; var model = _this.getModel(); model.execute('blur'); } }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onSearchChange", function (e) { var value = e.target.value; var _dataSource = _this.getDataSource(value); _this.setState({ searchValue: value, _dataSource: _dataSource }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getDataSource", function (searchValue) { var _this$state4 = _this.state, dataSource = _this$state4.dataSource, textField = _this$state4.textField; var _dataSource = []; if (searchValue) { dataSource.map(function (ele) { var elementText = ele[textField]; if (cb.utils.isEmpty(elementText)) return; if (typeof elementText !== 'string') elementText = elementText.toString(); if (elementText.indexOf(searchValue) > -1) { _dataSource.push(ele); } }); } else { _dataSource = [].concat(dataSource); } return _dataSource; }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onSearchClear", function () { _this.setState({ searchValue: '' }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getPopContent", function () { var _this$state5 = _this.state, multiple = _this$state5.multiple, disabled = _this$state5.disabled, dataSource = _this$state5.dataSource, searchValue = _this$state5.searchValue, value = _this$state5.value, showPop = _this$state5.showPop, dataStatus = _this$state5.dataStatus, checkedKeys = _this$state5.checkedKeys, textField = _this$state5.textField; var controls = []; var searchClearControl = searchValue.length ? _react["default"].createElement("span", { onClick: _this.onSearchClear, className: "ant-select-selection__clear" }) : null; if (dataSource.length <= 0) { var nodata = _react["default"].createElement("div", { className: "no-data" }, searchValue ? null : _react["default"].createElement(_SvgIcon["default"], { type: "nodata" }), searchValue ? "暂无搜索结果哦~" : "暂时没有数据哦~"); return _react["default"].createElement("div", null, searchClearControl, _react["default"].createElement(Search, { value: searchValue, onChange: _this.onSearchChange }), _this.dataSourceReady ? nodata : null); } var _dataSource = _this.getDataSource(searchValue); if (_dataSource.length === 0) { if (!multiple) { controls.push(_react["default"].createElement("li", { className: "no-data" }, "\u6682\u65E0\u641C\u7D22\u7ED3\u679C\u54E6~")); } else { controls.push(_react["default"].createElement("div", { className: "no-data" }, "\u6682\u65E0\u641C\u7D22\u7ED3\u679C\u54E6~")); } } _dataSource.length && _dataSource.map(function (ele) { var _this2 = this; if (!multiple) { controls.push(_react["default"].createElement("li", { onClick: function onClick(e) { return _this2.onChange(e, ele[textField]); } }, ele[textField])); } else { var checked = dataStatus[ele.id] ? dataStatus[ele.id].checked : false; controls.push(_react["default"].createElement(_baseui.Checkbox, { checked: checked, key: ele.id, onChange: function onChange(e) { return _this2.onChecked(e, ele.id); } }, ele[textField])); } }, (0, _assertThisInitialized2["default"])(_this)); if (!multiple) { return _react["default"].createElement("div", { className: "listRefer-list-container" }, searchClearControl, _react["default"].createElement(Search, { value: searchValue, onChange: _this.onSearchChange }), _react["default"].createElement("ul", { className: "defaut-list listRefer-list" }, controls)); } else { return _react["default"].createElement("div", { className: "listRefer" }, searchClearControl, _react["default"].createElement(Search, { value: searchValue, onChange: _this.onSearchChange }), controls, _react["default"].createElement("div", { className: "filter-btn-1" }, _react["default"].createElement(_baseui.Button, { className: "ant-btn-sm", type: "primary", onClick: function onClick(e) { return _this.onButtonClick(e, 'submit'); } }, "\u786E\u5B9A"), _react["default"].createElement(_baseui.Button, { className: "ant-btn-sm", type: "default", onClick: function onClick(e) { return _this.onButtonClick(e, 'cancel'); } }, "\u53D6\u6D88"))); } }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getListRefer", function () { var _this$state6 = _this.state, multiple = _this$state6.multiple, disabled = _this$state6.disabled, value = _this$state6.value, showPop = _this$state6.showPop; var contentClass = "", showClear = false, selectionControl = null; if (value && value != "") { selectionControl = _react["default"].createElement("span", { className: "ant-select-selection-selected-value" }, value); showClear = true; } else { selectionControl = _react["default"].createElement("span", { className: "ant-select-selection__placeholder" }); } if (disabled) { contentClass = "ant-select ant-select-disabled ant-select-allow-clear"; } else { contentClass = "ant-select ant-select-enabled ant-select-allow-clear"; } if (showPop) contentClass = contentClass + ' ant-select-open ant-select-focused'; var clearControl = showClear ? _react["default"].createElement("span", { onClick: _this.onClear, className: "ant-select-selection__clear" }) : _react["default"].createElement("span", null); return _react["default"].createElement("span", { ref: function ref(node) { return _this.input = node; }, onClick: _this.onClick, className: contentClass }, _react["default"].createElement("span", { className: "uretail-treerefer-selection ant-select-selection ant-select-selection--single", role: "combobox", "aria-autocomplete": "list", "aria-haspopup": "true", tabindex: "0", "aria-expanded": "false" }, _react["default"].createElement("span", { className: "ant-select-selection__rendered" }, selectionControl), clearControl, _react["default"].createElement("span", { className: "ant-select-arrow", style: { outline: 'none' } }, _react["default"].createElement("b", null)))); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "baseControl", function () { var _baseControl = null; var _this$state7 = _this.state, after = _this$state7.after, bottom = _this$state7.bottom, afterPopoverKey = _this$state7.afterPopoverKey, readOnly = _this$state7.readOnly, dataSource = _this$state7.dataSource, searchValue = _this$state7.searchValue, disabled = _this$state7.disabled; if (readOnly || disabled) { _baseControl = (0, _text["default"])(_this.state.value); } else { var _this$state8 = _this.state, textField = _this$state8.textField, keyField = _this$state8.keyField, multiple = _this$state8.multiple, _disabled = _this$state8.disabled, showPop = _this$state8.showPop, popWidth = _this$state8.popWidth; var index = dataSource.findIndex(function (item) { return item[textField] === _this.state.value; }); var popContent = _this.getPopContent(); var control = _this.getListRefer(); var extraProps = {}; if (popWidth) extraProps.overlayStyle = { width: popWidth }; _baseControl = _react["default"].createElement(_baseui.Popover, (0, _extends2["default"])({}, extraProps, { visible: showPop, getPopupContainer: function getPopupContainer(triggerNode) { return document.getElementById('yxyweb-support-mount-popover') || document.body || triggerNode.parentNode; }, overlayClassName: "uretail-pop ".concat(cb.rest.interMode === 'touch' ? 'listrefer-touch-container' : ''), content: popContent, trigger: "click", placement: "bottom", onClick: _this.onPopClick, onVisibleChange: _this.onVisibleChange }), control); } var AfterComName; if (!afterPopoverKey && !after && !bottom) { return _baseControl; } else { AfterComName = _extend.extendComp.popover[afterPopoverKey]; return _react["default"].createElement("div", { className: "input-bottom" }, _react["default"].createElement("div", { className: "control-flex" }, _baseControl, afterPopoverKey ? _react["default"].createElement(AfterComName, null) : after && _react["default"].createElement("span", null, after)), !readOnly && !disabled && bottom && _react["default"].createElement("div", { className: "input-bottom-text", title: bottom }, bottom)); } }); var cStyle = props.cStyle; var config = null; if (cStyle) { try { config = JSON.parse(cStyle); } catch (e) {} } _this.state = Object.assign({ bIsNull: props.bIsNull, visible: !props.bHidden, showPop: false, dataStatus: {}, checkedKeys: [], searchValue: '', dataSource: [], classname: props.className || '', _dataSource: [] }, config); _this.dataSourceReady = false; return _this; } (0, _createClass2["default"])(ListRefer, [{ key: "componentDidMount", value: function componentDidMount() { if (this.props.model) this.props.model.addListener(this); if (this.props.autoLoad) { this.onClick(); this.setState({ showPop: true }); } if (this.props.focus) this.refs.input.refs.input.focus(); this.setState({ popWidth: this.input.clientWidth }); } }, { key: "componentDidUpdate", value: function componentDidUpdate(prevProps, prevState) { if (this.props.model) { this.props.model.addListener(this); if (this.state.err && prevState.value != this.state.value) { this.props.model.validate(); } } } }, { key: "componentWillUnmount", value: function componentWillUnmount() { var model = this.getModel(); if (model) model.removeListener(this); } }, { key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps) { if (nextProps.model) { if (!this.props.model) { nextProps.model.addListener(this); } else { return; } } else { if (this.props.model) { this.props.model.removeListener(this); } } } }, { key: "validate", value: function validate(val) { this.setState({ err: val.type && 'has-' + val.type, msg: val.message }); } }, { key: "relatedControl", value: function relatedControl() { var control = this.baseControl(); var relatedControl = this.props.relatedControl; if (!relatedControl) return control; return _react["default"].createElement("div", { className: "has-related" }, _react["default"].createElement("div", { className: "viewCell" }, control), relatedControl); } }, { key: "getControl", value: function getControl() { var _this3 = this; if (!this.state.visible) return null; var _this$props = this.props, bJointQuery = _this$props.bJointQuery, cShowCaption = _this$props.cShowCaption; var title = bJointQuery ? _react["default"].createElement("a", { onClick: function onClick(e) { return _this3.handleJointQuery(e); } }, cShowCaption) : cShowCaption; title = !this.state.readOnly && !this.state.disabled && this.state.bIsNull === false && cShowCaption ? _react["default"].createElement("label", null, _react["default"].createElement(_baseui.Icon, { type: "star" }), title) : _react["default"].createElement("label", null, title); var control = cShowCaption ? _react["default"].createElement(_label["default"], { control: this.relatedControl(), title: title }) : this.relatedControl(); return control; } }, { key: "render", value: function render() { var control = this.getControl(); var style = this.state.visible ? {} : { display: "none" }; var errClass = "basic-list-refer has-feedback ".concat(this.state.classname || '', " ") + this.state.err; return _react["default"].createElement("div", { style: style, className: errClass }, control, _react["default"].createElement("div", { className: "ant-form-explain" }, this.state.msg)); } }]); return ListRefer; }(_react.Component); exports["default"] = ListRefer; //# sourceMappingURL=listrefer.js.map