@insticc/genericform 2.1.4 → 2.1.6

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/build/index.js +20 -2
  2. package/package.json +1 -1
package/build/index.js CHANGED
@@ -157,6 +157,16 @@ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length)
157
157
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
158
158
  function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } // #region FormFields
159
159
  require('react-datetime/css/react-datetime.css');
160
+ var EMPTY_OBJECT = {};
161
+ var shallowEqual = function shallowEqual(a, b) {
162
+ if (a === b) return true;
163
+ var aKeys = Object.keys(a),
164
+ bKeys = Object.keys(b);
165
+ if (aKeys.length !== bKeys.length) return false;
166
+ return aKeys.every(function (key) {
167
+ return a[key] === b[key];
168
+ });
169
+ };
160
170
 
161
171
  // #region Pure helpers
162
172
  var sortFieldsFn = function sortFieldsFn(fields) {
@@ -265,7 +275,9 @@ var GenericForm = function GenericForm(_ref) {
265
275
  disableFormTag = _ref$disableFormTag === void 0 ? false : _ref$disableFormTag,
266
276
  _ref$isSubmitting = _ref.isSubmitting,
267
277
  isSubmitting = _ref$isSubmitting === void 0 ? false : _ref$isSubmitting,
268
- handleErrors = _ref.handleErrors;
278
+ handleErrors = _ref.handleErrors,
279
+ _ref$overrideErrors = _ref.overrideErrors,
280
+ overrideErrors = _ref$overrideErrors === void 0 ? EMPTY_OBJECT : _ref$overrideErrors;
269
281
  var _useState = (0, _react.useState)([]),
270
282
  _useState2 = _slicedToArray(_useState, 2),
271
283
  sortedFields = _useState2[0],
@@ -289,7 +301,13 @@ var GenericForm = function GenericForm(_ref) {
289
301
  }, [isSubmitting]);
290
302
  (0, _react.useEffect)(function () {
291
303
  handleErrors && handleErrors(errors);
292
- }, [errors]);
304
+ }, [errors, handleErrors]);
305
+ var overrideErrorsRef = (0, _react.useRef)(EMPTY_OBJECT);
306
+ (0, _react.useEffect)(function () {
307
+ if (shallowEqual(overrideErrorsRef.current, overrideErrors)) return;
308
+ overrideErrorsRef.current = overrideErrors;
309
+ setErrors(overrideErrors);
310
+ }, [overrideErrors]);
293
311
 
294
312
  // ── Sync fields ─────────────────────────────────────────────────────────────
295
313
  (0, _react.useEffect)(function () {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@insticc/genericform",
3
- "version": "2.1.4",
3
+ "version": "2.1.6",
4
4
  "description": "A generic form with a comprehensive set of field types, validation, and external state management",
5
5
  "main": "build/index.js",
6
6
  "scripts": {