@ukhomeoffice/cop-react-form-renderer 6.15.12-alpha → 6.15.12

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 (48) hide show
  1. package/dist/components/FormRenderer/FormRenderer.js +20 -15
  2. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/cop-reassign-task-to-rcc.json +1 -0
  3. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-containerised.json +1 -0
  4. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-dependent-component-nested-block.json +1 -0
  5. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-dependent-component-nested.json +1 -0
  6. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-refdata.json +1 -0
  7. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-target-component-nested.json +1 -0
  8. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens.json +1 -0
  9. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-show-whens-page-hidden.json +1 -0
  10. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-cop-airpax.json +1 -0
  11. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-cop-mandec.json +1 -0
  12. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-collection-component-dependent-on-external-data.json +1 -0
  13. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-collection-component.json +1 -0
  14. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-referring-to-collection.json +1 -0
  15. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-referring-to-hidden-collection.json +1 -0
  16. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-show-when-in-component-and-page.json +1 -0
  17. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-with-nested-questions.json +1 -0
  18. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component.json +1 -0
  19. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-containerised-component.json +1 -0
  20. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-embedded-collection-component.json +1 -0
  21. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-embedded-component.json +1 -0
  22. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-entire-collection.json +114 -0
  23. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-multilevel-containerised-component-leaf-hidden.json +1 -0
  24. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-multilevel-containerised-component.json +1 -0
  25. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-options.json +1 -0
  26. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-page-collection.json +1 -0
  27. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-page-component-used-elsewhere.json +1 -0
  28. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-page-same-component-reused.json +1 -0
  29. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-page.json +1 -0
  30. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-nested-answers-hidden-by-option.json +1 -0
  31. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-page-nested-radio-component.json +201 -0
  32. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-page-same-component-reused-one-shown.json +1 -0
  33. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-variance-breach.json +4272 -0
  34. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/cop-variance-breach-with-upload-files.json +1264 -0
  35. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-hidden-entire-collection.json +20 -0
  36. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-page-nested-radio-component.json +45 -0
  37. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-hidden-entire-collection-removed.json +3 -0
  38. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-page-nested-radio-component-removed.json +45 -0
  39. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.js +15 -3
  40. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.test.js +65 -33
  41. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +6 -0
  42. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +20 -0
  43. package/dist/components/FormRenderer/onCYAAction.js +3 -3
  44. package/dist/components/FormRenderer/onCYAAction.test.js +2 -1
  45. package/dist/components/FormRenderer/onPageAction.js +2 -2
  46. package/dist/components/FormRenderer/onPageAction.test.js +2 -1
  47. package/dist/utils/CollectionPage/mergeCollectionPages.js +8 -2
  48. package/package.json +2 -1
