linkmore-design
Version:
🌈 🚀lm组件库。🚀
204 lines (194 loc) • 4.26 kB
JavaScript
;
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;