UNPKG

linkmore-design

Version:

🌈 🚀lm组件库。🚀

204 lines (194 loc) 4.26 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _FilterWrapper = _interopRequireDefault(require("./FilterWrapper")); var _filterFns = _interopRequireWildcard(require("../filterFns")); // 根文件 => 参数聚合 const reducer = (state, action) => { const { searchFilter, searchQuery, basicFilter, basicQuery, customFilter, customQuery, resize, rows, complexDrawer, valueDrawer, complexFilter, customDrawer, saveModal } = action; switch (action.type) { case 'changeSearchFilter': // 模糊查询 return { ...state, searchFilter }; case 'changeSearchQuery': // 模糊查询 return { ...state, searchQuery }; case 'changeBasicFilter': // 基础筛选数据改变 return { ...state, basicFilter }; case 'changeBasicQuery': // 基础筛选数据改变 return { ...state, basicQuery }; case 'changeCustomFilter': // 自定义筛选数据改变 return { ...state, customFilter: { ...state.customFilter, ...customFilter } }; case 'changeCustomQuery': // 自定义筛选数据改变 return { ...state, customQuery }; case 'changeRows': return { ...state, rows }; case 'windowResize': return { ...state, resize }; // 高级筛选 case 'changeComplexFilter': return { ...state, complexFilter }; case 'changeComplexDrawer': return { ...state, complexDrawer }; case 'changeValueDrawer': return { ...state, valueDrawer }; // 自定义筛选 case 'changeCustomDrawer': return { ...state, customDrawer }; case 'changeSaveModal': return { ...state, saveModal }; case 'reset': // 一键清空 return { ...state, searchFilter: {}, searchQuery: {}, basicFilter: {}, basicQuery: {}, complexFilter: {} }; default: throw new Error(); } }; // 仅在初始化时触发一次 const getInitialState = props => { const { searchFilter, searchQuery, basicFilter, basicQuery, customQuery, customFilter } = (0, _filterFns.initLocalization)(props); // 字段对应关系 basicQuery => filterQuery; customQuery => globalQuery; searchQuery => fuzzyQuery return { searchFilter, searchQuery, // 模糊查询 basicFilter, basicQuery, customFilter: { value: '', label: props?.locale?.unlimited || '不限', data: {}, ...customFilter }, // 选中的自定义筛选项 customQuery, complexFilter: {}, complexDrawer: { visible: false, data: {} }, valueDrawer: { visible: false, type: 'complex', data: {} }, customDrawer: { visible: false, type: 'edit', data: {} }, saveModal: { visible: false, data: {} } }; }; const LmFilterRoot = (props, ref) => { const initialState = (0, _react.useMemo)(() => getInitialState(props), []); const [state, dispatch] = (0, _react.useReducer)(reducer, initialState); // 获取核心Methods const { CoreMethods, RefMethods } = (0, _filterFns.default)({ state, dispatch, props }); // 组件实例 const instance = { ...props, ...CoreMethods, ...RefMethods, state, dispatch }; // 向外暴露出的方法 (0, _react.useImperativeHandle)(ref, () => ({ ...RefMethods })); return /*#__PURE__*/_react.default.createElement(_FilterWrapper.default, { instance: instance }); }; var _default = /*#__PURE__*/(0, _react.forwardRef)(LmFilterRoot); exports.default = _default;