@ukhomeoffice/cop-react-form-renderer 4.53.0 → 4.54.0

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.
@@ -67,6 +67,7 @@ var CheckYourAnswers = function CheckYourAnswers(_ref) {
67
67
  hide_title = _ref.hide_title,
68
68
  summaryListClassModifiers = _ref.summaryListClassModifiers,
69
69
  noChangeAction = _ref.noChangeAction,
70
+ noGroupAction = _ref.noGroupAction,
70
71
  groups = _ref.groups,
71
72
  sections = _ref.sections,
72
73
  type = _ref.type;
@@ -170,6 +171,7 @@ var CheckYourAnswers = function CheckYourAnswers(_ref) {
170
171
  rows: page.rows,
171
172
  classModifiers: summaryListClassModifiers,
172
173
  noChangeAction: hideActionButtons,
174
+ noGroupAction: noGroupAction,
173
175
  isGroup: isGroup(page.id)
174
176
  }));
175
177
  }));
@@ -190,6 +192,7 @@ var CheckYourAnswers = function CheckYourAnswers(_ref) {
190
192
  rows: page.rows,
191
193
  classModifiers: summaryListClassModifiers,
192
194
  noChangeAction: hideActionButtons,
195
+ noGroupAction: noGroupAction,
193
196
  isGroup: isGroup(page.id)
194
197
  }));
