@ukhomeoffice/cop-react-form-renderer 3.21.0 → 3.23.2
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/FormRenderer.js +13 -3
- package/dist/components/FormRenderer/helpers/getCYA.js +11 -1
- package/dist/components/FormRenderer/helpers/getCYA.test.js +13 -4
- package/dist/components/FormRenderer/helpers/getFormState.js +1 -1
- package/dist/components/FormRenderer/helpers/getRelevantPages.js +27 -0
- package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +71 -0
- package/dist/components/FormRenderer/helpers/index.js +3 -0
- package/dist/components/SummaryList/RowAction.js +12 -2
- package/dist/models/FormPages.js +3 -1
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +3 -1
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +1 -1
- package/dist/utils/FormPage/index.js +4 -1
- package/dist/utils/FormPage/showFormPageCYA.js +27 -0
- package/dist/utils/FormPage/showFormPageCYA.test.js +30 -0
- package/package.json +1 -1
|
@@ -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:
|
|
432
|
-
}, cya, formState.
|
|
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,
|
|
@@ -21,6 +21,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
21
21
|
|
|
22
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
23
|
|
|
24
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
25
|
+
|
|
24
26
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
25
27
|
|
|
26
28
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -34,7 +36,8 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
34
36
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
35
37
|
|
|
36
38
|
var RowAction = function RowAction(_ref) {
|
|
37
|
-
var row = _ref.row
|
|
39
|
+
var row = _ref.row,
|
|
40
|
+
onClick = _ref.onClick;
|
|
38
41
|
|
|
39
42
|
var _useState = (0, _react.useState)({}),
|
|
40
43
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -49,7 +52,14 @@ var RowAction = function RowAction(_ref) {
|
|
|
49
52
|
return null;
|
|
50
53
|
}
|
|
51
54
|
|
|
52
|
-
return /*#__PURE__*/_react.default.createElement(_copReactComponents.Link,
|
|
55
|
+
return /*#__PURE__*/_react.default.createElement(_copReactComponents.Link, _extends({}, attrs, {
|
|
56
|
+
onKeyPress: function onKeyPress(event) {
|
|
57
|
+
if (event.key === 'Enter') {
|
|
58
|
+
row.action.onAction(row);
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
tabIndex: "0"
|
|
62
|
+
}), row.action.label, row.action.aria_suffix && /*#__PURE__*/_react.default.createElement(_copReactComponents.VisuallyHidden, null, " ", row.action.aria_suffix));
|
|
53
63
|
};
|
|
54
64
|
|
|
55
65
|
RowAction.propTypes = {
|
package/dist/models/FormPages.js
CHANGED
|
@@ -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,
|
|
@@ -32,7 +32,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
32
32
|
* @returns An array of configuration objects for Check your answers rows.
|
|
33
33
|
*/
|
|
34
34
|
var getCYARowsForPage = function getCYARowsForPage(page, onAction) {
|
|
35
|
-
if (_FormPage.default.
|
|
35
|
+
if (_FormPage.default.showCYA(page, page.formData)) {
|
|
36
36
|
var _page$groups;
|
|
37
37
|
|
|
38
38
|
var rows = page.components.filter(function (c) {
|
|
@@ -11,12 +11,15 @@ var _getFormPages = _interopRequireDefault(require("./getFormPages"));
|
|
|
11
11
|
|
|
12
12
|
var _showFormPage = _interopRequireDefault(require("./showFormPage"));
|
|
13
13
|
|
|
14
|
+
var _showFormPageCYA = _interopRequireDefault(require("./showFormPageCYA"));
|
|
15
|
+
|
|
14
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
17
|
|
|
16
18
|
var FormPage = {
|
|
17
19
|
get: _getFormPage.default,
|
|
18
20
|
getAll: _getFormPages.default,
|
|
19
|
-
show: _showFormPage.default
|
|
21
|
+
show: _showFormPage.default,
|
|
22
|
+
showCYA: _showFormPageCYA.default
|
|
20
23
|
};
|
|
21
24
|
var _default = FormPage;
|
|
22
25
|
exports.default = _default;
|
|
@@ -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 _showFormPage = _interopRequireDefault(require("./showFormPage"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Indicates whether or not a page should be shown on the CYA screen.
|
|
14
|
+
* @param {object} page The page to consider.
|
|
15
|
+
* @param {object} data The top-level form data.
|
|
16
|
+
* @returns Boolean true if the page should be shown; false if not.
|
|
17
|
+
*/
|
|
18
|
+
var showFormPageCYA = function showFormPageCYA(page, data) {
|
|
19
|
+
if (page !== null && page !== void 0 && page.hasOwnProperty('show_on_cya') && !page.show_on_cya) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return (0, _showFormPage.default)(page, data);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
var _default = showFormPageCYA;
|
|
27
|
+
exports.default = _default;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _showFormPageCYA = _interopRequireDefault(require("./showFormPageCYA"));
|
|
4
|
+
|
|
5
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
6
|
+
|
|
7
|
+
describe('utils.FormPage.showFormPageCYA', function () {
|
|
8
|
+
var DATA = {
|
|
9
|
+
alpha: 'Alpha',
|
|
10
|
+
bravo: 'Bravo'
|
|
11
|
+
};
|
|
12
|
+
it('should NOT be shown when the page is null', function () {
|
|
13
|
+
expect((0, _showFormPageCYA.default)(null, DATA)).toEqual(false);
|
|
14
|
+
});
|
|
15
|
+
it('should NOT be shown if the show_on_cya flag is false', function () {
|
|
16
|
+
var PAGE = {
|
|
17
|
+
show_on_cya: false
|
|
18
|
+
};
|
|
19
|
+
expect((0, _showFormPageCYA.default)(PAGE, DATA)).toEqual(false);
|
|
20
|
+
});
|
|
21
|
+
it('SHOULD be shown if the show_on_cya flag is true', function () {
|
|
22
|
+
var PAGE = {
|
|
23
|
+
show_on_cya: true
|
|
24
|
+
};
|
|
25
|
+
expect((0, _showFormPageCYA.default)(PAGE, DATA)).toEqual(true);
|
|
26
|
+
});
|
|
27
|
+
it('SHOULD be shown if the show_on_cya flag is missing', function () {
|
|
28
|
+
expect((0, _showFormPageCYA.default)({}, DATA)).toEqual(true);
|
|
29
|
+
});
|
|
30
|
+
});
|