@ukhomeoffice/cop-react-form-renderer 2.9.1 → 2.10.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 (45) hide show
  1. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +8 -12
  2. package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +10 -8
  3. package/dist/components/FormComponent/Collection.js +244 -0
  4. package/dist/components/FormComponent/Collection.scss +23 -0
  5. package/dist/components/FormComponent/Container.js +110 -0
  6. package/dist/components/FormComponent/Container.test.js +26 -26
  7. package/dist/components/FormComponent/FormComponent.js +64 -128
  8. package/dist/components/FormComponent/FormComponent.test.js +19 -19
  9. package/dist/components/FormComponent/helpers/getComponentError.js +31 -0
  10. package/dist/components/FormComponent/helpers/getComponentError.test.js +52 -0
  11. package/dist/components/FormComponent/helpers/index.js +15 -0
  12. package/dist/components/FormPage/FormPage.js +7 -11
  13. package/dist/components/FormPage/FormPage.test.js +12 -76
  14. package/dist/components/FormRenderer/FormRenderer.js +103 -44
  15. package/dist/components/FormRenderer/helpers/canActionProceed.js +3 -12
  16. package/dist/components/FormRenderer/helpers/canActionProceed.test.js +41 -65
  17. package/dist/components/FormRenderer/helpers/canCYASubmit.js +3 -24
  18. package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +72 -145
  19. package/dist/components/SummaryList/GroupAction.js +1 -1
  20. package/dist/components/SummaryList/SummaryList.js +33 -18
  21. package/dist/components/SummaryList/SummaryList.scss +12 -8
  22. package/dist/components/SummaryList/SummaryList.test.js +94 -27
  23. package/dist/components/SummaryList/SummaryListRow.js +51 -0
  24. package/dist/components/SummaryList/SummaryListTitleRow.js +30 -0
  25. package/dist/context/ValidationContext/ValidationContext.js +122 -0
  26. package/dist/context/ValidationContext/ValidationContext.test.js +98 -0
  27. package/dist/context/ValidationContext/index.js +23 -0
  28. package/dist/context/index.js +15 -0
  29. package/dist/hooks/index.js +8 -0
  30. package/dist/hooks/useValidation.js +19 -0
  31. package/dist/index.js +11 -5
  32. package/dist/models/CollectionLabels.js +14 -0
  33. package/dist/models/index.js +8 -0
  34. package/dist/setupTests.js +32 -0
  35. package/dist/utils/CheckYourAnswers/getCYARow.js +2 -0
  36. package/dist/utils/CheckYourAnswers/getCYARow.test.js +6 -10
  37. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +89 -0
  38. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +194 -0
  39. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +9 -13
  40. package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +11 -4
  41. package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +58 -14
  42. package/dist/utils/Component/getDefaultValue.js +25 -0
  43. package/dist/utils/Component/getDefaultValue.test.js +53 -0
  44. package/dist/utils/Component/index.js +4 -1
  45. package/package.json +1 -1
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _copReactComponents = require("@ukhomeoffice/cop-react-components");
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ // Global imports
17
+ var SummaryListTitleRow = function SummaryListTitleRow(_ref) {
18
+ var title = _ref.title,
19
+ classes = _ref.classes;
20
+ return /*#__PURE__*/_react.default.createElement("div", {
21
+ className: "".concat(classes('row'), " ").concat(classes('title'))
22
+ }, /*#__PURE__*/_react.default.createElement(_copReactComponents.SmallHeading, null, title));
23
+ };
24
+
25
+ SummaryListTitleRow.propTypes = {
26
+ title: _propTypes.default.string.isRequired,
27
+ classes: _propTypes.default.func.isRequired
28
+ };
29
+ var _default = SummaryListTitleRow;
30
+ exports.default = _default;
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.ValidationContext = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var _utils = _interopRequireDefault(require("../../utils"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
15
+
16
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
17
+
18
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
19
+
20
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
21
+
22
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
23
+
24
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
25
+
26
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
27
+
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."); }
29
+
30
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
31
+
32
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
33
+
34
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
35
+
36
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
37
+
38
+ var ValidationContext = /*#__PURE__*/(0, _react.createContext)();
39
+ exports.ValidationContext = ValidationContext;
40
+
41
+ var ValidationContextProvider = function ValidationContextProvider(_ref) {
42
+ var children = _ref.children;
43
+
44
+ var _useState = (0, _react.useState)([]),
45
+ _useState2 = _slicedToArray(_useState, 2),
46
+ errors = _useState2[0],
47
+ setErrors = _useState2[1];
48
+
49
+ var addErrors = /*#__PURE__*/function () {
50
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(errors) {
51
+ return regeneratorRuntime.wrap(function _callee$(_context) {
52
+ while (1) {
53
+ switch (_context.prev = _context.next) {
54
+ case 0:
55
+ setErrors(function (prev) {
56
+ return [].concat(_toConsumableArray(prev), _toConsumableArray(errors)).filter(function (e) {
57
+ return !!e;
58
+ });
59
+ });
60
+
61
+ case 1:
62
+ case "end":
63
+ return _context.stop();
64
+ }
65
+ }
66
+ }, _callee);
67
+ }));
68
+
69
+ return function addErrors(_x) {
70
+ return _ref2.apply(this, arguments);
71
+ };
72
+ }();
73
+
74
+ var clearErrors = /*#__PURE__*/function () {
75
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
76
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
77
+ while (1) {
78
+ switch (_context2.prev = _context2.next) {
79
+ case 0:
80
+ setErrors([]);
81
+
82
+ case 1:
83
+ case "end":
84
+ return _context2.stop();
85
+ }
86
+ }
87
+ }, _callee2);
88
+ }));
89
+
90
+ return function clearErrors() {
91
+ return _ref3.apply(this, arguments);
92
+ };
93
+ }();
94
+
95
+ var validate = {
96
+ page: function page(_page) {
97
+ var pageErrors = _utils.default.Validate.page(_page);
98
+
99
+ setErrors(pageErrors);
100
+ return pageErrors;
101
+ },
102
+ pages: function pages(_pages) {
103
+ var pagesErrors = _pages.flatMap(function (page) {
104
+ return _utils.default.Validate.page(page);
105
+ });
106
+
107
+ setErrors(pagesErrors);
108
+ return pagesErrors;
109
+ }
110
+ };
111
+ return /*#__PURE__*/React.createElement(ValidationContext.Provider, {
112
+ value: {
113
+ errors: errors,
114
+ addErrors: addErrors,
115
+ clearErrors: clearErrors,
116
+ validate: validate
117
+ }
118
+ }, children);
119
+ };
120
+
121
+ var _default = ValidationContextProvider;
122
+ exports.default = _default;
@@ -0,0 +1,98 @@
1
+ "use strict";
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
+
5
+ var _react = require("@testing-library/react");
6
+
7
+ var _copReactComponents = require("@ukhomeoffice/cop-react-components");
8
+
9
+ var _react2 = _interopRequireWildcard(require("react"));
10
+
11
+ var _hooks = require("../../hooks");
12
+
13
+ var _ValidationContext = _interopRequireDefault(require("./ValidationContext"));
14
+
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+
17
+ 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); }
18
+
19
+ 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; }
20
+
21
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
22
+
23
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
24
+
25
+ var TestComponent = function TestComponent(_ref) {
26
+ var customErrors = _ref.customErrors;
27
+
28
+ var _useValidation = (0, _hooks.useValidation)(),
29
+ addErrors = _useValidation.addErrors,
30
+ clearErrors = _useValidation.clearErrors,
31
+ errors = _useValidation.errors,
32
+ validate = _useValidation.validate;
33
+
34
+ (0, _react2.useEffect)(function () {
35
+ if (customErrors) {
36
+ addErrors(customErrors);
37
+ } // eslint-disable-next-line react-hooks/exhaustive-deps
38
+
39
+ }, [customErrors]);
40
+ return /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, typeof addErrors === 'function' && /*#__PURE__*/_react2.default.createElement("span", null, "addErrors is a function"), typeof clearErrors === 'function' && /*#__PURE__*/_react2.default.createElement("span", null, "clearErrors is a function"), typeof validate.page === 'function' && /*#__PURE__*/_react2.default.createElement("span", null, "validate.page is a function"), Array.isArray(errors) && /*#__PURE__*/_react2.default.createElement("span", null, "errors is an array of length ", errors.length), (errors === null || errors === void 0 ? void 0 : errors.length) > 0 && /*#__PURE__*/_react2.default.createElement(_copReactComponents.ErrorSummary, {
41
+ errors: errors
42
+ }));
43
+ };
44
+
45
+ describe('context.ValidationContext', function () {
46
+ it('should appropriately set up the context', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
47
+ var _render, container;
48
+
49
+ return regeneratorRuntime.wrap(function _callee$(_context) {
50
+ while (1) {
51
+ switch (_context.prev = _context.next) {
52
+ case 0:
53
+ _render = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_ValidationContext.default, null, /*#__PURE__*/_react2.default.createElement(TestComponent, null))), container = _render.container;
54
+ expect(container.childNodes.length).toEqual(4);
55
+ expect(container.textContent).toContain('addErrors is a function');
56
+ expect(container.textContent).toContain('clearErrors is a function');
57
+ expect(container.textContent).toContain('validate.page is a function');
58
+ expect(container.textContent).toContain('errors is an array of length 0');
59
+
60
+ case 6:
61
+ case "end":
62
+ return _context.stop();
63
+ }
64
+ }
65
+ }, _callee);
66
+ })));
67
+ it('should appropriately handle errors', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
68
+ var CUSTOM_ERRORS, _render2, container, errorSummary;
69
+
70
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
71
+ while (1) {
72
+ switch (_context2.prev = _context2.next) {
73
+ case 0:
74
+ CUSTOM_ERRORS = [{
75
+ id: 'alpha',
76
+ error: 'Alpha is required'
77
+ }];
78
+ _render2 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_ValidationContext.default, null, /*#__PURE__*/_react2.default.createElement(TestComponent, {
79
+ customErrors: CUSTOM_ERRORS
80
+ }))), container = _render2.container;
81
+ expect(container.childNodes.length).toEqual(5);
82
+ expect(container.textContent).toContain('addErrors is a function');
83
+ expect(container.textContent).toContain('clearErrors is a function');
84
+ expect(container.textContent).toContain('validate.page is a function');
85
+ expect(container.textContent).toContain('errors is an array of length 1');
86
+ errorSummary = container.childNodes[4];
87
+ expect(errorSummary.tagName).toEqual('DIV');
88
+ expect(errorSummary.classList).toContain('govuk-error-summary');
89
+ expect(errorSummary.textContent).toContain(CUSTOM_ERRORS[0].error);
90
+
91
+ case 11:
92
+ case "end":
93
+ return _context2.stop();
94
+ }
95
+ }
96
+ }, _callee2);
97
+ })));
98
+ });
@@ -0,0 +1,23 @@
1
+ "use strict";
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
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ Object.defineProperty(exports, "ValidationContext", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _ValidationContext.ValidationContext;
12
+ }
13
+ });
14
+ exports.default = void 0;
15
+
16
+ var _ValidationContext = _interopRequireWildcard(require("./ValidationContext"));
17
+
18
+ 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); }
19
+
20
+ 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; }
21
+
22
+ var _default = _ValidationContext.default;
23
+ exports.default = _default;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "ValidationContextProvider", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _ValidationContext.default;
10
+ }
11
+ });
12
+
13
+ var _ValidationContext = _interopRequireDefault(require("./ValidationContext"));
14
+
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -41,9 +41,17 @@ Object.defineProperty(exports, "useRefData", {
41
41
  return _useRefData.default;
42
42
  }
43
43
  });
