UNPKG

choerodon-ui

Version:

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

308 lines (248 loc) 10.4 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"] = void 0; var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _react = _interopRequireWildcard(require("react")); var _mobx = require("mobx"); var _mobxReactLite = require("mobx-react-lite"); var _map = _interopRequireDefault(require("lodash/map")); var _noop = _interopRequireDefault(require("lodash/noop")); var _omit = _interopRequireDefault(require("lodash/omit")); var _localeContext = require("../../../locale-context"); var _select = _interopRequireDefault(require("../../../select")); var _Record = _interopRequireDefault(require("../../../data-set/Record")); var _enum = require("../../../data-set/enum"); var _singleton = require("../../../tooltip/singleton"); var _util = _interopRequireDefault(require("../../../overflow-tip/util")); var _TableComboBar = require("../TableComboBar"); var _TableDynamicFilterBar = require("../TableDynamicFilterBar"); var _QuickFilterMenuContext = _interopRequireDefault(require("./QuickFilterMenuContext")); /** * 快速筛选下拉 */ var QuickFilterMenu = function QuickFilterMenu() { var _useContext = (0, _react.useContext)(_QuickFilterMenuContext["default"]), tempQueryFields = _useContext.tempQueryFields, autoQuery = _useContext.autoQuery, dataSet = _useContext.dataSet, menuDataSet = _useContext.menuDataSet, prefixCls = _useContext.prefixCls, queryDataSet = _useContext.queryDataSet, filterMenuDataSet = _useContext.filterMenuDataSet, conditionDataSet = _useContext.conditionDataSet, _useContext$onChange = _useContext.onChange, onChange = _useContext$onChange === void 0 ? _noop["default"] : _useContext$onChange, _useContext$onStatusC = _useContext.onStatusChange, onStatusChange = _useContext$onStatusC === void 0 ? _noop["default"] : _useContext$onStatusC, _useContext$onOrigina = _useContext.onOriginalChange, onOriginalChange = _useContext$onOrigina === void 0 ? _noop["default"] : _useContext$onOrigina, shouldLocateData = _useContext.shouldLocateData, initSearchId = _useContext.initSearchId, _useContext$filterCal = _useContext.filterCallback, filterCallback = _useContext$filterCal === void 0 ? _noop["default"] : _useContext$filterCal, _useContext$filterOpt = _useContext.filterOptionRenderer, filterOptionRenderer = _useContext$filterOpt === void 0 ? _noop["default"] : _useContext$filterOpt, tableStore = _useContext.tableStore; /** * queryDS 筛选赋值并更新初始勾选项 * @param init */ var conditionAssign = function conditionAssign(init) { onOriginalChange(); var current = menuDataSet.current; var shouldQuery = false; if (current) { var conditionList = current.get('personalFilter') && (0, _TableDynamicFilterBar.parseValue)(current.get('personalFilter')); var initData = {}; if (tempQueryFields) { (0, _mobx.runInAction)(function () { queryDataSet.fields = tempQueryFields; }); } var currentQueryRecord = queryDataSet.current; if (conditionList && conditionList.length) { (0, _map["default"])(conditionList, function (condition) { var fieldName = condition.fieldName, value = condition.value; initData[fieldName] = (0, _TableDynamicFilterBar.parseValue)(value); onChange(fieldName); }); if (!dataSet.getState(_TableComboBar.RESETQUERYFIELDS)) { onOriginalChange(Object.keys(initData)); var emptyRecord = new _Record["default"]((0, _objectSpread2["default"])({}, initData), queryDataSet); dataSet.setState(_TableComboBar.SELECTFIELDS, Object.keys(initData)); shouldQuery = !(0, _TableDynamicFilterBar.isEqualDynamicProps)(initData, currentQueryRecord ? (0, _omit["default"])(currentQueryRecord.toData(true), ['__dirty']) : {}, queryDataSet, currentQueryRecord); (0, _mobx.runInAction)(function () { queryDataSet.records.push(emptyRecord); queryDataSet.current = emptyRecord; }); onStatusChange(_enum.RecordStatus.sync, emptyRecord.toData()); } } else { shouldQuery = !(0, _TableDynamicFilterBar.isEqualDynamicProps)(initData, currentQueryRecord ? (0, _omit["default"])(currentQueryRecord.toData(true), ['__dirty']) : {}, queryDataSet, currentQueryRecord); var _emptyRecord = new _Record["default"]({}, queryDataSet); dataSet.setState(_TableComboBar.SELECTFIELDS, []); (0, _mobx.runInAction)(function () { queryDataSet.records.push(_emptyRecord); queryDataSet.current = _emptyRecord; }); onStatusChange(_enum.RecordStatus.sync); } dataSet.setState(_TableComboBar.RESETQUERYFIELDS, false); var customizedColumn = current.get('personalColumn') && (0, _TableDynamicFilterBar.parseValue)(current.get('personalColumn')); if (tableStore && customizedColumn) { (0, _mobx.runInAction)(function () { var newCustomized = { columns: (0, _objectSpread2["default"])({}, customizedColumn) }; tableStore.tempCustomized = { columns: {} }; tableStore.saveCustomized(newCustomized); tableStore.initColumns(); }); } if (!init && shouldQuery && autoQuery) { dataSet.query(); } } }; var handleQueryReset = function handleQueryReset() { if (filterMenuDataSet && filterMenuDataSet.current && filterMenuDataSet.current.get('filterName')) { // 筛选项重置重新赋值 conditionAssign(); } else { /** * 未选择或清除筛选项 * 重置初始勾选项及初始赋值 */ queryDataSet.locate(0); var first = queryDataSet.get(0); if (first) { first.reset(); } onOriginalChange(); if (autoQuery) { dataSet.query(); } } onStatusChange(_enum.RecordStatus.sync); }; /** * 定位数据源 * @param searchId * @param init 初始化 */ var locateData = function locateData(searchId, init) { var current = filterMenuDataSet.current; if (searchId) { filterCallback(searchId); menuDataSet.locate(menuDataSet.findIndex(function (menu) { return menu.get('searchId').toString() === searchId.toString(); })); var menuRecord = menuDataSet.current; if (menuRecord) { var conditionList = menuRecord.get('personalFilter') && (0, _TableDynamicFilterBar.parseValue)(menuRecord.get('personalFilter')); conditionDataSet.loadData(conditionList); } if (current) { current.set('filterName', searchId); } conditionAssign(init); } else if (searchId === null) { handleQueryReset(); } else if (menuDataSet.length) { menuDataSet.locate(0); var _menuRecord = menuDataSet.current; if (_menuRecord) { var _conditionList = _menuRecord.get('personalFilter') && (0, _TableDynamicFilterBar.parseValue)(_menuRecord.get('personalFilter')); conditionDataSet.loadData(_conditionList); if (current) { current.set('filterName', _menuRecord.get('searchId')); } var customizedColumn = _menuRecord.get('personalColumn') && (0, _TableDynamicFilterBar.parseValue)(_menuRecord.get('personalColumn')); if (tableStore) { (0, _mobx.runInAction)(function () { var newCustomized = { columns: (0, _objectSpread2["default"])({}, customizedColumn) }; tableStore.tempCustomized = { columns: {} }; tableStore.saveCustomized(newCustomized); tableStore.initColumns(); }); } } conditionAssign(init); } else if (current) { current.set('filterName', undefined); } }; var handleChange = function handleChange(value) { var current = queryDataSet.current; if (current) { current.reset(); } locateData(value); }; (0, _react.useEffect)(function () { if (shouldLocateData) { locateData(initSearchId, true); } }, [shouldLocateData, initSearchId]); /** * 渲染下拉选项 * @param record * @param text */ var optionRenderer = function optionRenderer(_ref) { var value = _ref.value, text = _ref.text; var menuRecord = menuDataSet.find(function (menu) { return menu.get('searchId').toString() === value.toString(); }); var icon = menuRecord && menuRecord.get('searchIcon'); return /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-combo-filter-menu-option") }, /*#__PURE__*/_react["default"].createElement("span", { className: "".concat(prefixCls, "-combo-filter-menu-option-content"), onMouseEnter: function onMouseEnter(e) { var currentTarget = e.currentTarget; if ((0, _util["default"])(currentTarget)) { (0, _singleton.show)(currentTarget, { title: text }); } }, onMouseLeave: function onMouseLeave() { return (0, _singleton.hide)(); } }, filterOptionRenderer(value, text, icon) || text)); }; return /*#__PURE__*/_react["default"].createElement(_select["default"], { isFlat: true, placeholder: (0, _localeContext.$l)('Table', 'fast_filter'), className: "".concat(prefixCls, "-combo-filterName-select"), popupCls: "".concat(prefixCls, "-combo-filterName-select-content"), dataSet: filterMenuDataSet, name: "filterName", dropdownMatchSelectWidth: false, dropdownMenuStyle: { width: '1.72rem' }, optionRenderer: optionRenderer, onChange: handleChange, notFoundContent: (0, _localeContext.$l)('Table', 'no_save_filter'), clearButton: false, searchable: false }); }; QuickFilterMenu.displayName = 'QuickFilterMenu'; var _default = (0, _mobxReactLite.observer)(QuickFilterMenu); exports["default"] = _default; //# sourceMappingURL=QuickFilterMenu.js.map