@ukhomeoffice/cop-react-form-renderer 2.7.3 → 2.8.3

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.
@@ -11,6 +11,8 @@ var _FormPage = _interopRequireDefault(require("../FormPage"));
11
11
 
12
12
  var _getCYARow = _interopRequireDefault(require("./getCYARow"));
13
13
 
14
+ var _getCYARowForGroup2 = _interopRequireDefault(require("./getCYARowForGroup"));
15
+
14
16
  var _getCYARowsForContainer = _interopRequireDefault(require("./getCYARowsForContainer"));
15
17
 
16
18
  var _showComponentCYA = _interopRequireDefault(require("./showComponentCYA"));
@@ -21,15 +23,17 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
21
23
 
22
24
  /**
23
25
  * Gets an array of row objects, each configured appropriately for a Check your answers component.
24
- *
26
+ *
25
27
  * @param {object} page The page to show components for.
26
28
  * @param {Function} onAction A function to invoke if the change link on any row is clicked.
27
- *
29
+ *
28
30
  * @returns An array of configuration objects for Check your answers rows.
29
31
  */
30
32
  var getCYARowsForPage = function getCYARowsForPage(page, onAction) {
31
33
  if (_FormPage.default.show(page, page.formData)) {
32
- return page.components.filter(function (c) {
34
+ var _page$groups;
35
+
36
+ var rows = page.components.filter(function (c) {
33
37
  return (0, _showComponentCYA.default)(c, page.formData);
34
38
  }).flatMap(function (component) {
35
39
  if (component.type === _models.ComponentTypes.CONTAINER) {
@@ -38,6 +42,28 @@ var getCYARowsForPage = function getCYARowsForPage(page, onAction) {
38
42
 
39
43
  return (0, _getCYARow.default)(page, component, onAction);
40
44
  });
45
+
46
+ if (((_page$groups = page.groups) === null || _page$groups === void 0 ? void 0 : _page$groups.length) > 0) {
47
+ page.groups.forEach(function (group) {
48
+ var _getCYARowForGroup = (0, _getCYARowForGroup2.default)(page, group, rows, onAction),
49
+ row = _getCYARowForGroup.row,
50
+ insertAt = _getCYARowForGroup.insertAt;
51
+
52
+ if (insertAt > -1) {
53
+ rows.splice(insertAt, 0, row);
54
+ } else {
55
+ rows.push(row);
56
+ }
57
+ });
58
+ var allReplacedIds = page.groups.flatMap(function (g) {
59
+ return g.components;
60
+ });
61
+ return rows.filter(function (r) {
62
+ return !allReplacedIds.includes(r.id);
63
+ });
64
+ }
65
+
66
+ return rows;
41
67
  }
42
68
 
43
69
  return [];
@@ -1,11 +1,14 @@
1
1
  "use strict";
2
2
 
3
+ var _react = require("@testing-library/react");
4
+
3
5
  var _models = require("../../models");
4
6
 
5
7
  var _getCYARowsForPage = _interopRequireDefault(require("./getCYARowsForPage"));
6
8
 
7
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
10
 
11
+ // Global imports
9
12
  // Local imports
10
13
  describe('utils', function () {
11
14
  describe('CheckYourAnswers', function () {
@@ -173,6 +176,64 @@ describe('utils', function () {
173
176
  });
174
177
  });
175
178
  });
179
+ it('Add ability to display answers from multiple fields in a single row', function () {
180
+ var COMPONENT_ADDRESS = {
181
+ id: 'firstLineOfTheAddress',
182
+ fieldId: 'firstLineOfTheAddress',
183
+ label: 'address',
184
+ type: 'text'
185
+ };
186
+ var COMPONENT_TOWN = {
187
+ id: 'town',
188
+ fieldId: 'town',
189
+ label: 'Town',
190
+ type: 'text'
191
+ };
192
+ var COMPONENT_CITY = {
193
+ id: 'city',
194
+ fieldId: 'city',
195
+ label: 'City',
196
+ type: 'text'
197
+ };
198
+ var COMPONENT_POSTCODE = {
199
+ id: 'postCode',
200
+ fieldId: 'postCode',
201
+ label: 'postCode',
202
+ type: 'text'
203
+ };
204
+ var PAGE = {
205
+ components: [COMPONENT_ADDRESS, COMPONENT_TOWN, COMPONENT_CITY, COMPONENT_POSTCODE],
206
+ id: 'addressDetails',
207
+ fieldId: 'UK address',
208
+ groups: [{
209
+ id: 'address',
210
+ label: 'Address details',
211
+ components: ['firstLineOfTheAddress', 'town', 'city', 'postCode']
212
+ }],
213
+ name: 'address-details',
214
+ title: 'Address details',
215
+ formData: {
216
+ firstLineOfTheAddress: '10 Downing Street',
217
+ town: 'City of Westminster',
218
+ city: 'London',
219
+ postCode: 'SW1A 2AA'
220
+ }
221
+ };
222
+
223
+ var ON_ACTION = function ON_ACTION() {};
224
+
225
+ var _render = (0, _react.render)((0, _getCYARowsForPage.default)(PAGE, ON_ACTION).map(function (row) {
226
+ return row.value;
227
+ })),
228
+ container = _render.container;
229
+
230
+ expect(container.childNodes.length).toEqual(4);
231
+ var addressValues = container.childNodes;
232
+ expect(addressValues[0].childNodes[0].textContent).toEqual('10 Downing Street');
233
+ expect(addressValues[1].childNodes[0].textContent).toEqual('City of Westminster');
234
+ expect(addressValues[2].childNodes[0].textContent).toEqual('London');
235
+ expect(addressValues[3].childNodes[0].textContent).toEqual('SW1A 2AA');
236
+ });
176
237
  });
177
238
  });
178
239
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ukhomeoffice/cop-react-form-renderer",
3
- "version": "2.7.3",
3
+ "version": "2.8.3",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "clean": "rimraf dist",