@ukhomeoffice/cop-react-form-renderer 5.62.1 → 5.65.0

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 (22) hide show
  1. package/dist/components/CollectionSummary/BannerStrip.js +3 -2
  2. package/dist/components/CollectionSummary/BannerStrip.test.js +39 -4
  3. package/dist/components/CollectionSummary/CollectionSummary.js +71 -33
  4. package/dist/components/CollectionSummary/CollectionSummary.test.js +40 -80
  5. package/dist/components/CollectionSummary/RenderListView.js +9 -7
  6. package/dist/components/CollectionSummary/RenderListView.scss +4 -0
  7. package/dist/components/CollectionSummary/RenderListView.test.js +13 -4
  8. package/dist/components/CollectionSummary/SummaryCard.js +26 -17
  9. package/dist/components/CollectionSummary/SummaryCard.test.js +177 -146
  10. package/dist/components/CollectionSummary/SummaryCardDetails.js +16 -0
  11. package/dist/components/CollectionSummary/SummaryCardDetails.test.js +77 -8
  12. package/dist/components/CollectionSummary/SummaryCardValidationContext.js +15 -5
  13. package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +5 -4
  14. package/dist/components/FormRenderer/onPageAction.js +6 -1
  15. package/dist/components/FormRenderer/onPageAction.test.js +18 -4
  16. package/dist/context/ValidationContext/ValidationContext.js +51 -5
  17. package/dist/context/ValidationContext/ValidationContext.test.js +16 -7
  18. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +13 -1
  19. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +17 -2
  20. package/dist/utils/Validate/validatePage.js +6 -1
  21. package/dist/utils/Validate/validatePage.test.js +44 -0
  22. package/package.json +1 -1
@@ -16,6 +16,7 @@ var _BannerStrip = _interopRequireDefault(require("./BannerStrip"));
16
16
  var _RenderListView = _interopRequireDefault(require("./RenderListView"));
17
17
  var _SummaryCardDetails = _interopRequireDefault(require("./SummaryCardDetails"));
18
18
  require("./SummaryCard.scss");
