@ukhomeoffice/cop-react-form-renderer 2.1.0 → 2.6.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 (90) hide show
  1. package/dist/components/FormComponent/Container.test.js +250 -0
  2. package/dist/components/FormComponent/FormComponent.js +105 -21
  3. package/dist/components/FormComponent/FormComponent.test.js +67 -0
  4. package/dist/components/FormPage/FormPage.js +2 -1
  5. package/dist/components/FormRenderer/FormRenderer.js +105 -6
  6. package/dist/components/FormRenderer/FormRenderer.test.js +235 -0
  7. package/dist/components/FormRenderer/helpers/getNextPageId.js +3 -0
  8. package/dist/components/FormRenderer/helpers/getNextPageId.test.js +6 -0
  9. package/dist/components/FormRenderer/helpers/getPage.js +1 -1
  10. package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +18 -1
  11. package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +44 -6
  12. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +50 -0
  13. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +122 -0
  14. package/dist/components/FormRenderer/helpers/index.js +7 -1
  15. package/dist/components/TaskList/Task.js +83 -0
  16. package/dist/components/TaskList/Task.test.js +112 -0
  17. package/dist/components/TaskList/TaskList.js +112 -0
  18. package/dist/components/TaskList/TaskList.scss +70 -0
  19. package/dist/components/TaskList/TaskList.stories.mdx +57 -0
  20. package/dist/components/TaskList/TaskList.test.js +223 -0
  21. package/dist/components/TaskList/TaskState.js +42 -0
  22. package/dist/components/TaskList/TaskState.test.js +99 -0
  23. package/dist/components/TaskList/index.js +13 -0
  24. package/dist/hooks/index.js +19 -1
  25. package/dist/hooks/useHooks.js +5 -1
  26. package/dist/json/taskList.json +228 -0
  27. package/dist/json/userProfile.data.json +2 -1
  28. package/dist/models/ComponentTypes.js +5 -1
  29. package/dist/models/FormTypes.js +2 -0
  30. package/dist/models/HubFormats.js +3 -1
  31. package/dist/models/PageAction.js +5 -0
  32. package/dist/models/TaskStates.js +41 -0
  33. package/dist/models/index.js +8 -0
  34. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +40 -0
  35. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +257 -0
  36. package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +9 -1
  37. package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +44 -0
  38. package/dist/utils/CheckYourAnswers/showComponentCYA.js +6 -0
  39. package/dist/utils/Component/cleanAttributes.js +1 -1
  40. package/dist/utils/Component/getComponent.js +26 -0
  41. package/dist/utils/Component/isEditable.js +1 -1
  42. package/dist/utils/Component/showComponent.js +2 -20
  43. package/dist/utils/Condition/index.js +19 -0
  44. package/dist/utils/Condition/meetsAllConditions.js +40 -0
  45. package/dist/utils/Condition/meetsAllConditions.test.js +62 -0
  46. package/dist/utils/{meetsCondition.js → Condition/meetsCondition.js} +0 -0
  47. package/dist/utils/Condition/meetsCondition.test.js +302 -0
  48. package/dist/utils/Condition/setupConditions.js +47 -0
  49. package/dist/utils/Condition/setupConditions.test.js +35 -0
  50. package/dist/utils/Container/getEditableComponents.js +38 -0
  51. package/dist/utils/Container/getEditableComponents.test.js +157 -0
  52. package/dist/utils/Container/index.js +22 -0
  53. package/dist/utils/Container/setupNesting.js +45 -0
  54. package/dist/utils/Container/setupNesting.test.js +92 -0
  55. package/dist/utils/Container/showContainer.js +61 -0
  56. package/dist/utils/Container/showContainer.test.js +128 -0
  57. package/dist/utils/Data/getDataPath.js +90 -0
  58. package/dist/utils/Data/getDataPath.test.js +52 -0
  59. package/dist/utils/Data/index.js +3 -0
  60. package/dist/utils/FormPage/getFormPage.js +4 -2
  61. package/dist/utils/FormPage/getFormPage.test.js +18 -7
  62. package/dist/utils/FormPage/getFormPages.test.js +5 -2
  63. package/dist/utils/FormPage/getPageActions.js +6 -0
  64. package/dist/utils/FormPage/index.js +0 -3
  65. package/dist/utils/FormPage/showFormPage.js +7 -27
  66. package/dist/utils/Hub/getFormHub.js +4 -0
  67. package/dist/utils/Hub/getFormHub.test.js +15 -4
  68. package/dist/utils/Validate/additional/index.js +55 -0
  69. package/dist/utils/Validate/additional/index.test.js +69 -0
  70. package/dist/utils/Validate/additional/mustBeAfter.js +37 -0
  71. package/dist/utils/Validate/additional/mustBeAfter.test.js +98 -0
  72. package/dist/utils/Validate/additional/mustBeBefore.js +35 -0
  73. package/dist/utils/Validate/additional/mustBeBefore.test.js +66 -0
  74. package/dist/utils/Validate/additional/mustBeInTheFuture.js +42 -0
  75. package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +34 -0
  76. package/dist/utils/Validate/additional/mustBeInThePast.js +44 -0
  77. package/dist/utils/Validate/additional/mustBeInThePast.test.js +34 -0
  78. package/dist/utils/Validate/additional/utils.js +66 -0
  79. package/dist/utils/Validate/index.js +7 -1
  80. package/dist/utils/Validate/validateComponent.js +57 -0
  81. package/dist/utils/Validate/validateComponent.test.js +92 -2
  82. package/dist/utils/Validate/validateDate.js +155 -0
  83. package/dist/utils/Validate/validateDate.test.js +118 -0
  84. package/dist/utils/Validate/validatePage.js +6 -8
  85. package/dist/utils/Validate/validateTime.js +95 -0
  86. package/dist/utils/Validate/validateTime.test.js +61 -0
  87. package/dist/utils/index.js +6 -3
  88. package/package.json +3 -2
  89. package/dist/utils/FormPage/getEditableComponents.js +0 -28
  90. package/dist/utils/FormPage/getEditableComponents.test.js +0 -75
