@ukhomeoffice/cop-react-form-renderer 3.21.0 → 3.22.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.
@@ -101,6 +101,8 @@ var DEFAULT_CLASS = 'hods-form';
101
101
  exports.DEFAULT_CLASS = DEFAULT_CLASS;
102
102
 
103
103
  var InternalFormRenderer = function InternalFormRenderer(_ref2) {
104
+ var _formState$page2;
105
+
104
106
  var title = _ref2.title,
105
107
  type = _ref2.type,
106
108
  components = _ref2.components,
@@ -414,6 +416,12 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
414
416
  }
415
417
  }
416
418
 
419
+ if (action.type === _models.PageAction.TYPES.NAVIGATE) {
420
+ var _formState$page;
421
+
422
+ onPageChange(_helpers.default.getNextPageId(type, pages, pageId, action, (_formState$page = formState.page) === null || _formState$page === void 0 ? void 0 : _formState$page.formData));
423
+ }
424
+
417
425
  if (action.type === _models.PageAction.TYPES.CANCEL) {
418
426
  hooks.onCancel();
419
427
  }
@@ -428,8 +436,10 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
428
436
  return /*#__PURE__*/_react.default.createElement("div", {
429
437
  className: classes()
430
438
  }, title && !hide_title && pageId === _models.FormPages.HUB && /*#__PURE__*/_react.default.createElement(_copReactComponents.LargeHeading, null, title), formState.cya && /*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, _extends({
431
- pages: currentTask.fullPages ? currentTask.fullPages : pages
432
- }, cya, formState.cya, {
439
+ pages: _helpers.default.getRelevantPages(formState, pages, currentTask.fullPages)
440
+ }, cya, ((_formState$page2 = formState.page) === null || _formState$page2 === void 0 ? void 0 : _formState$page2.type) === _models.FormPages.PARTIAL_CYA && {
441
+ actions: formState.page.actions
442
+ }, formState.cya, {
433
443
  onAction: onCYAAction,
434
444
  onRowAction: onCYARowAction,
435
445
  summaryListClassModifiers: summaryListClassModifiers,
@@ -442,7 +452,7 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
442
452
  refNumber: data['businessKey'],
443
453
  refTitle: _hub.refTitle,
444
454
  onTaskAction: onTaskAction
445
- }), formState.page && /*#__PURE__*/_react.default.createElement(_FormPage.default, {
455
+ }), formState.page && !formState.cya && /*#__PURE__*/_react.default.createElement(_FormPage.default, {
446
456
  page: formState.page,
447
457
  onAction: onPageAction
448
458
  }));
@@ -15,7 +15,7 @@ var _models = require("../../../models");
15
15
  * @param {object} hub The hub, if there is one.
16
16
  * @returns A configuration object for the Check your answers screen.
17
17
  */
