@ukhomeoffice/cop-react-form-renderer 5.96.0 → 5.97.1

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 (37) hide show
  1. package/dist/components/FormRenderer/helpers/index.js +1 -3
  2. package/dist/components/FormRenderer/onPageAction.js +0 -7
  3. package/dist/components/FormRenderer/onPageAction.test.js +0 -5
  4. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +3 -1
  5. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +42 -0
  6. package/dist/utils/CollectionPage/mergeCollectionPages.js +0 -1
  7. package/dist/utils/FormPage/useComponent.js +11 -0
  8. package/dist/utils/FormPage/useComponent.test.js +36 -0
  9. package/package.json +2 -2
  10. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/component-used-in-multiple-pages-data.json +0 -4
  11. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/component-used-in-multiple-pages-form.json +0 -61
  12. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-airpax-after.json +0 -429
  13. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-airpax-before.json +0 -449
  14. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-airpax-form.json +0 -15219
  15. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-eab-2-data-after.json +0 -516
  16. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-eab-2-data-before.json +0 -593
  17. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-eab2-form.json +0 -15219
  18. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-mandec-data-after.json +0 -84
  19. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-mandec-data-before.json +0 -98
  20. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-mandec-form.json +0 -9158
  21. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-collection-data-removed.json +0 -4
  22. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-collections.json +0 -8
  23. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-components-removed.json +0 -3
  24. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-components.json +0 -5
  25. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-entire-collection-removed.json +0 -3
  26. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-nested-component-removed.json +0 -10
  27. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-nested-components.json +0 -11
  28. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-for-nested-components.json +0 -96
  29. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-collections-delete-entire.json +0 -47
  30. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-collections.json +0 -46
  31. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-components.json +0 -48
  32. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/test.json +0 -1605
  33. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/test2.json +0 -205
  34. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.js +0 -206
  35. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.test.js +0 -143
  36. package/dist/components/FormRenderer/helpers/deleteNodeByPath.js +0 -26
  37. package/dist/components/FormRenderer/helpers/deleteNodeByPath.test.js +0 -56
@@ -13,7 +13,6 @@ var _getNextPageId = _interopRequireDefault(require("./getNextPageId"));
13
13
  var _getPage = _interopRequireDefault(require("./getPage"));
14
14
  var _getSubmissionStatus = _interopRequireDefault(require("./getSubmissionStatus"));
15
15
  var _getUpdatedSectionStates = _interopRequireDefault(require("./getUpdatedSectionStates"));
16
- var _clearOutUncompletedRoutes = _interopRequireDefault(require("./clearOutUncompletedRoutes"));
17
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
17
  // Local imports
19
18
 
@@ -26,7 +25,6 @@ var helpers = {
26
25
  getNextPageId: _getNextPageId.default,
27
26
  getPage: _getPage.default,
28
27
  getSubmissionStatus: _getSubmissionStatus.default,
29
- getUpdatedSectionStates: _getUpdatedSectionStates.default,
30
- clearOutUncompletedRoutes: _clearOutUncompletedRoutes.default
28
+ getUpdatedSectionStates: _getUpdatedSectionStates.default
31
29
  };
32
30
  var _default = exports.default = helpers;
@@ -116,13 +116,6 @@ var onPageAction = function onPageAction(action, patch, patchLabel, hooks, data,
116
116
  setData(submissionData);
117
117
  }
118
118
  ;
119
- var formPagesAndComponents = {
120
- pages: pages,
121
- components: components
122
- };
123
- if (action.type === _models.PageAction.TYPES.SUBMIT) {
124
- _helpers.default.clearOutUncompletedRoutes(formPagesAndComponents, submissionData);
125
- }
126
119
 
127
120
  // In case of hub-and-spoke if patchLabel has changed then
128
121
  // save name and value to variables for call to onSubmit hook