@@ -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;
@@ -1,8 +1,22 @@
1
1
  "use strict";
2
2
 
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
8
+ Object.defineProperty(exports, "STATUS_COMPLETE", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _useRefData.STATUS_COMPLETE;
12
+ }
13
+ });
14
+ Object.defineProperty(exports, "STATUS_LOADING", {
15
+ enumerable: true,
16
+ get: function get() {
17
+ return _useRefData.STATUS_LOADING;
18
+ }
19
+ });
6
20
  Object.defineProperty(exports, "useAxios", {
7
21
  enumerable: true,
8
22
  get: function get() {
@@ -34,6 +48,10 @@ var _useHooks = _interopRequireDefault(require("./useHooks"));
34
48
 
35
49
  var _useGetRequest = _interopRequireDefault(require("./useGetRequest"));
36
50
 
37
- var _useRefData = _interopRequireDefault(require("./useRefData"));
51
+ var _useRefData = _interopRequireWildcard(require("./useRefData"));
52
+
53
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
54
+
55
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
38
56
 
39
57
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -4,11 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.resetHooks = exports.removeHook = exports.default = exports.addHook = exports.ALLOWED_HOOKS = void 0;
7
- var ALLOWED_HOOKS = ['onRequest', 'onFormComplete', 'onFormLoad', 'onPageChange', 'onSubmit'];
7
+ var ALLOWED_HOOKS = ['onFormComplete', 'onFormLoad', 'onGetComponent', 'onPageChange', 'onRequest', 'onSubmit'];
8
8
  exports.ALLOWED_HOOKS = ALLOWED_HOOKS;
9
9
  var DEFAULT_HOOKS = {
10
10
  onFormComplete: function onFormComplete() {},
11
11
  onFormLoad: function onFormLoad() {},
12
+ onGetComponent: function onGetComponent(config, wrap) {
13
+ return null;
14
+ },
12
15
  onPageChange: function onPageChange(pageId) {
13
16
  return pageId;
14
17
  },
@@ -22,6 +25,7 @@ var DEFAULT_HOOKS = {
22
25
  var hooks = {
23
26
  onFormComplete: DEFAULT_HOOKS.onFormComplete,
24
27
  onFormLoad: DEFAULT_HOOKS.onFormLoad,
28
+ onGetComponent: DEFAULT_HOOKS.onGetComponent,
25
29
  onPageChange: DEFAULT_HOOKS.onPageChange,
26
30
  onRequest: DEFAULT_HOOKS.onRequest,
27
31
  onSubmit: DEFAULT_HOOKS.onSubmit
@@ -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
  }