tdesign-react
Version:
TDesign Component for React
869 lines (865 loc) • 37 kB
JavaScript
/**
* 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