linkmore-design
Version:
🌈 🚀lm组件库。🚀
98 lines (96 loc) • 4.46 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _ahooks = require("ahooks");
var _omit = _interopRequireDefault(require("lodash/omit"));
var _react = _interopRequireWildcard(require("react"));
var _form = _interopRequireDefault(require("../../../form"));
var _constants = require("../../constants");
var _controls = _interopRequireDefault(require("../../controls"));
var _utils = require("../../utils");
const ValueItem = ({
name,
dataSource
}) => {
const form = _form.default.useFormInstance();
// 动态的字段 DYNAMIC_ENUM
const basicItem = _form.default.useWatch([_constants.FIELD_ENUM.BASIC, _constants.FIELD_ENUM.CONDITIONS, name]) || {};
// 从来源数据取配置参数: onOpenChange…
const itemProps = (0, _react.useMemo)(() => {
let origin = basicItem;
if (Array.isArray(dataSource)) {
origin = dataSource.find(v => v[_constants.DYNAMIC_ENUM.FIELD_NAME] === basicItem[_constants.DYNAMIC_ENUM.FIELD_NAME]);
}
return (0, _omit.default)(origin, [_constants.DYNAMIC_ENUM.FIELD_NAME, _constants.DYNAMIC_ENUM.FIELD_TYPE, _constants.DYNAMIC_ENUM.OPERATOR, _constants.DYNAMIC_ENUM.RELATION, _constants.DYNAMIC_ENUM.TABLE_OBJ]);
}, [dataSource, basicItem]);
const handleOpenChange = (0, _ahooks.useMemoizedFn)(open => {
const conditions = form.getFieldValue([_constants.FIELD_ENUM.BASIC, _constants.FIELD_ENUM.CONDITIONS]) || [];
const values = (0, _utils.getFilterKeyValue)(conditions);
itemProps.onOpenChange?.(open, values);
});
const shouldUpdate = (0, _ahooks.useMemoizedFn)(() => {
const updateFields = (0, _utils.flatDeepDeps)(basicItem[_constants.DYNAMIC_ENUM.FIELD_NAME], dataSource);
const conditions = form.getFieldValue([_constants.FIELD_ENUM.BASIC, _constants.FIELD_ENUM.CONDITIONS]) || [];
const resetConditions = (0, _utils.getUpdateResult)(updateFields, conditions);
if (resetConditions?.length) {
form.setFieldValue([_constants.FIELD_ENUM.BASIC, _constants.FIELD_ENUM.CONDITIONS], resetConditions);
}
});
const normalize = value => {
shouldUpdate();
if (Array.isArray(value) && !value.length) return undefined;
return value;
};
return /*#__PURE__*/_react.default.createElement(_form.default.Item, {
name: [name, _constants.DYNAMIC_ENUM.VALUE],
noStyle: true,
normalize: normalize
}, /*#__PURE__*/_react.default.createElement(_controls.default, (0, _extends2.default)({}, itemProps, {
onOpenChange: handleOpenChange
})));
};
const Basic = ({
dataSource
}) => {
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_form.default.Item, {
name: [_constants.FIELD_ENUM.BASIC, _constants.FIELD_ENUM.RELATION],
noStyle: true
}), /*#__PURE__*/_react.default.createElement(_form.default.List, {
name: [_constants.FIELD_ENUM.BASIC, _constants.FIELD_ENUM.CONDITIONS]
}, fields => fields.map(({
key,
name
}) => {
return /*#__PURE__*/_react.default.createElement(_react.Fragment, {
key: key
}, /*#__PURE__*/_react.default.createElement(_form.default.Item, {
name: [name, _constants.DYNAMIC_ENUM.FIELD_NAME],
noStyle: true
}), /*#__PURE__*/_react.default.createElement(_form.default.Item, {
name: [name, _constants.DYNAMIC_ENUM.FIELD_TYPE],
noStyle: true
}), /*#__PURE__*/_react.default.createElement(_form.default.Item, {
name: [name, _constants.DYNAMIC_ENUM.OPERATOR],
noStyle: true
}), /*#__PURE__*/_react.default.createElement(_form.default.Item, {
name: [name, _constants.DYNAMIC_ENUM.RELATION],
noStyle: true
}), /*#__PURE__*/_react.default.createElement(_form.default.Item, {
name: [name, _constants.DYNAMIC_ENUM.TABLE_OBJ],
noStyle: true
}), /*#__PURE__*/_react.default.createElement(_form.default.Item, {
name: [name, _constants.DYNAMIC_ENUM.TYPE],
noStyle: true
}), /*#__PURE__*/_react.default.createElement(ValueItem, {
name: name,
dataSource: dataSource
}));
})));
};
var _default = /*#__PURE__*/_react.default.memo(Basic);
exports.default = _default;