@@ -50,11 +50,6 @@ jest.mock('./helpers', function () {
50
50
  this.cleanHiddenNestedDataCalls += 1;
51
51
  return patch;
52
52
  },
53
- clearOutUncompletedRoutesCalls: 0,
54
- clearOutUncompletedRoutes: function clearOutUncompletedRoutes(pages, allComponents, formData) {
55
- this.clearOutUncompletedRoutesCalls += 1;
56
- return formData;
57
- },
58
53
  getNextPageIdCalls: 0,
59
54
  getNextPageId: function getNextPageId() {
60
55
  this.getNextPageIdCalls += 1;
@@ -18,7 +18,9 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _ty
18
18
  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); } // Local imports
19
19
  var getCYARowsForContainer = function getCYARowsForContainer(page, container, formData, onAction, fnOverride) {
20
20
  if ((0, _showComponentCYA.default)(container, _objectSpread(_objectSpread({}, page.formData), formData))) {
21
- var allComponents = (0, _elevateNestedComponents.default)(container.components, formData);
21
+ var allComponents = (0, _elevateNestedComponents.default)(container.components.filter(function (component) {
22
+ return component.show_on_cya === undefined || component.show_on_cya;
23
+ }), formData);
22
24
  return allComponents.filter(function (c) {
23
25
  return (0, _showComponentCYA.default)(c, _objectSpread(_objectSpread({}, page.formData), formData));
24
26
  }).flatMap(function (component) {
@@ -151,6 +151,48 @@ describe('utils.CheckYourAnswers.getCYARowsForContainer', function () {
151
151
  });
152
152
  });
153
153
  });
154
+ it('should not display nested input components when passed a value of false for "show_on_cya" at the parent component level', function () {
155
+ var FORM_DATA = {
156
+ container: {
157
+ topLevelInput: 'A',
158
+ nestedInput: 'Bravo'
159
+ }
160
+ };
161
+ var PAGE = {
162
+ id: 'page',
163
+ formData: FORM_DATA,
164
+ cya_link: {}
165
+ };
166
+ var NESTED_COMPONENT = {
167
+ type: 'text',
168
+ id: 'nestedInput',
169
+ fieldId: 'nestedInput',
170
+ label: 'Nested input',
171
+ value: 'Bravo'
172
+ };
173
+ var COMPONENT = {
174
+ type: 'checkboxes',
175
+ id: 'topLevelInput',
176
+ fieldId: 'topLevelInput',
177
+ label: 'Top level input',
178
+ show_on_cya: false,
179
+ options: [{
180
+ value: 'A',
181
+ label: 'Option Alpha',
182
+ nested: [NESTED_COMPONENT]
183
+ }]
184
+ };
185
+ var CONTAINER = {
186
+ id: 'container',
187
+ fieldId: 'container',
188
+ type: _models.ComponentTypes.CONTAINER,
189
+ components: [COMPONENT],
190
+ value: FORM_DATA
191
+ };
192
+ var ON_ACTION = function ON_ACTION() {};
193
+ var ROWS = (0, _getCYARowsForContainer.default)(PAGE, CONTAINER, FORM_DATA.container, ON_ACTION);
194
+ expect(ROWS.length).toEqual(0);
195
+ });
154
196
  it('should get an appropriate row for a container with a single readonly text component inside a nested container', function () {
155
197
  var FORM_DATA = {
156
198
  container: {
@@ -33,7 +33,6 @@ var createMasterPage = function createMasterPage(page) {
33
33
  id: page.id,
34
34
  name: page.name,
35
35
  orderInForm: page.orderInForm,
36
- deleteCollectionWhenHidden: page.deleteCollectionWhenHidden,
37
36
  collection: _objectSpread({
38
37
  masterPage: true
39
38
  }, page.collection),
@@ -53,6 +53,17 @@ var getComponentToUse = function getComponentToUse(toUse, formComponents) {
53
53
  } else {
54
54
  wrapper = component;
55
55
  }
56
+
57
+ // this allows us to have the 'use: component' functionality inside item array
58
+ if (component.item && Array.isArray(component.item)) {
59
+ component.item = component.item.map(function (item) {
60
+ if (item.use) {
61
+ // eslint-disable-next-line no-use-before-define
62
+ return useComponent(item, formComponents);
63
+ }
64
+ return item;
65
+ });
66
+ }
56
67
  return wrapper;
57
68
  }
58
69
 
@@ -175,6 +175,42 @@ describe('utils', function () {
175
175
  label: TO_USE.label
176
176
  }));
177
177
  });
178
+ it('should handle nested use references within item', function () {
179
+ var SEARCH_METHOD = {
180
+ id: 'searchMethod',
181
+ label: 'Search Method',
182
+ type: _models.ComponentTypes.TEXT
183
+ };
184
+ var SEARCH_TECHNIQUES = {
185
+ id: 'searchTechniques',
186
+ label: 'Search Techniques',
187
+ type: _models.ComponentTypes.CONTAINER,
188
+ item: [{
189
+ use: 'searchMethod',
190
+ data: {
191
+ url: 'https://api.example.com/searchtype'
192
+ }
193
+ }]
194
+ };
195
+ var EXTENDED_FORM_COMPONENTS = [].concat(FORM_COMPONENTS, [SEARCH_METHOD, SEARCH_TECHNIQUES]);
196
+ var TO_USE = {
197
+ use: 'searchTechniques'
198
+ };
199
+ var expectedComponent = _objectSpread(_objectSpread({
200
+ use: 'searchTechniques'
201
+ }, SEARCH_TECHNIQUES), {}, {
202
+ cya_label: SEARCH_TECHNIQUES.label,
203
+ item: [_objectSpread(_objectSpread({
204
+ use: 'searchMethod'
205
+ }, SEARCH_METHOD), {}, {
206
+ cya_label: SEARCH_METHOD.label,
207
+ data: {
208
+ url: 'https://api.example.com/searchtype'
209
+ }
210
+ })]
211
+ });
212
+ expect((0, _useComponent.default)(TO_USE, EXTENDED_FORM_COMPONENTS)).toEqual(expectedComponent);
213
+ });
178
214
  });
