@ukhomeoffice/cop-react-form-renderer 2.2.0 → 2.5.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.
Files changed (51) hide show
  1. package/dist/components/FormRenderer/FormRenderer.js +105 -6
  2. package/dist/components/FormRenderer/FormRenderer.test.js +235 -0
  3. package/dist/components/FormRenderer/helpers/getNextPageId.js +3 -0
  4. package/dist/components/FormRenderer/helpers/getNextPageId.test.js +6 -0
  5. package/dist/components/FormRenderer/helpers/getPage.js +1 -1
  6. package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +18 -1
  7. package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +44 -6
  8. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +50 -0
  9. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +122 -0
  10. package/dist/components/FormRenderer/helpers/index.js +7 -1
  11. package/dist/components/TaskList/Task.js +83 -0
  12. package/dist/components/TaskList/Task.test.js +112 -0
  13. package/dist/components/TaskList/TaskList.js +112 -0
  14. package/dist/components/TaskList/TaskList.scss +70 -0
  15. package/dist/components/TaskList/TaskList.stories.mdx +57 -0
  16. package/dist/components/TaskList/TaskList.test.js +223 -0
  17. package/dist/components/TaskList/TaskState.js +42 -0
  18. package/dist/components/TaskList/TaskState.test.js +99 -0
  19. package/dist/components/TaskList/index.js +13 -0
  20. package/dist/json/taskList.json +228 -0
  21. package/dist/json/userProfile.data.json +2 -1
  22. package/dist/models/ComponentTypes.js +3 -1
  23. package/dist/models/FormTypes.js +2 -0
  24. package/dist/models/HubFormats.js +3 -1
  25. package/dist/models/PageAction.js +5 -0
  26. package/dist/models/TaskStates.js +41 -0
  27. package/dist/models/index.js +8 -0
  28. package/dist/utils/Component/cleanAttributes.js +1 -1
  29. package/dist/utils/Component/getComponent.js +8 -0
  30. package/dist/utils/Component/isEditable.js +1 -1
  31. package/dist/utils/FormPage/getPageActions.js +6 -0
  32. package/dist/utils/Hub/getFormHub.js +4 -0
  33. package/dist/utils/Hub/getFormHub.test.js +10 -2
  34. package/dist/utils/Validate/additional/index.js +55 -0
  35. package/dist/utils/Validate/additional/index.test.js +69 -0
  36. package/dist/utils/Validate/additional/mustBeAfter.js +37 -0
  37. package/dist/utils/Validate/additional/mustBeAfter.test.js +98 -0
  38. package/dist/utils/Validate/additional/mustBeBefore.js +35 -0
  39. package/dist/utils/Validate/additional/mustBeBefore.test.js +66 -0
  40. package/dist/utils/Validate/additional/mustBeInTheFuture.js +42 -0
  41. package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +34 -0
  42. package/dist/utils/Validate/additional/mustBeInThePast.js +44 -0
  43. package/dist/utils/Validate/additional/mustBeInThePast.test.js +34 -0
  44. package/dist/utils/Validate/additional/utils.js +66 -0
  45. package/dist/utils/Validate/validateComponent.js +37 -0
  46. package/dist/utils/Validate/validateComponent.test.js +48 -2
  47. package/dist/utils/Validate/validateDate.js +144 -0
  48. package/dist/utils/Validate/validateDate.test.js +112 -0
  49. package/dist/utils/Validate/validateTime.js +76 -0
  50. package/dist/utils/Validate/validateTime.test.js +55 -0
  51. package/package.json +3 -2
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+
3
+ var _react = require("@testing-library/react");
4
+
5
+ var _react2 = _interopRequireDefault(require("react"));
6
+
7
+ var _TaskList = _interopRequireDefault(require("./TaskList"));
8
+
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+
11
+ // Global imports
12
+ // Local imports
13
+ describe('components', function () {
14
+ describe('TaskList', function () {
15
+ it('should render a TaskList', function () {
16
+ var COP_REF = '123';
17
+ var REF_TITLE = 'COP reference number';
18
+ var sections = [{
19
+ name: 'These are your tasks',
20
+ tasks: [{
21
+ name: 'Nice task',
22
+ state: 'complete',
23
+ pages: ['pageOne']
24
+ }, {
25
+ name: 'Ok task',
26
+ state: 'inProgress',
27
+ pages: ['pageTwo']
28
+ }, {
29
+ name: 'Terrible task',
30
+ state: 'notStarted',
31
+ pages: ['pageThree']
32
+ }]
33
+ }, {
34
+ name: 'These are your extra bonus tasks',
35
+ tasks: [{
36
+ name: 'Nice task',
37
+ state: 'complete',
38
+ pages: ['pageFour']
39
+ }, {
40
+ name: 'Ok task',
41
+ state: 'cannotStartYet',
42
+ pages: ['pageFive']
43
+ }, {
44
+ name: 'Terrible task',
45
+ state: 'cannotStartYet',
46
+ pages: ['pageSix']
47
+ }]
48
+ }];
49
+
50
+ var _render = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_TaskList.default, {
51
+ refNumber: COP_REF,
52
+ refTitle: REF_TITLE,
53
+ sections: sections
54
+ })),
55
+ container = _render.container;
56
+
57
+ expect(container.childNodes.length).toEqual(1);
58
+ var referenceHeading = container.childNodes[0].childNodes[0];
59
+ expect(referenceHeading.tagName).toEqual('H2');
60
+ expect(referenceHeading.textContent).toEqual('COP reference number 123');
61
+ var incompleteForm = container.childNodes[0].childNodes[1];
62
+ expect(incompleteForm.tagName).toEqual('H2');
63
+ expect(incompleteForm.textContent).toEqual('Incomplete form');
64
+ var numComplete = container.childNodes[0].childNodes[2];
65
+ expect(numComplete.tagName).toEqual('P');
66
+ expect(numComplete.textContent).toEqual('You have completed 2 of 6 sections');
67
+ expect(container.childNodes[0].childNodes.length).toEqual(7);
68
+ var subSectionOneHeading = container.childNodes[0].childNodes[3];
69
+ expect(subSectionOneHeading.tagName).toEqual('H2');
70
+ expect(subSectionOneHeading.textContent).toEqual('1. These are your tasks');
71
+ var subSectionOneList = container.childNodes[0].childNodes[4];
72
+ expect(subSectionOneList.childNodes.length).toEqual(3);
73
+ var subSectionTwoHeading = container.childNodes[0].childNodes[5];
74
+ expect(subSectionTwoHeading.tagName).toEqual('H2');
75
+ expect(subSectionTwoHeading.textContent).toEqual('2. These are your extra bonus tasks');
76
+ var subSectionTwoList = container.childNodes[0].childNodes[6];
77
+ expect(subSectionTwoList.childNodes.length).toEqual(3);
78
+ });
79
+ it('should not show incomplete form if form is complete', function () {
80
+ var COP_REF = '123';
81
+ var REF_TITLE = 'COP reference number';
82
+ var sections = [{
83
+ name: 'These are your tasks',
84
+ tasks: [{
85
+ name: 'Nice task',
86
+ state: 'complete',
87
+ pages: ['pageOne']
88
+ }, {
89
+ name: 'Ok task',
90
+ state: 'complete',
91
+ pages: ['pageTwo']
92
+ }, {
93
+ name: 'Terrible task',
94
+ state: 'complete',
95
+ pages: ['pageThree']
96
+ }]
97
+ }, {
98
+ name: 'These are your extra bonus tasks',
99
+ tasks: [{
100
+ name: 'Nice task',
101
+ state: 'complete',
102
+ pages: ['pageFour']
103
+ }, {
104
+ name: 'Ok task',
105
+ state: 'complete',
106
+ pages: ['pageFive']
107
+ }, {
108
+ name: 'Terrible task',
109
+ state: 'complete',
110
+ pages: ['pageSix']
111
+ }]
112
+ }];
113
+
114
+ var _render2 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_TaskList.default, {
115
+ refNumber: COP_REF,
116
+ refTitle: REF_TITLE,
117
+ sections: sections
118
+ })),
119
+ container = _render2.container;
120
+
121
+ expect(container.childNodes[0].childNodes.length).toEqual(6);
122
+ var referenceHeading = container.childNodes[0].childNodes[0];
123
+ expect(referenceHeading.tagName).toEqual('H2');
124
+ expect(referenceHeading.textContent).toEqual('COP reference number 123');
125
+ var numComplete = container.childNodes[0].childNodes[1];
126
+ expect(numComplete.tagName).toEqual('P');
127
+ expect(numComplete.textContent).toEqual('You have completed 6 of 6 sections');
128
+ });
129
+ it('should not show numbers on section headings if there is only one section', function () {
130
+ var COP_REF = '123';
131
+ var REF_TITLE = 'COP reference number';
132
+ var sections = [{
133
+ name: 'These are your tasks',
134
+ tasks: [{
135
+ name: 'Nice task',
136
+ state: 'complete',
137
+ pages: ['pageOne']
138
+ }, {
139
+ name: 'Ok task',
140
+ state: 'complete',
141
+ pages: ['pageTwo']
142
+ }, {
143
+ name: 'Terrible task',
144
+ state: 'notStarted',
145
+ pages: ['pageThree']
146
+ }]
147
+ }];
148
+
149
+ var _render3 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_TaskList.default, {
150
+ refNumber: COP_REF,
151
+ refTitle: REF_TITLE,
152
+ sections: sections
153
+ })),
154
+ container = _render3.container;
155
+
156
+ var subSectionOne = container.childNodes[0].childNodes[3];
157
+ expect(subSectionOne.childNodes[0].textContent).toEqual('');
158
+ expect(subSectionOne.childNodes[1].textContent).toEqual('These are your tasks');
159
+ });
160
+ });
161
+ it('should pass the the selected task to the given onTaskAction function', function () {
162
+ var COP_REF = '123';
163
+ var REF_TITLE = 'COP reference number';
164
+ var ON_CLICK_CALLS = [];
165
+
166
+ var ON_CLICK = function ON_CLICK(value) {
167
+ ON_CLICK_CALLS.push(value);
168
+ };
169
+
170
+ var sections = [{
171
+ name: 'These are your tasks',
172
+ tasks: [{
173
+ name: 'Nice task',
174
+ state: 'complete',
175
+ pages: ['pageOne']
176
+ }, {
177
+ name: 'Ok task',
178
+ state: 'complete',
179
+ pages: ['pageTwo']
180
+ }, {
181
+ name: 'Terrible task',
182
+ state: 'notStarted',
183
+ pages: ['pageThree']
184
+ }]
185
+ }];
186
+
187
+ var _render4 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_TaskList.default, {
188
+ refNumber: COP_REF,
189
+ refTitle: REF_TITLE,
190
+ sections: sections,
191
+ onTaskAction: ON_CLICK
192
+ })),
193
+ container = _render4.container;
194
+
195
+ var firstTask = container.childNodes[0].childNodes[4].childNodes[0].childNodes[0].childNodes[0];
196
+ var secondTask = container.childNodes[0].childNodes[4].childNodes[1].childNodes[0].childNodes[0];
197
+ var thirdTask = container.childNodes[0].childNodes[4].childNodes[2].childNodes[0].childNodes[0];
198
+
199
+ _react.fireEvent.click(firstTask.childNodes[0]);
200
+
201
+ expect(ON_CLICK_CALLS[0]).toEqual({
202
+ pages: ['pageOne'],
203
+ name: "Nice task",
204
+ state: 'complete'
205
+ });
206
+
207
+ _react.fireEvent.click(secondTask.childNodes[0]);
208
+
209
+ expect(ON_CLICK_CALLS[1]).toEqual({
210
+ pages: ['pageTwo'],
211
+ name: "Ok task",
212
+ state: 'complete'
213
+ });
214
+
215
+ _react.fireEvent.click(thirdTask.childNodes[0]);
216
+
217
+ expect(ON_CLICK_CALLS[2]).toEqual({
218
+ pages: ['pageThree'],
219
+ name: "Terrible task",
220
+ state: 'notStarted'
221
+ });
222
+ });
223
+ });
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.DEFAULT_CLASS = void 0;
7
+
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _copReactComponents = require("@ukhomeoffice/cop-react-components");
13
+
14
+ var _models = require("../../models");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ //Global Imports
19
+ //Local imports
20
+ var DEFAULT_CLASS = 'hods-task-list';
21
+ exports.DEFAULT_CLASS = DEFAULT_CLASS;
22
+
23
+ var TaskState = function TaskState(_ref) {
24
+ var state = _ref.state;
25
+
26
+ var classes = _copReactComponents.Utils.classBuilder(DEFAULT_CLASS, undefined, undefined);
27
+
28
+ if (!_models.TaskStates.DETAILS[state]) {
29
+ return null;
30
+ }
31
+
32
+ return /*#__PURE__*/_react.default.createElement(_copReactComponents.Tag, {
33
+ classModifiers: [_models.TaskStates.DETAILS[state].colour],
34
+ className: classes('tag')
35
+ }, _models.TaskStates.DETAILS[state].label);
36
+ };
37
+
38
+ TaskState.propTypes = {
39
+ state: _propTypes.default.string.isRequired
40
+ };
41
+ var _default = TaskState;
42
+ exports.default = _default;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+
3
+ var _react = require("@testing-library/react");
4
+
5
+ var _react2 = _interopRequireDefault(require("react"));
6
+
7
+ var _TaskState = _interopRequireDefault(require("./TaskState"));
8
+
9
+ var _models = require("../../models");
10
+
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+
13
+ // Global imports
14
+ // Local imports
15
+ describe('components', function () {
16
+ describe('TaskList.TaskState', function () {
17
+ it('should render a complete state icon', function () {
18
+ var STATE = _models.TaskStates.TYPES.COMPLETE;
19
+
20
+ var _render = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_TaskState.default, {
21
+ state: STATE
22
+ })),
23
+ container = _render.container;
24
+
25
+ expect(container.childNodes.length).toEqual(1);
26
+ expect(container.childNodes[0].classList).toContain('hods-tag');
27
+ expect(container.childNodes[0].textContent).toEqual(_models.TaskStates.DETAILS.complete.label);
28
+ });
29
+ it('should render an in progress state icon', function () {
30
+ var STATE = _models.TaskStates.TYPES.IN_PROGRESS;
31
+
32
+ var _render2 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_TaskState.default, {
33
+ state: STATE
34
+ })),
35
+ container = _render2.container;
36
+
37
+ expect(container.childNodes.length).toEqual(1);
38
+ expect(container.childNodes[0].classList).toContain('hods-tag');
39
+ expect(container.childNodes[0].classList).toContain("hods-tag--".concat(_models.TaskStates.DETAILS.inProgress.colour));
40
+ expect(container.childNodes[0].textContent).toEqual(_models.TaskStates.DETAILS.inProgress.label);
41
+ });
42
+ it('should render a not started state icon', function () {
43
+ var STATE = _models.TaskStates.TYPES.NOT_STARTED;
44
+
45
+ var _render3 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_TaskState.default, {
46
+ state: STATE
47
+ })),
48
+ container = _render3.container;
49
+
50
+ expect(container.childNodes.length).toEqual(1);
51
+ expect(container.childNodes[0].classList).toContain('hods-tag');
52
+ expect(container.childNodes[0].classList).toContain("hods-tag--".concat(_models.TaskStates.DETAILS.notStarted.colour));
53
+ expect(container.childNodes[0].textContent).toEqual(_models.TaskStates.DETAILS.notStarted.label);
54
+ });
55
+ it('should render a cannot start state icon', function () {
56
+ var STATE = _models.TaskStates.TYPES.CANNOT_START_YET;
57
+
58
+ var _render4 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_TaskState.default, {
59
+ state: STATE
60
+ })),
61
+ container = _render4.container;
62
+
63
+ expect(container.childNodes.length).toEqual(1);
64
+ expect(container.childNodes[0].classList).toContain('hods-tag');
65
+ expect(container.childNodes[0].classList).toContain("hods-tag--".concat(_models.TaskStates.DETAILS.cannotStartYet.colour));
66
+ expect(container.childNodes[0].textContent).toEqual(_models.TaskStates.DETAILS.cannotStartYet.label);
67
+ });
68
+ it('should not render a state if given an unknown value', function () {
69
+ var STATE = 'spellingError';
70
+
71
+ var _render5 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_TaskState.default, {
72
+ state: STATE
73
+ })),
74
+ container = _render5.container;
75
+
76
+ expect(container.childNodes.length).toEqual(0);
77
+ });
78
+ it('should not render a state if given null', function () {
79
+ var STATE = null;
80
+
81
+ var _render6 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_TaskState.default, {
82
+ state: STATE
83
+ })),
84
+ container = _render6.container;
85
+
86
+ expect(container.childNodes.length).toEqual(0);
87
+ });
88
+ it('should not render a state if given undefined', function () {
89
+ var STATE = undefined;
90
+
91
+ var _render7 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_TaskState.default, {
92
+ state: STATE
93
+ })),
94
+ container = _render7.container;
95
+
96
+ expect(container.childNodes.length).toEqual(0);
97
+ });
98
+ });
99
+ });
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _TaskList = _interopRequireDefault(require("./TaskList"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var _default = _TaskList.default;
13
+ exports.default = _default;
@@ -0,0 +1,228 @@
1
+ {
2
+ "id": "eventAtTheBorder",
3
+ "version": "1",
4
+ "name": "Event at the border",
5
+ "title": "Event at the border",
6
+ "type": "task-list",
7
+ "components": [
8
+ {
9
+ "id": "firstName",
10
+ "fieldId": "firstName",
11
+ "label": "First name",
12
+ "type": "text",
13
+ "required": true
14
+ },
15
+ {
16
+ "id": "surname",
17
+ "fieldId": "surname",
18
+ "label": "Last name",
19
+ "type": "text",
20
+ "required": true
21
+ },
22
+ {
23
+ "id": "date",
24
+ "fieldId": "date",
25
+ "label": "Date",
26
+ "type": "date",
27
+ "required": true
28
+ },
29
+ {
30
+ "id": "officerName",
31
+ "fieldId": "officerName",
32
+ "label": "Officer Name",
33
+ "type": "text"
34
+ },
35
+ {
36
+ "id": "immigrationDate",
37
+ "fieldId": "immigrationDate",
38
+ "label": "Immigration Date",
39
+ "type": "date",
40
+ "required": true
41
+ },
42
+ {
43
+ "id": "mode",
44
+ "fieldId": "mode",
45
+ "label": "Mode",
46
+ "type": "radios",
47
+ "data": {
48
+ "options": [
49
+ {
50
+ "value": "sea",
51
+ "label": "Sea"
52
+ },
53
+ {
54
+ "value": "air",
55
+ "label": "Air"
56
+ }
57
+ ]
58
+ },
59
+ "required": true
60
+ }
61
+ ],
62
+ "pages": [
63
+ {
64
+ "id": "eventDate",
65
+ "name": "eventDate",
66
+ "title": "Event Date",
67
+ "components": [
68
+ {
69
+ "use": "date"
70
+ }
71
+ ],
72
+ "actions": [
73
+ {
74
+ "type": "saveAndNavigate",
75
+ "page": "eventMode"
76
+ }
77
+ ],
78
+ "cya_link": {
79
+ "page": "eventDate",
80
+ "aria_suffix": "Event Date"
81
+ }
82
+ },
83
+ {
84
+ "id": "eventMode",
85
+ "name": "eventMode",
86
+ "title": "Event Mode",
87
+ "components": [
88
+ {
89
+ "use": "mode"
90
+ }
91
+ ],
92
+ "actions": [
93
+ {
94
+ "type": "saveAndNavigate",
95
+ "page": "cya"
96
+ }
97
+ ],
98
+ "cya_link": {
99
+ "page": "eventMode",
100
+ "aria_suffix": "Event Mode"
101
+ }
102
+ },
103
+ {
104
+ "id": "officeDetails",
105
+ "name": "officeDetails",
106
+ "title": "Officer Details",
107
+ "components": [
108
+ {
109
+ "use": "officerName"
110
+ }
111
+ ],
112
+ "actions": [
113
+ {
114
+ "type": "saveAndNavigate",
115
+ "page": "cya"
116
+ }
117
+ ],
118
+ "cya_link": {
119
+ "page": "officeDetails",
120
+ "aria_suffix": "Officer Details"
121
+ }
122
+ },
123
+ {
124
+ "id": "immigrationDate",
125
+ "name": "immigrationDate",
126
+ "title": "Immigration Date",
127
+ "components": [
128
+ {
129
+ "use": "immigrationDate"
130
+ }
131
+ ],
132
+ "actions": [
133
+ {
134
+ "type": "saveAndNavigate",
135
+ "page": "cya"
136
+ }
137
+ ],
138
+ "cya_link": {
139
+ "page": "immigrationDate",
140
+ "aria_suffix": "Immigration Date"
141
+ }
142
+ },
143
+ {
144
+ "id": "firstName",
145
+ "name": "firstName",
146
+ "title": "First Name",
147
+ "components": [
148
+ {
149
+ "use": "firstName"
150
+ }
151
+ ],
152
+ "actions": [
153
+ {
154
+ "type": "saveAndNavigate",
155
+ "page": "surname"
156
+ }
157
+ ],
158
+ "cya_link": {
159
+ "page": "firstName",
160
+ "aria_suffix": "First Name"
161
+ }
162
+ },
163
+ {
164
+ "id": "surname",
165
+ "name": "surname",
166
+ "title": "Surname",
167
+ "components": [
168
+ {
169
+ "use": "surname"
170
+ }
171
+ ],
172
+ "actions": [
173
+ {
174
+ "type": "saveAndNavigate",
175
+ "page": "cya"
176
+ }
177
+ ],
178
+ "cya_link": {
179
+ "page": "surname",
180
+ "aria_suffix": "Surname"
181
+ }
182
+ }
183
+ ],
184
+ "hub": {
185
+ "format": "CYA",
186
+ "refTitle": "COP reference number",
187
+ "sections": [
188
+ {
189
+ "name": "Add event details",
190
+ "tasks": [
191
+ {
192
+ "name": "Date, location and mode details",
193
+ "pages": ["eventDate", "eventMode"],
194
+ "state": "complete"
195
+ },
196
+ {
197
+ "name": "Officer and agency details",
198
+ "pages": ["officeDetails"],
199
+ "state": "inProgress"
200
+ }
201
+ ]
202
+ },
203
+ {
204
+ "name": "Add people details",
205
+ "tasks": [
206
+ {
207
+ "name": "People details",
208
+ "pages": ["firstName", "surname"],
209
+ "state": "complete"
210
+ },
211
+ {
212
+ "name": "Immigration details",
213
+ "pages": ["immigrationDate"],
214
+ "state": "inProgress"
215
+ },
216
+ {
217
+ "name": "Journey details",
218
+ "pages": ["none"],
219
+ "state": "cannotStartYet"
220
+ }
221
+ ]
222
+ }
223
+ ]
224
+ },
225
+ "cya": {
226
+ "hide_page_titles": false
227
+ }
228
+ }
@@ -10,5 +10,6 @@
10
10
  "userDetails": {
11
11
  "linemanagerEmail": "line.manager@digital.homeoffice.gov.uk",
12
12
  "delegateEmails": "del.egate@digital.homeoffice.gov.uk"
13
- }
13
+ },
14
+ "businessKey": "123456789"
14
15
  }