195
198
  }), !hide_actions && /*#__PURE__*/_react.default.createElement(_PageActions.default, {
@@ -211,6 +214,7 @@ CheckYourAnswers.propTypes = {
211
214
  hide_title: _propTypes.default.bool,
212
215
  summaryListClassModifiers: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
213
216
  noChangeAction: _propTypes.default.bool,
217
+ noGroupAction: _propTypes.default.bool,
214
218
  sections: _propTypes.default.arrayOf(_propTypes.default.shape({
215
219
  name: _propTypes.default.string.isRequired,
216
220
  tasks: _propTypes.default.arrayOf(_propTypes.default.shape({
@@ -103,7 +103,7 @@ var DEFAULT_CLASS = 'hods-form';
103
103
  exports.DEFAULT_CLASS = DEFAULT_CLASS;
104
104
 
105
105
  var InternalFormRenderer = function InternalFormRenderer(_ref2) {
106
- var _formState$page5, _formState$page$actio;
106
+ var _formState$page5, _formState$page$actio, _formState$cya$hideCh, _formState$cya$hideGr;
107
107
 
108
108
  var title = _ref2.title,
109
109
  type = _ref2.type,
@@ -613,7 +613,8 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
613
613
  onRowAction: onCYARowAction,
614
614
  summaryListClassModifiers: summaryListClassModifiers,
615
615
  hide_title: hide_title,
616
- noChangeAction: noChangeAction,
616
+ noChangeAction: (_formState$cya$hideCh = formState.cya.hideChangeActions) !== null && _formState$cya$hideCh !== void 0 ? _formState$cya$hideCh : noChangeAction,
617
+ noGroupAction: (_formState$cya$hideGr = formState.cya.hideGroupActions) !== null && _formState$cya$hideGr !== void 0 ? _formState$cya$hideGr : false,
617
618
  sections: typeof hubDetails !== 'undefined' ? hubDetails.sections : [],
618
619
  type: type
619
620
  })), hub === _models.HubFormats.TASK && formState.pageId === _models.FormPages.HUB && /*#__PURE__*/_react.default.createElement(_TaskList.default, _extends({}, hubDetails, {
@@ -7,6 +7,10 @@ exports.default = void 0;
7
7
 
8
8
  var _models = require("../../../models");
9
9
 
10
+ var _utils = _interopRequireDefault(require("../../../utils"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
10
14
  // Local imports
11
15
 
12
16
  /**
@@ -29,8 +33,12 @@ var getCYA = function getCYA(pageId, pages, hub) {
29
33
  });
30
34
 
31
35
  if ((currentPage === null || currentPage === void 0 ? void 0 : currentPage.type) === _models.FormPages.PARTIAL_CYA) {
36
+ var pageWithConditionals = _utils.default.FormPage.applyConditionalProperties(currentPage);
37
+
32
38
  return {
33
- title: currentPage.title
39
+ title: pageWithConditionals.title,
40
+ hideChangeActions: pageWithConditionals.hideChangeActions,
41
+ hideGroupActions: pageWithConditionals.hideGroupActions
34
42
  };
35
43
  }
36
44
 
@@ -21,7 +21,7 @@ var _SummaryListTitleRow = _interopRequireDefault(require("./SummaryListTitleRow
21
21
 
22
22
  require("./SummaryList.scss");
23
23
 
24
- var _excluded = ["rows", "noChangeAction", "isGroup", "classBlock", "classModifiers", "className"];
24
+ var _excluded = ["rows", "noChangeAction", "noGroupAction", "isGroup", "classBlock", "classModifiers", "className"];
25
25
 
26
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
27
 
@@ -37,6 +37,7 @@ exports.DEFAULT_CLASS = DEFAULT_CLASS;
37
37
  var SummaryList = function SummaryList(_ref) {
38
38
  var rows = _ref.rows,
39
39
  noChangeAction = _ref.noChangeAction,
40
+ noGroupAction = _ref.noGroupAction,
40
41
  isGroup = _ref.isGroup,
41
42
  classBlock = _ref.classBlock,
42
43
  classModifiers = _ref.classModifiers,
@@ -79,7 +80,7 @@ var SummaryList = function SummaryList(_ref) {
79
80
  }
80
81
 
81
82
  if (row.type === 'action') {
82
- return /*#__PURE__*/_react.default.createElement("div", {
83
+ return noChangeAction ? null : /*#__PURE__*/_react.default.createElement("div", {
83
84
  key: "".concat(key, "-actions")
84
85
  }, /*#__PURE__*/_react.default.createElement(_GroupAction.default, {
85
86
  group: row
@@ -92,7 +93,9 @@ var SummaryList = function SummaryList(_ref) {
92
93
  classes: classes,
93
94
  showAction: !noChangeAction
94
95
  });
95
- }), isGroup && /*#__PURE__*/_react.default.createElement("div", {
96
+ }).filter(function (r) {
97
+ return !!r;
98
+ }), isGroup && !noGroupAction && /*#__PURE__*/_react.default.createElement("div", {
96
99
  className: "change-group-button"
97
100
  }, /*#__PURE__*/_react.default.createElement(_GroupAction.default, {
98
101
  group: groupActionRow
@@ -49,6 +49,14 @@ describe('components', function () {
49
49
  return heading;
50
50
  };
51
51
 
52
+ var checkActionRow = function checkActionRow(summaryList, index) {
53
+ var row = summaryList.childNodes[index];
54
+ expect(row.tagName).toEqual('DIV');
55
+ expect(row.childNodes.length).toEqual(1);
56
+ var link = row.childNodes[0];
57
+ return link;
58
+ };
59
+
52
60
  var checkRow = function checkRow(summaryList, index) {
53
61
  var row = summaryList.childNodes[index];
54
62
  expect(row.tagName).toEqual('DIV');
@@ -185,6 +193,84 @@ describe('components', function () {
185
193
  }
186
194
  });
187
195
  });
196
+ it('should handle action rows', function () {
197
+ var ID = 'test-id';
198
+ var ROWS = [{
199
+ pageId: 'p1',
200
+ fieldId: 'a',
201
+ type: 'action',
202
+ action: {
203
+ label: 'Do action'
204
+ }
205
+ }, {
206
+ pageId: 'p2',
207
+ fieldId: 'b',
208
+ type: 'action',
209
+ action: {
210
+ label: 'Do action'
211
+ }
212
+ }, {
213
+ pageId: 'p3',
214
+ fieldId: 'c',
215
+ type: 'action',
216
+ action: {
217
+ label: 'Do action'
218
+ }
219
+ }];
220
+
221
+ var _render4 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_SummaryList.default, {
222
+ "data-testid": ID,
223
+ rows: ROWS
224
+ })),
225
+ container = _render4.container;
226
+
227
+ var summaryList = checkSummaryList(container, ID);
228
+ expect(summaryList.childNodes.length).toEqual(ROWS.length);
229
+
230
+ var assessActionRow = function assessActionRow(row, index) {
231
+ var link = checkActionRow(summaryList, index);
232
+ expect(link.textContent).toEqual(row.action.label);
233
+ };
234
+
235
+ ROWS.forEach(function (row, index) {
236
+ assessActionRow(row, index);
237
+ });
238
+ });
239
+ it('should hide actions rows if flag is given', function () {
240
+ var ID = 'test-id';
241
+ var ROWS = [{
242
+ pageId: 'p1',
243
+ fieldId: 'a',
244
+ type: 'action',
245
+ action: {
246
+ label: 'Do action'
247
+ }
248
+ }, {
249
+ pageId: 'p2',
250
+ fieldId: 'b',
251
+ type: 'action',
252
+ action: {
253
+ label: 'Do action'
254
+ }
255
+ }, {
256
+ pageId: 'p3',
257
+ fieldId: 'c',
258
+ type: 'action',
259
+ action: {
260
+ label: 'Do action'
261
+ }
262
+ }];
263
+
264
+ var _render5 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_SummaryList.default, {
265
+ "data-testid": ID,
266
+ rows: ROWS,
267
+ noChangeAction: true
268
+ })),
269
+ container = _render5.container;
270
+
271
+ var summaryList = checkSummaryList(container, ID);
272
+ expect(summaryList.childNodes.length).toEqual(0);
273
+ });
188
274
  it('should handle rows with no actions and component values', function () {
189
275
  var ID = 'test-id';
190
276
  var VALUES = ['Alpha component value', 'Bravo component value'];
@@ -200,11 +286,11 @@ describe('components', function () {
200
286
  value: /*#__PURE__*/_react2.default.createElement("div", null, VALUES[1])
201
287
  }];
202
288
 
203
- var _render4 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_SummaryList.default, {
289
+ var _render6 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_SummaryList.default, {
204
290
  "data-testid": ID,
205
291
  rows: ROWS
206
292
  })),
207
- container = _render4.container;
293
+ container = _render6.container;
208
294
 
209
295
  var summaryList = checkSummaryList(container, ID);
210
296
  expect(summaryList.childNodes.length).toEqual(ROWS.length);
@@ -251,11 +337,11 @@ describe('components', function () {
251
337
  }
252
338
  }];
253
339
 
254
- var _render5 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_SummaryList.default, {
340
+ var _render7 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_SummaryList.default, {
255
341
  "data-testid": ID,
256
342
  rows: ROWS
257
343
  })),
258
- container = _render5.container;
344
+ container = _render7.container;
259
345
 
260
346
  var summaryList = checkSummaryList(container, ID);
261
347
  expect(summaryList.childNodes.length).toEqual(ROWS.length);
@@ -292,12 +378,12 @@ describe('components', function () {
292
378
  value: /*#__PURE__*/_react2.default.createElement("div", null, VALUES[1])
293
379
  }];
294
380
 
295
- var _render6 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_SummaryList.default, {
381
+ var _render8 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_SummaryList.default, {
296
382
  "data-testid": ID,
297
383
  rows: ROWS,
298
384
  noChangeAction: true
299
385
  })),
300
- container = _render6.container;
386
+ container = _render8.container;
301
387
 
302
388
  var summaryList = checkSummaryList(container, ID);
303
389
  expect(summaryList.childNodes.length).toEqual(ROWS.length);
@@ -335,12 +421,12 @@ describe('components', function () {
335
421
  value: /*#__PURE__*/_react2.default.createElement("div", null, VALUES[2])
336
422
  }];
337
423
 
338
- var _render7 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_SummaryList.default, {
424
+ var _render9 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_SummaryList.default, {
339
425
  "data-testid": ID,
340
426
  rows: ROWS,
341
427
  isGroup: ISGROUP
342
428
  })),
343
- container = _render7.container;
429
+ container = _render9.container;
344
430
 
345
431
  var summaryList = checkSummaryList(container, ID);
346
432
  expect(summaryList.childNodes.length).toEqual(ROWS.length + 1);
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _ = _interopRequireDefault(require(".."));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
13
+
14
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
15
+
16
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
+
18
+ /**
19
+ * Apply properties to a page based on whether certain conditions are met.
20
+ * @param {object} page The page object.
21
+ * @returns A copy of the page object with any passing conditional
22
+ * properties applied.
23
+ */
24
+ var applyConditionalProperties = function applyConditionalProperties(page) {
25
+ if (!page.conditionalProperties) {
26
+ return page;
27
+ }
28
+
29
+ var pageWithProperties = _objectSpread({}, page);
30
+
31
+ page.conditionalProperties.forEach(function (entry) {
32
+ if (_.default.Condition.met(entry.condition, page.formData[entry.condition.field])) {
33
+ pageWithProperties = Object.assign(pageWithProperties, entry.properties);
34
+ }
35
+
36
+ ;
37
+ });
38
+ return pageWithProperties;
39
+ };
40
+
41
+ var _default = applyConditionalProperties;
42
+ exports.default = _default;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ var _applyConditionalProperties = _interopRequireDefault(require("./applyConditionalProperties"));
4
+
5
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
+
7
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
8
+
9
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
10
+
11
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
+
13
+ describe('utils.FormPage.applyConditionalProperties', function () {
14
+ it('should not change the page if there are no conditional properties', function () {
15
+ var PAGE = {
16
+ id: 'testPage'
17
+ };
18
+ var result = (0, _applyConditionalProperties.default)(PAGE);
19
+ expect(result).toEqual(PAGE);
20
+ });
21
+ it('should not apply properties with conditions that have not been met', function () {
22
+ var PAGE = {
23
+ id: 'testPage',
24
+ conditionalProperties: [{
25
+ condition: {
26
+ field: 'alpha',
27
+ op: '=',
28
+ value: '123'
29
+ },
30
+ properties: {
31
+ beta: '456'
32
+ }
33
+ }],
34
+ formData: {
35
+ alpha: '012'
36
+ }
37
+ };
38
+ var result = (0, _applyConditionalProperties.default)(PAGE);
39
+ expect(result).toEqual(PAGE);
40
+ });
41
+ it('should apply properties with conditions that have been met', function () {
42
+ var PAGE = {
43
+ id: 'testPage',
44
+ conditionalProperties: [{
45
+ condition: {
46
+ field: 'alpha',
47
+ op: '=',
48
+ value: '123'
49
+ },
50
+ properties: {
51
+ beta: '456'
52
+ }
53
+ }],
54
+ formData: {
55
+ alpha: '123'
56
+ }
57
+ };
58
+ var result = (0, _applyConditionalProperties.default)(PAGE);
59
+ expect(result).toEqual(_objectSpread(_objectSpread({}, PAGE), {}, {
60
+ beta: '456'
61
+ }));
62
+ });
63
+ });
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
+ var _applyConditionalProperties = _interopRequireDefault(require("./applyConditionalProperties"));
9
+
8
10
  var _getFormPage = _interopRequireDefault(require("./getFormPage"));
9
11
 
10
12
  var _getFormPages = _interopRequireDefault(require("./getFormPages"));
@@ -16,6 +18,7 @@ var _showFormPageCYA = _interopRequireDefault(require("./showFormPageCYA"));
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
19
 
18
20
  var FormPage = {
21
+ applyConditionalProperties: _applyConditionalProperties.default,
19
22
  get: _getFormPage.default,
20
23
  getAll: _getFormPages.default,
21
24
  show: _showFormPage.default,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ukhomeoffice/cop-react-form-renderer",
3
- "version": "4.53.0",
3
+ "version": "4.54.0",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "clean": "rimraf dist",