UNPKG

linkmore-design

Version:

🌈 🚀lm组件库。🚀

81 lines (76 loc) 2.79 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 _ahooks = require("ahooks"); var _lodash = require("lodash"); var _react = _interopRequireWildcard(require("react")); var _defaultConfig = _interopRequireDefault(require("./defaultConfig")); var _wrapper = _interopRequireDefault(require("./wrapper")); /** 合并参数 */ // const mergeProps = (props: ChartTableProps) => { // const { resizeConfig, checkboxConfig, rowConfig, fieldNames } = props // return { // resizeConfig: merge(defaultResizeConfig, resizeConfig), // checkboxConfig: merge(defaultCheckboxConfig, checkboxConfig), // rowConfig: merge(defaultRowConfig, rowConfig), // fieldNames: merge(defaultFieldNames, fieldNames), // ...props, // } // } function customizer(objValue, srcValue) { if ((0, _lodash.isArray)(objValue)) { return srcValue; } } /** 拓展行数据保存 */ const useSelection = ({ dataSource, checkboxConfig, id }) => { const [selectedRecords, setSelectedRecords] = (0, _react.useState)([]); const selectedResult = (0, _ahooks.useSelections)([], checkboxConfig.defaultSelected || []); const toggle = value => { const isSelected = selectedResult.selected?.includes(value); selectedResult.toggle(value); if (isSelected) { setSelectedRecords(o => o.filter(v => v[id] !== value)); } else { setSelectedRecords(o => [...o, dataSource.find(v => v[id] === value)]); } }; return { ...selectedResult, toggle, selectedRecords }; }; const ChartTable = (props, ref) => { /** 防止改变对象 object */ const mergeProps = (0, _lodash.mergeWith)((0, _lodash.cloneDeep)(_defaultConfig.default), props, customizer); const selectedResult = useSelection(mergeProps); /** 受控, 外部存在时调用外部参数 */ const checkboxConfigRes = { ...selectedResult, ...mergeProps.checkboxConfig }; const instance = { ...mergeProps, checkboxConfig: checkboxConfigRes }; // const instance = useReactive({ ...mergeProps, checkboxConfig: checkboxConfigRes }); // const instance = mergeWith(mergeProps, { checkboxConfig: selectedResult }) // console.log('mergeResult: ', instance) (0, _react.useImperativeHandle)(ref, () => ({ getInstance: () => instance, getCheckboxRecords: () => checkboxConfigRes.selectedRecords, getSelection: () => checkboxConfigRes })); return /*#__PURE__*/_react.default.createElement(_wrapper.default, instance); }; var _default = /*#__PURE__*/(0, _react.forwardRef)(ChartTable); exports.default = _default;