UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

1,291 lines (1,095 loc) 48 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.SELECTFIELDS = exports.SEARCHTEXT = exports.OPTIONDATASET = exports.MENURESULT = exports.MENUDATASET = exports.FILTERMENUDATASET = exports.CONDITIONSTATUS = exports.CONDITIONDATASET = void 0; exports.isEqualDynamicProps = isEqualDynamicProps; exports.omitData = omitData; exports.parseValue = parseValue; exports.stringifyValue = stringifyValue; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper")); var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _tslib = require("tslib"); var _react = _interopRequireWildcard(require("react")); var _mobxReact = require("mobx-react"); var _mobx = require("mobx"); var _uniq = _interopRequireDefault(require("lodash/uniq")); var _pull = _interopRequireDefault(require("lodash/pull")); var _noop = _interopRequireDefault(require("lodash/noop")); var _map = _interopRequireDefault(require("lodash/map")); var _isObject = _interopRequireDefault(require("lodash/isObject")); var _isEmpty2 = _interopRequireDefault(require("lodash/isEmpty")); var _isNumber = _interopRequireDefault(require("lodash/isNumber")); var _isFunction = _interopRequireDefault(require("lodash/isFunction")); var _isEqual = _interopRequireDefault(require("lodash/isEqual")); var _isArray = _interopRequireDefault(require("lodash/isArray")); var _isString = _interopRequireDefault(require("lodash/isString")); var _debounce = _interopRequireDefault(require("lodash/debounce")); var _omit = _interopRequireDefault(require("lodash/omit")); var _difference = _interopRequireDefault(require("lodash/difference")); var _ConfigContext = _interopRequireDefault(require("../../../../lib/config-provider/ConfigContext")); var _UnitConvertor = require("../../../../lib/_util/UnitConvertor"); var _icon = _interopRequireDefault(require("../../../../lib/icon")); var _enum = require("../../../../lib/trigger/enum"); var _DataSet = _interopRequireDefault(require("../../data-set/DataSet")); var _enum2 = require("../../data-set/enum"); var _button = _interopRequireDefault(require("../../button")); var _dropdown = _interopRequireDefault(require("../../dropdown")); var _textField = _interopRequireDefault(require("../../text-field")); var _enum3 = require("../../text-field/enum"); var _tooltip = _interopRequireDefault(require("../../tooltip")); var _localeContext = require("../../locale-context"); var _autobind = _interopRequireDefault(require("../../_util/autobind")); var _isEmpty3 = _interopRequireDefault(require("../../_util/isEmpty")); var _FieldList = _interopRequireDefault(require("./FieldList")); var _TableButtons = _interopRequireDefault(require("./TableButtons")); var _ColumnFilter = _interopRequireDefault(require("./ColumnFilter")); var _QuickFilterMenu = _interopRequireDefault(require("./quick-filter/QuickFilterMenu")); var _QuickFilterMenuContext = _interopRequireDefault(require("./quick-filter/QuickFilterMenuContext")); var _QuickFilterDataSet = require("./quick-filter/QuickFilterDataSet"); /** * 当前数据是否有值并需要选中 * @param data */ function isSelect(data) { if ((0, _isObject["default"])(data[1])) { return !(0, _isEmpty2["default"])(data[1]); } return data[0] !== '__dirty' && !(0, _isEmpty3["default"])(data[1]); } function isEqualDynamicProps(originalValue, newValue, dataSet, record) { if ((0, _isEqual["default"])(newValue, originalValue)) { return true; } if ((0, _isObject["default"])(newValue) && (0, _isObject["default"])(originalValue) && Object.keys(newValue).length) { return Object.keys(newValue).every(function (key) { var value = newValue[key]; var oldValue = originalValue[key]; if (oldValue === value) { return true; } if ((0, _isNumber["default"])(oldValue) || (0, _isNumber["default"])(value)) { var oEp = (0, _isNumber["default"])(oldValue) ? (0, _isEmpty3["default"])(oldValue) : (0, _isEmpty2["default"])(oldValue); var nEp = (0, _isNumber["default"])(value) ? (0, _isEmpty3["default"])(value) : (0, _isEmpty2["default"])(value); if (oEp && nEp) { return true; } return String(oldValue) === String(value); } var field = dataSet.getField(key); if (field && field.get('lovCode') && oldValue && value) { var valueField = dataSet.getField(key).get('valueField', record); var textField = dataSet.getField(key).get('textField', record); return value[valueField] === oldValue[valueField] && value[textField] === oldValue[textField]; } return (0, _isEqual["default"])(oldValue, value); }); } return (0, _isEqual["default"])(newValue, originalValue); } /** * 提交副本数据 * @param data */ function omitData(data) { return (0, _omit["default"])(data, 'creationDate', 'createdBy', 'lastUpdateDate', 'lastUpdatedBy', 'objectVersionNumber', '_token', 'searchId', 'searchConditionId', 'searchQueryId', 'searchOrderId'); } /** * obj 值使用 JSON 保存、获取赋值转化 * @param value */ function parseValue(value) { try { var res = JSON.parse(value); if ((0, _typeof2["default"])(res) === 'object') { return res; } return value; } catch (e) { return value; } } function stringifyValue(value) { if ((0, _typeof2["default"])(value) === 'object') { return JSON.stringify(value); } return value; } var CONDITIONSTATUS = '__CONDITIONSTATUS__'; exports.CONDITIONSTATUS = CONDITIONSTATUS; var SELECTFIELDS = '__SELECTFIELDS__'; exports.SELECTFIELDS = SELECTFIELDS; var MENUDATASET = '__MENUDATASET__'; exports.MENUDATASET = MENUDATASET; var CONDITIONDATASET = '__CONDITIONDATASET__'; exports.CONDITIONDATASET = CONDITIONDATASET; var OPTIONDATASET = '__OPTIONDATASET__'; exports.OPTIONDATASET = OPTIONDATASET; var FILTERMENUDATASET = '__FILTERMENUDATASET__'; exports.FILTERMENUDATASET = FILTERMENUDATASET; var MENURESULT = '__MENURESULT__'; exports.MENURESULT = MENURESULT; var SEARCHTEXT = '__SEARCHTEXT__'; exports.SEARCHTEXT = SEARCHTEXT; var TableDynamicFilterBar = /*#__PURE__*/function (_Component) { (0, _inherits2["default"])(TableDynamicFilterBar, _Component); var _super = (0, _createSuper2["default"])(TableDynamicFilterBar); function TableDynamicFilterBar(props, context) { var _this; (0, _classCallCheck2["default"])(this, TableDynamicFilterBar); _this = _super.call(this, props, context); _this.refDropdown = null; _this.refSingleWrapper = null; _this.refEditors = new Map(); _this.originalConditionFields = []; _this.handleClickOut = function (e) { if (_this.refDropdown && !_this.refDropdown.contains(e.target)) { _this.fieldSelectHidden = true; } }; _this.setOriginalConditionFields = function (code) { var _this$props = _this.props, queryDataSet = _this$props.queryDataSet, dataSet = _this$props.dataSet; if (!code) { if (queryDataSet) { _this.initConditionFields({ dataSet: queryDataSet, record: queryDataSet.get(0) }); } } else { _this.originalConditionFields = Array.isArray(code) ? code : [code]; } dataSet.setState(SELECTFIELDS, (0, _toConsumableArray2["default"])(_this.originalConditionFields)); }; /** * 勾选 * @param code */ _this.handleSelect = function (code) { var dataSet = _this.props.dataSet; var codes = Array.isArray(code) ? code : [code]; var selectFields = dataSet.getState(SELECTFIELDS) || []; dataSet.setState(SELECTFIELDS, (0, _uniq["default"])([].concat((0, _toConsumableArray2["default"])(selectFields), (0, _toConsumableArray2["default"])(codes)))); var shouldUpdate = dataSet.getState(SELECTFIELDS).length !== _this.originalConditionFields.length || !!(0, _difference["default"])((0, _mobx.toJS)(dataSet.getState(SELECTFIELDS)), (0, _mobx.toJS)(_this.originalConditionFields)).length; _this.setConditionStatus(shouldUpdate ? _enum2.RecordStatus.update : _enum2.RecordStatus.sync); }; /** * 取消勾选 * @param code */ _this.handleUnSelect = function (code) { var _this$props2 = _this.props, queryDataSet = _this$props2.queryDataSet, dataSet = _this$props2.dataSet; var codes = Array.isArray(code) ? code : [code]; if (queryDataSet) { var current = queryDataSet.current; if (current) { codes.forEach(function (name) { return current.set(name, undefined); }); } } var selectFields = dataSet.getState(SELECTFIELDS) || []; dataSet.setState(SELECTFIELDS, _pull["default"].apply(void 0, [(0, _toConsumableArray2["default"])(selectFields)].concat((0, _toConsumableArray2["default"])(codes)))); var shouldUpdate = dataSet.getState(SELECTFIELDS).length !== _this.originalConditionFields.length || !!(0, _difference["default"])((0, _mobx.toJS)(dataSet.getState(SELECTFIELDS)), (0, _mobx.toJS)(_this.originalConditionFields)).length; _this.setConditionStatus(shouldUpdate ? _enum2.RecordStatus.update : _enum2.RecordStatus.sync); }; (0, _mobx.runInAction)(function () { _this.fieldSelectHidden = true; _this.expand = true; }); return _this; } (0, _createClass2["default"])(TableDynamicFilterBar, [{ key: "prefixCls", get: function get() { var prefixCls = this.props.prefixCls; var getProPrefixCls = this.context.getProPrefixCls; return getProPrefixCls('table', prefixCls); } }, { key: "queryFields", get: function get() { var queryFields = this.props.queryFields; return queryFields.filter(function (component) { return !component.props.hidden; }); } }, { key: "componentDidMount", value: function componentDidMount() { var _this2 = this; var _this$props3 = this.props, fuzzyQueryOnly = _this$props3.fuzzyQueryOnly, queryDataSet = _this$props3.queryDataSet; if (!fuzzyQueryOnly) { this.processDataSetListener(true); document.addEventListener('click', this.handleClickOut); if (this.isSingleLineOpt() && this.refSingleWrapper) { var _this$refSingleWrappe = this.refSingleWrapper.getBoundingClientRect(), height = _this$refSingleWrappe.height; var _this$refSingleWrappe2 = this.refSingleWrapper.children[0].children[0].getBoundingClientRect(), childHeight = _this$refSingleWrappe2.height; (0, _mobx.runInAction)(function () { _this2.showExpandIcon = height > childHeight + 18; }); } } if (this.originalValue === undefined && queryDataSet && queryDataSet.current) { this.initConditionFields({ dataSet: queryDataSet, record: queryDataSet.current }); } } }, { key: "componentWillUnmount", value: function componentWillUnmount() { var fuzzyQueryOnly = this.props.fuzzyQueryOnly; if (!fuzzyQueryOnly) { document.removeEventListener('click', this.handleClickOut); this.processDataSetListener(false); } } }, { key: "processDataSetListener", value: function processDataSetListener(flag) { var _this$props4 = this.props, queryDataSet = _this$props4.queryDataSet, dataSet = _this$props4.dataSet; if (queryDataSet) { var handler = flag ? queryDataSet.addEventListener : queryDataSet.removeEventListener; var dsHandler = flag ? dataSet.addEventListener : dataSet.removeEventListener; handler.call(queryDataSet, _enum2.DataSetEvents.validate, this.handleDataSetValidate); handler.call(queryDataSet, _enum2.DataSetEvents.update, this.handleDataSetUpdate); handler.call(queryDataSet, _enum2.DataSetEvents.create, this.handleDataSetCreate); dsHandler.call(dataSet, _enum2.DataSetEvents.query, this.handleDataSetQuery); } } }, { key: "handleDataSetQuery", value: function () { var _handleDataSetQuery = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_ref) { var dataSet, res, conditionList, initQueryData; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: dataSet = _ref.dataSet; if (!(!dataSet.getState(MENURESULT) && this.tableFilterAdapter)) { _context.next = 13; break; } _context.next = 4; return this.initMenuDataSet(); case 4: res = dataSet.getState(MENURESULT); if (!(res && res.length && res.filter(function (menu) { return menu.defaultFlag; }).length)) { _context.next = 13; break; } conditionList = res.filter(function (menu) { return menu.defaultFlag; })[0].conditionList; initQueryData = {}; if (!(conditionList && conditionList.length)) { _context.next = 13; break; } (0, _map["default"])(conditionList, function (condition) { if (condition.comparator === 'EQUAL') { var fieldName = condition.fieldName, value = condition.value; initQueryData[fieldName] = parseValue(value); } }); if (!Object.keys(initQueryData).length) { _context.next = 13; break; } dataSet.query(); return _context.abrupt("return", false); case 13: case "end": return _context.stop(); } } }, _callee, this); })); function handleDataSetQuery(_x) { return _handleDataSetQuery.apply(this, arguments); } return handleDataSetQuery; }() /** * queryDataSet 查询前校验事件 触发展开动态字段 * @param dataSet 查询DS * @param result */ }, { key: "handleDataSetValidate", value: function () { var _handleDataSetValidate = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(_ref2) { var _this3 = this; var dataSet, result, refSingleWrapper; return _regenerator["default"].wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: dataSet = _ref2.dataSet, result = _ref2.result; _context2.next = 3; return result; case 3: if (_context2.sent) { _context2.next = 7; break; } (0, _mobx.runInAction)(function () { var current = dataSet.current; dataSet.fields.forEach(function (field, key) { if (!field.isValid(current)) { _this3.handleSelect(key); } }); _this3.expand = true; }); refSingleWrapper = this.refSingleWrapper; if (refSingleWrapper) { refSingleWrapper.style.height = ''; refSingleWrapper.style.overflow = ''; } case 7: case "end": return _context2.stop(); } } }, _callee2, this); })); function handleDataSetValidate(_x2) { return _handleDataSetValidate.apply(this, arguments); } return handleDataSetValidate; }() }, { key: "setConditionStatus", value: function setConditionStatus(value, orglValue) { var dataSet = this.props.dataSet; dataSet.setState(CONDITIONSTATUS, value); if (value === _enum2.RecordStatus.sync && orglValue) { this.originalValue = orglValue; } } /** * 筛选条件更新 触发表格查询 */ }, { key: "handleDataSetUpdate", value: function handleDataSetUpdate(_ref3) { var record = _ref3.record; var _this$props5 = this.props, dataSet = _this$props5.dataSet, queryDataSet = _this$props5.queryDataSet, _this$props5$onQuery = _this$props5.onQuery, onQuery = _this$props5$onQuery === void 0 ? _noop["default"] : _this$props5$onQuery, autoQuery = _this$props5.autoQuery; var status = _enum2.RecordStatus.update; if (record) { status = isEqualDynamicProps(this.originalValue, (0, _omit["default"])(record.toData(), ['__dirty']), queryDataSet, record) ? _enum2.RecordStatus.sync : _enum2.RecordStatus.update; } this.setConditionStatus(status); if (autoQuery) { dataSet.query(); onQuery(); } } /** * queryDS 新建,初始勾选值 */ }, { key: "handleDataSetCreate", value: function handleDataSetCreate() { var queryDataSet = this.props.queryDataSet; if (queryDataSet) { this.initConditionFields({ dataSet: queryDataSet, record: queryDataSet.current }); } } /** * 初始化勾选值、条件字段 * @param props */ }, { key: "initConditionFields", value: function initConditionFields(props) { var _this4 = this; var dataSet = props.dataSet, record = props.record; var originalValue = (0, _omit["default"])(record.toData(), ['__dirty']); var conditionData = Object.entries(originalValue); this.originalValue = originalValue; this.originalConditionFields = []; var fields = dataSet.fields; (0, _map["default"])(conditionData, function (data) { var name = data[0]; if (!fields.has(data[0]) && (0, _isObject["default"])(data[1]) && !(0, _isEmpty2["default"])(data[1]) && !(0, _isArray["default"])(data[1])) { name = "".concat(data[0], ".").concat(Object.keys(data[1])[0]); } if (isSelect(data) && !(dataSet.getState(SELECTFIELDS) || []).includes(name)) { var field = dataSet.getField(name); if (!field || !field.get('bind', record)) { _this4.originalConditionFields.push(name); _this4.handleSelect(name); } } }); } /** * 初始筛选条数据源状态 */ }, { key: "initMenuDataSet", value: function () { var _initMenuDataSet = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() { var _this5 = this; var _this$props6, queryDataSet, dataSet, dynamicFilterBar, searchCode, searchCodes, menuDataSet, conditionDataSet, optionDataSet, filterMenuDataSet, status, result, menuRecord, current; return _regenerator["default"].wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _this$props6 = this.props, queryDataSet = _this$props6.queryDataSet, dataSet = _this$props6.dataSet, dynamicFilterBar = _this$props6.dynamicFilterBar, searchCode = _this$props6.searchCode; searchCodes = dynamicFilterBar && dynamicFilterBar.searchCode || searchCode; if (!this.tableFilterAdapter) { _context3.next = 23; break; } menuDataSet = new _DataSet["default"]((0, _QuickFilterDataSet.QuickFilterDataSet)({ searchCode: searchCodes, queryDataSet: queryDataSet, tableFilterAdapter: this.tableFilterAdapter })); conditionDataSet = new _DataSet["default"]((0, _QuickFilterDataSet.ConditionDataSet)()); optionDataSet = new _DataSet["default"]({ selection: _enum2.DataSetSelection.single }); filterMenuDataSet = new _DataSet["default"]({ autoCreate: true, fields: [{ name: 'filterName', type: _enum2.FieldType.string, textField: 'searchName', valueField: 'searchId', options: optionDataSet, ignore: _enum2.FieldIgnore.always }] }); status = _enum2.RecordStatus.update; if (queryDataSet && queryDataSet.current) { status = isEqualDynamicProps(this.originalValue, (0, _omit["default"])(queryDataSet.current.toData(), ['__dirty']), queryDataSet, queryDataSet.current) ? _enum2.RecordStatus.sync : _enum2.RecordStatus.update; } // 初始化状态 dataSet.setState(MENUDATASET, menuDataSet); dataSet.setState(CONDITIONDATASET, conditionDataSet); dataSet.setState(OPTIONDATASET, optionDataSet); dataSet.setState(FILTERMENUDATASET, filterMenuDataSet); dataSet.setState(CONDITIONSTATUS, status); dataSet.setState(SEARCHTEXT, ''); _context3.next = 17; return menuDataSet.query(); case 17: result = _context3.sent; dataSet.setState(MENURESULT, result); if (optionDataSet) { optionDataSet.loadData(result); } menuRecord = menuDataSet.current; if (menuRecord) { conditionDataSet.loadData(menuRecord.get('conditionList')); } if (result && result.length) { (0, _mobx.runInAction)(function () { _this5.shouldLocateData = true; }); } else { current = filterMenuDataSet.current; if (current) current.set('filterName', undefined); (0, _mobx.runInAction)(function () { _this5.shouldLocateData = true; }); } case 23: return _context3.abrupt("return", true); case 24: case "end": return _context3.stop(); } } }, _callee3, this); })); function initMenuDataSet() { return _initMenuDataSet.apply(this, arguments); } return initMenuDataSet; }() /** * tableFilterSuffix 预留自定义区域 */ }, { key: "renderSuffix", value: function renderSuffix() { var _this$props7 = this.props, dynamicFilterBar = _this$props7.dynamicFilterBar, queryDataSet = _this$props7.queryDataSet, dataSet = _this$props7.dataSet, _this$props7$buttons = _this$props7.buttons, buttons = _this$props7$buttons === void 0 ? [] : _this$props7$buttons; var getConfig = this.context.getConfig; var prefixCls = this.prefixCls; var suffixes = dynamicFilterBar && dynamicFilterBar.suffixes || getConfig('tableFilterSuffix'); var children = []; var suffixesDom = null; var tableButtons = buttons.length ? /*#__PURE__*/_react["default"].createElement(_TableButtons["default"], { key: "toolbar", prefixCls: "".concat(prefixCls, "-dynamic-filter"), buttons: buttons }) : null; if (suffixes && suffixes.length) { suffixes.forEach(function (suffix) { if (suffix === 'filter') { children.push( /*#__PURE__*/_react["default"].createElement(_ColumnFilter["default"], { prefixCls: prefixCls })); } else if ( /*#__PURE__*/(0, _react.isValidElement)(suffix)) { children.push(suffix); } else if ((0, _isFunction["default"])(suffix)) { children.push(suffix({ queryDataSet: queryDataSet, dataSet: dataSet })); } }); suffixesDom = /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-dynamic-filter-bar-suffix") }, children); } return [tableButtons, suffixesDom]; } }, { key: "getPrefix", value: function getPrefix() { var _this$props8 = this.props, dynamicFilterBar = _this$props8.dynamicFilterBar, queryDataSet = _this$props8.queryDataSet, dataSet = _this$props8.dataSet; var prefixCls = this.prefixCls; var prefixes = dynamicFilterBar && dynamicFilterBar.prefixes; var children = []; if (prefixes && prefixes.length) { prefixes.forEach(function (prefix) { if ((0, _isString["default"])(prefix) && prefix === 'filter') { children.push( /*#__PURE__*/_react["default"].createElement(_ColumnFilter["default"], { prefixCls: prefixCls })); } else if ( /*#__PURE__*/(0, _react.isValidElement)(prefix)) { children.push(prefix); } else if ((0, _isFunction["default"])(prefix)) { children.push(prefix({ queryDataSet: queryDataSet, dataSet: dataSet })); } }); return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-dynamic-filter-bar-prefix") }, children), /*#__PURE__*/_react["default"].createElement("span", { className: "".concat(prefixCls, "-filter-search-divide") })); } return null; } /** * 注入 refEditors * @param element * @param name */ }, { key: "createFields", value: function createFields(element, name) { var _this6 = this; var props = { ref: function ref(node) { return _this6.refEditors.set(name, node); } }; return /*#__PURE__*/(0, _react.cloneElement)(element, props); } /** * 判断查询值是否为空 * @param value */ }, { key: "isEmpty", value: function isEmpty(value) { return (0, _mobx.isArrayLike)(value) ? !value.length : (0, _isEmpty3["default"])(value); } }, { key: "tableFilterAdapter", get: function get() { var _this$props9 = this.props, dynamicFilterBar = _this$props9.dynamicFilterBar, searchCode = _this$props9.searchCode; var getConfig = this.context.getConfig; var searchCodes = dynamicFilterBar && dynamicFilterBar.searchCode || searchCode; return searchCodes ? dynamicFilterBar && dynamicFilterBar.tableFilterAdapter || getConfig('tableFilterAdapter') : null; } /** * 是否单行操作 */ }, { key: "isSingleLineOpt", value: function isSingleLineOpt() { var fuzzyQuery = this.props.fuzzyQuery; return !(fuzzyQuery || this.tableFilterAdapter); } }, { key: "renderRefreshBtn", value: function renderRefreshBtn() { var prefixCls = this.prefixCls, dataSet = this.props.dataSet; return /*#__PURE__*/_react["default"].createElement("span", { className: "".concat(prefixCls, "-filter-menu-query"), onClick: function onClick(e) { e.stopPropagation(); dataSet.query(); } }, /*#__PURE__*/_react["default"].createElement(_tooltip["default"], { title: (0, _localeContext.$l)('Table', 'refresh') }, /*#__PURE__*/_react["default"].createElement(_icon["default"], { type: "refresh" }))); } /** * 渲染展开逻辑 * @param hidden 是否隐藏全部 */ }, { key: "getExpandNode", value: function getExpandNode(hidden) { var _this7 = this; var prefixCls = this.prefixCls, refreshBtn = this.props.refreshBtn; if (!this.showExpandIcon && !hidden) return refreshBtn ? this.renderRefreshBtn() : null; return /*#__PURE__*/_react["default"].createElement("span", { className: "".concat(prefixCls, "-filter-menu-expand"), onClick: function onClick() { var refSingleWrapper = _this7.refSingleWrapper; if (refSingleWrapper) { var _refSingleWrapper$get = refSingleWrapper.getBoundingClientRect(), height = _refSingleWrapper$get.height; var _refSingleWrapper$chi = refSingleWrapper.children[0].children[0].getBoundingClientRect(), childHeight = _refSingleWrapper$chi.height; (0, _mobx.runInAction)(function () { _this7.expand = hidden ? height <= 0 : height <= childHeight + 18; }); if (hidden && height) { // 收起全部 refSingleWrapper.style.display = 'none'; } else { refSingleWrapper.style.display = 'flex'; refSingleWrapper.style.height = ''; refSingleWrapper.style.overflow = ''; } if (height > childHeight + 18 && !hidden) { // 收起留一行高度 refSingleWrapper.style.height = (0, _UnitConvertor.pxToRem)(childHeight + 18, true) || ''; refSingleWrapper.style.overflow = 'hidden'; } else { refSingleWrapper.style.height = ''; refSingleWrapper.style.overflow = ''; } } } }, refreshBtn ? this.renderRefreshBtn() : null, this.expand ? /*#__PURE__*/_react["default"].createElement(_tooltip["default"], { title: (0, _localeContext.$l)('Table', 'collapse') }, /*#__PURE__*/_react["default"].createElement(_icon["default"], { type: "baseline-arrow_drop_up" })) : /*#__PURE__*/_react["default"].createElement(_tooltip["default"], { title: (0, _localeContext.$l)('Table', 'expand_button') }, /*#__PURE__*/_react["default"].createElement(_icon["default"], { type: "baseline-arrow_drop_down" }))); } /** * 渲染模糊搜索 */ }, { key: "getFuzzyQuery", value: function getFuzzyQuery() { var _this8 = this; var _this$props10 = this.props, dataSet = _this$props10.dataSet, dynamicFilterBar = _this$props10.dynamicFilterBar, fuzzyQuery = _this$props10.fuzzyQuery, fuzzyQueryPlaceholder = _this$props10.fuzzyQueryPlaceholder, _this$props10$onReset = _this$props10.onReset, onReset = _this$props10$onReset === void 0 ? _noop["default"] : _this$props10$onReset; var getConfig = this.context.getConfig; var prefixCls = this.prefixCls; var searchText = dynamicFilterBar && dynamicFilterBar.searchText || getConfig('tableFilterSearchText') || 'params'; var placeholder = fuzzyQueryPlaceholder || (0, _localeContext.$l)('Table', 'enter_search_content'); if (!fuzzyQuery) return null; return /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-filter-search") }, /*#__PURE__*/_react["default"].createElement(_textField["default"], { style: { width: 280 }, clearButton: true, placeholder: placeholder, prefix: /*#__PURE__*/_react["default"].createElement(_icon["default"], { type: "search" }), value: dataSet.getState(SEARCHTEXT), valueChangeAction: _enum3.ValueChangeAction.input, onChange: (0, _debounce["default"])(function (value) { (0, _mobx.runInAction)(function () { dataSet.setState(SEARCHTEXT, value || ''); }); dataSet.setQueryParameter(searchText, value); _this8.handleQuery(); }, 500), onClear: function onClear() { (0, _mobx.runInAction)(function () { dataSet.setState(SEARCHTEXT, ''); }); onReset(); } })); } /** * 渲染重置按钮 */ }, { key: "getResetButton", value: function getResetButton() { var _this9 = this; var _this$props11 = this.props, queryDataSet = _this$props11.queryDataSet, dataSet = _this$props11.dataSet, autoQueryAfterReset = _this$props11.autoQueryAfterReset, _this$props11$onReset = _this$props11.onReset, onReset = _this$props11$onReset === void 0 ? _noop["default"] : _this$props11$onReset; var prefixCls = this.prefixCls; return /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-filter-buttons") }, dataSet.getState(CONDITIONSTATUS) === _enum2.RecordStatus.update && /*#__PURE__*/_react["default"].createElement(_button["default"], { onClick: function onClick() { var shouldQuery = false; if (queryDataSet) { var current = queryDataSet.current; if (current) { shouldQuery = !isEqualDynamicProps(_this9.originalValue, (0, _omit["default"])(current.toData(), ['__dirty']), queryDataSet, current); current.reset(); dataSet.setState(SEARCHTEXT, ''); dataSet.setState(SELECTFIELDS, (0, _toConsumableArray2["default"])(_this9.originalConditionFields)); } } _this9.setConditionStatus(_enum2.RecordStatus.sync); onReset(); if (autoQueryAfterReset && shouldQuery) { _this9.handleQuery(); } } }, (0, _localeContext.$l)('Table', 'reset_button'))); } /** * 筛选头 * fuzzyQuery + quickFilterMenu + resetButton + buttons */ }, { key: "getFilterMenu", value: function getFilterMenu() { var _this$props12 = this.props, queryFields = _this$props12.queryFields, queryDataSet = _this$props12.queryDataSet, dataSet = _this$props12.dataSet, dynamicFilterBar = _this$props12.dynamicFilterBar, searchCode = _this$props12.searchCode, autoQuery = _this$props12.autoQuery, fuzzyQueryOnly = _this$props12.fuzzyQueryOnly; var prefixCls = this.prefixCls; var prefix = this.getPrefix(); var suffix = this.renderSuffix(); var fuzzyQuery = this.getFuzzyQuery(); if (fuzzyQueryOnly) { return /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-filter-menu") }, prefix, fuzzyQuery, suffix); } if (queryDataSet && queryFields.length) { var searchCodes = dynamicFilterBar && dynamicFilterBar.searchCode || searchCode; var quickFilterMenu = this.tableFilterAdapter && searchCodes ? /*#__PURE__*/_react["default"].createElement(_QuickFilterMenuContext["default"].Provider, { value: { autoQuery: autoQuery, prefixCls: prefixCls, expand: this.expand, dataSet: dataSet, queryDataSet: queryDataSet, onChange: this.handleSelect, conditionStatus: dataSet.getState(CONDITIONSTATUS), onStatusChange: this.setConditionStatus, selectFields: dataSet.getState(SELECTFIELDS), onOriginalChange: this.setOriginalConditionFields, menuDataSet: dataSet.getState(MENUDATASET), filterMenuDataSet: dataSet.getState(FILTERMENUDATASET), conditionDataSet: dataSet.getState(CONDITIONDATASET), optionDataSet: dataSet.getState(OPTIONDATASET), shouldLocateData: this.shouldLocateData } }, /*#__PURE__*/_react["default"].createElement(_QuickFilterMenu["default"], null)) : null; var resetButton = this.isSingleLineOpt() || this.tableFilterAdapter ? null : this.getResetButton(); return /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-filter-menu") }, prefix, fuzzyQuery, quickFilterMenu, resetButton, this.isSingleLineOpt() ? null : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("span", { className: "".concat(prefixCls, "-filter-search-divide") }), this.getExpandNode(true)), suffix); } } /** * 查询字段初始顺序 * 排除动态属性影响 */ }, { key: "originOrderQueryFields", get: function get() { var queryDataSet = this.props.queryDataSet; var result = []; if (queryDataSet) { var fields = queryDataSet.fields, _queryDataSet$props$f = queryDataSet.props.fields, propFields = _queryDataSet$props$f === void 0 ? [] : _queryDataSet$props$f; var cloneFields = fields.toJS(); propFields.forEach(function (_ref4) { var name = _ref4.name; if (name) { var field = cloneFields.get(name); if (field && !field.get('bind') && !field.get('name').includes('__tls')) { result.push(field); } } }); } return result; } /** * 渲染查询条 */ }, { key: "getQueryBar", value: function getQueryBar() { var _this10 = this; var _this$props13 = this.props, _this$props13$queryFi = _this$props13.queryFieldsLimit, queryFieldsLimit = _this$props13$queryFi === void 0 ? 3 : _this$props13$queryFi, queryFields = _this$props13.queryFields, queryDataSet = _this$props13.queryDataSet, dataSet = _this$props13.dataSet, fuzzyQueryOnly = _this$props13.fuzzyQueryOnly; var prefixCls = this.prefixCls; var selectFields = dataSet.getState(SELECTFIELDS) || []; if (fuzzyQueryOnly) { return /*#__PURE__*/_react["default"].createElement("div", { key: "query_bar", className: "".concat(prefixCls, "-dynamic-filter-bar") }, this.getFilterMenu()); } if (queryDataSet && queryFields.length) { var singleLineModeAction = this.isSingleLineOpt() ? /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-dynamic-filter-bar-single-action") }, this.getResetButton(), this.getExpandNode(false)) : null; return /*#__PURE__*/_react["default"].createElement("div", { key: "query_bar", className: "".concat(prefixCls, "-dynamic-filter-bar") }, this.getFilterMenu(), /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "--dynamic-filter-single-wrapper"), ref: function ref(node) { return _this10.refSingleWrapper = node; } }, /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-filter-wrapper") }, this.queryFields.slice(0, queryFieldsLimit).map(function (element) { var _element$props = element.props, name = _element$props.name, hidden = _element$props.hidden; if (hidden) return null; var queryField = queryDataSet.getField(name); var itemClassName = "".concat(prefixCls, "-filter-item"); return /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-filter-content"), key: name, onClick: function onClick() { var editor = _this10.refEditors.get(name); if (editor) { _this10.refEditors.get(name).focus(); } } }, /*#__PURE__*/_react["default"].createElement("span", { className: "".concat(prefixCls, "-filter-label") }, queryField && queryField.get('label')), /*#__PURE__*/_react["default"].createElement("span", { className: itemClassName }, _this10.createFields(element, name))); }), this.queryFields.slice(queryFieldsLimit).map(function (element) { var _element$props2 = element.props, name = _element$props2.name, hidden = _element$props2.hidden; if (hidden) return null; var queryField = queryDataSet.getField(name); if (selectFields.includes(name)) { return /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-filter-content"), key: name, onClick: function onClick() { var editor = _this10.refEditors.get(name); if (editor) { _this10.refEditors.get(name).focus(); } } }, /*#__PURE__*/_react["default"].createElement(_icon["default"], { type: "cancel", className: "".concat(prefixCls, "-filter-item-close"), onClick: function onClick() { _this10.handleUnSelect([name]); } }), /*#__PURE__*/_react["default"].createElement("span", { className: "".concat(prefixCls, "-filter-label") }, queryField && queryField.get('label')), /*#__PURE__*/_react["default"].createElement("span", { className: "".concat(prefixCls, "-filter-item") }, _this10.createFields(element, name))); } return null; }), queryFieldsLimit < this.queryFields.length && /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-filter-item") }, /*#__PURE__*/_react["default"].createElement(_dropdown["default"], { visible: !this.fieldSelectHidden, overlay: /*#__PURE__*/_react["default"].createElement("div", { role: "none", ref: function ref(node) { return _this10.refDropdown = node; }, onClick: function onClick(e) { e.stopPropagation(); } }, /*#__PURE__*/_react["default"].createElement(_FieldList["default"], { groups: [{ title: (0, _localeContext.$l)('Table', 'predefined_fields'), fields: this.originOrderQueryFields.slice(queryFieldsLimit) }], prefixCls: "".concat(prefixCls, "-filter-list") || 'c7n-pro-table-filter-list', closeMenu: function closeMenu() { return (0, _mobx.runInAction)(function () { return _this10.fieldSelectHidden = true; }); }, value: selectFields, onSelect: this.handleSelect, onUnSelect: this.handleUnSelect })), trigger: [_enum.Action.click] }, /*#__PURE__*/_react["default"].createElement("span", { className: "".concat(prefixCls, "-add-fields"), onClick: function onClick(e) { e.nativeEvent.stopImmediatePropagation(); (0, _mobx.runInAction)(function () { _this10.fieldSelectHidden = false; }); } }, /*#__PURE__*/_react["default"].createElement(_icon["default"], { type: "add" }), (0, _localeContext.$l)('Table', 'add_filter'))))), singleLineModeAction)); } return null; } }, { key: "handleQuery", value: function handleQuery(collapse) { var _this$props14 = this.props, dataSet = _this$props14.dataSet, _this$props14$onQuery = _this$props14.onQuery, onQuery = _this$props14$onQuery === void 0 ? _noop["default"] : _this$props14$onQuery, autoQuery = _this$props14.autoQuery; if (autoQuery) { dataSet.query(); } if (!collapse) { onQuery(); } } }, { key: "render", value: function render() { var _this$props15 = this.props, summaryBar = _this$props15.summaryBar, buttons = _this$props15.buttons; var prefixCls = this.prefixCls; var queryBar = this.getQueryBar(); if (queryBar) { return [queryBar, summaryBar]; } return /*#__PURE__*/_react["default"].createElement(_TableButtons["default"], { key: "toolbar", prefixCls: "".concat(prefixCls, "-dynamic-filter-buttons"), buttons: buttons }, summaryBar); } }], [{ key: "contextType", get: function get() { return _ConfigContext["default"]; } }]); return TableDynamicFilterBar; }(_react.Component); TableDynamicFilterBar.defaultProps = { queryFieldsLimit: 3, autoQueryAfterReset: true, fuzzyQuery: true, fuzzyQueryOnly: false, autoQuery: true, refreshBtn: true, buttons: [] }; (0, _tslib.__decorate)([_mobx.observable], TableDynamicFilterBar.prototype, "moreFields", void 0); (0, _tslib.__decorate)([_mobx.observable], TableDynamicFilterBar.prototype, "fieldSelectHidden", void 0); (0, _tslib.__decorate)([_mobx.observable], TableDynamicFilterBar.prototype, "expand", void 0); (0, _tslib.__decorate)([_mobx.observable], TableDynamicFilterBar.prototype, "searchText", void 0); (0, _tslib.__decorate)([_mobx.observable], TableDynamicFilterBar.prototype, "shouldLocateData", void 0); (0, _tslib.__decorate)([_mobx.observable], TableDynamicFilterBar.prototype, "showExpandIcon", void 0); (0, _tslib.__decorate)([_mobx.action], TableDynamicFilterBar.prototype, "handleClickOut", void 0); (0, _tslib.__decorate)([_autobind["default"]], TableDynamicFilterBar.prototype, "handleDataSetQuery", null); (0, _tslib.__decorate)([_autobind["default"]], TableDynamicFilterBar.prototype, "handleDataSetValidate", null); (0, _tslib.__decorate)([_autobind["default"]], TableDynamicFilterBar.prototype, "setConditionStatus", null); (0, _tslib.__decorate)([_mobx.action], TableDynamicFilterBar.prototype, "setOriginalConditionFields", void 0); (0, _tslib.__decorate)([_autobind["default"]], TableDynamicFilterBar.prototype, "handleDataSetUpdate", null); (0, _tslib.__decorate)([_autobind["default"]], TableDynamicFilterBar.prototype, "handleDataSetCreate", null); (0, _tslib.__decorate)([_mobx.action], TableDynamicFilterBar.prototype, "initConditionFields", null); (0, _tslib.__decorate)([_autobind["default"]], TableDynamicFilterBar.prototype, "initMenuDataSet", null); (0, _tslib.__decorate)([_mobx.action], TableDynamicFilterBar.prototype, "handleSelect", void 0); (0, _tslib.__decorate)([_mobx.action], TableDynamicFilterBar.prototype, "handleUnSelect", void 0); (0, _tslib.__decorate)([_autobind["default"]], TableDynamicFilterBar.prototype, "handleQuery", null); TableDynamicFilterBar = (0, _tslib.__decorate)([_mobxReact.observer], TableDynamicFilterBar); var _default = TableDynamicFilterBar; exports["default"] = _default; //# sourceMappingURL=TableDynamicFilterBar.js.map