@steroidsjs/core 3.0.26 → 3.0.27

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/utils/form.js +31 -9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steroidsjs/core",
3
- "version": "3.0.26",
3
+ "version": "3.0.27",
4
4
  "description": "",
5
5
  "author": "Vladimir Kozhin <hello@kozhindev.com>",
6
6
  "repository": {
package/utils/form.js CHANGED
@@ -18,11 +18,11 @@ exports.providers = exports.clearErrors = exports.cleanEmptyObject = exports.set
18
18
  var isPlainObject_1 = __importDefault(require("lodash-es/isPlainObject"));
19
19
  var isArray_1 = __importDefault(require("lodash-es/isArray"));
20
20
  var isEqual_1 = __importDefault(require("lodash-es/isEqual"));
21
+ var cloneDeep_1 = __importDefault(require("lodash-es/cloneDeep"));
21
22
  var get_1 = __importDefault(require("lodash-es/get"));
22
- var differenceWith_1 = __importDefault(require("lodash-es/differenceWith"));
23
- var toPairs_1 = __importDefault(require("lodash-es/toPairs"));
24
- var omit_1 = __importDefault(require("lodash-es/omit"));
23
+ var isObject_1 = __importDefault(require("lodash-es/isObject"));
25
24
  var isEmpty_1 = __importDefault(require("lodash-es/isEmpty"));
25
+ var unset_1 = __importDefault(require("lodash-es/unset"));
26
26
  var react_1 = require("react");
27
27
  var react_use_1 = require("react-use");
28
28
  var useDispatch_1 = __importDefault(require("../hooks/useDispatch"));
@@ -81,12 +81,34 @@ var cleanEmptyObject = function (object) {
81
81
  exports.cleanEmptyObject = cleanEmptyObject;
82
82
  var clearErrors = function (values, prevValues, errors, setErrors) {
83
83
  if (!(0, isEmpty_1["default"])(errors) && !(0, isEqual_1["default"])(prevValues || {}, values)) {
84
- // compare arrays of key-value pairs in previous and new field objects to identify the changed field
85
- var changedField = (0, differenceWith_1["default"])((0, toPairs_1["default"])(values), (0, toPairs_1["default"])(prevValues), isEqual_1["default"]);
86
- if (!(0, isEmpty_1["default"])(changedField)) {
87
- var cleanedErrors = (0, omit_1["default"])(errors, changedField[0]);
88
- setErrors((0, isEmpty_1["default"])(cleanedErrors) ? null : cleanedErrors);
89
- }
84
+ var cleanedErrors_1 = (0, cloneDeep_1["default"])(errors);
85
+ var clearFieldErrors_1 = function (errorsPath, currentValue, currentPrevValue) {
86
+ if (!(0, isEqual_1["default"])(currentValue, currentPrevValue)) {
87
+ (0, unset_1["default"])(cleanedErrors_1, errorsPath);
88
+ }
89
+ };
90
+ var iterateErrors_1 = function (currentErrors, currentValues, currentPrevValues, path) {
91
+ if (path === void 0) { path = ''; }
92
+ Object.keys(currentErrors).forEach(function (key) {
93
+ var errorValue = currentErrors[key];
94
+ var newPath = path
95
+ ? [path, key].join('.')
96
+ : key;
97
+ if ((0, isObject_1["default"])(errorValue)
98
+ && !(0, isArray_1["default"])(errorValue)) {
99
+ // Если текущее значение ошибки - объект (но не массив), рекурсивно обрабатываем его
100
+ iterateErrors_1(errorValue, (0, get_1["default"])(currentValues, key, {}), (0, get_1["default"])(currentPrevValues, key, {}), newPath);
101
+ }
102
+ else {
103
+ // Если текущее значение ошибки не объект, проверяем изменение значения
104
+ clearFieldErrors_1(newPath, (0, get_1["default"])(currentValues, key), (0, get_1["default"])(currentPrevValues, key));
105
+ }
106
+ });
107
+ };
108
+ iterateErrors_1(errors, values, prevValues);
109
+ setErrors((0, isEmpty_1["default"])(cleanedErrors_1)
110
+ ? null
111
+ : cleanedErrors_1);
90
112
  }
91
113
  };
92
114
  exports.clearErrors = clearErrors;