UNPKG

linkmore-design

Version:

🌈 🚀lm组件库。🚀

91 lines (90 loc) 3.89 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import { useMemoizedFn } from 'ahooks'; import omit from 'lodash/omit'; import React, { Fragment, useMemo } from 'react'; import Form from "../../../form"; import { DYNAMIC_ENUM, FIELD_ENUM } from "../../constants"; import Controls from "../../controls"; import { flatDeepDeps, getFilterKeyValue, getUpdateResult } from "../../utils"; var ValueItem = function ValueItem(_ref) { var name = _ref.name, dataSource = _ref.dataSource; var form = Form.useFormInstance(); // 动态的字段 DYNAMIC_ENUM var basicItem = Form.useWatch([FIELD_ENUM.BASIC, FIELD_ENUM.CONDITIONS, name]) || {}; // 从来源数据取配置参数: onOpenChange… var itemProps = useMemo(function () { var origin = basicItem; if (Array.isArray(dataSource)) { origin = dataSource.find(function (v) { return v[DYNAMIC_ENUM.FIELD_NAME] === basicItem[DYNAMIC_ENUM.FIELD_NAME]; }); } return omit(origin, [DYNAMIC_ENUM.FIELD_NAME, DYNAMIC_ENUM.FIELD_TYPE, DYNAMIC_ENUM.OPERATOR, DYNAMIC_ENUM.RELATION, DYNAMIC_ENUM.TABLE_OBJ]); }, [dataSource, basicItem]); var handleOpenChange = useMemoizedFn(function (open) { var _itemProps$onOpenChan; var conditions = form.getFieldValue([FIELD_ENUM.BASIC, FIELD_ENUM.CONDITIONS]) || []; var values = getFilterKeyValue(conditions); (_itemProps$onOpenChan = itemProps.onOpenChange) === null || _itemProps$onOpenChan === void 0 ? void 0 : _itemProps$onOpenChan.call(itemProps, open, values); }); var shouldUpdate = useMemoizedFn(function () { var updateFields = flatDeepDeps(basicItem[DYNAMIC_ENUM.FIELD_NAME], dataSource); var conditions = form.getFieldValue([FIELD_ENUM.BASIC, FIELD_ENUM.CONDITIONS]) || []; var resetConditions = getUpdateResult(updateFields, conditions); if (resetConditions !== null && resetConditions !== void 0 && resetConditions.length) { form.setFieldValue([FIELD_ENUM.BASIC, FIELD_ENUM.CONDITIONS], resetConditions); } }); var normalize = function normalize(value) { shouldUpdate(); if (Array.isArray(value) && !value.length) return undefined; return value; }; return /*#__PURE__*/React.createElement(Form.Item, { name: [name, DYNAMIC_ENUM.VALUE], noStyle: true, normalize: normalize }, /*#__PURE__*/React.createElement(Controls, _extends({}, itemProps, { onOpenChange: handleOpenChange }))); }; var Basic = function Basic(_ref2) { var dataSource = _ref2.dataSource; return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Form.Item, { name: [FIELD_ENUM.BASIC, FIELD_ENUM.RELATION], noStyle: true }), /*#__PURE__*/React.createElement(Form.List, { name: [FIELD_ENUM.BASIC, FIELD_ENUM.CONDITIONS] }, function (fields) { return fields.map(function (_ref3) { var key = _ref3.key, name = _ref3.name; return /*#__PURE__*/React.createElement(Fragment, { key: key }, /*#__PURE__*/React.createElement(Form.Item, { name: [name, DYNAMIC_ENUM.FIELD_NAME], noStyle: true }), /*#__PURE__*/React.createElement(Form.Item, { name: [name, DYNAMIC_ENUM.FIELD_TYPE], noStyle: true }), /*#__PURE__*/React.createElement(Form.Item, { name: [name, DYNAMIC_ENUM.OPERATOR], noStyle: true }), /*#__PURE__*/React.createElement(Form.Item, { name: [name, DYNAMIC_ENUM.RELATION], noStyle: true }), /*#__PURE__*/React.createElement(Form.Item, { name: [name, DYNAMIC_ENUM.TABLE_OBJ], noStyle: true }), /*#__PURE__*/React.createElement(Form.Item, { name: [name, DYNAMIC_ENUM.TYPE], noStyle: true }), /*#__PURE__*/React.createElement(ValueItem, { name: name, dataSource: dataSource })); }); })); }; export default /*#__PURE__*/React.memo(Basic);