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

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 (50) hide show
  1. package/dist/components/FormComponent/FormComponent.js +6 -0
  2. package/dist/components/FormComponent/helpers/addLabel.js +3 -2
  3. package/dist/components/FormPage/FormPage.js +20 -7
  4. package/dist/components/FormPage/FormPage.test.js +53 -0
  5. package/dist/components/FormRenderer/FormRenderer.js +24 -3
  6. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/cop-reassign-task-to-rcc.json +446 -0
  7. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-containerised.json +1 -0
  8. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-dependent-component-nested-block.json +1 -0
  9. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-dependent-component-nested.json +1 -0
  10. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-refdata.json +1 -0
  11. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens-target-component-nested.json +1 -0
  12. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-component-show-whens.json +1 -0
  13. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-chained-show-whens-page-hidden.json +1 -0
  14. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-cop-airpax.json +1 -0
  15. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-cop-mandec.json +1 -0
  16. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-collection-component-dependent-on-external-data.json +1 -0
  17. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-collection-component.json +1 -0
  18. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-referring-to-collection.json +1 -0
  19. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-referring-to-hidden-collection.json +1 -0
  20. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-show-when-in-component-and-page.json +1 -0
  21. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component-with-nested-questions.json +1 -0
  22. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-component.json +1 -0
  23. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-containerised-component.json +1 -0
  24. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-embedded-collection-component.json +1 -0
  25. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-embedded-component.json +1 -0
  26. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-multilevel-containerised-component-leaf-hidden.json +1 -0
  27. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-multilevel-containerised-component.json +1 -0
  28. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-options.json +1 -0
  29. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-page-collection.json +1 -0
  30. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-page-component-used-elsewhere.json +1 -0
  31. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-page-same-component-reused.json +1 -0
  32. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-hidden-page.json +1 -0
  33. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-nested-answers-hidden-by-option.json +1 -0
  34. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-page-nested-radio-component.json +201 -0
  35. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-page-same-component-reused-one-shown.json +1 -0
  36. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/forms/form-variance-breach.json +4272 -0
  37. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/cop-airpax-carrier.json +407 -0
  38. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/cop-variance-breach-with-upload-files.json +1264 -0
  39. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/data-page-nested-radio-component.json +45 -0
  40. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/input/reassign-to-rcc.json +72 -0
  41. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/output/data-page-nested-radio-component-removed.json +45 -0
  42. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.js +32 -18
  43. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.test.js +73 -31
  44. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutesUtils.js +15 -7
  45. package/dist/components/FormRenderer/onCYAAction.js +3 -3
  46. package/dist/components/FormRenderer/onCYAAction.test.js +2 -1
  47. package/dist/components/FormRenderer/onPageAction.js +2 -2
  48. package/dist/components/FormRenderer/onPageAction.test.js +2 -1
  49. package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +2 -1
  50. package/package.json +5 -4
