linkmore-design
Version:
🌈 🚀lm组件库。🚀
81 lines (76 loc) • 2.79 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 _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;