@@ -39,6 +39,7 @@ const FormRenderer = _ref => {
39
39
  let {
40
40
  title,
41
41
  type,
42
+ cleanseHiddenData,
42
43
  components,
43
44
  pages,
44
45
  hub,
@@ -61,6 +62,7 @@ const FormRenderer = _ref => {
61
62
  }, /*#__PURE__*/_react.default.createElement(_context.ValidationContextProvider, null, /*#__PURE__*/_react.default.createElement(InternalFormRenderer, {
62
63
  title: title,
63
64
  type: type,
65
+ cleanseHiddenData: cleanseHiddenData,
64
66
  components: components,
65
67
  pages: pages,
66
68
  hub: hub,
@@ -84,6 +86,7 @@ const InternalFormRenderer = _ref2 => {
84
86
  let {
85
87
  title,
86
88
  type,
89
+ cleanseHiddenData,
87
90
  components,
88
91
  pages: _pages,
89
92
  hub: _hub,
@@ -142,12 +145,23 @@ const InternalFormRenderer = _ref2 => {
142
145
  }
143
146
  clearErrors();
144
147
  setGoingBack(true);
145
- hooks.onGoingBack(e.state ? e.state : null);
148
+ hooks.onGoingBack.apply(hooks, [e.state ? e.state : null].concat(formState.page.formData));
146
149
  if (components && pages && data && (_formState$page = formState.page) !== null && _formState$page !== void 0 && _formState$page.formData && pagePoint === undefined) {
150
+ var _submissionData$formS;
147
151
  const submissionData = _utils.default.Format.form({
148
152
  pages,
149
153
  components
150
154
  }, _objectSpread(_objectSpread({}, data), formState.page.formData), _models.EventTypes.SUBMIT);
155
+ if (submissionData !== null && submissionData !== void 0 && (_submissionData$formS = submissionData.formStatus) !== null && _submissionData$formS !== void 0 && _submissionData$formS.taskPage) {
156
+ const object = submissionData.formStatus.tasks;
157
+ Object.keys(object).forEach(key => {
158
+ const value = object[key];
159
+ if (value.currentPage && !value.complete) {
160
+ delete object[key].currentPage;
161
+ }
162
+ });
163
+ delete submissionData.formStatus.taskPage;
164
+ }
151
165
  setData(submissionData);
152
166
  }
153
167
  };
@@ -189,17 +203,6 @@ const InternalFormRenderer = _ref2 => {
189
203
  setFormState(_helpers.default.getFormState(pageId, pages, hub));
190
204
  }, [pages, hub, pageId, setFormState, type, goingBack, data, formState.page]);
191
205
 
192
- // page rendered page
193
- (0, _react.useEffect)(() => {
194
- if (document) {
195
- const element = document.getElementsByTagName("h1")[0];
196
- if (element) {
197
- element.setAttribute("tabIndex", "-1");
198
- element.focus();
199
- }
200
- }
201
- }, [formState.page]);
202
-
203
206
  // Call the onFormLoad hook just when this component first renders.
204
207
  (0, _react.useEffect)(() => {
205
208
  setPagePoint(undefined);
@@ -306,7 +309,7 @@ const InternalFormRenderer = _ref2 => {
306
309
  actions: (_formState$page$actio = formState.page.actions) === null || _formState$page$actio === void 0 ? void 0 : _formState$page$actio.filter(action => _utils.default.Component.show(action, data))
307
310
  }, formState.cya, {
308
311
  onAction: action => {
309
- (0, _onCYAAction.default)(setPagePoint, action, pages, validate, components, data, setData, type, pageId, currentTask, hooks, addErrors, hub, onPageChange, formState, submitting, setSubmitting);
312
+ (0, _onCYAAction.default)(setPagePoint, action, pages, validate, cleanseHiddenData, components, data, setData, type, pageId, currentTask, hooks, addErrors, hub, onPageChange, formState, submitting, setSubmitting);
310
313
  },
311
314
  onRowAction: onCYARowAction,
312
315
  summaryListClassModifiers: summaryListClassModifiers,
@@ -327,7 +330,7 @@ const InternalFormRenderer = _ref2 => {
327
330
  page: formState.page,
328
331
  pages: [].concat(pages),
329
332
  onAction: (action, patch, patchLabel) => {
330
- (0, _onPageAction.default)(action, patch, patchLabel, hooks, data, formState, validate, onPageChange, type, pages, components, pageId, setPagePoint, currentTask, setData, hubDetails, setSubmitted, addErrors, submitting, setSubmitting, errors);
333
+ (0, _onPageAction.default)(action, patch, patchLabel, hooks, data, formState, validate, onPageChange, type, cleanseHiddenData, pages, components, pageId, setPagePoint, currentTask, setData, hubDetails, setSubmitted, addErrors, submitting, setSubmitting, errors);
331
334
  },
332
335
  onChange: onChange,
333
336
  hashLink: hashLink,
@@ -340,7 +343,7 @@ const InternalFormRenderer = _ref2 => {
340
343
  pages: pages,
341
344
  onCollectionChange: onChange,
342
345
  onAction: (action, patch, patchLabel) => {
343
- (0, _onPageAction.default)(action, patch, patchLabel, hooks, data, formState, validate, onPageChange, type, pages, components, pageId, setPagePoint, currentTask, setData, hubDetails, setSubmitted, addErrors, submitting, setSubmitting, errors);
346
+ (0, _onPageAction.default)(action, patch, patchLabel, hooks, data, formState, validate, onPageChange, type, cleanseHiddenData, pages, components, pageId, setPagePoint, currentTask, setData, hubDetails, setSubmitted, addErrors, submitting, setSubmitting, errors);
344
347
  },
345
348
  hashLink: hashLink,
346
349
  classModifiers: formState.page.classModifiers,
@@ -374,6 +377,7 @@ const propTypes = {
374
377
  pages: _propTypes.default.arrayOf(_propTypes.default.shape({})).isRequired,
375
378
  summaryListClassModifiers: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
376
379
  title: _propTypes.default.string,
380
+ cleanseHiddenData: _propTypes.default.bool,
377
381
  /** See <a href="/?path=/docs/f-json--page#formtypes">FormTypes</a>. */
378
382
  type: _propTypes.default.oneOf([_models.FormTypes.CYA, _models.FormTypes.FORM, _models.FormTypes.HUB, _models.FormTypes.TASK, _models.FormTypes.WIZARD, _models.FormTypes.TASK_CYA, _models.FormTypes.FORM_WITH_TASK]).isRequired,
379
383
  viewOnly: _propTypes.default.bool,
@@ -399,6 +403,7 @@ const defaultProps = {
399
403
  noChangeAction: false,
400
404
  summaryListClassModifiers: [],
401
405
  title: '',
406
+ cleanseHiddenData: false,
402
407
  viewOnly: true,
403
408
  hideBlankRows: false
404
409
  };
@@ -1,4 +1,5 @@
1
1
  {
2
+ "cleanseHiddenData": true,
2
3
  "cya": {
3
4
  "actions": [
4
5
  {
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,4 +1,5 @@
1
1
  {
2
+ "cleanseHiddenData": true,
2
3
  "cya": {
3
4
  "actions": [
4
5
  {
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "name": "cop-make-your-mandatory-declarations",
3
+ "cleanseHiddenData": true,
3
4
  "title": "Make your mandatory declarations",
4
5
  "type": "form-with-task-list",
5
6
  "components": [
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -0,0 +1,114 @@
1
+ {
2
+ "id": "example-form",
3
+ "cleanseHiddenData": true,
4
+ "version": "0.0.1",
5
+ "name": "example-form",
6
+ "title": "Example form",
7
+ "type": "form",
8
+ "components": [
9
+ {
10
+ "id": "itemCategory",
11
+ "fieldId": "itemCategory",
12
+ "label": "Item category",
13
+ "type": "text"
14
+ },
15
+ {
16
+ "id": "itemSubCategory",
17
+ "fieldId": "itemSubCategory",
18
+ "label": "Item Sub category",
19
+ "type": "text"
20
+ },
21
+ {
22
+ "id": "abvDetails",
23
+ "fieldId": "abvDetails",
24
+ "label": "AbvDetails",
25
+ "type": "text"
26
+ },
27
+ {
28
+ "id": "firearmCheck",
29
+ "fieldId": "firearmCheck",
30
+ "label": "FirearmCheck",
31
+ "type": "text"
32
+ },
33
+ {
34
+ "id": "brandText",
35
+ "fieldId": "brandText",
36
+ "label": "BrandText",
37
+ "type": "text"
38
+ }
39
+ ],
40
+ "pages": [
41
+ {
42
+ "id": "item-seal-details",
43
+ "name": "item-seal-details",
44
+ "title": "Item seal details",
45
+ "components": [
46
+ {
47
+ "use": "itemCategory"
48
+ },
49
+ {
50
+ "use": "itemSubCategory"
51
+ }
52
+ ],
53
+ "collection": {
54
+ "show_when": {
55
+ "op": "=",
56
+ "field": "alpha",
57
+ "value": "NOT-alpha-value"
58
+ },
59
+ "name": "items",
60
+ "actionPosition": "inHeading",
61
+ "labels": {
62
+ "item": "Item ${index}"
63
+ }
64
+ }
65
+ },
66
+ {
67
+ "id": "alcohol",
68
+ "name": "alcohol",
69
+ "title": "Alcohol",
70
+ "collection": {
71
+ "name": "items",
72
+ "waitForFormData": true,
73
+ "heading": {
74
+ "text": "Alcohol",
75
+ "size": "m",
76
+ "changeLink": true
77
+ }
78
+ },
79
+ "components": [
80
+ {
81
+ "use": "brandText",
82
+ "label": "Model or brand"
83
+ },
84
+ {
85
+ "use": "abvDetails",
86
+ "label": ""
87
+ }
88
+ ]
89
+ },
90
+ {
91
+ "id": "firearm",
92
+ "name": "firearm",
93
+ "title": "Firearm",
94
+ "collection": {
95
+ "name": "items",
96
+ "waitForFormData": true,
97
+ "heading": {
98
+ "text": "Firearm",
99
+ "size": "m",
100
+ "changeLink": true
101
+ }
102
+ },
103
+ "components": [
104
+ {
105
+ "use": "brandText",
106
+ "label": "Model or brand"
107
+ },
108
+ {
109
+ "use": "firearmCheck"
110
+ }
111
+ ]
112
+ }
113
+ ]
114
+ }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",
@@ -0,0 +1,201 @@
1
+ {
2
+ "name": "cop-addABorderEvent",
3
+ "cleanseHiddenData": true,
4
+ "title": "Add a border event",
5
+ "type": "form",
6
+ "components":[],
7
+ "pages": [
8
+ {
9
+ "id": "vehicle-owner-details",
10
+ "name": "vehicle-owner-details",
11
+ "title": "Vehicle owner details",
12
+ "show_when": [
13
+ {
14
+ "field": "driverOwnVehicle",
15
+ "op": "=",
16
+ "value": "noSomeoneElseOwns"
17
+ },
18
+ {
19
+ "field": "modeOfTransport.id",
20
+ "op": "eq",
21
+ "value": 9
22
+ },
23
+ {
24
+ "field": "whatHappened",
25
+ "op": "in",
26
+ "values": [
27
+ "roroItems",
28
+ "sams",
29
+ "peopleHidingTrailer",
30
+ "peopleHidingVehicle",
31
+ "unsecuredGoods"
32
+ ]
33
+ }
34
+ ],
35
+ "components": [
36
+ {
37
+ "id": "otherVehicleOwner",
38
+ "fieldId": "otherVehicleOwner",
39
+ "type": "container",
40
+ "show_on_cya": true,
41
+ "components": [
42
+ {
43
+ "id": "fullName",
44
+ "fieldId": "fullName",
45
+ "type": "text",
46
+ "label": "Full name",
47
+ "required": true,
48
+ "custom_errors": [
49
+ {
50
+ "type": "required",
51
+ "message": "Enter the full name of the owner"
52
+ }
53
+ ],
54
+ "additionalValidation": [
55
+ {
56
+ "function": "mustBeShorterThan",
57
+ "value": 256,
58
+ "message": "Full name must be 255 characters or less"
59
+ }
60
+ ]
61
+ },
62
+ {
63
+ "id": "vehicleOwnerAddress",
64
+ "fieldId": "vehicleOwnerAddress",
65
+ "label": "Do you have an address for the owner?",
66
+ "cya_label": "Do you have an address for the owner?",
67
+ "type": "radios",
68
+ "required": true,
69
+ "custom_errors": [
70
+ {
71
+ "type": "required",
72
+ "message": "Select whether you have an address for the owner"
73
+ }
74
+ ],
75
+ "data": {
76
+ "options": [
77
+ {
78
+ "label": "Yes - a UK address",
79
+ "value": "Yes",
80
+ "nested": [
81
+ {
82
+ "id": "ukAddress",
83
+ "fieldId": "ukAddress",
84
+ "hint": "Enter part of the address and select a result",
85
+ "type": "addressLookup",
86
+ "label": "Search UK address",
87
+ "cya_label": "Address",
88
+ "required": true,
89
+ "isEditable": true
90
+ }
91
+ ]
92
+ },
93
+ {
94
+ "label": "Yes - a non-UK address",
95
+ "value": "no",
96
+ "nested": [
97
+ {
98
+ "id": "nonUkAddressText",
99
+ "fieldId": "nonUkAddressText",
100
+ "type": "textarea",
101
+ "label": "International address",
102
+ "cya_label": "Address",
103
+ "required": true,
104
+ "custom_errors": [
105
+ {
106
+ "type": "required",
107
+ "message": "Enter an international address"
108
+ }
109
+ ],
110
+ "additionalValidation": [
111
+ {
112
+ "function": "mustBeShorterThan",
113
+ "value": "1001",
114
+ "message": "International address must be 1000 characters or less"
115
+ }
116
+ ]
117
+ },
118
+ {
119
+ "id": "country",
120
+ "fieldId": "country",
121
+ "type": "autocomplete",
122
+ "showAllValues": true,
123
+ "label": "Country",
124
+ "required": true,
125
+ "custom_errors": [
126
+ {
127
+ "type": "required",
128
+ "message": "Select a country"
129
+ }
130
+ ],
131
+ "item": {
132
+ "value": "id",
133
+ "label": "name",
134
+ "format": "${iso31661alpha3} - ${name}"
135
+ },
136
+ "data": {
137
+ "url": "refdata/v2/entities/country?sort=name.asc&mode=dataOnly&validDateTime=true&filter=id=neq.234&select=id,name,iso31661alpha3"
138
+ }
139
+ }
140
+ ]
141
+ },
142
+ {
143
+ "label": "No",
144
+ "value": "false"
145
+ }
146
+ ]
147
+ }
148
+ },
149
+ {
150
+ "id": "telephoneNumber",
151
+ "fieldId": "telephoneNumber",
152
+ "type": "text",
153
+ "label": "Telephone number",
154
+ "hint": "For international numbers include the country code",
155
+ "pattern": "^[\\+]?[\\s\\d]+$",
156
+ "additionalValidation": [
157
+ {
158
+ "function": "mustBeShorterThan",
159
+ "value": 16,
160
+ "message": "Telephone number must be 15 characters or less"
161
+ }
162
+ ],
163
+ "custom_errors": [
164
+ {
165
+ "type": "pattern",
166
+ "message": "Telephone number can only contain a + symbol at the start and numbers"
167
+ }
168
+ ]
169
+ },
170
+ {
171
+ "id": "emailAddress",
172
+ "fieldId": "emailAddress",
173
+ "type": "text",
174
+ "label": "Email address",
175
+ "additionalValidation": [
176
+ {
177
+ "function": "mustBeShorterThan",
178
+ "value": 101,
179
+ "message": "Email address must be 100 characters or less"
180
+ }
181
+ ]
182
+ }
183
+ ]
184
+ }
185
+ ],
186
+ "actions": [
187
+ {
188
+ "type": "saveAndContinue",
189
+ "page": "vehicle-details-cya"
190
+ },
191
+ "saveAndReturn"
192
+ ],
193
+ "cya_link": {
194
+ "page": "vehicle-owner-details",
195
+ "singleChangeLink": true,
196
+ "aria_suffix": "Vehicle owner details"
197
+ }
198
+ }
199
+ ]
200
+ }
201
+
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "id": "example-form",
3
+ "cleanseHiddenData": true,
3
4
  "version": "0.0.1",
4
5
  "name": "example-form",
5
6
  "title": "Example form",