44
+ Object.defineProperty(exports, "useValidation", {
45
+ enumerable: true,
46
+ get: function get() {
47
+ return _useValidation.default;
48
+ }
49
+ });
44
50
 
45
51
  var _useAxios = _interopRequireDefault(require("./useAxios"));
46
52
 
53
+ var _useValidation = _interopRequireDefault(require("./useValidation"));
54
+
47
55
  var _useHooks = _interopRequireDefault(require("./useHooks"));
48
56
 
49
57
  var _useGetRequest = _interopRequireDefault(require("./useGetRequest"));
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var _ValidationContext = require("../context/ValidationContext");
11
+
12
+ // Global imports
13
+ // Local imports
14
+ var useValidation = function useValidation() {
15
+ return (0, _react.useContext)(_ValidationContext.ValidationContext);
16
+ };
17
+
18
+ var _default = useValidation;
19
+ exports.default = _default;
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  Object.defineProperty(exports, "FormRenderer", {
7
7
  enumerable: true,
8
8
  get: function get() {
9
- return _FormRenderer.default;
9
+ return _components.FormRenderer;
10
10
  }
11
11
  });
12
12
  Object.defineProperty(exports, "FormTypes", {
@@ -24,7 +24,7 @@ Object.defineProperty(exports, "HubFormats", {
24
24
  Object.defineProperty(exports, "SummaryList", {
25
25
  enumerable: true,
26
26
  get: function get() {
27
- return _SummaryList.default;
27
+ return _components.SummaryList;
28
28
  }
29
29
  });
30
30
  Object.defineProperty(exports, "Utils", {
@@ -33,11 +33,17 @@ Object.defineProperty(exports, "Utils", {
33
33
  return _utils.default;
34
34
  }
35
35
  });
36
+ Object.defineProperty(exports, "ValidationContextProvider", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _context.ValidationContextProvider;
40
+ }
41
+ });
36
42
  exports.intercepts = exports.default = void 0;
37
43
 
38
- var _FormRenderer = _interopRequireDefault(require("./components/FormRenderer"));
44
+ var _components = require("./components");
39
45
 
40
- var _SummaryList = _interopRequireDefault(require("./components/SummaryList"));
46
+ var _context = require("./context");
41
47
 
42
48
  var _useHooks = require("./hooks/useHooks");
43
49
 
@@ -54,5 +60,5 @@ var intercepts = {
54
60
  reset: _useHooks.resetHooks
55
61
  };
56
62
  exports.intercepts = intercepts;
57
- var _default = _FormRenderer.default;
63
+ var _default = _components.FormRenderer;
58
64
  exports.default = _default;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var CollectionLabels = {
8
+ add: 'Add another',
9
+ remove: 'Remove',
10
+ // eslint-disable-next-line no-template-curly-in-string
11
+ item: 'Item ${index}'
12
+ };
13
+ var _default = CollectionLabels;
14
+ exports.default = _default;
@@ -3,6 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "CollectionLabels", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _CollectionLabels.default;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "ComponentTypes", {
7
13
  enumerable: true,
8
14
  get: function get() {
@@ -46,6 +52,8 @@ Object.defineProperty(exports, "TaskStates", {
46
52
  }
47
53
  });
48
54
 
55
+ var _CollectionLabels = _interopRequireDefault(require("./CollectionLabels"));
56
+
49
57
  var _ComponentTypes = _interopRequireDefault(require("./ComponentTypes"));
50
58
 
51
59
  var _EventTypes = _interopRequireDefault(require("./EventTypes"));
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.renderWithValidation = exports.renderDomWithValidation = exports.expectObjectLike = void 0;
7
+
8
+ var _react = require("@testing-library/react");
9
+
10
+ var _reactDom = require("react-dom");
11
+
12
+ var _context = require("./context");
13
+
14
+ var renderWithValidation = function renderWithValidation(ui, options) {
15
+ return (0, _react.render)( /*#__PURE__*/React.createElement(_context.ValidationContextProvider, null, ui), options);
16
+ };
17
+
18
+ exports.renderWithValidation = renderWithValidation;
19
+
20
+ var renderDomWithValidation = function renderDomWithValidation(ui, container, callback) {
21
+ return (0, _reactDom.render)( /*#__PURE__*/React.createElement(_context.ValidationContextProvider, null, ui), container, callback);
22
+ };
23
+
24
+ exports.renderDomWithValidation = renderDomWithValidation;
25
+
26
+ var expectObjectLike = function expectObjectLike(received, expected) {
27
+ Object.keys(expected).forEach(function (key) {
28
+ expect(received[key]).toEqual(expected[key]);
29
+ });
30
+ };
31
+
32
+ exports.expectObjectLike = expectObjectLike;
@@ -34,7 +34,9 @@ var getCYARow = function getCYARow(page, component, onAction) {
34
34
  pageId: page.id,
35
35
  id: component.id,
36
36
  fieldId: component.fieldId,
37
+ full_path: component.full_path,
37
38
  key: component.label || component.cya_label,
39
+ required: component.required,
38
40
  component: _Component.default.editable(component) ? component : undefined,
39
41
  value: value || '',
40
42
  action: (0, _getCYAAction.default)(component.readonly, page, onAction)
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _setupTests = require("../../setupTests");
4
+
3
5
  var _getCYARow = _interopRequireDefault(require("./getCYARow"));
4
6
 
5
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -9,12 +11,6 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
9
11
  describe('utils', function () {
10
12
  describe('CheckYourAnswers', function () {
11
13
  describe('getCYARow', function () {
12
- var expectObjectLike = function expectObjectLike(received, expected) {
13
- Object.keys(expected).forEach(function (key) {
14
- expect(received[key]).toEqual(expected[key]);
15
- });
16
- };
17
-
18
14
  it('should get an appropriate row for a readonly text component', function () {
19
15
  var PAGE = {
20
16
  id: 'page',
@@ -33,7 +29,7 @@ describe('utils', function () {
33
29
  var ON_ACTION = function ON_ACTION() {};
34
30
 
35
31
  var ROW = (0, _getCYARow.default)(PAGE, COMPONENT, ON_ACTION);
36
- expectObjectLike(ROW, {
32
+ (0, _setupTests.expectObjectLike)(ROW, {
37
33
  pageId: PAGE.id,
38
34
  fieldId: COMPONENT.fieldId,
39
35
  key: COMPONENT.label,
@@ -111,7 +107,7 @@ describe('utils', function () {
111
107
  var ON_ACTION = function ON_ACTION() {};
112
108
 
113
109
  var ROW = (0, _getCYARow.default)(PAGE, COMPONENT, ON_ACTION);
114
- expectObjectLike(ROW, {
110
+ (0, _setupTests.expectObjectLike)(ROW, {
115
111
  pageId: PAGE.id,
116
112
  fieldId: COMPONENT.fieldId,
117
113
  key: COMPONENT.cya_label,
@@ -138,14 +134,14 @@ describe('utils', function () {
138
134
  var ON_ACTION = function ON_ACTION() {};
139
135
 
140
136
  var ROW = (0, _getCYARow.default)(PAGE, COMPONENT, ON_ACTION);
141
- expectObjectLike(ROW, {
137
+ (0, _setupTests.expectObjectLike)(ROW, {
142
138
  pageId: PAGE.id,
143
139
  fieldId: COMPONENT.fieldId,
144
140
  key: COMPONENT.label,
145
141
  component: COMPONENT,
146
142
  value: 'Bravo'
147
143
  });
148
- expectObjectLike(ROW.action, {
144
+ (0, _setupTests.expectObjectLike)(ROW.action, {
149
145
  onAction: ON_ACTION
150
146
  });
151
147
  });
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _copReactComponents = require("@ukhomeoffice/cop-react-components");
9
+
10
+ var _models = require("../../models");
11
+
12
+ var _getCYARowsForContainer = _interopRequireDefault(require("./getCYARowsForContainer"));
13
+
14
+ var _showComponentCYA = _interopRequireDefault(require("./showComponentCYA"));
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
19
+
20
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
21
+
22
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
23
+
24
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
25
+
26
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
27
+
28
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
29
+
30
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
31
+
32
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
33
+
34
+ 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; }
35
+
36
+ var getContainerForItem = function getContainerForItem(collection, item, labelCount, full_path) {
37
+ return {
38
+ id: item.id,
39
+ fieldId: item.id,
40
+ type: _models.ComponentTypes.CONTAINER,
41
+ required: collection.required,
42
+ full_path: full_path,
43
+ components: collection.item.map(function (component) {
44
+ return _objectSpread(_objectSpread({}, component), {}, {
45
+ label: _copReactComponents.Utils.interpolateString(component.label, _objectSpread(_objectSpread({}, item), {}, {
46
+ index: labelCount
47
+ })),
48
+ full_path: "".concat(full_path, ".").concat(component.fieldId)
49
+ });
50
+ })
51
+ };
52
+ };
53
+
54
+ var getTitleRowForItem = function getTitleRowForItem(collection, item, pageId, labelCount, full_path) {
55
+ var labels = _objectSpread(_objectSpread({}, _models.CollectionLabels), collection.labels);
56
+
57
+ if (labels.item) {
58
+ return {
59
+ pageId: pageId,
60
+ fieldId: collection.fieldId,
61
+ full_path: full_path,
62
+ key: _copReactComponents.Utils.interpolateString(labels.item, _objectSpread(_objectSpread({}, item), {}, {
63
+ index: labelCount
64
+ })),
65
+ type: 'title',
66
+ action: null
67
+ };
68
+ }
69
+
70
+ return null;
71
+ };
72
+
73
+ var getCYARowsForCollection = function getCYARowsForCollection(page, collection, items, onAction) {
74
+ if (Array.isArray(items) && (0, _showComponentCYA.default)(collection, page.formData)) {
75
+ return items.flatMap(function (item, index) {
76
+ var labelCount = (collection.countOffset || 0) + index + 1;
77
+ var full_path = "".concat(collection.full_path || collection.fieldId, "[").concat(index, "]");
78
+ var container = getContainerForItem(collection, item, labelCount, full_path);
79
+ return [getTitleRowForItem(collection, item, page.id, labelCount, full_path)].concat(_toConsumableArray((0, _getCYARowsForContainer.default)(page, container, item, onAction)));
80
+ }).filter(function (r) {
81
+ return !!r;
82
+ });
83
+ }
84
+
85
+ return [];
86
+ };
87
+
88
+ var _default = getCYARowsForCollection;
89
+ exports.default = _default;