UNPKG

d-render

Version:

基于 Element Plus 二次封装的数据驱动渲染组件库 - 表单、搜索表单、表格配置化渲染

91 lines (88 loc) 3.06 kB
import { isArray, isInputEmpty } from '@d-render/shared'; var __defProp = Object.defineProperty; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; const isEmptyFilterValue = (value) => { if (isInputEmpty(value)) return true; return isArray(value) && value.length === 0; }; const resolveFilterMultiple = (config) => { var _a, _b; const configRecord = config; return (_b = (_a = config.filterMultiple) != null ? _a : configRecord["filter-multiple"]) != null ? _b : true; }; const resolveColumnKey = (key, config) => { var _a; return (_a = config.columnKey) != null ? _a : key; }; const collectFilterableColumns = (columns = []) => { return columns.reduce((acc, column) => { const { key, config } = column; if (config.hideItem) return acc; if (isArray(config.children) && config.children.length > 0) { acc.push(...collectFilterableColumns(config.children)); return acc; } if (config.filters !== void 0) { acc.push({ key, columnKey: resolveColumnKey(key, config), filterMultiple: resolveFilterMultiple(config) }); } return acc; }, []); }; const tableFilteredValuesToModel = (filteredValues = {}, filterableColumns = []) => { const model = {}; filterableColumns.forEach(({ key, columnKey, filterMultiple }) => { const values = filteredValues[key]; if (!(values == null ? void 0 : values.length)) return; model[columnKey] = filterMultiple ? [...values] : values[0]; }); return model; }; const modelToTableFilteredValues = (model = {}, filterableColumns = []) => { const filteredValues = {}; filterableColumns.forEach(({ key, columnKey, filterMultiple }) => { const value = model[columnKey]; if (isEmptyFilterValue(value)) { filteredValues[key] = []; return; } if (filterMultiple) { filteredValues[key] = isArray(value) ? value.map(String) : [String(value)]; return; } filteredValues[key] = [String(value)]; }); return filteredValues; }; const mergeTableFilterModel = (target, source, filterableColumns = []) => { const next = __spreadValues({}, target); filterableColumns.forEach(({ columnKey }) => { if (isEmptyFilterValue(source[columnKey])) { delete next[columnKey]; } else { next[columnKey] = source[columnKey]; } }); return next; }; export { collectFilterableColumns, mergeTableFilterModel, modelToTableFilteredValues, tableFilteredValuesToModel };