@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.
- package/dist/components/CheckYourAnswers/CheckYourAnswers.js +8 -12
- package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +10 -8
- package/dist/components/FormComponent/Collection.js +244 -0
- package/dist/components/FormComponent/Collection.scss +23 -0
- package/dist/components/FormComponent/Container.js +110 -0
- package/dist/components/FormComponent/Container.test.js +26 -26
- package/dist/components/FormComponent/FormComponent.js +64 -128
- package/dist/components/FormComponent/FormComponent.test.js +19 -19
- package/dist/components/FormComponent/helpers/getComponentError.js +31 -0
- package/dist/components/FormComponent/helpers/getComponentError.test.js +52 -0
- package/dist/components/FormComponent/helpers/index.js +15 -0
- package/dist/components/FormPage/FormPage.js +7 -11
- package/dist/components/FormPage/FormPage.test.js +12 -76
- package/dist/components/FormRenderer/FormRenderer.js +103 -44
- package/dist/components/FormRenderer/helpers/canActionProceed.js +3 -12
- package/dist/components/FormRenderer/helpers/canActionProceed.test.js +41 -65
- package/dist/components/FormRenderer/helpers/canCYASubmit.js +3 -24
- package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +72 -145
- package/dist/components/SummaryList/GroupAction.js +1 -1
- package/dist/components/SummaryList/SummaryList.js +33 -18
- package/dist/components/SummaryList/SummaryList.scss +12 -8
- package/dist/components/SummaryList/SummaryList.test.js +94 -27
- package/dist/components/SummaryList/SummaryListRow.js +51 -0
- package/dist/components/SummaryList/SummaryListTitleRow.js +30 -0
- package/dist/context/ValidationContext/ValidationContext.js +122 -0
- package/dist/context/ValidationContext/ValidationContext.test.js +98 -0
- package/dist/context/ValidationContext/index.js +23 -0
- package/dist/context/index.js +15 -0
- package/dist/hooks/index.js +8 -0
- package/dist/hooks/useValidation.js +19 -0
- package/dist/index.js +11 -5
- package/dist/models/CollectionLabels.js +14 -0
- package/dist/models/index.js +8 -0
- package/dist/setupTests.js +32 -0
- package/dist/utils/CheckYourAnswers/getCYARow.js +2 -0
- package/dist/utils/CheckYourAnswers/getCYARow.test.js +6 -10
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +89 -0
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +194 -0
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +9 -13
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +11 -4
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +58 -14
- package/dist/utils/Component/getDefaultValue.js +25 -0
- package/dist/utils/Component/getDefaultValue.test.js +53 -0
- package/dist/utils/Component/index.js +4 -1
- 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 }; }
|
package/dist/hooks/index.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
44
|
+
var _components = require("./components");
|
|
39
45
|
|
|
40
|
-
var
|
|
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 =
|
|
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;
|
package/dist/models/index.js
CHANGED
|
@@ -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;
|