19
+ var _excluded = ["isDuplicate"];
19
20
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
20
21
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -25,6 +26,8 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
25
26
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
26
27
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
27
28
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
29
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
30
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
28
31
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
29
32
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
30
33
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
@@ -49,7 +52,7 @@ var SummaryCard = function SummaryCard(_ref) {
49
52
  entryData = _ref.entryData,
50
53
  config = _ref.config,
51
54
  classModifiers = _ref.classModifiers,
52
- onChange = _ref.onChange,
55
+ onFullEdit = _ref.onFullEdit,
53
56
  onDelete = _ref.onDelete,
54
57
  onDuplicate = _ref.onDuplicate,
55
58
  onQuickEdit = _ref.onQuickEdit,
@@ -57,13 +60,12 @@ var SummaryCard = function SummaryCard(_ref) {
57
60
  childCollections = _ref.childCollections,
58
61
  formData = _ref.formData,
59
62
  masterPage = _ref.masterPage,
60
- hideDetails = _ref.hideDetails,
61
- inError = _ref.inError;
63
+ hideDetails = _ref.hideDetails;
62
64
  var _useState = (0, _react.useState)(false),
63
65
  _useState2 = _slicedToArray(_useState, 2),
64
66
  quickEdit = _useState2[0],
65
67
  setQuickEdit = _useState2[1];
66
- var classes = _copReactComponents.Utils.classBuilder(DEFAULT_CLASS, classModifiers, inError ? 'error' : '');
68
+ var classes = _copReactComponents.Utils.classBuilder(DEFAULT_CLASS, classModifiers, config.className);
67
69
  var quickEditPage = (0, _react.useMemo)(function () {
68
70
  return config.quickEdit ? (0, _getQuickEditPage.default)(masterPage, entryData) : null;
69
71
  }, [masterPage, config, entryData, quickEdit]);
@@ -73,12 +75,13 @@ var SummaryCard = function SummaryCard(_ref) {
73
75
  var _useValidation = (0, _hooks.useValidation)(),
74
76
  addErrors = _useValidation.addErrors,
75
77
  resetQuickEditErrors = _useValidation.resetQuickEditErrors,
78
+ clearTopLevelErrorsForCard = _useValidation.clearTopLevelErrorsForCard,
76
79
  validate = _useValidation.validate;
77
80
  var _useHooks = (0, _hooks.useHooks)(),
78
81
  hooks = _useHooks.hooks;
79
82
  var _onAction = /*#__PURE__*/function () {
80
83
  var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(action, patch) {
81
- var errors, hookErrors, allErrors, allData;
84
+ var errors, hookErrors, allErrors, allData, _allData$entryData$in, isDuplicate, newEntry;
82
85
  return _regeneratorRuntime().wrap(function _callee$(_context) {
83
86
  while (1) switch (_context.prev = _context.next) {
84
87
  case 0:
@@ -112,8 +115,14 @@ var SummaryCard = function SummaryCard(_ref) {
112
115
  // Save data assuming no errors
113
116
  allErrors = errors.concat(hookErrors);
114
117
  if (allErrors.length === 0 || allErrors.length === 1 && allErrors[0] === undefined) {
115
- allData = _utils.default.CollectionPage.getData(parentCollectionName, formData);
116
- allData[entryData.index] = _objectSpread(_objectSpread({}, allData === null || allData === void 0 ? void 0 : allData[entryData.index]), patch);
118
+ // Now that validation has passed with no errors - from the page or
119
+ // the hook - we want to remove any errors for this
120
+ // entry from the top-level validation context too.
121
+ clearTopLevelErrorsForCard();
122
+ allData = _utils.default.CollectionPage.getData(parentCollectionName, formData); // Pull out the isDuplicate flag if one exists as we want
123
+ // to remove it now that the entry has been edited.
124
+ _allData$entryData$in = allData[entryData.index], isDuplicate = _allData$entryData$in.isDuplicate, newEntry = _objectWithoutProperties(_allData$entryData$in, _excluded);
125
+ allData[entryData.index] = _objectSpread(_objectSpread({}, newEntry), patch);
117
126
  onQuickEdit({
118
127
  target: {
119
128
  name: parentCollectionName,
@@ -141,9 +150,10 @@ var SummaryCard = function SummaryCard(_ref) {
141
150
  id: id,
142
151
  entryData: entryData,
143
152
  config: config,
144
- onChange: onChange,
153
+ onFullEdit: onFullEdit,
145
154
  onDelete: onDelete,
146
- masterPage: masterPage
155
+ masterPage: masterPage,
156
+ classModifiers: classModifiers
147
157
  });
148
158
  }
149
159
  return /*#__PURE__*/_react.default.createElement("div", {
@@ -174,11 +184,11 @@ var SummaryCard = function SummaryCard(_ref) {
174
184
  },
175
185
  classModifiers: "primary",
176
186
  disabled: quickEdit
177
- }, DEFAULT_EDIT_LABEL), config.changeAction && typeof onChange === 'function' && /*#__PURE__*/_react.default.createElement(_copReactComponents.Button, {
187
+ }, DEFAULT_EDIT_LABEL), config.changeAction && typeof onFullEdit === 'function' && /*#__PURE__*/_react.default.createElement(_copReactComponents.Button, {
178
188
  id: "".concat(id, ".changeButton"),
179
189
  onClick: function onClick() {
180
190
  var _config$changeAction;
181
- return onChange((_config$changeAction = config.changeAction) === null || _config$changeAction === void 0 ? void 0 : _config$changeAction.page, entryData.id);
191
+ return onFullEdit((_config$changeAction = config.changeAction) === null || _config$changeAction === void 0 ? void 0 : _config$changeAction.page, entryData.id);
182
192
  },
183
193
  classModifiers: ((_config$changeAction2 = config.changeAction) === null || _config$changeAction2 === void 0 ? void 0 : _config$changeAction2.classModifiers) || DEFAULT_CHANGE_BUTTON_CLASS
184
194
  }, ((_config$changeAction3 = config.changeAction) === null || _config$changeAction3 === void 0 ? void 0 : _config$changeAction3.label) || DEFAULT_CHANGE_BUTTON_LABEL), config.deleteAction && typeof onDelete === 'function' && /*#__PURE__*/_react.default.createElement(_copReactComponents.Button, {
@@ -218,6 +228,7 @@ SummaryCard.propTypes = {
218
228
  index: _propTypes.default.number.isRequired
219
229
  }).isRequired,
220
230
  config: _propTypes.default.shape({
231
+ className: _propTypes.default.string,
221
232
  banners: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({})])),
222
233
  title: _propTypes.default.string,
223
234
  details: _propTypes.default.string,
@@ -246,24 +257,22 @@ SummaryCard.propTypes = {
246
257
  })).isRequired
247
258
  }).isRequired,
248
259
  classModifiers: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
249
- onChange: _propTypes.default.func,
260
+ onFullEdit: _propTypes.default.func,
250
261
  onDelete: _propTypes.default.func,
251
262
  onDuplicate: _propTypes.default.func,
252
263
  onQuickEdit: _propTypes.default.func,
253
264
  parentCollectionName: _propTypes.default.string.isRequired,
254
265
  childCollections: _propTypes.default.arrayOf(_propTypes.default.string),
255
266
  formData: _propTypes.default.shape({}).isRequired,
256
- hideDetails: _propTypes.default.bool,
257
- inError: _propTypes.default.bool
267
+ hideDetails: _propTypes.default.bool
258
268
  };
259
269
  SummaryCard.defaultProps = {
260
270
  classModifiers: null,
261
- onChange: null,
271
+ onFullEdit: null,
262
272
  onDelete: null,
263
273
  onDuplicate: null,
264
274
  onQuickEdit: null,
265
275
  childCollections: [],
266
- hideDetails: false,
267
- inError: false
276
+ hideDetails: false
268
277
  };
269
278
  var _default = exports.default = SummaryCard;