UNPKG

tdesign-react

Version:
869 lines (865 loc) 37 kB
/** * tdesign v1.15.1 * (c) 2025 tdesign * @license MIT */ import { _ as _toConsumableArray } from '../_chunks/dep-87d110df.js'; import { _ as _typeof } from '../_chunks/dep-eca3a3de.js'; import { _ as _asyncToGenerator, r as regenerator } from '../_chunks/dep-a74cc5e4.js'; import { _ as _defineProperty } from '../_chunks/dep-cb0a3966.js'; import { _ as _slicedToArray } from '../_chunks/dep-48805ab8.js'; import React, { forwardRef, useState, useRef, useMemo, useEffect, useImperativeHandle } from 'react'; import { CheckCircleFilledIcon, CloseCircleFilledIcon, ErrorCircleFilledIcon } from 'tdesign-icons-react'; import { flattenDeep, get, isEqual, set, isString, isObject, isFunction, unset, merge } from 'lodash-es'; import useConfig from '../hooks/useConfig.js'; import useDefaultProps from '../hooks/useDefaultProps.js'; import useGlobalIcon from '../hooks/useGlobalIcon.js'; import { useLocaleReceiver } from '../locale/LocalReceiver.js'; import { ValidateStatus } from './const.js'; import { formItemDefaultProps } from './defaultProps.js'; import { useFormContext, useFormListContext } from './FormContext.js'; import { parseMessage, validate } from './formModel.js'; import { HOOK_MARK } from './hooks/useForm.js'; import useFormItemInitialData, { ctrlKeyMap } from './hooks/useFormItemInitialData.js'; import useFormItemStyle from './hooks/useFormItemStyle.js'; import { calcFieldValue } from './utils/index.js'; import '../_chunks/dep-026a4c6b.js'; import '../_chunks/dep-e29214cb.js'; import '../config-provider/ConfigContext.js'; import '../locale/zh_CN.js'; import 'dayjs'; import '../_chunks/dep-3c9ab31a.js'; import '../config-provider/index.js'; import '../config-provider/ConfigProvider.js'; import '../config-provider/type.js'; import '../_chunks/dep-1630b9b4.js'; import '../_chunks/dep-6b660ef0.js'; import '../_chunks/dep-83726008.js'; import '../_chunks/dep-f53c91cd.js'; import '../_chunks/dep-b908e1fe.js'; import '../tree/Tree.js'; import 'react-transition-group'; import 'classnames'; import '../tree/TreeItem.js'; import '../loading/index.js'; import '../loading/Loading.js'; import '../_chunks/dep-3a09424a.js'; import '../common/Portal.js'; import 'react-dom'; import '../hooks/useLayoutEffect.js'; import '../loading/gradient.js'; import '../_chunks/dep-c48e2ca1.js'; import '../hooks/useDomRefCallback.js'; import '../loading/defaultProps.js'; import '../loading/plugin.js'; import '../_util/react-render.js'; import '../common/PluginContainer.js'; import '../loading/style/index.js'; import '../loading/type.js'; import '../hooks/useRipple.js'; import '../hooks/useAnimation.js'; import '../checkbox/index.js'; import '../_chunks/dep-0030a252.js'; import '../_util/forwardRefWithStatics.js'; import 'hoist-non-react-statics'; import '../common/Check.js'; import '../_util/helper.js'; import '../hooks/useControlled.js'; import '../_util/noop.js'; import '../checkbox/defaultProps.js'; import '../checkbox/style/index.js'; import '../checkbox/type.js'; import '../tree/hooks/useTreeConfig.js'; import '../tree/hooks/useDraggable.js'; import '../tree/hooks/TreeDraggableContext.js'; import '../_util/createHookContext.js'; import '../hooks/usePersistFn.js'; import '../_util/composeRefs.js'; import '../tree/hooks/useControllable.js'; import '../tree/hooks/useStore.js'; import '../_chunks/dep-6b3ac896.js'; import 'mitt'; import '../_chunks/dep-1d1c579e.js'; import '../hooks/useUpdateLayoutEffect.js'; import '../hooks/useIsFirstRender.js'; import '../hooks/usePrevious.js'; import '../_util/parseTNode.js'; import '../tree/hooks/useTreeVirtualScroll.js'; import '../hooks/useVirtualScroll.js'; import '../hooks/useEventCallback.js'; import '../tree/defaultProps.js'; import '../upload/upload.js'; import '../upload/themes/NormalFile.js'; import '../_chunks/dep-8918af14.js'; import '../link/index.js'; import '../link/Link.js'; import '../link/defaultProps.js'; import '../link/style/index.js'; import '../upload/themes/DraggerFile.js'; import '../hooks/useCommonClassName.js'; import '../upload/hooks/useDrag.js'; import '../image-viewer/index.js'; import '../image-viewer/ImageViewer.js'; import '../_chunks/dep-90b6cb7a.js'; import '../_chunks/dep-46c9e4f5.js'; import '../hooks/useImagePreviewUrl.js'; import '../image/index.js'; import '../image/Image.js'; import '../_chunks/dep-4450afc0.js'; import '../image/defaultProps.js'; import '../space/index.js'; import '../space/Space.js'; import 'react-is'; import '../space/defaultProps.js'; import '../space/style/index.js'; import '../space/type.js'; import '../image/style/index.js'; import '../tooltip/index.js'; import '../tooltip/Tooltip.js'; import '../popup/index.js'; import '../popup/Popup.js'; import '../_util/ref.js'; import '../_util/isFragment.js'; import '../hooks/useAttach.js'; import '../hooks/useMutationObserver.js'; import '../hooks/useLatest.js'; import '../hooks/usePopper.js'; import '@popperjs/core'; import 'react-fast-compare'; import '../hooks/useWindowSize.js'; import '../popup/defaultProps.js'; import '../popup/hooks/useTrigger.js'; import '../_util/listener.js'; import '../popup/utils/transition.js'; import '../popup/PopupPlugin.js'; import '../popup/style/index.js'; import '../popup/type.js'; import '../tooltip/defaultProps.js'; import '../tooltip/TooltipLite.js'; import '../hooks/useSwitch.js'; import '../tooltip/style/index.js'; import '../tooltip/type.js'; import '../dialog/index.js'; import '../dialog/Dialog.js'; import '../hooks/useDeepEffect.js'; import '../hooks/useSetState.js'; import '../dialog/defaultProps.js'; import '../dialog/DialogCard.js'; import '../button/index.js'; import '../button/Button.js'; import '../button/defaultProps.js'; import '../button/style/index.js'; import '../button/type.js'; import '../dialog/hooks/useDialogDrag.js'; import '../hooks/useMouseEvent.js'; import '../dialog/hooks/useDialogEsc.js'; import '../dialog/hooks/useDialogPosition.js'; import '../dialog/hooks/useLockStyle.js'; import '../_chunks/dep-a3bde62f.js'; import '../dialog/utils.js'; import '../dialog/plugin.js'; import '../dialog/style/index.js'; import '../dialog/type.js'; import '../image-viewer/hooks/useIconMap.js'; import '../image-viewer/hooks/useIndex.js'; import '../image-viewer/hooks/useMirror.js'; import '../image-viewer/hooks/usePosition.js'; import '../image-viewer/hooks/useRotate.js'; import '../image-viewer/hooks/useScale.js'; import '../image-viewer/utils.js'; import '../image-viewer/defaultProps.js'; import '../image-viewer/hooks/useImageScale.js'; import '../image-viewer/hooks/useList.js'; import '../image-viewer/hooks/useViewerScale.js'; import '../image-viewer/style/index.js'; import '../upload/themes/ImageCard.js'; import '../upload/themes/MultipleFlowList.js'; import '../upload/hooks/useUpload.js'; import '../_chunks/dep-91b20286.js'; import '../upload/defaultProps.js'; import '../upload/themes/CustomFile.js'; import '../tag/CheckTag.js'; import '../_chunks/dep-55732ade.js'; import '../tag/defaultProps.js'; import '../tag/Tag.js'; import '../_chunks/dep-3c3d29db.js'; import '../tag-input/TagInput.js'; import '../hooks/useDragSorter.js'; import '../input/index.js'; import '../input/Input.js'; import '../input/InputGroup.js'; import '../input/defaultProps.js'; import '../input/useLengthLimit.js'; import '../input/style/index.js'; import '../input/type.js'; import '../tag-input/defaultProps.js'; import '../tag-input/useHover.js'; import '../tag-input/useTagList.js'; import '../tag/index.js'; import '../tag/CheckTagGroup.js'; import '../tag/style/index.js'; import '../tag/type.js'; import '../tag-input/useTagScroll.js'; import '../range-input/RangeInput.js'; import '../range-input/defaultProps.js'; import '../transfer/Transfer.js'; import '../transfer/TransferList.js'; import '../transfer/utils.js'; import '../pagination/index.js'; import '../pagination/Pagination.js'; import '../select/index.js'; import '../select/base/Select.js'; import '../common/FakeArrow.js'; import '../select-input/index.js'; import '../select-input/SelectInput.js'; import '../select-input/useSingle.js'; import '../select-input/useMultiple.js'; import '../tag-input/index.js'; import '../tag-input/style/index.js'; import '../tag-input/type.js'; import '../select-input/useOverlayInnerStyle.js'; import '../select-input/defaultProps.js'; import '../select-input/style/index.js'; import '../select-input/type.js'; import '../select/defaultProps.js'; import '../_chunks/dep-c7ed701c.js'; import '../select/base/OptionGroup.js'; import '../select/base/Option.js'; import '../select/base/PopupContent.js'; import '../select/hooks/usePanelVirtualScroll.js'; import '../select/style/index.js'; import '../select/type.js'; import '../input-number/index.js'; import '../input-number/InputNumber.js'; import '../input-number/useInputNumber.js'; import '../input-number/defaultProps.js'; import '../input-number/style/index.js'; import '../input-number/type.js'; import '../input-adornment/index.js'; import '../input-adornment/InputAdornment.js'; import '../input-adornment/style/index.js'; import '../input-adornment/type.js'; import '../pagination/hooks/useBoundaryJumper.js'; import '../pagination/hooks/usePrevNextJumper.js'; import '../pagination/hooks/usePageNumber.js'; import '../pagination/hooks/useTotal.js'; import '../pagination/validators.js'; import '../pagination/defaultProps.js'; import '../pagination/PaginationMini.js'; import '../pagination/style/index.js'; import '../pagination/type.js'; import '../transfer/defaultProps.js'; import '../date-picker/DateRangePicker.js'; import '../_chunks/dep-9036728c.js'; import '../_chunks/dep-dbf3be07.js'; import '../_chunks/dep-9649fdab.js'; import '../_chunks/dep-3538034b.js'; import '../range-input/index.js'; import '../range-input/RangeInputPopup.js'; import '../range-input/style/index.js'; import '../range-input/type.js'; import '../date-picker/defaultProps.js'; import '../date-picker/hooks/useRange.js'; import '../date-picker/hooks/useRangeValue.js'; import '../date-picker/panel/RangePanel.js'; import '../date-picker/panel/PanelContent.js'; import '../date-picker/base/Header.js'; import '../date-picker/base/Table.js'; import '../date-picker/base/Cell.js'; import '../time-picker/index.js'; import '../time-picker/TimePicker.js'; import '../_chunks/dep-f7770f5d.js'; import '../time-picker/hooks/useTimePickerTextConfig.js'; import '../hooks/useDebounce.js'; import '../hooks/usePropsRef.js'; import '../time-picker/TimeRangePicker.js'; import '../time-picker/panel/TimePickerPanel.js'; import '../time-picker/defaultProps.js'; import '../time-picker/style/index.js'; import '../time-picker/type.js'; import '../date-picker/panel/ExtraContent.js'; import '../date-picker/base/Footer.js'; import '../date-picker/hooks/useTableData.js'; import '../date-picker/hooks/useDisableDate.js'; import '../date-picker/utils.js'; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var FormItem = /*#__PURE__*/forwardRef(function (originalProps, ref) { var _useLocaleReceiver = useLocaleReceiver("form"), _useLocaleReceiver2 = _slicedToArray(_useLocaleReceiver, 2), locale = _useLocaleReceiver2[0], t = _useLocaleReceiver2[1]; var _useConfig = useConfig(), classPrefix = _useConfig.classPrefix, globalFormConfig = _useConfig.form; var _useGlobalIcon = useGlobalIcon({ CheckCircleFilledIcon: CheckCircleFilledIcon, CloseCircleFilledIcon: CloseCircleFilledIcon, ErrorCircleFilledIcon: ErrorCircleFilledIcon }), CheckCircleFilledIcon$1 = _useGlobalIcon.CheckCircleFilledIcon, CloseCircleFilledIcon$1 = _useGlobalIcon.CloseCircleFilledIcon, ErrorCircleFilledIcon$1 = _useGlobalIcon.ErrorCircleFilledIcon; var _useFormContext = useFormContext(), form = _useFormContext.form, colon = _useFormContext.colon, layout = _useFormContext.layout, requiredMarkFromContext = _useFormContext.requiredMark, requiredMarkPosition = _useFormContext.requiredMarkPosition, labelAlignFromContext = _useFormContext.labelAlign, labelWidthFromContext = _useFormContext.labelWidth, showErrorMessageFromContext = _useFormContext.showErrorMessage, disabledFromContext = _useFormContext.disabled, resetTypeFromContext = _useFormContext.resetType, rulesFromContext = _useFormContext.rules, statusIconFromContext = _useFormContext.statusIcon, errorMessage = _useFormContext.errorMessage, formMapRef = _useFormContext.formMapRef, onFormItemValueChange = _useFormContext.onFormItemValueChange; var _useFormListContext = useFormListContext(), formListName = _useFormListContext.name, formListRules = _useFormListContext.rules, formListMapRef = _useFormListContext.formListMapRef, formOfFormList = _useFormListContext.form; var props = useDefaultProps(originalProps, formItemDefaultProps); var children = props.children, style = props.style, label = props.label, name = props.name, status = props.status, tips = props.tips, help = props.help, valueFormat = props.valueFormat, initialData = props.initialData, className = props.className, shouldUpdate = props.shouldUpdate, successBorder = props.successBorder, _props$statusIcon = props.statusIcon, statusIcon = _props$statusIcon === void 0 ? statusIconFromContext : _props$statusIcon, _props$rules = props.rules, innerRules = _props$rules === void 0 ? getInnerRules(name, rulesFromContext, formListName, formListRules) : _props$rules, _props$labelWidth = props.labelWidth, labelWidth = _props$labelWidth === void 0 ? labelWidthFromContext : _props$labelWidth, _props$labelAlign = props.labelAlign, labelAlign = _props$labelAlign === void 0 ? labelAlignFromContext : _props$labelAlign, _props$requiredMark = props.requiredMark, requiredMark = _props$requiredMark === void 0 ? requiredMarkFromContext : _props$requiredMark; var _useFormItemInitialDa = useFormItemInitialData(name), getDefaultInitialData = _useFormItemInitialDa.getDefaultInitialData; var _useState = useState({}), _useState2 = _slicedToArray(_useState, 2), forceUpdate = _useState2[1]; var _useState3 = useState(void 0), _useState4 = _slicedToArray(_useState3, 2), freeShowErrorMessage = _useState4[0], setFreeShowErrorMessage = _useState4[1]; var _useState5 = useState([]), _useState6 = _slicedToArray(_useState5, 2), errorList = _useState6[0], setErrorList = _useState6[1]; var _useState7 = useState([]), _useState8 = _slicedToArray(_useState7, 2), successList = _useState8[0], setSuccessList = _useState8[1]; var _useState9 = useState("validating"), _useState0 = _slicedToArray(_useState9, 2), verifyStatus = _useState0[0], setVerifyStatus = _useState0[1]; var _useState1 = useState(false), _useState10 = _slicedToArray(_useState1, 2), resetValidating = _useState10[0], setResetValidating = _useState10[1]; var _useState11 = useState(false), _useState12 = _slicedToArray(_useState11, 2), needResetField = _useState12[0], setNeedResetField = _useState12[1]; var _useState13 = useState(function () { var fieldName = flattenDeep([formListName, name]); var storeValue = get(form === null || form === void 0 ? void 0 : form.store, fieldName); return storeValue !== null && storeValue !== void 0 ? storeValue : getDefaultInitialData({ children: children, initialData: initialData }); }), _useState14 = _slicedToArray(_useState13, 2), formValue = _useState14[0], setFormValue = _useState14[1]; var formItemRef = useRef(null); var innerFormItemsRef = useRef([]); var shouldEmitChangeRef = useRef(false); var isUpdatedRef = useRef(false); var shouldValidate = useRef(false); var valueRef = useRef(formValue); var errorListMapRef = useRef(/* @__PURE__ */new Map()); var isSameForm = useMemo(function () { return isEqual(form, formOfFormList); }, [form, formOfFormList]); var snakeName = [].concat(isSameForm ? formListName : void 0, name).filter(function (item) { return item !== void 0; }).toString(); var errorMessages = useMemo(function () { return errorMessage !== null && errorMessage !== void 0 ? errorMessage : globalFormConfig.errorMessage; }, [errorMessage, globalFormConfig]); var showErrorMessage = useMemo(function () { if (typeof freeShowErrorMessage === "boolean") return freeShowErrorMessage; if (typeof props.showErrorMessage === "boolean") return props.showErrorMessage; return showErrorMessageFromContext; }, [freeShowErrorMessage, props.showErrorMessage, showErrorMessageFromContext]); var _useFormItemStyle = useFormItemStyle({ className: className, help: help, tips: tips, snakeName: snakeName, status: status, successBorder: successBorder, errorList: errorList, successList: successList, layout: layout, verifyStatus: verifyStatus, label: label, labelWidth: labelWidth, labelAlign: labelAlign, requiredMark: requiredMark, requiredMarkPosition: requiredMarkPosition, showErrorMessage: showErrorMessage, innerRules: innerRules }), formItemClass = _useFormItemStyle.formItemClass, formItemLabelClass = _useFormItemStyle.formItemLabelClass, contentClass = _useFormItemStyle.contentClass, labelStyle = _useFormItemStyle.labelStyle, contentStyle = _useFormItemStyle.contentStyle, helpNode = _useFormItemStyle.helpNode, extraNode = _useFormItemStyle.extraNode; var updateFormValue = function updateFormValue(newVal) { var _form$getInternalHook, _form$getFieldsValue; var validate2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; var shouldEmitChange = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; var _ref = (form === null || form === void 0 || (_form$getInternalHook = form.getInternalHooks) === null || _form$getInternalHook === void 0 ? void 0 : _form$getInternalHook.call(form, HOOK_MARK)) || {}, setPrevStore = _ref.setPrevStore; setPrevStore === null || setPrevStore === void 0 || setPrevStore(form === null || form === void 0 || (_form$getFieldsValue = form.getFieldsValue) === null || _form$getFieldsValue === void 0 ? void 0 : _form$getFieldsValue.call(form, true)); shouldEmitChangeRef.current = shouldEmitChange; isUpdatedRef.current = true; shouldValidate.current = validate2; valueRef.current = newVal; var fieldName = [].concat(name); var fieldValue = formValue; if (formListName) { fieldName = [].concat(formListName, name); fieldValue = get(form === null || form === void 0 ? void 0 : form.store, fieldName); } fieldName = fieldName.filter(function (item) { return item !== void 0; }); if (!fieldName) return; if (isEqual(fieldValue, newVal)) return; set(form === null || form === void 0 ? void 0 : form.store, fieldName, newVal); setFormValue(newVal); }; function getInnerRules(name2, formRules, formListName2, formListRules2) { if (Array.isArray(name2)) { return get(formRules === null || formRules === void 0 ? void 0 : formRules[formListName2], name2) || get(formListRules2, name2) || get(formRules, name2.join(".")) || []; } return (formRules === null || formRules === void 0 ? void 0 : formRules[name2]) || formListRules2 || []; } var renderSuffixIcon = function renderSuffixIcon() { if (statusIcon === false) return null; var resultIcon = function resultIcon(iconSlot) { return /* @__PURE__ */React.createElement("span", { className: "".concat(classPrefix, "-form__status") }, iconSlot); }; var getDefaultIcon = function getDefaultIcon() { var iconMap = { success: /* @__PURE__ */React.createElement(CheckCircleFilledIcon$1, { size: "25px" }), error: /* @__PURE__ */React.createElement(CloseCircleFilledIcon$1, { size: "25px" }), warning: /* @__PURE__ */React.createElement(ErrorCircleFilledIcon$1, { size: "25px" }) }; if (verifyStatus === ValidateStatus.SUCCESS) { return resultIcon(iconMap[verifyStatus]); } if (errorList && errorList[0]) { var type = errorList[0].type || "error"; return resultIcon(iconMap[type]); } return null; }; if (/*#__PURE__*/React.isValidElement(statusIcon)) { return resultIcon(/*#__PURE__*/React.cloneElement(statusIcon, _objectSpread({ style: { color: "unset" } }, statusIcon.props))); } if (statusIcon === true) { return getDefaultIcon(); } return null; }; function analysisValidateResult(_x) { return _analysisValidateResult.apply(this, arguments); } function _analysisValidateResult() { _analysisValidateResult = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee(trigger) { var _result$rules; var result; return regenerator.wrap(function (_context) { while (1) switch (_context.prev = _context.next) { case 0: result = { successList: [], errorList: [], rules: [], resultList: [], allowSetValue: false }; result.rules = trigger === "all" ? innerRules : innerRules.filter(function (item) { return (item.trigger || "change") === trigger; }); if ((_result$rules = result.rules) !== null && _result$rules !== void 0 && _result$rules.length) { _context.next = 1; break; } setResetValidating(false); return _context.abrupt("return", result); case 1: result.allowSetValue = true; _context.next = 2; return validate(formValue, result.rules); case 2: result.resultList = _context.sent; result.errorList = result.resultList.filter(function (item) { return item.result !== true; }).map(function (item) { Object.keys(item).forEach(function (key) { if (!item.message && errorMessages[key]) { item.message = parseMessage(errorMessages[key], { validate: item[key], name: isString(label) ? label : String(name) }); } }); return item; }); result.successList = result.resultList.filter(function (item) { return item.result === true && item.message && item.type === "success"; }); return _context.abrupt("return", result); case 3: case "end": return _context.stop(); } }, _callee); })); return _analysisValidateResult.apply(this, arguments); } function validate$1() { return _validate.apply(this, arguments); } function _validate() { _validate = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee2() { var trigger, showErrorMessage2, _yield$analysisValida, innerSuccessList, innerErrorList, validateRules, resultList, allowSetValue, cacheErrorList, status2, _innerErrorList$, _cacheErrorList$, _args2 = arguments; return regenerator.wrap(function (_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: trigger = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : "all"; showErrorMessage2 = _args2.length > 1 ? _args2[1] : undefined; if (!innerFormItemsRef.current.length) { _context2.next = 1; break; } return _context2.abrupt("return", innerFormItemsRef.current.map(function (innerFormItem) { return innerFormItem === null || innerFormItem === void 0 ? void 0 : innerFormItem.validate(trigger, showErrorMessage2); })); case 1: setResetValidating(true); setFreeShowErrorMessage(showErrorMessage2); _context2.next = 2; return analysisValidateResult(trigger); case 2: _yield$analysisValida = _context2.sent; innerSuccessList = _yield$analysisValida.successList; innerErrorList = _yield$analysisValida.errorList; validateRules = _yield$analysisValida.rules; resultList = _yield$analysisValida.resultList; allowSetValue = _yield$analysisValida.allowSetValue; if (innerErrorList.length && trigger !== "all") { errorListMapRef.current.set(trigger, innerErrorList); } else { errorListMapRef.current["delete"](trigger); } if (!innerErrorList.length && trigger === "all") { errorListMapRef.current.clear(); } cacheErrorList = _toConsumableArray(errorListMapRef.current.values()).flat(); if (allowSetValue) { setSuccessList(innerSuccessList); setErrorList(cacheErrorList.length ? cacheErrorList : innerErrorList); } if (validateRules.length) { status2 = ValidateStatus.SUCCESS; if (innerErrorList.length || cacheErrorList.length) { status2 = (innerErrorList === null || innerErrorList === void 0 || (_innerErrorList$ = innerErrorList[0]) === null || _innerErrorList$ === void 0 ? void 0 : _innerErrorList$.type) || (cacheErrorList === null || cacheErrorList === void 0 || (_cacheErrorList$ = cacheErrorList[0]) === null || _cacheErrorList$ === void 0 ? void 0 : _cacheErrorList$.type) || ValidateStatus.ERROR; } setVerifyStatus(status2); } else { setVerifyStatus(ValidateStatus.VALIDATING); } if (needResetField) { resetHandler(); } setResetValidating(false); return _context2.abrupt("return", _defineProperty({}, snakeName, innerErrorList.length === 0 ? true : resultList)); case 3: case "end": return _context2.stop(); } }, _callee2); })); return _validate.apply(this, arguments); } function validateOnly() { return _validateOnly.apply(this, arguments); } function _validateOnly() { _validateOnly = _asyncToGenerator(/*#__PURE__*/regenerator.mark(function _callee3() { var trigger, _yield$analysisValida2, innerErrorList, resultList, _args3 = arguments; return regenerator.wrap(function (_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: trigger = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : "all"; _context3.next = 1; return analysisValidateResult(trigger); case 1: _yield$analysisValida2 = _context3.sent; innerErrorList = _yield$analysisValida2.errorList; resultList = _yield$analysisValida2.resultList; return _context3.abrupt("return", _defineProperty({}, snakeName, innerErrorList.length === 0 ? true : resultList)); case 2: case "end": return _context3.stop(); } }, _callee3); })); return _validateOnly.apply(this, arguments); } function handleItemBlur() { var filterRules = innerRules.filter(function (item) { return item.trigger === "blur"; }); filterRules.length && validate$1("blur"); } function getResetValue(resetType) { if (resetType === "initial") { return getDefaultInitialData({ children: children, initialData: initialData }); } var emptyValue; if (Array.isArray(formValue)) { emptyValue = []; } else if (isObject(formValue)) { emptyValue = {}; } else if (isString(formValue)) { emptyValue = ""; } return emptyValue; } function resetField(type) { if (typeof name === "undefined") return; var resetType = type || resetTypeFromContext; var resetValue = getResetValue(resetType); updateFormValue(resetValue, false); if (resetValidating) { setNeedResetField(true); } else { resetHandler(); } } function resetHandler() { setNeedResetField(false); setErrorList([]); setSuccessList([]); setVerifyStatus(ValidateStatus.VALIDATING); } function setField(field) { var value = field.value, status2 = field.status, validateMessage = field.validateMessage; if (typeof status2 !== "undefined") { setErrorList(validateMessage ? [validateMessage] : []); setSuccessList(validateMessage ? [validateMessage] : []); setNeedResetField(false); setVerifyStatus(status2); } if (typeof value !== "undefined") { updateFormValue(value, typeof status2 === "undefined" ? true : false, true); } } function setValidateMessage(validateMessage) { var _validateMessage$; if (!validateMessage || !Array.isArray(validateMessage)) return; if (validateMessage.length === 0) { setErrorList([]); setVerifyStatus(ValidateStatus.SUCCESS); return; } setErrorList(validateMessage); var status2 = (validateMessage === null || validateMessage === void 0 || (_validateMessage$ = validateMessage[0]) === null || _validateMessage$ === void 0 ? void 0 : _validateMessage$.type) || ValidateStatus.ERROR; setVerifyStatus(status2); } function getValidateMessage() { return errorList; } useEffect(function () { var _form$getInternalHook2; if (!shouldUpdate || !form) return; var _ref2 = (form === null || form === void 0 || (_form$getInternalHook2 = form.getInternalHooks) === null || _form$getInternalHook2 === void 0 ? void 0 : _form$getInternalHook2.call(form, HOOK_MARK)) || {}, getPrevStore = _ref2.getPrevStore, registerWatch = _ref2.registerWatch; var cancelRegister = registerWatch === null || registerWatch === void 0 ? void 0 : registerWatch(function () { var _form$getFieldsValue2; var currStore = (form === null || form === void 0 || (_form$getFieldsValue2 = form.getFieldsValue) === null || _form$getFieldsValue2 === void 0 ? void 0 : _form$getFieldsValue2.call(form, true)) || {}; var updateFlag = shouldUpdate; if (isFunction(shouldUpdate)) updateFlag = shouldUpdate(getPrevStore === null || getPrevStore === void 0 ? void 0 : getPrevStore(), currStore); if (updateFlag) forceUpdate({}); }); return cancelRegister; }, [shouldUpdate, form]); useEffect(function () { if (typeof name === "undefined") return; if (formListName && isSameForm) { formListMapRef.current.set(name, formItemRef); return function () { formListMapRef.current["delete"](name); unset(form === null || form === void 0 ? void 0 : form.store, name); }; } if (!formMapRef) return; formMapRef.current.set(name, formItemRef); return function () { formMapRef.current["delete"](name); unset(form === null || form === void 0 ? void 0 : form.store, name); }; }, [snakeName, formListName]); useEffect(function () { var _form$getInternalHook3, _form$getInternalHook4; form === null || form === void 0 || (_form$getInternalHook3 = form.getInternalHooks) === null || _form$getInternalHook3 === void 0 || (_form$getInternalHook3 = _form$getInternalHook3.call(form, HOOK_MARK)) === null || _form$getInternalHook3 === void 0 || (_form$getInternalHook4 = _form$getInternalHook3.notifyWatch) === null || _form$getInternalHook4 === void 0 || _form$getInternalHook4.call(_form$getInternalHook3, name); if (!shouldValidate.current) return; if (typeof name !== "undefined" && shouldEmitChangeRef.current) { if (formListName && isSameForm) { var formListValue = merge([], calcFieldValue(name, formValue)); var fieldValue = calcFieldValue(formListName, formListValue); onFormItemValueChange === null || onFormItemValueChange === void 0 || onFormItemValueChange(_objectSpread({}, fieldValue)); } else { var _fieldValue = calcFieldValue(name, formValue); onFormItemValueChange === null || onFormItemValueChange === void 0 || onFormItemValueChange(_objectSpread({}, _fieldValue)); } } var filterRules = innerRules.filter(function (item) { return (item.trigger || "change") === "change"; }); filterRules.length && validate$1("change"); }, [formValue, snakeName]); var instance = { name: name, value: formValue, isUpdated: isUpdatedRef.current, getValue: function getValue() { return valueRef.current; }, setValue: function setValue(newVal) { return updateFormValue(newVal, true, true); }, setField: setField, validate: validate$1, validateOnly: validateOnly, resetField: resetField, setValidateMessage: setValidateMessage, getValidateMessage: getValidateMessage, resetValidate: resetHandler }; useImperativeHandle(ref, function () { return instance; }); useImperativeHandle(formItemRef, function () { return instance; }); if (isFunction(children)) return children(form); return /* @__PURE__ */React.createElement("div", { className: formItemClass, style: style }, label && /* @__PURE__ */React.createElement("div", { className: formItemLabelClass, style: labelStyle }, /* @__PURE__ */React.createElement("label", { htmlFor: props === null || props === void 0 ? void 0 : props["for"] }, label), colon && t(locale.colonText)), /* @__PURE__ */React.createElement("div", { className: contentClass(), style: contentStyle }, /* @__PURE__ */React.createElement("div", { className: "".concat(classPrefix, "-form__controls-content") }, React.Children.map(children, function (child, index) { if (!child) return null; var ctrlKey = "value"; if (/*#__PURE__*/React.isValidElement(child)) { if (child.type === FormItem) { return /*#__PURE__*/React.cloneElement(child, { ref: function ref(el) { if (!el) return; innerFormItemsRef.current[index] = el; } }); } if (_typeof(child.type) === "object") { ctrlKey = ctrlKeyMap.get(child.type) || "value"; } var childProps = child.props; return /*#__PURE__*/React.cloneElement(child, _objectSpread(_objectSpread({ disabled: disabledFromContext }, childProps), {}, _defineProperty(_defineProperty(_defineProperty({}, ctrlKey, formValue), "onChange", function onChange(value) { var _childProps$onChange, _childProps$onChange$; var newValue = valueFormat ? valueFormat(value) : value; updateFormValue(newValue, true, true); for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } childProps === null || childProps === void 0 || (_childProps$onChange = childProps.onChange) === null || _childProps$onChange === void 0 || (_childProps$onChange$ = _childProps$onChange.call) === null || _childProps$onChange$ === void 0 || _childProps$onChange$.call.apply(_childProps$onChange$, [_childProps$onChange, null, value].concat(args)); }), "onBlur", function onBlur(value) { var _childProps$onBlur, _childProps$onBlur$ca; handleItemBlur(); for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { args[_key2 - 1] = arguments[_key2]; } childProps === null || childProps === void 0 || (_childProps$onBlur = childProps.onBlur) === null || _childProps$onBlur === void 0 || (_childProps$onBlur$ca = _childProps$onBlur.call) === null || _childProps$onBlur$ca === void 0 || _childProps$onBlur$ca.call.apply(_childProps$onBlur$ca, [_childProps$onBlur, null, value].concat(args)); }))); } return child; }), renderSuffixIcon()), helpNode, extraNode)); }); FormItem.displayName = "FormItem"; export { FormItem as default }; //# sourceMappingURL=FormItem.js.map