179
215
  });
180
216
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ukhomeoffice/cop-react-form-renderer",
3
- "version": "5.96.0",
3
+ "version": "5.97.1",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "clean": "rimraf dist",
@@ -16,7 +16,7 @@
16
16
  "post-compile": "rimraf dist/*.test.* dist/**/*.test.* dist/**/*.stories.* dist/docs dist/assets"
17
17
  },
18
18
  "dependencies": {
19
- "@ukhomeoffice/cop-react-components": "3.24.1",
19
+ "@ukhomeoffice/cop-react-components": "3.24.3",
20
20
  "axios": "^0.23.0",
21
21
  "dayjs": "^1.11.0",
22
22
  "govuk-frontend": "^4.3.1",
@@ -1,4 +0,0 @@
1
- {
2
- "componentA": "show",
3
- "componentB": "hide"
4
- }
@@ -1,61 +0,0 @@
1
- {
2
- "components": [
3
- {
4
- "id": "componentA",
5
- "type": "radios",
6
- "label": "Field A",
7
- "fieldId": "fieldA",
8
- "required": true
9
- },
10
- {
11
- "id": "componentB",
12
- "type": "collection",
13
- "label": "Component B",
14
- "fieldId": "componentB"
15
- }
16
- ],
17
- "pages": [
18
- {
19
- "id": "pageA",
20
- "show_when": {
21
- "op": "=",
22
- "field": "componentA",
23
- "value": "hide"
24
- },
25
- "components": [
26
- {
27
- "id": "componentB",
28
- "use": "componentB"
29
- }
30
- ]
31
- },
32
- {
33
- "id": "pageB",
34
- "show_when": {
35
- "op": "=",
36
- "field": "componentA",
37
- "value": "show"
38
- },
39
- "components": [
40
- {
41
- "id": "componentB",
42
- "use": "componentB"
43
- }
44
- ]
45
- },
46
- {
47
- "id": "pageC",
48
- "show_when": {
49
- "op": "=",
50
- "field": "componentA",
51
- "value": "hide"
52
- },
53
- "components": [
54
- {
55
- "id": "componentB",
56
- "use": "componentB"
57
- }
58
- ]
59
- }
60
- ]
61
- }