@ukhomeoffice/cop-react-form-renderer 4.69.0 → 4.69.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.
@@ -20,6 +20,7 @@ var _handlers = _interopRequireDefault(require("./handlers"));
20
20
  var _helpers = _interopRequireDefault(require("./helpers"));
21
21
  var _onCYAAction = _interopRequireDefault(require("./onCYAAction"));
22
22
  var _onPageAction = _interopRequireDefault(require("./onPageAction"));
23
+ var _onTaskAction2 = _interopRequireDefault(require("./onTaskAction"));
23
24
  require("./FormRenderer.scss");
24
25
  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); }
25
26
  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; }
@@ -292,7 +293,7 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
292
293
  hubDetails.sections.every(function (section) {
293
294
  return section.tasks.every(function (task) {
294
295
  if (task.pages.includes(page.pageId) && task.name !== currentTask.name) {
295
- onTaskAction(task);
296
+ (0, _onTaskAction2.default)(task, pages, setCurrentTask, hubDetails, data, onPageChange, _models.FormPages);
296
297
  return false;
297
298
  }
298
299
  return true;
@@ -303,37 +304,6 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
303
304
  _handlers.default.cyaAction(page, pageId, onPageChange);
304
305
  }
305
306
  };
306
-
307
- //Kick off a task, gather required pages and move to the correct point
308
- var onTaskAction = function onTaskAction(currentTask) {
309
- if (currentTask) {
310
- currentTask.fullPages = [];
311
- currentTask.pages.forEach(function (page) {
312
- currentTask.fullPages.push(_helpers.default.getPage(page, pages));
313
- });
314
- setCurrentTask(currentTask);
315
- var state = _objectSpread({}, currentTask);
316
- if (currentTask.state === _models.TaskStates.TYPES.COMPLETE) {
317
- if (hubDetails !== null && hubDetails !== void 0 && hubDetails.noTaskCYAs) {
318
- // If the task is complete and there are no CYA's then show user first page
319
- var currentPage = data.formStatus.tasks[currentTask.name].currentPage;
320
- onPageChange(currentTask.pages[0] || currentPage);
321
- } else if (currentTask.customCYA) {
322
- onPageChange(currentTask.customCYA);
323
- } else {
324
- onPageChange(_models.FormPages.CYA, state);
325
- }
326
- } else if (currentTask.state === _models.TaskStates.TYPES.IN_PROGRESS) {
327
- var _currentPage = data.formStatus.tasks[currentTask.name].currentPage;
328
- onPageChange(_currentPage || currentTask.pages[0], state);
329
- } else if (currentTask.firstPage) {
330
- var _currentPage2 = currentTask.firstPage;
331
- onPageChange(_currentPage2 || currentTask.pages[0], state);
332
- } else {
333
- onPageChange(currentTask.pages[0], state);
334
- }
335
- }
336
- };
337
307
  var classes = _utils.default.classBuilder(classBlock, classModifiers, className);
338
308
  if (hub === _models.HubFormats.TASK) {
339
309
  cya.actions = [_models.PageAction.TYPES.SAVE_AND_CONTINUE, _models.PageAction.TYPES.SAVE_AND_RETURN];
@@ -359,7 +329,9 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
359
329
  type: type
360
330
  })), hub === _models.HubFormats.TASK && formState.pageId === _models.FormPages.HUB && /*#__PURE__*/_react.default.createElement(_TaskList.default, _extends({}, hubDetails, {
361
331
  refNumber: data.businessKey,
362
- onTaskAction: onTaskAction,
332
+ onTaskAction: function onTaskAction(task) {
333
+ (0, _onTaskAction2.default)(task, pages, setCurrentTask, hubDetails, data, onPageChange, _models.FormPages);
334
+ },
363
335
  formData: data
364
336
  })), formState.page && !formState.cya && !formState.page.collection && /*#__PURE__*/_react.default.createElement(_FormPage.default, {
365
337
  page: formState.page,
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _models = require("../../models");
8
+ var _helpers = _interopRequireDefault(require("./helpers"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
11
+ 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; }
12
+ 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; }
13
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
14
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
15
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
16
+ var onTaskAction = function onTaskAction(currentTask, pages, setCurrentTask, hubDetails, data, onPageChange, FormPages) {
17
+ if (currentTask) {
18
+ currentTask.fullPages = [];
19
+ currentTask.pages.forEach(function (page) {
20
+ currentTask.fullPages.push(_helpers.default.getPage(page, pages));
21
+ });
22
+ setCurrentTask(currentTask);
23
+ var state = _objectSpread({}, currentTask);
24
+ if (currentTask.state === _models.TaskStates.TYPES.COMPLETE) {
25
+ if (hubDetails !== null && hubDetails !== void 0 && hubDetails.noTaskCYAs) {
26
+ // If the task is complete and there are no CYA's then show user first page
27
+ var currentPage = data.formStatus.tasks[currentTask.name].currentPage;
28
+ onPageChange(currentTask.pages[0] || currentPage);
29
+ } else if (currentTask.customCYA) {
30
+ onPageChange(currentTask.customCYA);
31
+ } else {
32
+ onPageChange(FormPages.CYA, state);
33
+ }
34
+ } else if (currentTask.state === _models.TaskStates.TYPES.IN_PROGRESS) {
35
+ var _currentPage = data.formStatus.tasks[currentTask.name].currentPage;
36
+ onPageChange(_currentPage || currentTask.pages[0], state);
37
+ } else if (currentTask.firstPage) {
38
+ onPageChange(currentTask.firstPage, state);
39
+ } else {
40
+ onPageChange(currentTask.pages[0], state);
41
+ }
42
+ }
43
+ };
44
+ var _default = onTaskAction;
45
+ exports.default = _default;
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+
3
+ var _models = require("../../models");
4
+ var _helpers = _interopRequireDefault(require("./helpers"));
5
+ var _onTaskAction = _interopRequireDefault(require("./onTaskAction"));
6
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
8
+ 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; }
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
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
12
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
13
+ jest.mock('./helpers', function () {
14
+ return {
15
+ getPageArgs: [],
16
+ getPage: function getPage(page, pages) {
17
+ this.getPageArgs.push({
18
+ page: page,
19
+ pages: pages
20
+ });
21
+ },
22
+ reset: function reset() {
23
+ this.getPageArgs = [];
24
+ }
25
+ };
26
+ });
27
+ describe('components.FormRenderer.onTaskAction', function () {
28
+ var setCurrentTaskArgs = [];
29
+ var mockSetCurrentTask = function mockSetCurrentTask(task) {
30
+ setCurrentTaskArgs.push(task);
31
+ };
32
+ var onPageChangeArgs = [];
33
+ var mockOnPageChange = function mockOnPageChange(page, state) {
34
+ onPageChangeArgs.push({
35
+ page: page,
36
+ state: state
37
+ });
38
+ };
39
+ var PAGES = [{
40
+ id: 'page1'
41
+ }, {
42
+ id: 'page2'
43
+ }, {
44
+ id: 'page3'
45
+ }, {
46
+ id: 'customCya'
47
+ }];
48
+ var DATA = {
49
+ formStatus: {
50
+ tasks: {
51
+ task1: {
52
+ currentPage: 'page1'
53
+ },
54
+ task2: {
55
+ currentPage: 'page2'
56
+ },
57
+ taskNoCurrentPage: {}
58
+ }
59
+ }
60
+ };
61
+ var ARGS = {
62
+ currentTask: null,
63
+ pages: PAGES,
64
+ setCurrentTask: mockSetCurrentTask,
65
+ hubDetails: {},
66
+ data: DATA,
67
+ onPageChange: mockOnPageChange,
68
+ FormPages: {
69
+ CYA: 'cyaPage'
70
+ }
71
+ };
72
+ var genericChecks = function genericChecks(currentTask) {
73
+ expect(_helpers.default.getPageArgs.length).toEqual(currentTask.pages.length);
74
+ expect(currentTask.fullPages.length).toEqual(currentTask.pages.length);
75
+ expect(setCurrentTaskArgs.length).toEqual(1);
76
+ expect(setCurrentTaskArgs[0]).toEqual(currentTask);
77
+ };
78
+ beforeEach(function () {
79
+ setCurrentTaskArgs = [];
80
+ onPageChangeArgs = [];
81
+ _helpers.default.reset();
82
+ });
83
+ it('should do nothing if currentTask is null', function () {
84
+ _onTaskAction.default.apply(void 0, Object.values(ARGS));
85
+ expect(_helpers.default.getPageArgs.length).toEqual(0);
86
+ expect(setCurrentTaskArgs.length).toEqual(0);
87
+ expect(onPageChangeArgs.length).toEqual(0);
88
+ });
89
+ describe("when currentTask has a state of ".concat(_models.TaskStates.TYPES.COMPLETE), function () {
90
+ var TASK = {
91
+ name: 'task1',
92
+ state: _models.TaskStates.TYPES.COMPLETE,
93
+ pages: ['page1', 'page2', 'page3']
94
+ };
95
+ it('should handle task CYAs not being shown', function () {
96
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
97
+ currentTask: TASK,
98
+ hubDetails: {
99
+ noTaskCYAs: true
100
+ }
101
+ });
102
+ _onTaskAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
103
+ genericChecks(CUSTOM_ARGS.currentTask);
104
+ expect(onPageChangeArgs.length).toEqual(1);
105
+ expect(onPageChangeArgs[0].page).toEqual(CUSTOM_ARGS.currentTask.pages[0]);
106
+ });
107
+ it('should handle task CYAs not being shown and no pages being provided on currentTask', function () {
108
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
109
+ currentTask: _objectSpread(_objectSpread({}, TASK), {}, {
110
+ pages: []
111
+ }),
112
+ hubDetails: {
113
+ noTaskCYAs: true
114
+ }
115
+ });
116
+ _onTaskAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
117
+ genericChecks(CUSTOM_ARGS.currentTask);
118
+ expect(onPageChangeArgs.length).toEqual(1);
119
+ expect(onPageChangeArgs[0].page).toEqual(CUSTOM_ARGS.data.formStatus.tasks[CUSTOM_ARGS.currentTask.name].currentPage);
120
+ });
121
+ it('should handle a custom CYA being provided', function () {
122
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
123
+ currentTask: _objectSpread(_objectSpread({}, TASK), {}, {
124
+ customCYA: 'customCya'
125
+ })
126
+ });
127
+ _onTaskAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
128
+ genericChecks(CUSTOM_ARGS.currentTask);
129
+ expect(onPageChangeArgs.length).toEqual(1);
130
+ expect(onPageChangeArgs[0].page).toEqual(CUSTOM_ARGS.currentTask.customCYA);
131
+ });
132
+ it('should handle navigation to a normal CYA page', function () {
133
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
134
+ currentTask: TASK
135
+ });
136
+ _onTaskAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
137
+ genericChecks(CUSTOM_ARGS.currentTask);
138
+ expect(onPageChangeArgs.length).toEqual(1);
139
+ expect(onPageChangeArgs[0].page).toEqual(CUSTOM_ARGS.FormPages.CYA);
140
+ expect(onPageChangeArgs[0].state).toEqual(CUSTOM_ARGS.currentTask);
141
+ });
142
+ });
143
+ describe("when currentTask has a state of ".concat(_models.TaskStates.TYPES.IN_PROGRESS), function () {
144
+ it('should handle page change when formStatus has a current page for the task', function () {
145
+ var TASK = {
146
+ name: 'task1',
147
+ state: _models.TaskStates.TYPES.IN_PROGRESS,
148
+ pages: ['page1', 'page2', 'page3']
149
+ };
150
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
151
+ currentTask: TASK
152
+ });
153
+ _onTaskAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
154
+ genericChecks(CUSTOM_ARGS.currentTask);
155
+ expect(onPageChangeArgs.length).toEqual(1);
156
+ expect(onPageChangeArgs[0].page).toEqual(CUSTOM_ARGS.data.formStatus.tasks[CUSTOM_ARGS.currentTask.name].currentPage);
157
+ expect(onPageChangeArgs[0].state).toEqual(CUSTOM_ARGS.currentTask);
158
+ });
159
+ it('should handle page change when formStatus does not have a current page for the task', function () {
160
+ var TASK = {
161
+ name: 'taskNoCurrentPage',
162
+ state: _models.TaskStates.TYPES.IN_PROGRESS,
163
+ pages: ['page1', 'page2', 'page3']
164
+ };
165
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
166
+ currentTask: TASK
167
+ });
168
+ _onTaskAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
169
+ genericChecks(CUSTOM_ARGS.currentTask);
170
+ expect(onPageChangeArgs.length).toEqual(1);
171
+ expect(onPageChangeArgs[0].page).toEqual(CUSTOM_ARGS.currentTask.pages[0]);
172
+ expect(onPageChangeArgs[0].state).toEqual(CUSTOM_ARGS.currentTask);
173
+ });
174
+ });
175
+ var otherStates = Object.values(_models.TaskStates.TYPES).filter(function (t) {
176
+ return t !== _models.TaskStates.TYPES.IN_PROGRESS && t !== _models.TaskStates.TYPES.COMPLETE;
177
+ });
178
+ otherStates.forEach(function (state) {
179
+ describe("when currentTask has a state of ".concat(state), function () {
180
+ var TASK = {
181
+ name: 'task1',
182
+ state: state,
183
+ pages: ['page1', 'page2', 'page3']
184
+ };
185
+ it('should handle the task having a specific first page defined', function () {
186
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
187
+ currentTask: _objectSpread(_objectSpread({}, TASK), {}, {
188
+ firstPage: 'page2'
189
+ })
190
+ });
191
+ _onTaskAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
192
+ genericChecks(CUSTOM_ARGS.currentTask);
193
+ expect(onPageChangeArgs.length).toEqual(1);
194
+ expect(onPageChangeArgs[0].page).toEqual(CUSTOM_ARGS.currentTask.firstPage);
195
+ expect(onPageChangeArgs[0].state).toEqual(CUSTOM_ARGS.currentTask);
196
+ });
197
+ it('should handle the task having the first page defined as null', function () {
198
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
199
+ currentTask: _objectSpread(_objectSpread({}, TASK), {}, {
200
+ firstPage: null
201
+ })
202
+ });
203
+ _onTaskAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
204
+ genericChecks(CUSTOM_ARGS.currentTask);
205
+ expect(onPageChangeArgs.length).toEqual(1);
206
+ expect(onPageChangeArgs[0].page).toEqual(CUSTOM_ARGS.currentTask.pages[0]);
207
+ expect(onPageChangeArgs[0].state).toEqual(CUSTOM_ARGS.currentTask);
208
+ });
209
+ it('should handle the task not having a specific first page defined', function () {
210
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
211
+ currentTask: TASK
212
+ });
213
+ _onTaskAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
214
+ genericChecks(CUSTOM_ARGS.currentTask);
215
+ expect(onPageChangeArgs.length).toEqual(1);
216
+ expect(onPageChangeArgs[0].page).toEqual(CUSTOM_ARGS.currentTask.pages[0]);
217
+ });
218
+ });
219
+ });
220
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ukhomeoffice/cop-react-form-renderer",
3
- "version": "4.69.0",
3
+ "version": "4.69.2",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "clean": "rimraf dist",
@@ -16,7 +16,7 @@
16
16
  "post-compile": "rimraf dist/*.test.* dist/**/*.test.* dist/**/*.stories.* dist/docs dist/assets"
17
17
  },
18
18
  "dependencies": {
19
- "@ukhomeoffice/cop-react-components": "^2.14.1",
19
+ "@ukhomeoffice/cop-react-components": "^2.14.3",
20
20
  "axios": "^0.23.0",
21
21
  "dayjs": "^1.11.0",
22
22
  "govuk-frontend": "^4.3.1",