rsuite 5.70.2 → 5.70.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ ## [5.70.3](https://github.com/rsuite/rsuite/compare/v5.70.2...v5.70.3) (2024-09-20)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **CheckTree:** fix the incorrect check state after loading child nodes through `getChildren` ([#3974](https://github.com/rsuite/rsuite/issues/3974)) ([afaaf2d](https://github.com/rsuite/rsuite/commit/afaaf2d8017799089cc79c369802b8d53232c2b0))
7
+ * docs/package.json & docs/package-lock.json to reduce vulnerabilities ([#3972](https://github.com/rsuite/rsuite/issues/3972)) ([41d5334](https://github.com/rsuite/rsuite/commit/41d533468bfe8b25be126378124bcaa2df55cb72))
8
+ * **Form:** clear error caused by uncontrolled form state ([#3971](https://github.com/rsuite/rsuite/issues/3971)) ([dbc75fd](https://github.com/rsuite/rsuite/commit/dbc75fd39886df4f558c48ee51cd95b28ce75c7a))
9
+
10
+
11
+
1
12
  ## [5.70.2](https://github.com/rsuite/rsuite/compare/v5.70.1...v5.70.2) (2024-09-13)
2
13
 
3
14
 
@@ -6,7 +6,7 @@ export interface FormErrorProps {
6
6
  onError?: (formError: any) => void;
7
7
  nestedField?: boolean;
8
8
  }
9
- export default function useFormValidate(formError: any, props: FormErrorProps): {
9
+ export default function useFormValidate(_formError: any, props: FormErrorProps): {
10
10
  formError: any;
11
11
  check: (...args: any[]) => any;
12
12
  checkForField: (...args: any[]) => any;
@@ -13,13 +13,13 @@ var _hooks = require("../../internals/hooks");
13
13
  var _utils = require("../../FormControl/utils");
14
14
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
15
15
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
16
- function useFormValidate(formError, props) {
16
+ function useFormValidate(_formError, props) {
17
17
  var formValue = props.formValue,
18
18
  getCombinedModel = props.getCombinedModel,
19
19
  onCheck = props.onCheck,
20
20
  onError = props.onError,
21
21
  nestedField = props.nestedField;
22
- var _useControlled = (0, _hooks.useControlled)(formError, {}),
22
+ var _useControlled = (0, _hooks.useControlled)(_formError, {}),
23
23
  realFormError = _useControlled[0],
24
24
  setFormError = _useControlled[1];
25
25
  var checkOptions = {
@@ -73,7 +73,7 @@ function useFormValidate(formError, props) {
73
73
  var checkFieldForNextValue = (0, _hooks.useEventCallback)(function (fieldName, nextValue, callback) {
74
74
  var model = getCombinedModel();
75
75
  var resultOfCurrentField = model.checkForField(fieldName, nextValue, checkOptions);
76
- var nextFormError = (0, _extends2.default)({}, formError);
76
+ var nextFormError = (0, _extends2.default)({}, realFormError);
77
77
  /**
78
78
  * when using proxy of schema-typed, we need to use getCheckResult to get all errors,
79
79
  * but if nestedField is used, it is impossible to distinguish whether the nested object has an error here,
@@ -156,7 +156,7 @@ function useFormValidate(formError, props) {
156
156
  var checkFieldAsyncForNextValue = (0, _hooks.useEventCallback)(function (fieldName, nextValue) {
157
157
  var model = getCombinedModel();
158
158
  return model.checkForFieldAsync(fieldName, nextValue, checkOptions).then(function (resultOfCurrentField) {
159
- var nextFormError = (0, _extends2.default)({}, formError);
159
+ var nextFormError = (0, _extends2.default)({}, realFormError);
160
160
  /**
161
161
  * when using proxy of schema-typed, we need to use getCheckResult to get all errors,
162
162
  * but if nestedField is used, it is impossible to distinguish whether the nested object has an error here,
@@ -225,7 +225,7 @@ function useFormValidate(formError, props) {
225
225
  setFormError(formError);
226
226
  });
227
227
  var cleanErrorForField = (0, _hooks.useEventCallback)(function (fieldName) {
228
- setFormError((0, _omit.default)(formError, [nestedField ? (0, _utils.nameToPath)(fieldName) : fieldName]));
228
+ setFormError((0, _omit.default)(realFormError, [nestedField ? (0, _utils.nameToPath)(fieldName) : fieldName]));
229
229
  });
230
230
  return {
231
231
  formError: realFormError,
@@ -90,8 +90,14 @@ function useFlattenTree(data, options) {
90
90
  updateTreeNodeCheckState(value);
91
91
  forceUpdate();
92
92
  }
93
+
94
+ /**
95
+ * Add a dependency on data, because when loading data asynchronously through getChildren,
96
+ * data may change and the node status needs to be updated.
97
+ * @see https://github.com/rsuite/rsuite/issues/3973
98
+ */
93
99
  // eslint-disable-next-line react-hooks/exhaustive-deps
94
- }, [value]);
100
+ }, [value, data]);
95
101
  return flattenedNodes.current;
96
102
  }
97
103
  var _default = exports.default = useFlattenTree;
package/dist/rsuite.js CHANGED
@@ -7517,7 +7517,7 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/he
7517
7517
  /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
7518
7518
 
7519
7519
  "use strict";
7520
- eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = useFormValidate;\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\"));\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\nvar _react = __webpack_require__(/*! react */ \"react\");\nvar _omit = _interopRequireDefault(__webpack_require__(/*! lodash/omit */ \"./node_modules/lodash/omit.js\"));\nvar _set = _interopRequireDefault(__webpack_require__(/*! lodash/set */ \"./node_modules/lodash/set.js\"));\nvar _hooks = __webpack_require__(/*! ../../internals/hooks */ \"./src/internals/hooks/index.ts\");\nvar _utils = __webpack_require__(/*! ../../FormControl/utils */ \"./src/FormControl/utils.ts\");\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction useFormValidate(formError, props) {\n var formValue = props.formValue,\n getCombinedModel = props.getCombinedModel,\n onCheck = props.onCheck,\n onError = props.onError,\n nestedField = props.nestedField;\n var _useControlled = (0, _hooks.useControlled)(formError, {}),\n realFormError = _useControlled[0],\n setFormError = _useControlled[1];\n var checkOptions = {\n nestedObject: nestedField\n };\n var realFormErrorRef = (0, _react.useRef)(realFormError);\n realFormErrorRef.current = realFormError;\n\n /**\n * Validate the form data and return a boolean.\n * The error message after verification is returned in the callback.\n * @param callback\n */\n var check = (0, _hooks.useEventCallback)(function (callback) {\n var formError = {};\n var errorCount = 0;\n var model = getCombinedModel();\n var checkField = function checkField(key, type, value, formErrorObj) {\n var checkResult = type.check(value);\n if (checkResult.hasError === true) {\n errorCount += 1;\n formErrorObj[key] = (checkResult === null || checkResult === void 0 ? void 0 : checkResult.errorMessage) || checkResult;\n }\n\n // Check nested object\n if (type !== null && type !== void 0 && type.objectTypeSchemaSpec) {\n Object.entries(type.objectTypeSchemaSpec).forEach(function (_ref) {\n var nestedKey = _ref[0],\n nestedType = _ref[1];\n formErrorObj[key] = formErrorObj[key] || {\n object: {}\n };\n checkField(nestedKey, nestedType, value === null || value === void 0 ? void 0 : value[nestedKey], formErrorObj[key].object);\n });\n }\n };\n Object.entries(model.getSchemaSpec()).forEach(function (_ref2) {\n var key = _ref2[0],\n type = _ref2[1];\n checkField(key, type, formValue[key], formError);\n });\n setFormError(formError);\n onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);\n callback === null || callback === void 0 ? void 0 : callback(formError);\n if (errorCount > 0) {\n onError === null || onError === void 0 ? void 0 : onError(formError);\n return false;\n }\n return true;\n });\n var checkFieldForNextValue = (0, _hooks.useEventCallback)(function (fieldName, nextValue, callback) {\n var model = getCombinedModel();\n var resultOfCurrentField = model.checkForField(fieldName, nextValue, checkOptions);\n var nextFormError = (0, _extends2.default)({}, formError);\n /**\n * when using proxy of schema-typed, we need to use getCheckResult to get all errors,\n * but if nestedField is used, it is impossible to distinguish whether the nested object has an error here,\n * so nestedField does not support proxy here\n */\n if (nestedField) {\n nextFormError = (0, _set.default)(nextFormError, (0, _utils.nameToPath)(fieldName), resultOfCurrentField);\n setFormError(nextFormError);\n onCheck === null || onCheck === void 0 ? void 0 : onCheck(nextFormError);\n callback === null || callback === void 0 ? void 0 : callback(resultOfCurrentField);\n if (resultOfCurrentField.hasError) {\n onError === null || onError === void 0 ? void 0 : onError(nextFormError);\n }\n return !resultOfCurrentField.hasError;\n } else {\n var allResults = model.getCheckResult();\n var hasError = false;\n Object.keys(allResults).forEach(function (key) {\n var currentResult = allResults[key];\n if (currentResult.hasError) {\n nextFormError[key] = currentResult.errorMessage || currentResult;\n hasError = true;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var _nextFormError = nextFormError,\n _ = _nextFormError[key],\n rest = (0, _objectWithoutPropertiesLoose2.default)(_nextFormError, [key].map(_toPropertyKey));\n nextFormError = rest;\n }\n });\n setFormError(nextFormError);\n onCheck === null || onCheck === void 0 ? void 0 : onCheck(nextFormError);\n callback === null || callback === void 0 ? void 0 : callback(resultOfCurrentField);\n if (hasError) {\n onError === null || onError === void 0 ? void 0 : onError(nextFormError);\n }\n return !hasError;\n }\n });\n /**\n * Check the data field\n * @param fieldName\n * @param callback\n */\n var checkForField = (0, _hooks.useEventCallback)(function (fieldName, callback) {\n return checkFieldForNextValue(fieldName, formValue || {}, callback);\n });\n\n /**\n * Check form data asynchronously and return a Promise\n */\n var checkAsync = (0, _hooks.useEventCallback)(function () {\n var promises = [];\n var keys = [];\n var model = getCombinedModel();\n Object.keys(model.getSchemaSpec()).forEach(function (key) {\n keys.push(key);\n promises.push(model.checkForFieldAsync(key, formValue || {}, checkOptions));\n });\n return Promise.all(promises).then(function (values) {\n var formError = {};\n var errorCount = 0;\n for (var i = 0; i < values.length; i++) {\n if (values[i].hasError) {\n errorCount += 1;\n formError[keys[i]] = values[i].errorMessage;\n }\n }\n onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);\n setFormError(formError);\n if (errorCount > 0) {\n onError === null || onError === void 0 ? void 0 : onError(formError);\n }\n return {\n hasError: errorCount > 0,\n formError: formError\n };\n });\n });\n var checkFieldAsyncForNextValue = (0, _hooks.useEventCallback)(function (fieldName, nextValue) {\n var model = getCombinedModel();\n return model.checkForFieldAsync(fieldName, nextValue, checkOptions).then(function (resultOfCurrentField) {\n var nextFormError = (0, _extends2.default)({}, formError);\n /**\n * when using proxy of schema-typed, we need to use getCheckResult to get all errors,\n * but if nestedField is used, it is impossible to distinguish whether the nested object has an error here,\n * so nestedField does not support proxy here\n */\n\n if (nestedField) {\n nextFormError = (0, _set.default)(nextFormError, (0, _utils.nameToPath)(fieldName), resultOfCurrentField);\n onCheck === null || onCheck === void 0 ? void 0 : onCheck(nextFormError);\n setFormError(nextFormError);\n if (resultOfCurrentField.hasError) {\n onError === null || onError === void 0 ? void 0 : onError(nextFormError);\n }\n return resultOfCurrentField;\n } else {\n var allResults = model.getCheckResult();\n var hasError = false;\n Object.keys(allResults).forEach(function (key) {\n var currentResult = allResults[key];\n if (currentResult.hasError) {\n nextFormError[key] = currentResult.errorMessage || currentResult;\n hasError = true;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var _nextFormError2 = nextFormError,\n _ = _nextFormError2[key],\n rest = (0, _objectWithoutPropertiesLoose2.default)(_nextFormError2, [key].map(_toPropertyKey));\n nextFormError = rest;\n }\n });\n setFormError(nextFormError);\n onCheck === null || onCheck === void 0 ? void 0 : onCheck(nextFormError);\n if (hasError) {\n onError === null || onError === void 0 ? void 0 : onError(nextFormError);\n }\n return resultOfCurrentField;\n }\n });\n });\n\n /**\n * Asynchronously check form fields and return Promise\n * @param fieldName\n */\n var checkForFieldAsync = (0, _hooks.useEventCallback)(function (fieldName) {\n return checkFieldAsyncForNextValue(fieldName, formValue || {});\n });\n var onRemoveError = (0, _react.useCallback)(function (name) {\n /**\n * when this function is called when the children component is unmount,\n * it's an old render frame so use Ref to get future error\n */\n var formError = (0, _omit.default)(realFormErrorRef.current, [nestedField ? (0, _utils.nameToPath)(name) : name]);\n realFormErrorRef.current = formError;\n setFormError(formError);\n onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);\n return formError;\n }, [nestedField, onCheck, setFormError]);\n var cleanErrors = (0, _hooks.useEventCallback)(function () {\n setFormError({});\n });\n var resetErrors = (0, _hooks.useEventCallback)(function (formError) {\n if (formError === void 0) {\n formError = {};\n }\n setFormError(formError);\n });\n var cleanErrorForField = (0, _hooks.useEventCallback)(function (fieldName) {\n setFormError((0, _omit.default)(formError, [nestedField ? (0, _utils.nameToPath)(fieldName) : fieldName]));\n });\n return {\n formError: realFormError,\n check: check,\n checkForField: checkForField,\n checkFieldForNextValue: checkFieldForNextValue,\n checkAsync: checkAsync,\n checkForFieldAsync: checkForFieldAsync,\n checkFieldAsyncForNextValue: checkFieldAsyncForNextValue,\n cleanErrors: cleanErrors,\n resetErrors: resetErrors,\n cleanErrorForField: cleanErrorForField,\n onRemoveError: onRemoveError\n };\n}\n\n//# sourceURL=webpack://rsuite/./src/Form/hooks/useFormValidate.ts?");
7520
+ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = useFormValidate;\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\"));\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\nvar _react = __webpack_require__(/*! react */ \"react\");\nvar _omit = _interopRequireDefault(__webpack_require__(/*! lodash/omit */ \"./node_modules/lodash/omit.js\"));\nvar _set = _interopRequireDefault(__webpack_require__(/*! lodash/set */ \"./node_modules/lodash/set.js\"));\nvar _hooks = __webpack_require__(/*! ../../internals/hooks */ \"./src/internals/hooks/index.ts\");\nvar _utils = __webpack_require__(/*! ../../FormControl/utils */ \"./src/FormControl/utils.ts\");\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction useFormValidate(_formError, props) {\n var formValue = props.formValue,\n getCombinedModel = props.getCombinedModel,\n onCheck = props.onCheck,\n onError = props.onError,\n nestedField = props.nestedField;\n var _useControlled = (0, _hooks.useControlled)(_formError, {}),\n realFormError = _useControlled[0],\n setFormError = _useControlled[1];\n var checkOptions = {\n nestedObject: nestedField\n };\n var realFormErrorRef = (0, _react.useRef)(realFormError);\n realFormErrorRef.current = realFormError;\n\n /**\n * Validate the form data and return a boolean.\n * The error message after verification is returned in the callback.\n * @param callback\n */\n var check = (0, _hooks.useEventCallback)(function (callback) {\n var formError = {};\n var errorCount = 0;\n var model = getCombinedModel();\n var checkField = function checkField(key, type, value, formErrorObj) {\n var checkResult = type.check(value);\n if (checkResult.hasError === true) {\n errorCount += 1;\n formErrorObj[key] = (checkResult === null || checkResult === void 0 ? void 0 : checkResult.errorMessage) || checkResult;\n }\n\n // Check nested object\n if (type !== null && type !== void 0 && type.objectTypeSchemaSpec) {\n Object.entries(type.objectTypeSchemaSpec).forEach(function (_ref) {\n var nestedKey = _ref[0],\n nestedType = _ref[1];\n formErrorObj[key] = formErrorObj[key] || {\n object: {}\n };\n checkField(nestedKey, nestedType, value === null || value === void 0 ? void 0 : value[nestedKey], formErrorObj[key].object);\n });\n }\n };\n Object.entries(model.getSchemaSpec()).forEach(function (_ref2) {\n var key = _ref2[0],\n type = _ref2[1];\n checkField(key, type, formValue[key], formError);\n });\n setFormError(formError);\n onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);\n callback === null || callback === void 0 ? void 0 : callback(formError);\n if (errorCount > 0) {\n onError === null || onError === void 0 ? void 0 : onError(formError);\n return false;\n }\n return true;\n });\n var checkFieldForNextValue = (0, _hooks.useEventCallback)(function (fieldName, nextValue, callback) {\n var model = getCombinedModel();\n var resultOfCurrentField = model.checkForField(fieldName, nextValue, checkOptions);\n var nextFormError = (0, _extends2.default)({}, realFormError);\n /**\n * when using proxy of schema-typed, we need to use getCheckResult to get all errors,\n * but if nestedField is used, it is impossible to distinguish whether the nested object has an error here,\n * so nestedField does not support proxy here\n */\n if (nestedField) {\n nextFormError = (0, _set.default)(nextFormError, (0, _utils.nameToPath)(fieldName), resultOfCurrentField);\n setFormError(nextFormError);\n onCheck === null || onCheck === void 0 ? void 0 : onCheck(nextFormError);\n callback === null || callback === void 0 ? void 0 : callback(resultOfCurrentField);\n if (resultOfCurrentField.hasError) {\n onError === null || onError === void 0 ? void 0 : onError(nextFormError);\n }\n return !resultOfCurrentField.hasError;\n } else {\n var allResults = model.getCheckResult();\n var hasError = false;\n Object.keys(allResults).forEach(function (key) {\n var currentResult = allResults[key];\n if (currentResult.hasError) {\n nextFormError[key] = currentResult.errorMessage || currentResult;\n hasError = true;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var _nextFormError = nextFormError,\n _ = _nextFormError[key],\n rest = (0, _objectWithoutPropertiesLoose2.default)(_nextFormError, [key].map(_toPropertyKey));\n nextFormError = rest;\n }\n });\n setFormError(nextFormError);\n onCheck === null || onCheck === void 0 ? void 0 : onCheck(nextFormError);\n callback === null || callback === void 0 ? void 0 : callback(resultOfCurrentField);\n if (hasError) {\n onError === null || onError === void 0 ? void 0 : onError(nextFormError);\n }\n return !hasError;\n }\n });\n /**\n * Check the data field\n * @param fieldName\n * @param callback\n */\n var checkForField = (0, _hooks.useEventCallback)(function (fieldName, callback) {\n return checkFieldForNextValue(fieldName, formValue || {}, callback);\n });\n\n /**\n * Check form data asynchronously and return a Promise\n */\n var checkAsync = (0, _hooks.useEventCallback)(function () {\n var promises = [];\n var keys = [];\n var model = getCombinedModel();\n Object.keys(model.getSchemaSpec()).forEach(function (key) {\n keys.push(key);\n promises.push(model.checkForFieldAsync(key, formValue || {}, checkOptions));\n });\n return Promise.all(promises).then(function (values) {\n var formError = {};\n var errorCount = 0;\n for (var i = 0; i < values.length; i++) {\n if (values[i].hasError) {\n errorCount += 1;\n formError[keys[i]] = values[i].errorMessage;\n }\n }\n onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);\n setFormError(formError);\n if (errorCount > 0) {\n onError === null || onError === void 0 ? void 0 : onError(formError);\n }\n return {\n hasError: errorCount > 0,\n formError: formError\n };\n });\n });\n var checkFieldAsyncForNextValue = (0, _hooks.useEventCallback)(function (fieldName, nextValue) {\n var model = getCombinedModel();\n return model.checkForFieldAsync(fieldName, nextValue, checkOptions).then(function (resultOfCurrentField) {\n var nextFormError = (0, _extends2.default)({}, realFormError);\n /**\n * when using proxy of schema-typed, we need to use getCheckResult to get all errors,\n * but if nestedField is used, it is impossible to distinguish whether the nested object has an error here,\n * so nestedField does not support proxy here\n */\n\n if (nestedField) {\n nextFormError = (0, _set.default)(nextFormError, (0, _utils.nameToPath)(fieldName), resultOfCurrentField);\n onCheck === null || onCheck === void 0 ? void 0 : onCheck(nextFormError);\n setFormError(nextFormError);\n if (resultOfCurrentField.hasError) {\n onError === null || onError === void 0 ? void 0 : onError(nextFormError);\n }\n return resultOfCurrentField;\n } else {\n var allResults = model.getCheckResult();\n var hasError = false;\n Object.keys(allResults).forEach(function (key) {\n var currentResult = allResults[key];\n if (currentResult.hasError) {\n nextFormError[key] = currentResult.errorMessage || currentResult;\n hasError = true;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var _nextFormError2 = nextFormError,\n _ = _nextFormError2[key],\n rest = (0, _objectWithoutPropertiesLoose2.default)(_nextFormError2, [key].map(_toPropertyKey));\n nextFormError = rest;\n }\n });\n setFormError(nextFormError);\n onCheck === null || onCheck === void 0 ? void 0 : onCheck(nextFormError);\n if (hasError) {\n onError === null || onError === void 0 ? void 0 : onError(nextFormError);\n }\n return resultOfCurrentField;\n }\n });\n });\n\n /**\n * Asynchronously check form fields and return Promise\n * @param fieldName\n */\n var checkForFieldAsync = (0, _hooks.useEventCallback)(function (fieldName) {\n return checkFieldAsyncForNextValue(fieldName, formValue || {});\n });\n var onRemoveError = (0, _react.useCallback)(function (name) {\n /**\n * when this function is called when the children component is unmount,\n * it's an old render frame so use Ref to get future error\n */\n var formError = (0, _omit.default)(realFormErrorRef.current, [nestedField ? (0, _utils.nameToPath)(name) : name]);\n realFormErrorRef.current = formError;\n setFormError(formError);\n onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);\n return formError;\n }, [nestedField, onCheck, setFormError]);\n var cleanErrors = (0, _hooks.useEventCallback)(function () {\n setFormError({});\n });\n var resetErrors = (0, _hooks.useEventCallback)(function (formError) {\n if (formError === void 0) {\n formError = {};\n }\n setFormError(formError);\n });\n var cleanErrorForField = (0, _hooks.useEventCallback)(function (fieldName) {\n setFormError((0, _omit.default)(realFormError, [nestedField ? (0, _utils.nameToPath)(fieldName) : fieldName]));\n });\n return {\n formError: realFormError,\n check: check,\n checkForField: checkForField,\n checkFieldForNextValue: checkFieldForNextValue,\n checkAsync: checkAsync,\n checkForFieldAsync: checkForFieldAsync,\n checkFieldAsyncForNextValue: checkFieldAsyncForNextValue,\n cleanErrors: cleanErrors,\n resetErrors: resetErrors,\n cleanErrorForField: cleanErrorForField,\n onRemoveError: onRemoveError\n };\n}\n\n//# sourceURL=webpack://rsuite/./src/Form/hooks/useFormValidate.ts?");
7521
7521
 
7522
7522
  /***/ }),
7523
7523
 
@@ -10025,7 +10025,7 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/he
10025
10025
  /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
10026
10026
 
10027
10027
  "use strict";
10028
- eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _extends3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\nvar _react = __webpack_require__(/*! react */ \"react\");\nvar _omit = _interopRequireDefault(__webpack_require__(/*! lodash/omit */ \"./node_modules/lodash/omit.js\"));\nvar _isNil = _interopRequireDefault(__webpack_require__(/*! lodash/isNil */ \"./node_modules/lodash/isNil.js\"));\nvar _utils = __webpack_require__(/*! ../../internals/utils */ \"./src/internals/utils/index.ts\");\nvar _utils2 = __webpack_require__(/*! ../utils */ \"./src/Tree/utils/index.ts\");\nvar _useForceUpdate = _interopRequireDefault(__webpack_require__(/*! ./useForceUpdate */ \"./src/Tree/hooks/useForceUpdate.ts\"));\n/**\n * Custom hook that flattens a tree data structure into a map of nodes.\n *\n */\nfunction useFlattenTree(data, options) {\n var value = options.value,\n labelKey = options.labelKey,\n valueKey = options.valueKey,\n childrenKey = options.childrenKey,\n _options$uncheckableI = options.uncheckableItemValues,\n uncheckableItemValues = _options$uncheckableI === void 0 ? [] : _options$uncheckableI,\n cascade = options.cascade,\n multiple = options.multiple,\n callback = options.callback;\n var forceUpdate = (0, _useForceUpdate.default)();\n var flattenedNodes = (0, _react.useRef)({});\n var updateTreeNodeCheckState = (0, _react.useCallback)(function (value) {\n if (value === void 0) {\n value = [];\n }\n // Reset values to false\n Object.keys(flattenedNodes.current).forEach(function (refKey) {\n var node = flattenedNodes.current[refKey];\n if (cascade && !(0, _isNil.default)(node.parent) && !(0, _isNil.default)(node.parent.refKey)) {\n node.check = flattenedNodes.current[node.parent.refKey].check;\n } else {\n node.check = false;\n }\n value.forEach(function (nodeVal) {\n if ((0, _utils.shallowEqual)(flattenedNodes.current[refKey][valueKey], nodeVal) && !uncheckableItemValues.some(function (uncheckableValue) {\n return (0, _utils.shallowEqual)(nodeVal, uncheckableValue);\n })) {\n flattenedNodes.current[refKey].check = true;\n }\n });\n });\n }, [cascade, uncheckableItemValues, valueKey]);\n var flattenTreeData = (0, _react.useCallback)(function (treeData, parent, layer) {\n if (layer === void 0) {\n layer = 1;\n }\n if (!Array.isArray(treeData) || treeData.length === 0) {\n return [];\n }\n treeData.map(function (node) {\n var _extends2;\n var value = node[valueKey];\n /**\n * because the value of the node's type is string or number,\n * so it can used as the key of the object directly\n * to avoid number value is converted to string. 1 and '1' will be convert to '1'\n * we used `String_` or `Number_` prefix\n */\n var refKey = (0, _utils2.formatNodeRefKey)(value);\n node.refKey = refKey;\n flattenedNodes.current[refKey] = (0, _extends3.default)((_extends2 = {\n layer: layer\n }, _extends2[labelKey] = node[labelKey], _extends2[valueKey] = node[valueKey], _extends2.uncheckable = uncheckableItemValues.some(function (value) {\n return (0, _utils.shallowEqual)(node[valueKey], value);\n }), _extends2), node);\n if (parent) {\n flattenedNodes.current[refKey].parent = (0, _omit.default)(parent, 'parent', 'children');\n }\n flattenTreeData(node[childrenKey], node, layer + 1);\n });\n callback === null || callback === void 0 ? void 0 : callback(flattenedNodes.current);\n forceUpdate();\n }, [callback, forceUpdate, valueKey, labelKey, uncheckableItemValues, childrenKey]);\n (0, _react.useEffect)(function () {\n // when data is changed, should clear the flattenedNodes, avoid duplicate keys\n flattenedNodes.current = {};\n flattenTreeData(data);\n }, [data]); // eslint-disable-line react-hooks/exhaustive-deps\n\n (0, _react.useEffect)(function () {\n if (multiple) {\n updateTreeNodeCheckState(value);\n forceUpdate();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n return flattenedNodes.current;\n}\nvar _default = exports[\"default\"] = useFlattenTree;\n\n//# sourceURL=webpack://rsuite/./src/Tree/hooks/useFlattenTree.ts?");
10028
+ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _extends3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\nvar _react = __webpack_require__(/*! react */ \"react\");\nvar _omit = _interopRequireDefault(__webpack_require__(/*! lodash/omit */ \"./node_modules/lodash/omit.js\"));\nvar _isNil = _interopRequireDefault(__webpack_require__(/*! lodash/isNil */ \"./node_modules/lodash/isNil.js\"));\nvar _utils = __webpack_require__(/*! ../../internals/utils */ \"./src/internals/utils/index.ts\");\nvar _utils2 = __webpack_require__(/*! ../utils */ \"./src/Tree/utils/index.ts\");\nvar _useForceUpdate = _interopRequireDefault(__webpack_require__(/*! ./useForceUpdate */ \"./src/Tree/hooks/useForceUpdate.ts\"));\n/**\n * Custom hook that flattens a tree data structure into a map of nodes.\n *\n */\nfunction useFlattenTree(data, options) {\n var value = options.value,\n labelKey = options.labelKey,\n valueKey = options.valueKey,\n childrenKey = options.childrenKey,\n _options$uncheckableI = options.uncheckableItemValues,\n uncheckableItemValues = _options$uncheckableI === void 0 ? [] : _options$uncheckableI,\n cascade = options.cascade,\n multiple = options.multiple,\n callback = options.callback;\n var forceUpdate = (0, _useForceUpdate.default)();\n var flattenedNodes = (0, _react.useRef)({});\n var updateTreeNodeCheckState = (0, _react.useCallback)(function (value) {\n if (value === void 0) {\n value = [];\n }\n // Reset values to false\n Object.keys(flattenedNodes.current).forEach(function (refKey) {\n var node = flattenedNodes.current[refKey];\n if (cascade && !(0, _isNil.default)(node.parent) && !(0, _isNil.default)(node.parent.refKey)) {\n node.check = flattenedNodes.current[node.parent.refKey].check;\n } else {\n node.check = false;\n }\n value.forEach(function (nodeVal) {\n if ((0, _utils.shallowEqual)(flattenedNodes.current[refKey][valueKey], nodeVal) && !uncheckableItemValues.some(function (uncheckableValue) {\n return (0, _utils.shallowEqual)(nodeVal, uncheckableValue);\n })) {\n flattenedNodes.current[refKey].check = true;\n }\n });\n });\n }, [cascade, uncheckableItemValues, valueKey]);\n var flattenTreeData = (0, _react.useCallback)(function (treeData, parent, layer) {\n if (layer === void 0) {\n layer = 1;\n }\n if (!Array.isArray(treeData) || treeData.length === 0) {\n return [];\n }\n treeData.map(function (node) {\n var _extends2;\n var value = node[valueKey];\n /**\n * because the value of the node's type is string or number,\n * so it can used as the key of the object directly\n * to avoid number value is converted to string. 1 and '1' will be convert to '1'\n * we used `String_` or `Number_` prefix\n */\n var refKey = (0, _utils2.formatNodeRefKey)(value);\n node.refKey = refKey;\n flattenedNodes.current[refKey] = (0, _extends3.default)((_extends2 = {\n layer: layer\n }, _extends2[labelKey] = node[labelKey], _extends2[valueKey] = node[valueKey], _extends2.uncheckable = uncheckableItemValues.some(function (value) {\n return (0, _utils.shallowEqual)(node[valueKey], value);\n }), _extends2), node);\n if (parent) {\n flattenedNodes.current[refKey].parent = (0, _omit.default)(parent, 'parent', 'children');\n }\n flattenTreeData(node[childrenKey], node, layer + 1);\n });\n callback === null || callback === void 0 ? void 0 : callback(flattenedNodes.current);\n forceUpdate();\n }, [callback, forceUpdate, valueKey, labelKey, uncheckableItemValues, childrenKey]);\n (0, _react.useEffect)(function () {\n // when data is changed, should clear the flattenedNodes, avoid duplicate keys\n flattenedNodes.current = {};\n flattenTreeData(data);\n }, [data]); // eslint-disable-line react-hooks/exhaustive-deps\n\n (0, _react.useEffect)(function () {\n if (multiple) {\n updateTreeNodeCheckState(value);\n forceUpdate();\n }\n\n /**\n * Add a dependency on data, because when loading data asynchronously through getChildren,\n * data may change and the node status needs to be updated.\n * @see https://github.com/rsuite/rsuite/issues/3973\n */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, data]);\n return flattenedNodes.current;\n}\nvar _default = exports[\"default\"] = useFlattenTree;\n\n//# sourceURL=webpack://rsuite/./src/Tree/hooks/useFlattenTree.ts?");
10029
10029
 
10030
10030
  /***/ }),
10031
10031
 
@@ -15820,9 +15820,9 @@ eval("var toFinite = __webpack_require__(/*! ./toFinite */ \"./node_modules/loda
15820
15820
  /*!*****************************************!*\
15821
15821
  !*** ./node_modules/lodash/toNumber.js ***!
15822
15822
  \*****************************************/
15823
- /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
15823
+ /***/ (function(module) {
15824
15824
 
15825
- eval("var baseTrim = __webpack_require__(/*! ./_baseTrim */ \"./node_modules/lodash/_baseTrim.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\"),\n isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/lodash/isSymbol.js\");\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n\n\n//# sourceURL=webpack://rsuite/./node_modules/lodash/toNumber.js?");
15825
+ eval("/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n\n//# sourceURL=webpack://rsuite/./node_modules/lodash/toNumber.js?");
15826
15826
 
15827
15827
  /***/ }),
15828
15828
 
@@ -15840,9 +15840,9 @@ eval("var copyObject = __webpack_require__(/*! ./_copyObject */ \"./node_modules
15840
15840
  /*!*****************************************!*\
15841
15841
  !*** ./node_modules/lodash/toString.js ***!
15842
15842
  \*****************************************/
15843
- /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
15843
+ /***/ (function(module) {
15844
15844
 
15845
- eval("var baseToString = __webpack_require__(/*! ./_baseToString */ \"./node_modules/lodash/_baseToString.js\");\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n\n\n//# sourceURL=webpack://rsuite/./node_modules/lodash/toString.js?");
15845
+ eval("/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n\n//# sourceURL=webpack://rsuite/./node_modules/lodash/toString.js?");
15846
15846
 
15847
15847
  /***/ }),
15848
15848