@@ -28,7 +28,7 @@ const addValue = (key, value, multiMap) => {
28
28
  *
29
29
  * @param {Object} payload Javascript object from which the node will be deleted. Updated by the method.
30
30
  * @param {String} path A string containing a decimal point delimited path specifying the node to delete.
31
- * @return Nothing, obj above updated.
31
+ * @return {void}, obj above updated.
32
32
  */
33
33
  exports.addValue = addValue;
34
34
  const deleteNodeByPath = (payload, path) => {
@@ -88,15 +88,20 @@ const getNestedQuestionPath = (optionPath, nestedFieldId) => {
88
88
  /**
89
89
  * If the component has options, go through each option removing the data for any nested fields.
90
90
  * Required as nested options are in the payload at the same heirarchical level.
91
+ *
92
+ * There are occasions when a field shouldn't be removed from the payload, eg if a form is being used for 2 purposes
93
+ * eg the cop-reassign-task-to-rcc.json, and the field is only being hidden for display purposes. Allow these fields
94
+ * to be preserved with a property on the component.
91
95
 
92
96
  * @param {Object} payload Javascript object from which the node will be deleted. Updated by the method.
93
97
  * @param {String} path A string containing a decimal point delimited path specifying the node to delete.
94
98
  * @param {Object} component The form component representing the path being deleted
95
- * @return Nothing, obj above updated.
99
+ * @return {void}, obj above updated.
96
100
  */
97
101
  exports.getNestedQuestionPath = getNestedQuestionPath;
98
102
  const deleteNodeAndOptions = (payload, path, component) => {
99
103
  var _component$data;
104
+ if (component.preserveInPayload) return;
100
105
  deleteNodeByPath(payload, path);
101
106
  // If the component has options, go through each option removing the data for any nested fields. Required as nested options are in the payload at the same heirarchical level.
102
107
  if (component !== null && component !== void 0 && (_component$data = component.data) !== null && _component$data !== void 0 && _component$data.options) {
@@ -115,7 +120,7 @@ const deleteNodeAndOptions = (payload, path, component) => {
115
120
  * but added by the renderer to find the activeId. If so, remove these objects entirely as they have been pruned.
116
121
  *
117
122
  * @param {Array} array Array of objects. Each object which has only 1 remaining field called 'id' should be removed.
118
- * @return Nothing, array above updated.
123
+ * @return {void}, array above updated.
119
124
  */
120
125
  exports.deleteNodeAndOptions = deleteNodeAndOptions;
121
126
  const removeObjectWithOnlySingleIdField = array => {
@@ -238,11 +243,13 @@ exports.isShowEntity = isShowEntity;
238
243
  const findComponentDefinitionInForm = (pageComponentDef, componentByIdMap, componentByFieldIdMap) => {
239
244
  var _ref, _componentByIdMap$get;
240
245
  const componentInForm = (_ref = (_componentByIdMap$get = componentByIdMap.get(pageComponentDef.use)) !== null && _componentByIdMap$get !== void 0 ? _componentByIdMap$get : componentByFieldIdMap.get(pageComponentDef.use)) !== null && _ref !== void 0 ? _ref : pageComponentDef;
246
+
247
+ // Create clone of component, so processing can make changes to it without changing the form
248
+ const componentInFormClone = JSON.parse(JSON.stringify(componentInForm));
241
249
  if (pageComponentDef.use && pageComponentDef.show_when) {
242
- componentInForm.show_when = pageComponentDef.show_when;
250
+ componentInFormClone.show_when = pageComponentDef.show_when;
243
251
  }
244
- // Retun clone of component, so subsequent processing can make changes to it without changing the form
245
- return JSON.parse(JSON.stringify(componentInForm));
252
+ return componentInFormClone;
246
253
  };
247
254
 
248
255
  /**
@@ -254,7 +261,7 @@ const findComponentDefinitionInForm = (pageComponentDef, componentByIdMap, compo
254
261
  * @param {*} component The component definition being deleted that needs corresponding meta data also deleted
255
262
  * @param {*} collectionDataObject The payload containing the file data being deleted (for which the corresponding meta needs deleting)
256
263
  * @param {*} formData The entire payload, which will include the meta section
257
- * @returns Nothing, as the formData will be updated in situ
264
+ * @returns {void}, as the formData will be updated in situ
258
265
  */
259
266
  exports.findComponentDefinitionInForm = findComponentDefinitionInForm;
260
267
  const deleteCorrespondingMetaInfo = (component, collectionDataObject, formData) => {
@@ -335,6 +342,7 @@ const removeEmptyArraysAndUnusedCollectionIDs = payload => {
335
342
  * When the counter reaches 1 we know all other occurences of the component have been resolved
336
343
  * so it is safe to delete.
337
344
  *
345
+ *
338
346
  * @param {*} payload The form payload from which to delete the component data
339
347
  * @param {*} path The payload path of the component
340
348
  * @param {*} component The component whose data we should attempt to delete
@@ -18,7 +18,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
18
18
  *
19
19
  * @param {*} action
20
20
  */
21
- const onCYAAction = (setPagePoint, action, pages, validate, components, data, setData, type, pageId, currentTask, hooks, addErrors, hub, onPageChange, formState, submitting, setSubmitting) => {
21
+ const onCYAAction = (setPagePoint, action, pages, validate, cleanseHiddenData, components, data, setData, type, pageId, currentTask, hooks, addErrors, hub, onPageChange, formState, submitting, setSubmitting) => {
22
22
  // Check to see whether the action is able to proceed, which in
23
23
  // in the case of a submission will validate the fields in the page.
24
24
  if (action.type === _models.PageAction.TYPES.SUBMIT && hub !== _models.HubFormats.TASK) {
@@ -36,7 +36,7 @@ const onCYAAction = (setPagePoint, action, pages, validate, components, data, se
36
36
  pages,
37
37
  components
38
38
  };
39
- _helpers.default.clearOutUncompletedRoutes(formPagesAndComponents, submissionData);
39
+ _helpers.default.clearOutUncompletedRoutes(cleanseHiddenData, formPagesAndComponents, submissionData);
40
40
  submissionData.formStatus = _helpers.default.getSubmissionStatus(type, pages, pageId, action, submissionData, currentTask, true);
41
41
  setData(submissionData);
42
42
  // Now submit the data to the backend...
@@ -80,7 +80,7 @@ const onCYAAction = (setPagePoint, action, pages, validate, components, data, se
80
80
  pages,
81
81
  components
82
82
  };
83
- _helpers.default.clearOutUncompletedRoutes(formPagesAndComponents, submissionData);
83
+ _helpers.default.clearOutUncompletedRoutes(cleanseHiddenData, formPagesAndComponents, submissionData);
84
84
  submissionData.formStatus = _helpers.default.getSubmissionStatus(type, pages, pageId, action, submissionData, currentTask, true);
85
85
  setData(submissionData);
86
86
  // Now submit the data to the backend...
@@ -57,7 +57,7 @@ jest.mock('./helpers', () => ({
57
57
  this.getSubmissionStatusCalls = 0;
58
58
  },
59
59
  clearOutUncompletedRoutesCalls: 0,
60
- clearOutUncompletedRoutes(formPagesAndComponents, formData) {
60
+ clearOutUncompletedRoutes(cleanseHiddenData, formPagesAndComponents, formData) {
61
61
  this.clearOutUncompletedRoutesCalls += 1;
62
62
  return formData;
63
63
  }
@@ -170,6 +170,7 @@ describe('components.FormRenderer.onCYAAction', () => {
170
170
  },
171
171
  pages: PAGES,
172
172
  validate: () => {},
173
+ cleanseHiddenData: true,
173
174
  components: COMPONENTS,
174
175
  data: {},
175
176
  setData: mockSetData,
@@ -19,7 +19,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
19
19
  // (patch captures payload-ready field name and value,
20
20
  // patchLabel captures non-ID values
21
21
  // for display purposes after submission.)
22
- const onPageAction = (action, patch, patchLabel, hooks, data, formState, validate, onPageChange, type, pages, components, pageId, setPagePoint, currentTask, setData, hubDetails, setSubmitted, addErrors, submitting, setSubmitting, existingErrors) => {
22
+ const onPageAction = (action, patch, patchLabel, hooks, data, formState, validate, onPageChange, type, cleanseHiddenData, pages, components, pageId, setPagePoint, currentTask, setData, hubDetails, setSubmitted, addErrors, submitting, setSubmitting, existingErrors) => {
23
23
  // Save a copy of data in case submit errors and we need to revert
24
24
  const preSubmitData = _objectSpread({}, data);
25
25
  const form = formState;
@@ -112,7 +112,7 @@ const onPageAction = (action, patch, patchLabel, hooks, data, formState, validat
112
112
  components
113
113
  };
114
114
  if (action.type === _models.PageAction.TYPES.SUBMIT) {
115
- _helpers.default.clearOutUncompletedRoutes(formPagesAndComponents, submissionData);
115
+ _helpers.default.clearOutUncompletedRoutes(cleanseHiddenData, formPagesAndComponents, submissionData);
116
116
  }
117
117
 
118
118
  // In case of hub-and-spoke if patchLabel has changed then
@@ -47,7 +47,7 @@ jest.mock('./helpers', () => ({
47
47
  return patch;
48
48
  },
49
49
  clearOutUncompletedRoutesCalls: 0,
50
- clearOutUncompletedRoutes(formPagesAndComponents, formData) {
50
+ clearOutUncompletedRoutes(cleanseHiddenData, formPagesAndComponents, formData) {
51
51
  this.clearOutUncompletedRoutesCalls += 1;
52
52
  return formData;
53
53
  },
@@ -229,6 +229,7 @@ describe('components.FormRenderer.onPageAction', () => {
229
229
  validate: MOCK_VALIDATE,
230
230
  onPageChange: mockOnPageChange,
231
231
  type: _models.FormTypes.FORM_WITH_TASK,
232
+ cleanseHiddenData: true,
232
233
  pages: PAGES,
233
234
  components: COMPONENTS,
234
235
  pageId: 'alpha',
@@ -23,7 +23,8 @@ describe('utils.Component.get', () => {
23
23
  fieldId: FIELD_ID,
24
24
  label: LABEL,
25
25
  onChange: ON_CHANGE,
26
- 'data-testid': ID
26
+ 'data-testid': ID,
27
+ allowedTypes: []
27
28
  };
28
29
  const {
29
30
  container
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@ukhomeoffice/cop-react-form-renderer",
3
- "version": "6.15.11-alpha",
3
+ "version": "6.15.12-accessibilty",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "clean": "rimraf dist",
7
7
  "test": "react-scripts test",
8
8
  "test:coverage": "yarn test --coverage --watchAll=false",
9
9
  "lint": "eslint --ext .js,.jsx src",
10
+ "lint:fix": "eslint --ext .js,.jsx src --fix",
10
11
  "storybook:start": "start-storybook --docs -s src/assets --no-manager-cache -p 6007",
11
12
  "storybook:build": "build-storybook --docs -s src/assets",
12
13
  "storybook": "yarn storybook:start",
@@ -16,12 +17,12 @@
16
17
  "yalc-publish": "yarn compile-with-maps && cp -r src dist/src && yalc publish --push"
17
18
  },
18
19
  "dependencies": {
19
- "@ukhomeoffice/cop-react-components": "4.7.10",
20
+ "@ukhomeoffice/cop-react-components": "4.7.16",
20
21
  "axios": "^0.23.0",
21
22
  "dayjs": "^1.11.0",
22
23
  "govuk-frontend": "^5.0.0",
23
- "web-vitals": "^1.0.1",
24
- "uuid": "^8.1.0"
24
+ "uuid": "^8.1.0",
25
+ "web-vitals": "^1.0.1"
25
26
  },
26
27
  "devDependencies": {
27
28
  "@babel/cli": "^7.15.4",