@@ -15,6 +15,7 @@ var TYPE_PHONE_NUMBER = 'phone-number';
15
15
  var TYPE_RADIOS = 'radios';
16
16
  var TYPE_TEXT = 'text';
17
17
  var TYPE_TEXT_AREA = 'textarea';
18
+ var TYPE_TIME = 'time';
18
19
  var ComponentTypes = {
19
20
  AUTOCOMPLETE: TYPE_AUTOCOMPLETE,
20
21
  CHECKBOXES: TYPE_CHECKBOXES,
@@ -26,7 +27,8 @@ var ComponentTypes = {
26
27
  PHONE_NUMBER: TYPE_PHONE_NUMBER,
27
28
  RADIOS: TYPE_RADIOS,
28
29
  TEXT: TYPE_TEXT,
29
- TEXT_AREA: TYPE_TEXT_AREA
30
+ TEXT_AREA: TYPE_TEXT_AREA,
31
+ TIME: TYPE_TIME
30
32
  };
31
33
  var _default = ComponentTypes;
32
34
  exports.default = _default;
@@ -7,11 +7,13 @@ exports.default = void 0;
7
7
  var TYPE_FORM = 'form';
8
8
  var TYPE_CHECK_YOUR_ANSWERS = 'cya';
9
9
  var TYPE_HUB_AND_SPOKE = 'hub-and-spoke';
10
+ var TYPE_TASK_LIST = 'task-list';
10
11
  var TYPE_WIZARD = 'wizard';
11
12
  var FormTypes = {
12
13
  FORM: TYPE_FORM,
13
14
  CYA: TYPE_CHECK_YOUR_ANSWERS,
14
15
  HUB: TYPE_HUB_AND_SPOKE,
16
+ TASK: TYPE_TASK_LIST,
15
17
  WIZARD: TYPE_WIZARD
16
18
  };
17
19
  var _default = FormTypes;
@@ -5,8 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var HUB_FORMAT_CYA = 'CYA';
8
+ var HUB_FORMAT_TASK = 'TASK';
8
9
  var HubFormats = {
9
- CYA: HUB_FORMAT_CYA
10
+ CYA: HUB_FORMAT_CYA,
11
+ TASK: HUB_FORMAT_TASK
10
12
  };
11
13
  var _default = HubFormats;
12
14
  exports.default = _default;
@@ -11,11 +11,13 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
11
11
 
12
12
  var TYPE_NAVIGATE = 'navigate';
13
13
  var TYPE_SAVE_AND_CONTINUE = 'saveAndContinue';
14
+ var TYPE_SAVE_AND_NAVIGATE = 'saveAndNavigate';
14
15
  var TYPE_SAVE_AND_RETURN = 'saveAndReturn';
15
16
  var TYPE_SUBMIT = 'submit';
16
17
  var PageActionTypes = {
17
18
  NAVIGATE: TYPE_NAVIGATE,
18
19
  SAVE_AND_CONTINUE: TYPE_SAVE_AND_CONTINUE,
20
+ SAVE_AND_NAVIGATE: TYPE_SAVE_AND_NAVIGATE,
19
21
  SAVE_AND_RETURN: TYPE_SAVE_AND_RETURN,
20
22
  SUBMIT: TYPE_SUBMIT
21
23
  };
@@ -24,6 +26,9 @@ var DefaultPageActions = (_DefaultPageActions = {}, _defineProperty(_DefaultPage
24
26
  type: TYPE_SAVE_AND_CONTINUE,
25
27
  validate: true,
26
28
  label: 'Save and continue'
29
+ }), _defineProperty(_DefaultPageActions, TYPE_SAVE_AND_NAVIGATE, {
30
+ type: TYPE_SAVE_AND_NAVIGATE,
31
+ validate: true
27
32
  }), _defineProperty(_DefaultPageActions, TYPE_SAVE_AND_RETURN, {
28
33
  type: TYPE_SAVE_AND_RETURN,
29
34
  validate: false,