@react-typed-forms/schemas 10.0.1 → 10.0.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/lib/index.js CHANGED
@@ -210,27 +210,31 @@ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
210
210
  throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
211
211
  }
212
212
 
213
- function applyDefaultValues(v, fields) {
213
+ function applyDefaultValues(v, fields, doneSet) {
214
+ var _doneSet;
214
215
  if (!v) return defaultValueForFields(fields);
216
+ if (doneSet && doneSet.has(v)) return v;
217
+ (_doneSet = doneSet) != null ? _doneSet : doneSet = new Set();
218
+ doneSet.add(v);
215
219
  var applyValue = fields.filter(function (x) {
216
220
  return isCompoundField(x) || !(x.field in v);
217
221
  });
218
222
  if (!applyValue.length) return v;
219
223
  var out = _extends({}, v);
220
224
  applyValue.forEach(function (x) {
221
- out[x.field] = x.field in v ? applyDefaultForField(v[x.field], x, fields) : defaultValueForField(x);
225
+ out[x.field] = x.field in v ? applyDefaultForField(v[x.field], x, fields, false, doneSet) : defaultValueForField(x);
222
226
  });
223
227
  return out;
224
228
  }
225
- function applyDefaultForField(v, field, parent, notElement) {
229
+ function applyDefaultForField(v, field, parent, notElement, doneSet) {
226
230
  if (field.collection && !notElement) {
227
231
  return (v != null ? v : []).map(function (x) {
228
- return applyDefaultForField(x, field, parent, true);
232
+ return applyDefaultForField(x, field, parent, true, doneSet);
229
233
  });
230
234
  }
231
235
  if (isCompoundField(field)) {
232
236
  if (!v && !field.required) return v;
233
- return applyDefaultValues(v, field.treeChildren ? parent : field.children);
237
+ return applyDefaultValues(v, field.treeChildren ? parent : field.children, doneSet);
234
238
  }
235
239
  return defaultValueForField(field);
236
240
  }
@@ -1106,14 +1110,22 @@ function useValidationHook(definition, field) {
1106
1110
  var lv = x;
1107
1111
  core.useControlEffect(function () {
1108
1112
  core.trackControlChange(control, core.ControlChange.Validate);
1109
- return field ? schemaInterface.controlLength(field, control) : 0;
1110
- }, function (len) {
1113
+ return [field ? schemaInterface.controlLength(field, control) : 0, hidden];
1114
+ }, function (_ref) {
1115
+ var len = _ref[0],
1116
+ hidden = _ref[1];
1117
+ if (hidden) {
1118
+ control.setError("length", undefined);
1119
+ return;
1120
+ }
1111
1121
  if (lv.min != null && len < lv.min) {
1112
1122
  if (field != null && field.collection) {
1113
1123
  control.setValue(function (v) {
1114
- return [].concat(v, Array.from({
1115
- length: lv.min - len
1116
- }));
1124
+ return Array.isArray(v) ? v.concat(Array.from({
1125
+ length: lv.min - v.length
1126
+ })) : Array.from({
1127
+ length: lv.min
1128
+ });
1117
1129
  });
1118
1130
  } else {
1119
1131
  control.setError("length", "Length must be at least " + lv.min);
@@ -1135,9 +1147,9 @@ function useJsonataValidator(control, context, expr, hidden, i) {
1135
1147
  var errorMsg = useJsonataExpression(expr.expression, context);
1136
1148
  core.useControlEffect(function () {
1137
1149
  return [hidden, errorMsg.value];
1138
- }, function (_ref) {
1139
- var hidden = _ref[0],
1140
- msg = _ref[1];
1150
+ }, function (_ref2) {
1151
+ var hidden = _ref2[0],
1152
+ msg = _ref2[1];
1141
1153
  return control.setError("jsonata" + i, !hidden ? msg : null);
1142
1154
  }, true);
1143
1155
  }