UNPKG

linkmore-design

Version:

🌈 🚀lm组件库。🚀

177 lines (169 loc) 5.54 kB
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2"; // 根文件 => 参数聚合 import React, { useReducer, useMemo, forwardRef, useImperativeHandle } from 'react'; import LmFilterWrapper from "./FilterWrapper"; import useCoreOptions, { initLocalization } from "../filterFns"; var reducer = function reducer(state, action) { var searchFilter = action.searchFilter, searchQuery = action.searchQuery, basicFilter = action.basicFilter, basicQuery = action.basicQuery, customFilter = action.customFilter, customQuery = action.customQuery, resize = action.resize, rows = action.rows, complexDrawer = action.complexDrawer, valueDrawer = action.valueDrawer, complexFilter = action.complexFilter, customDrawer = action.customDrawer, saveModal = action.saveModal; switch (action.type) { case 'changeSearchFilter': // 模糊查询 return _objectSpread(_objectSpread({}, state), {}, { searchFilter: searchFilter }); case 'changeSearchQuery': // 模糊查询 return _objectSpread(_objectSpread({}, state), {}, { searchQuery: searchQuery }); case 'changeBasicFilter': // 基础筛选数据改变 return _objectSpread(_objectSpread({}, state), {}, { basicFilter: basicFilter }); case 'changeBasicQuery': // 基础筛选数据改变 return _objectSpread(_objectSpread({}, state), {}, { basicQuery: basicQuery }); case 'changeCustomFilter': // 自定义筛选数据改变 return _objectSpread(_objectSpread({}, state), {}, { customFilter: _objectSpread(_objectSpread({}, state.customFilter), customFilter) }); case 'changeCustomQuery': // 自定义筛选数据改变 return _objectSpread(_objectSpread({}, state), {}, { customQuery: customQuery }); case 'changeRows': return _objectSpread(_objectSpread({}, state), {}, { rows: rows }); case 'windowResize': return _objectSpread(_objectSpread({}, state), {}, { resize: resize }); // 高级筛选 case 'changeComplexFilter': return _objectSpread(_objectSpread({}, state), {}, { complexFilter: complexFilter }); case 'changeComplexDrawer': return _objectSpread(_objectSpread({}, state), {}, { complexDrawer: complexDrawer }); case 'changeValueDrawer': return _objectSpread(_objectSpread({}, state), {}, { valueDrawer: valueDrawer }); // 自定义筛选 case 'changeCustomDrawer': return _objectSpread(_objectSpread({}, state), {}, { customDrawer: customDrawer }); case 'changeSaveModal': return _objectSpread(_objectSpread({}, state), {}, { saveModal: saveModal }); case 'reset': // 一键清空 return _objectSpread(_objectSpread({}, state), {}, { searchFilter: {}, searchQuery: {}, basicFilter: {}, basicQuery: {}, complexFilter: {} }); default: throw new Error(); } }; // 仅在初始化时触发一次 var getInitialState = function getInitialState(props) { var _props$locale; var _initLocalization = initLocalization(props), searchFilter = _initLocalization.searchFilter, searchQuery = _initLocalization.searchQuery, basicFilter = _initLocalization.basicFilter, basicQuery = _initLocalization.basicQuery, customQuery = _initLocalization.customQuery, customFilter = _initLocalization.customFilter; // 字段对应关系 basicQuery => filterQuery; customQuery => globalQuery; searchQuery => fuzzyQuery return { searchFilter: searchFilter, searchQuery: searchQuery, // 模糊查询 basicFilter: basicFilter, basicQuery: basicQuery, customFilter: _objectSpread({ value: '', label: (props === null || props === void 0 ? void 0 : (_props$locale = props.locale) === null || _props$locale === void 0 ? void 0 : _props$locale.unlimited) || '不限', data: {} }, customFilter), // 选中的自定义筛选项 customQuery: customQuery, complexFilter: {}, complexDrawer: { visible: false, data: {} }, valueDrawer: { visible: false, type: 'complex', data: {} }, customDrawer: { visible: false, type: 'edit', data: {} }, saveModal: { visible: false, data: {} } }; }; var LmFilterRoot = function LmFilterRoot(props, ref) { var initialState = useMemo(function () { return getInitialState(props); }, []); var _useReducer = useReducer(reducer, initialState), _useReducer2 = _slicedToArray(_useReducer, 2), state = _useReducer2[0], dispatch = _useReducer2[1]; // 获取核心Methods var _useCoreOptions = useCoreOptions({ state: state, dispatch: dispatch, props: props }), CoreMethods = _useCoreOptions.CoreMethods, RefMethods = _useCoreOptions.RefMethods; // 组件实例 var instance = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, props), CoreMethods), RefMethods), {}, { state: state, dispatch: dispatch }); // 向外暴露出的方法 useImperativeHandle(ref, function () { return _objectSpread({}, RefMethods); }); return /*#__PURE__*/React.createElement(LmFilterWrapper, { instance: instance }); }; export default /*#__PURE__*/forwardRef(LmFilterRoot);