UNPKG

linkmore-design

Version:

🌈 🚀lm组件库。🚀

98 lines (96 loc) 4.46 kB
"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;