18
- var getCYA = function getCYA(pageId, hub) {
18
+ var getCYA = function getCYA(pageId, pages, hub) {
19
19
  if (pageId === _models.FormPages.HUB && hub === _models.HubFormats.CYA) {
20
20
  return {
21
21
  title: ''
@@ -24,6 +24,16 @@ var getCYA = function getCYA(pageId, hub) {
24
24
  return {};
25
25
  }
26
26
 
27
+ var currentPage = pages === null || pages === void 0 ? void 0 : pages.find(function (p) {
28
+ return p.id === pageId;
29
+ });
30
+
31
+ if ((currentPage === null || currentPage === void 0 ? void 0 : currentPage.type) === _models.FormPages.PARTIAL_CYA) {
32
+ return {
33
+ title: currentPage.title
34
+ };
35
+ }
36
+
27
37
  return undefined;
28
38
  };
29
39
 
@@ -19,18 +19,27 @@ describe('components', function () {
19
19
  expect((0, _getCYA.default)(_models.FormPages.CYA)).toEqual({});
20
20
  });
21
21
  it('should give an object with a blank title if the pageId is "hub" and the hub is the CYA', function () {
22
- expect((0, _getCYA.default)(_models.FormPages.HUB, _models.HubFormats.CYA)).toEqual({
22
+ expect((0, _getCYA.default)(_models.FormPages.HUB, [], _models.HubFormats.CYA)).toEqual({
23
23
  title: ''
24
24
  });
25
25
  });
26
26
  it('should give undefined if pageId is "hub" and the hub is NOT the CYA', function () {
27
- expect((0, _getCYA.default)(_models.FormPages.HUB, HUB)).toBeUndefined();
27
+ expect((0, _getCYA.default)(_models.FormPages.HUB, [], HUB)).toBeUndefined();
28
28
  });
29
29
  it('should give undefined if pageId is NOT "hub" and the hub is NOT the CYA', function () {
30
- expect((0, _getCYA.default)(_models.FormPages.HUB, HUB)).toBeUndefined();
30
+ expect((0, _getCYA.default)(_models.FormPages.HUB, [], HUB)).toBeUndefined();
31
31
  });
32
32
  it('should give undefined if pageId is NOT "hub" and the hub is the CYA', function () {
33
- expect((0, _getCYA.default)('bob', _models.HubFormats.CYA)).toBeUndefined();
33
+ expect((0, _getCYA.default)('bob', [], _models.HubFormats.CYA)).toBeUndefined();
34
+ });
35
+ it('should return an object with a title if the current page has type partial-cya', function () {
36
+ expect((0, _getCYA.default)('pageId', [{
37
+ id: 'pageId',
38
+ type: 'partial-cya',
39
+ title: 'page title'
40
+ }], _models.HubFormats.CYA)).toEqual({
41
+ title: 'page title'
42
+ });
34
43
  });
35
44
  });
36
45
  });
@@ -23,7 +23,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
23
23
  var getFormState = function getFormState(pageId, pages, hub) {
24
24
  return {
25
25
  pageId: pageId,
26
- cya: (0, _getCYA.default)(pageId, hub),
26
+ cya: (0, _getCYA.default)(pageId, pages, hub),
27
27
  page: (0, _getPage.default)(pageId, pages, hub)
28
28
  };
29
29
  };
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _models = require("../../../models");
9
+
10
+ var slicePages = function slicePages(pages, currentPageId) {
11
+ return pages.slice(0, pages.findIndex(function (p) {
12
+ return p.pageId === currentPageId;
13
+ }));
14
+ };
15
+
16
+ var getRelevantPages = function getRelevantPages(formState, pages, currentTaskPages) {
17
+ var _formState$page;
18
+
19
+ if (((_formState$page = formState.page) === null || _formState$page === void 0 ? void 0 : _formState$page.type) === _models.FormPages.PARTIAL_CYA) {
20
+ return currentTaskPages ? slicePages(currentTaskPages, formState.pageId) : slicePages(pages, formState.pageId);
21
+ }
22
+
23
+ return currentTaskPages ? currentTaskPages : pages;
24
+ };
25
+
26
+ var _default = getRelevantPages;
27
+ exports.default = _default;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ var _models = require("../../../models");
4
+
5
+ var _getRelevantPages = _interopRequireDefault(require("../helpers/getRelevantPages"));
6
+
7
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+
9
+ // Local imports
10
+ describe('components', function () {
11
+ describe('FormRenderer', function () {
12
+ describe('helpers', function () {
13
+ describe('getRelevantPages', function () {
14
+ var pages = [{
15
+ pageId: 'page1'
16
+ }, {
17
+ pageId: 'page2'
18
+ }, {
19
+ pageId: 'page3'
20
+ }, {
21
+ pageId: 'page4'
22
+ }, {
23
+ pageId: 'page5'
24
+ }];
25
+ var taskListPages = [{
26
+ pageId: 'taskPage1'
27
+ }, {
28
+ pageId: 'taskPage2'
29
+ }, {
30
+ pageId: 'taskPage3'
31
+ }, {
32
+ pageId: 'taskPage4'
33
+ }, {
34
+ pageId: 'taskPage5'
35
+ }];
36
+ it('return all pages from the start of the given list to the current page outside of a task when the page type is partial-cya', function () {
37
+ var formState = {
38
+ page: {
39
+ type: _models.FormPages.PARTIAL_CYA
40
+ },
41
+ pageId: 'page3'
42
+ };
43
+ expect((0, _getRelevantPages.default)(formState, pages, undefined)).toEqual(pages.slice(0, 2));
44
+ });
45
+ it('return all pages from the start of the given list to the current page in a task when the page type is partial-cya', function () {
46
+ var formState = {
47
+ page: {
48
+ type: _models.FormPages.PARTIAL_CYA
49
+ },
50
+ pageId: 'taskPage4'
51
+ };
52
+ expect((0, _getRelevantPages.default)(formState, pages, taskListPages)).toEqual(taskListPages.slice(0, 3));
53
+ });
54
+ it('return all pages when the page type is not partial-cya', function () {
55
+ var formState = {
56
+ page: {},
57
+ pageId: 'page2'
58
+ };
59
+ expect((0, _getRelevantPages.default)(formState, pages, undefined)).toEqual(pages);
60
+ });
61
+ it('return all task pages when the page type is not partial-cya', function () {
62
+ var formState = {
63
+ page: {},
64
+ pageId: 'taskPage2'
65
+ };
66
+ expect((0, _getRelevantPages.default)(formState, pages, taskListPages)).toEqual(taskListPages);
67
+ });
68
+ });
69
+ });
70
+ });
71
+ });
@@ -13,6 +13,8 @@ var _cleanHiddenNestedData = _interopRequireDefault(require("./cleanHiddenNested
13
13
 
14
14
  var _getFormState = _interopRequireDefault(require("./getFormState"));
15
15
 
16
+ var _getRelevantPages = _interopRequireDefault(require("./getRelevantPages"));
17
+
16
18
  var _getNextPageId = _interopRequireDefault(require("./getNextPageId"));
17
19
 
18
20
  var _getPage = _interopRequireDefault(require("./getPage"));
@@ -29,6 +31,7 @@ var helpers = {
29
31
  canCYASubmit: _canCYASubmit.default,
30
32
  cleanHiddenNestedData: _cleanHiddenNestedData.default,
31
33
  getFormState: _getFormState.default,
34
+ getRelevantPages: _getRelevantPages.default,
32
35
  getNextPageId: _getNextPageId.default,
33
36
  getPage: _getPage.default,
34
37
  getSubmissionStatus: _getSubmissionStatus.default,
@@ -6,9 +6,11 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var PAGE_CYA = 'cya';
8
8
  var PAGE_HUB = 'hub';
9
+ var PAGE_PARTIAL_CYA = 'partial-cya';
9
10
  var FormPages = {
10
11
  CYA: PAGE_CYA,
11
- HUB: PAGE_HUB
12
+ HUB: PAGE_HUB,
13
+ PARTIAL_CYA: PAGE_PARTIAL_CYA
12
14
  };
13
15
  var _default = FormPages;
14
16
  exports.default = _default;
@@ -22,9 +22,11 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
22
22
  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; }
23
23
 
24
24
  var getEntryToCollectionRow = function getEntryToCollectionRow(page, onAction) {
25
+ var _page$components$0$la;
26
+
25
27
  return [{
26
28
  pageId: page.id,
27
- key: page.components[0].labels.empty || 'Nothing entered',
29
+ key: ((_page$components$0$la = page.components[0].labels) === null || _page$components$0$la === void 0 ? void 0 : _page$components$0$la.empty) || 'Nothing entered',
28
30
  required: page.required,
29
31
  action: {
30
32
  page: page.id,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ukhomeoffice/cop-react-form-renderer",
3
- "version": "3.21.0",
3
+ "version": "3.22.1",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "clean": "rimraf dist",