@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.
- package/dist/components/FormRenderer/helpers/index.js +1 -3
- package/dist/components/FormRenderer/onPageAction.js +0 -7
- package/dist/components/FormRenderer/onPageAction.test.js +0 -5
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +3 -1
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +42 -0
- package/dist/utils/CollectionPage/mergeCollectionPages.js +0 -1
- package/dist/utils/FormPage/useComponent.js +11 -0
- package/dist/utils/FormPage/useComponent.test.js +36 -0
- package/package.json +2 -2
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/component-used-in-multiple-pages-data.json +0 -4
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/component-used-in-multiple-pages-form.json +0 -61
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-airpax-after.json +0 -429
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-airpax-before.json +0 -449
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-airpax-form.json +0 -15219
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-eab-2-data-after.json +0 -516
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-eab-2-data-before.json +0 -593
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-eab2-form.json +0 -15219
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-mandec-data-after.json +0 -84
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-mandec-data-before.json +0 -98
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-mandec-form.json +0 -9158
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-collection-data-removed.json +0 -4
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-collections.json +0 -8
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-components-removed.json +0 -3
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-components.json +0 -5
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-entire-collection-removed.json +0 -3
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-nested-component-removed.json +0 -10
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-nested-components.json +0 -11
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-for-nested-components.json +0 -96
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-collections-delete-entire.json +0 -47
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-collections.json +0 -46
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-components.json +0 -48
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/test.json +0 -1605
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/test2.json +0 -205
- package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.js +0 -206
- package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.test.js +0 -143
- package/dist/components/FormRenderer/helpers/deleteNodeByPath.js +0 -26
- 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
|
|
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.
|
|
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.
|
|
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,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
|
-
}
|