@ukhomeoffice/cop-react-form-renderer 3.18.1 → 3.19.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.
@@ -88,6 +88,7 @@ var FormPage = function FormPage(_ref) {
88
88
  label: _utils.default.interpolateString(action.label, page.formData)
89
89
  }) : action;
90
90
  });
91
+ page.formData = _objectSpread(_objectSpread({}, page.formData), patch);
91
92
  return /*#__PURE__*/_react.default.createElement("div", {
92
93
  className: classes('page'),
93
94
  key: page.id
@@ -101,7 +102,7 @@ var FormPage = function FormPage(_ref) {
101
102
  component: component,
102
103
  onChange: onPageChange,
103
104
  value: page.formData[component.fieldId] || patch[component.fieldId],
104
- formData: _objectSpread(_objectSpread({}, page.formData), patch)
105
+ formData: page.formData
105
106
  });
106
107
  }), /*#__PURE__*/_react.default.createElement(_PageActions.default, {
107
108
  actions: (_page$actions2 = page.actions) === null || _page$actions2 === void 0 ? void 0 : _page$actions2.filter(function (action) {
@@ -74,7 +74,8 @@ var FormRenderer = function FormRenderer(_ref) {
74
74
  hide_title = _ref.hide_title,
75
75
  summaryListClassModifiers = _ref.summaryListClassModifiers,
76
76
  noChangeAction = _ref.noChangeAction,
77
- newPageId = _ref.newPageId;
77
+ newPageId = _ref.newPageId,
78
+ viewOnly = _ref.viewOnly;
78
79
  return /*#__PURE__*/_react.default.createElement(_context.HooksContextProvider, {
79
80
  overrides: hooks
80
81
  }, /*#__PURE__*/_react.default.createElement(_context.ValidationContextProvider, null, /*#__PURE__*/_react.default.createElement(InternalFormRenderer, {
@@ -91,7 +92,8 @@ var FormRenderer = function FormRenderer(_ref) {
91
92
  hide_title: hide_title,
92
93
  summaryListClassModifiers: summaryListClassModifiers,
93
94
  noChangeAction: noChangeAction,
94
- newPageId: newPageId
95
+ newPageId: newPageId,
96
+ viewOnly: viewOnly
95
97
  })));
96
98
  };
97
99
 
@@ -112,7 +114,8 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
112
114
  hide_title = _ref2.hide_title,
113
115
  summaryListClassModifiers = _ref2.summaryListClassModifiers,
114
116
  noChangeAction = _ref2.noChangeAction,
115
- newPageId = _ref2.newPageId;
117
+ newPageId = _ref2.newPageId,
118
+ viewOnly = _ref2.viewOnly;
116
119
 
117
120
  // Set up the initial states.
118
121
  var _useState = (0, _react.useState)({}),
@@ -153,7 +156,12 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
153
156
  var _useState15 = (0, _react.useState)({}),
154
157
  _useState16 = _slicedToArray(_useState15, 2),
155
158
  hubDetails = _useState16[0],
156
- setHubDetails = _useState16[1]; // Set up hooks.
159
+ setHubDetails = _useState16[1];
160
+
161
+ var _useState17 = (0, _react.useState)('start'),
162
+ _useState18 = _slicedToArray(_useState17, 2),
163
+ pagePoint = _useState18[0],
164
+ setPagePoint = _useState18[1]; // Set up hooks.
157
165
 
158
166
 
159
167
  var _useHooks = (0, _hooks.useHooks)(),
@@ -167,7 +175,7 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
167
175
 
168
176
 
169
177
  (0, _react.useEffect)(function () {
170
- if (components && _pages && _data) {
178
+ if (components && _pages && _data && (['start', 'end'].includes(pagePoint) || viewOnly)) {
171
179
  var _data$formStatus;
172
180
 
173
181
  setData(_utils.default.Data.setupForm(_pages, components, _data));
@@ -176,7 +184,7 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
176
184
  setPageId(_data.formStatus.page);
177
185
  }
178
186
  }
179
- }, [components, _pages, _data, setData]); // Setup pages.
187
+ }, [components, _pages, _data, setData, pagePoint, viewOnly]); // Setup pages.
180
188
 
181
189
  (0, _react.useEffect)(function () {
182
190
  setPages(_utils.default.FormPage.getAll(_pages, components, _objectSpread({}, data)));
@@ -197,6 +205,7 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
197
205
  }, [pages, hub, pageId, setFormState]); // Call the onFormLoad hook just when this component first renders.
198
206
 
199
207
  (0, _react.useEffect)(function () {
208
+ setPagePoint(undefined);
200
209
  hooks.onFormLoad();
201
210
  }, [hooks]);
202
211
  (0, _react.useEffect)(function () {
@@ -267,11 +276,15 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
267
276
  if (action.type === _models.PageAction.TYPES.NAVIGATE) {
268
277
  _handlers.default.navigate(action, pageId, onPageChange);
269
278
  } else {
270
- // Save draft or submit.
279
+ if (action.type === 'submit') {
280
+ setPagePoint('end');
281
+ } // Save draft or submit.
282
+
283
+
271
284
  var submissionData = _utils.default.Format.form({
272
285
  pages: pages,
273
286
  components: components
274
- }, _objectSpread(_objectSpread({}, data), patch), _models.EventTypes.SUBMIT);
287
+ }, _objectSpread(_objectSpread(_objectSpread({}, data), patch), formState.page.formData), _models.EventTypes.SUBMIT);
275
288
 
276
289
  submissionData.formStatus = _helpers.default.getSubmissionStatus(type, pages, pageId, action, submissionData, currentTask, true);
277
290
 
@@ -343,6 +356,8 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
343
356
  // Check to see whether the action is able to proceed, which in
344
357
  // in the case of a submission will validate the fields in the page.
345
358
  if (action.type === _models.PageAction.TYPES.SUBMIT) {
359
+ setPagePoint('end');
360
+
346
361
  if (_helpers.default.canCYASubmit(pages, validate.pages)) {
347
362
  // Submit.
348
363
  var submissionData = _utils.default.Format.form({
@@ -449,7 +464,8 @@ FormRenderer.propTypes = InternalFormRenderer.propTypes = {
449
464
  className: _propTypes.default.string,
450
465
  hide_title: _propTypes.default.bool,
451
466
  summaryListClassModifiers: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
452
- noChangeAction: _propTypes.default.bool
467
+ noChangeAction: _propTypes.default.bool,
468
+ viewOnly: _propTypes.default.bool
453
469
  };
454
470
  FormRenderer.defaultProps = InternalFormRenderer.defaultProps = {
455
471
  type: _models.FormTypes.HUB,
@@ -459,7 +475,8 @@ FormRenderer.defaultProps = InternalFormRenderer.defaultProps = {
459
475
  classModifiers: [],
460
476
  hide_title: false,
461
477
  summaryListClassModifiers: [],
462
- noChangeAction: false
478
+ noChangeAction: false,
479
+ viewOnly: true
463
480
  };
464
481
  var _default = FormRenderer;
465
482
  exports.default = _default;
@@ -57,9 +57,13 @@ var getCheckboxes = function getCheckboxes(config) {
57
57
  var getCalculation = function getCalculation(config) {
58
58
  var calculatedValue = _Data.default.applyFormula(config);
59
59
 
60
+ if (!!calculatedValue) {
61
+ config.value = calculatedValue;
62
+ config.formData[config.fieldId] = "" + calculatedValue;
63
+ }
64
+
60
65
  var attrs = (0, _cleanAttributes.default)(config, ['formula']);
61
66
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.TextInput, _extends({}, attrs, {
62
- value: calculatedValue,
63
67
  readOnly: true
64
68
  }));
65
69
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ukhomeoffice/cop-react-form-renderer",
3
- "version": "3.18.1",
3
+ "version": "3.19.0",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "clean": "rimraf dist",