@ukhomeoffice/cop-react-form-renderer 4.8.0 → 4.9.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.
|
@@ -103,7 +103,7 @@ var DEFAULT_CLASS = 'hods-form';
|
|
|
103
103
|
exports.DEFAULT_CLASS = DEFAULT_CLASS;
|
|
104
104
|
|
|
105
105
|
var InternalFormRenderer = function InternalFormRenderer(_ref2) {
|
|
106
|
-
var _formState$
|
|
106
|
+
var _formState$page4;
|
|
107
107
|
|
|
108
108
|
var title = _ref2.title,
|
|
109
109
|
type = _ref2.type,
|
|
@@ -165,7 +165,12 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
|
|
|
165
165
|
var _useState17 = (0, _react.useState)('load'),
|
|
166
166
|
_useState18 = _slicedToArray(_useState17, 2),
|
|
167
167
|
pagePoint = _useState18[0],
|
|
168
|
-
setPagePoint = _useState18[1];
|
|
168
|
+
setPagePoint = _useState18[1];
|
|
169
|
+
|
|
170
|
+
var _useState19 = (0, _react.useState)(false),
|
|
171
|
+
_useState20 = _slicedToArray(_useState19, 2),
|
|
172
|
+
goingBack = _useState20[0],
|
|
173
|
+
setGoingBack = _useState20[1]; // Set up hooks.
|
|
169
174
|
|
|
170
175
|
|
|
171
176
|
var _useHooks = (0, _hooks.useHooks)(),
|
|
@@ -181,6 +186,10 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
|
|
|
181
186
|
window.onpopstate = function () {
|
|
182
187
|
var _formState$page;
|
|
183
188
|
|
|
189
|
+
setGoingBack(true);
|
|
190
|
+
hooks.onGoingBack();
|
|
191
|
+
clearErrors();
|
|
192
|
+
|
|
184
193
|
if (components && pages && data && (_formState$page = formState.page) !== null && _formState$page !== void 0 && _formState$page.formData && pagePoint === undefined) {
|
|
185
194
|
var submissionData = _utils.default.Format.form({
|
|
186
195
|
pages: pages,
|
|
@@ -219,8 +228,16 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
|
|
|
219
228
|
}, [type, _hub, data, components, setHub]); // Form state.
|
|
220
229
|
|
|
221
230
|
(0, _react.useEffect)(function () {
|
|
231
|
+
var _formState$page2;
|
|
232
|
+
|
|
233
|
+
// revert formData changes if going back in hub-and-spoke
|
|
234
|
+
if (type === _models.FormTypes.HUB && goingBack && data && (_formState$page2 = formState.page) !== null && _formState$page2 !== void 0 && _formState$page2.formData) {
|
|
235
|
+
formState.page.formData = _objectSpread({}, data);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
setGoingBack(false);
|
|
222
239
|
setFormState(_helpers.default.getFormState(pageId, pages, hub));
|
|
223
|
-
}, [pages, hub, pageId, setFormState]); // Call the onFormLoad hook just when this component first renders.
|
|
240
|
+
}, [pages, hub, pageId, setFormState, type, goingBack, data, formState.page]); // Call the onFormLoad hook just when this component first renders.
|
|
224
241
|
|
|
225
242
|
(0, _react.useEffect)(function () {
|
|
226
243
|
setPagePoint(undefined);
|
|
@@ -304,7 +321,7 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
|
|
|
304
321
|
|
|
305
322
|
switch (action.type) {
|
|
306
323
|
case _models.PageAction.TYPES.SUBMIT:
|
|
307
|
-
setPagePoint('
|
|
324
|
+
setPagePoint('submit');
|
|
308
325
|
break;
|
|
309
326
|
|
|
310
327
|
case _models.PageAction.TYPES.SAVE_AND_NAVIGATE:
|
|
@@ -353,6 +370,15 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
|
|
|
353
370
|
|
|
354
371
|
if (patch) {
|
|
355
372
|
setData(submissionData);
|
|
373
|
+
} // In case of hub-and-spoke if patch has changed then save field name and value to variables for call to onSubmit hook
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
var changedFieldName = undefined;
|
|
377
|
+
var changedFieldValue = undefined;
|
|
378
|
+
|
|
379
|
+
if (type === _models.FormTypes.HUB && Object.keys(patch).length > 0) {
|
|
380
|
+
changedFieldName = formState.page.components[0].cya_label;
|
|
381
|
+
changedFieldValue = Object.values(patch)[0];
|
|
356
382
|
} // Now submit the data to the backend...
|
|
357
383
|
|
|
358
384
|
|
|
@@ -367,7 +393,7 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
|
|
|
367
393
|
pageUpdate(sData);
|
|
368
394
|
}, function (errors) {
|
|
369
395
|
_handlers.default.submissionError(errors, addErrors);
|
|
370
|
-
});
|
|
396
|
+
}, changedFieldName, changedFieldValue);
|
|
371
397
|
}
|
|
372
398
|
}
|
|
373
399
|
}; // Handle navigation from "Check your answers".
|
|
@@ -479,9 +505,9 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
|
|
|
479
505
|
}
|
|
480
506
|
|
|
481
507
|
if (action.type === _models.PageAction.TYPES.NAVIGATE) {
|
|
482
|
-
var _formState$
|
|
508
|
+
var _formState$page3;
|
|
483
509
|
|
|
484
|
-
onPageChange(_helpers.default.getNextPageId(type, pages, pageId, action, (_formState$
|
|
510
|
+
onPageChange(_helpers.default.getNextPageId(type, pages, pageId, action, (_formState$page3 = formState.page) === null || _formState$page3 === void 0 ? void 0 : _formState$page3.formData));
|
|
485
511
|
}
|
|
486
512
|
|
|
487
513
|
if (action.type === _models.PageAction.TYPES.CANCEL) {
|
|
@@ -499,7 +525,7 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
|
|
|
499
525
|
className: classes()
|
|
500
526
|
}, title && !hide_title && pageId === _models.FormPages.HUB && /*#__PURE__*/_react.default.createElement(_copReactComponents.LargeHeading, null, title), formState.cya && /*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, _extends({
|
|
501
527
|
pages: _helpers.default.getRelevantPages(formState, pages, currentTask.fullPages)
|
|
502
|
-
}, cya, ((_formState$
|
|
528
|
+
}, cya, ((_formState$page4 = formState.page) === null || _formState$page4 === void 0 ? void 0 : _formState$page4.type) === _models.FormPages.PARTIAL_CYA && {
|
|
503
529
|
actions: formState.page.actions
|
|
504
530
|
}, formState.cya, {
|
|
505
531
|
onAction: onCYAAction,
|
|
@@ -32,6 +32,7 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
32
32
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
33
33
|
|
|
34
34
|
var DEFAULT_HOOKS = {
|
|
35
|
+
onGoingBack: function onGoingBack() {},
|
|
35
36
|
onFormComplete: function onFormComplete() {},
|
|
36
37
|
onFormLoad: function onFormLoad() {},
|
|
37
38
|
onGetComponent: function onGetComponent(config, wrap) {
|
|
@@ -59,6 +60,7 @@ var HooksContextProvider = function HooksContextProvider(_ref) {
|
|
|
59
60
|
children = _ref.children;
|
|
60
61
|
|
|
61
62
|
var _useState = (0, _react.useState)({
|
|
63
|
+
onGoingBack: (overrides === null || overrides === void 0 ? void 0 : overrides.onGoingBack) || DEFAULT_HOOKS.onGoingBack,
|
|
62
64
|
onFormComplete: (overrides === null || overrides === void 0 ? void 0 : overrides.onFormComplete) || DEFAULT_HOOKS.onFormComplete,
|
|
63
65
|
onFormLoad: (overrides === null || overrides === void 0 ? void 0 : overrides.onFormLoad) || DEFAULT_HOOKS.onFormLoad,
|
|
64
66
|
onGetComponent: (overrides === null || overrides === void 0 ? void 0 : overrides.onGetComponent) || DEFAULT_HOOKS.onGetComponent,
|