@ukhomeoffice/cop-react-form-renderer 0.1.0-beta

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 (82) hide show
  1. package/README.md +38 -0
  2. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +77 -0
  3. package/dist/components/CheckYourAnswers/CheckYourAnswers.scss +9 -0
  4. package/dist/components/CheckYourAnswers/index.js +13 -0
  5. package/dist/components/FormComponent/FormComponent.js +95 -0
  6. package/dist/components/FormComponent/index.js +13 -0
  7. package/dist/components/FormPage/FormPage.js +121 -0
  8. package/dist/components/FormPage/FormPage.scss +7 -0
  9. package/dist/components/FormPage/index.js +13 -0
  10. package/dist/components/FormRenderer/FormRenderer.js +203 -0
  11. package/dist/components/FormRenderer/FormRenderer.scss +5 -0
  12. package/dist/components/FormRenderer/helpers.js +66 -0
  13. package/dist/components/FormRenderer/helpers.test.js +158 -0
  14. package/dist/components/FormRenderer/index.js +13 -0
  15. package/dist/components/PageActions/PageActions.js +49 -0
  16. package/dist/components/PageActions/index.js +13 -0
  17. package/dist/components/SummaryList/RowAction.js +75 -0
  18. package/dist/components/SummaryList/SummaryList.js +93 -0
  19. package/dist/components/SummaryList/SummaryList.scss +2 -0
  20. package/dist/components/SummaryList/index.js +13 -0
  21. package/dist/components/index.js +31 -0
  22. package/dist/hooks/index.js +39 -0
  23. package/dist/hooks/useAxios.js +80 -0
  24. package/dist/hooks/useGetRequest.js +149 -0
  25. package/dist/hooks/useHooks.js +51 -0
  26. package/dist/hooks/useRefData.js +91 -0
  27. package/dist/index.js +48 -0
  28. package/dist/models/ComponentTypes.js +26 -0
  29. package/dist/models/FormTypes.js +18 -0
  30. package/dist/models/HubFormats.js +12 -0
  31. package/dist/models/index.js +31 -0
  32. package/dist/utils/CheckYourAnswers/getCYAAction.js +22 -0
  33. package/dist/utils/CheckYourAnswers/getCYAAction.test.js +92 -0
  34. package/dist/utils/CheckYourAnswers/getCYARow.js +27 -0
  35. package/dist/utils/CheckYourAnswers/getCYARow.test.js +151 -0
  36. package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +24 -0
  37. package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +134 -0
  38. package/dist/utils/CheckYourAnswers/index.js +17 -0
  39. package/dist/utils/CheckYourAnswers/showComponentCYA.js +37 -0
  40. package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +54 -0
  41. package/dist/utils/Component/cleanAttributes.js +55 -0
  42. package/dist/utils/Component/cleanAttributes.test.js +69 -0
  43. package/dist/utils/Component/getComponent.js +117 -0
  44. package/dist/utils/Component/getComponent.test.js +329 -0
  45. package/dist/utils/Component/index.js +28 -0
  46. package/dist/utils/Component/isEditable.js +19 -0
  47. package/dist/utils/Component/isEditable.test.js +42 -0
  48. package/dist/utils/Component/showComponent.js +44 -0
  49. package/dist/utils/Component/showComponent.test.js +94 -0
  50. package/dist/utils/Component/wrapInFormGroup.js +23 -0
  51. package/dist/utils/Data/getAutocompleteSource.js +28 -0
  52. package/dist/utils/Data/getAutocompleteSource.test.js +146 -0
  53. package/dist/utils/Data/getOptions.js +21 -0
  54. package/dist/utils/Data/getOptions.test.js +71 -0
  55. package/dist/utils/Data/getSourceData.js +34 -0
  56. package/dist/utils/Data/getSourceData.test.js +125 -0
  57. package/dist/utils/Data/index.js +34 -0
  58. package/dist/utils/Data/refDataToOptions.js +33 -0
  59. package/dist/utils/Data/refDataToOptions.test.js +99 -0
  60. package/dist/utils/Data/setupFormData.js +63 -0
  61. package/dist/utils/Data/setupFormData.test.js +216 -0
  62. package/dist/utils/Data/setupRefDataUrlForComponent.js +29 -0
  63. package/dist/utils/Data/setupRefDataUrlForComponent.test.js +83 -0
  64. package/dist/utils/FormPage/getFormPage.js +45 -0
  65. package/dist/utils/FormPage/getFormPages.js +33 -0
  66. package/dist/utils/FormPage/getParagraphFromText.js +20 -0
  67. package/dist/utils/FormPage/index.js +19 -0
  68. package/dist/utils/FormPage/useComponent.js +31 -0
  69. package/dist/utils/Hub/getFormHub.js +30 -0
  70. package/dist/utils/Hub/index.js +20 -0
  71. package/dist/utils/Validate/index.js +26 -0
  72. package/dist/utils/Validate/validateComponent.js +49 -0
  73. package/dist/utils/Validate/validateComponent.test.js +119 -0
  74. package/dist/utils/Validate/validateEmail.js +39 -0
  75. package/dist/utils/Validate/validateEmail.test.js +57 -0
  76. package/dist/utils/Validate/validatePage.js +35 -0
  77. package/dist/utils/Validate/validatePage.test.js +122 -0
  78. package/dist/utils/Validate/validateRequired.js +38 -0
  79. package/dist/utils/Validate/validateRequired.test.js +50 -0
  80. package/dist/utils/index.js +43 -0
  81. package/dist/utils/meetsCondition.js +79 -0
  82. package/package.json +91 -0
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.STATUS_IDLE = exports.STATUS_FETCHING = exports.STATUS_FETCHED = exports.STATUS_ERROR = void 0;
7
+
8
+ var _axios = _interopRequireDefault(require("axios"));
9
+
10
+ var _react = require("react");
11
+
12
+ var _useAxios = _interopRequireDefault(require("./useAxios"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ 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); } }
17
+
18
+ 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); }); }; }
19
+
20
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
21
+
22
+ 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."); }
23
+
24
+ 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); }
25
+
26
+ 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; }
27
+
28
+ 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; }
29
+
30
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
31
+
32
+ var cache = {};
33
+ var errorCache = {};
34
+ var STATUS_IDLE = 'idle';
35
+ exports.STATUS_IDLE = STATUS_IDLE;
36
+ var STATUS_FETCHING = 'fetching';
37
+ exports.STATUS_FETCHING = STATUS_FETCHING;
38
+ var STATUS_FETCHED = 'fetched';
39
+ exports.STATUS_FETCHED = STATUS_FETCHED;
40
+ var STATUS_ERROR = 'error';
41
+ exports.STATUS_ERROR = STATUS_ERROR;
42
+
43
+ var useGetRequest = function useGetRequest(url) {
44
+ var axiosInstance = (0, _useAxios.default)();
45
+
46
+ var cancelToken = _axios.default.CancelToken.source();
47
+
48
+ var cancelRequests = function cancelRequests() {
49
+ if (cancelToken) cancelToken.cancel();
50
+ };
51
+
52
+ var _useState = (0, _react.useState)(STATUS_IDLE),
53
+ _useState2 = _slicedToArray(_useState, 2),
54
+ status = _useState2[0],
55
+ setStatus = _useState2[1];
56
+
57
+ var _useState3 = (0, _react.useState)(null),
58
+ _useState4 = _slicedToArray(_useState3, 2),
59
+ error = _useState4[0],
60
+ setError = _useState4[1];
61
+
62
+ var _useState5 = (0, _react.useState)(null),
63
+ _useState6 = _slicedToArray(_useState5, 2),
64
+ data = _useState6[0],
65
+ setData = _useState6[1];
66
+
67
+ (0, _react.useEffect)(function () {
68
+ if (!url || !axiosInstance) return;
69
+
70
+ var fetchData = /*#__PURE__*/function () {
71
+ var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
72
+ var fetchedData, response;
73
+ return regeneratorRuntime.wrap(function _callee$(_context) {
74
+ while (1) {
75
+ switch (_context.prev = _context.next) {
76
+ case 0:
77
+ _context.prev = 0;
78
+ setError(null);
79
+ setStatus(STATUS_FETCHING);
80
+
81
+ if (!cache[url]) {
82
+ _context.next = 7;
83
+ break;
84
+ }
85
+
86
+ fetchedData = cache[url];
87
+ _context.next = 16;
88
+ break;
89
+
90
+ case 7:
91
+ if (!errorCache[url]) {
92
+ _context.next = 11;
93
+ break;
94
+ }
95
+
96
+ throw errorCache[url];
97
+
98
+ case 11:
99
+ _context.next = 13;
100
+ return axiosInstance.get(url, {
101
+ cancelToken: cancelToken.token
102
+ }).catch(function (e) {
103
+ throw e;
104
+ });
105
+
106
+ case 13:
107
+ response = _context.sent;
108
+ fetchedData = response.data;
109
+ cache[url] = fetchedData;
110
+
111
+ case 16:
112
+ setData(fetchedData);
113
+ setStatus(STATUS_FETCHED);
114
+ _context.next = 26;
115
+ break;
116
+
117
+ case 20:
118
+ _context.prev = 20;
119
+ _context.t0 = _context["catch"](0);
120
+ errorCache[url] = _context.t0;
121
+ setError(_context.t0);
122
+ setData(null);
123
+ setStatus(STATUS_ERROR);
124
+
125
+ case 26:
126
+ case "end":
127
+ return _context.stop();
128
+ }
129
+ }
130
+ }, _callee, null, [[0, 20]]);
131
+ }));
132
+
133
+ return function fetchData() {
134
+ return _ref.apply(this, arguments);
135
+ };
136
+ }();
137
+
138
+ fetchData();
139
+ }, [axiosInstance, url, cancelToken.token]);
140
+ return {
141
+ status: status,
142
+ error: error,
143
+ data: data,
144
+ cancelRequests: cancelRequests
145
+ };
146
+ };
147
+
148
+ var _default = useGetRequest;
149
+ exports.default = _default;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.resetHooks = exports.removeHook = exports.default = exports.addHook = void 0;
7
+ var ALLOWED_HOOKS = ['onRequest'];
8
+ var DEFAULT_HOOKS = {
9
+ onRequest: function onRequest(req) {
10
+ return req;
11
+ }
12
+ };
13
+ var hooks = {
14
+ onRequest: function onRequest(req) {
15
+ return req;
16
+ }
17
+ };
18
+
19
+ var addHook = function addHook(name, hook) {
20
+ if (ALLOWED_HOOKS.includes(name)) {
21
+ hooks[name] = hook || DEFAULT_HOOKS[name]; // Don't allow it to be undefined.
22
+ }
23
+ };
24
+
25
+ exports.addHook = addHook;
26
+
27
+ var removeHook = function removeHook(name) {
28
+ if (ALLOWED_HOOKS.includes(name)) {
29
+ hooks[name] = DEFAULT_HOOKS[name];
30
+ }
31
+ };
32
+
33
+ exports.removeHook = removeHook;
34
+
35
+ var resetHooks = function resetHooks() {
36
+ Object.keys(hooks).forEach(removeHook);
37
+ };
38
+
39
+ exports.resetHooks = resetHooks;
40
+
41
+ var useHooks = function useHooks() {
42
+ return {
43
+ hooks: hooks,
44
+ addHook: addHook,
45
+ removeHook: removeHook,
46
+ resetHooks: resetHooks
47
+ };
48
+ };
49
+
50
+ var _default = useHooks;
51
+ exports.default = _default;
@@ -0,0 +1,91 @@
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
+ exports.default = exports.STATUS_LOADING = exports.STATUS_COMPLETE = void 0;
9
+
10
+ var _react = require("react");
11
+
12
+ var _Data = _interopRequireDefault(require("../utils/Data"));
13
+
14
+ var _useGetRequest2 = _interopRequireWildcard(require("./useGetRequest"));
15
+
16
+ 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); }
17
+
18
+ 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; }
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
23
+
24
+ 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."); }
25
+
26
+ 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); }
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 _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; }
31
+
32
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
33
+
34
+ var STATUS_LOADING = 'loading';
35
+ exports.STATUS_LOADING = STATUS_LOADING;
36
+ var STATUS_COMPLETE = 'complete';
37
+ exports.STATUS_COMPLETE = STATUS_COMPLETE;
38
+
39
+ var getRefDataUrl = function getRefDataUrl(component) {
40
+ var data = component.data;
41
+
42
+ if (data && !data.options) {
43
+ return data.url;
44
+ }
45
+
46
+ return undefined;
47
+ };
48
+
49
+ var useRefData = function useRefData(component) {
50
+ var url = getRefDataUrl(component);
51
+
52
+ var _useGetRequest = (0, _useGetRequest2.default)(url),
53
+ _status = _useGetRequest.status,
54
+ _data = _useGetRequest.data;
55
+
56
+ var _useState = (0, _react.useState)([]),
57
+ _useState2 = _slicedToArray(_useState, 2),
58
+ data = _useState2[0],
59
+ setData = _useState2[1];
60
+
61
+ var _useState3 = (0, _react.useState)(STATUS_LOADING),
62
+ _useState4 = _slicedToArray(_useState3, 2),
63
+ status = _useState4[0],
64
+ setStatus = _useState4[1];
65
+
66
+ (0, _react.useEffect)(function () {
67
+ if (!url) {
68
+ if (component.data && component.data.options) {
69
+ setData(_Data.default.refData.toOptions(component.data.options));
70
+ }
71
+
72
+ setStatus(STATUS_COMPLETE);
73
+ } else if (_status === _useGetRequest2.STATUS_FETCHED) {
74
+ if (_data) {
75
+ setData(_Data.default.refData.toOptions(_data.data));
76
+ }
77
+
78
+ setStatus(STATUS_COMPLETE);
79
+ } else if (_status === _useGetRequest2.STATUS_ERROR) {
80
+ setData([]);
81
+ setStatus(STATUS_COMPLETE);
82
+ }
83
+ }, [component, _status, _data, url, setData, setStatus]);
84
+ return {
85
+ data: data,
86
+ status: status
87
+ };
88
+ };
89
+
90
+ var _default = useRefData;
91
+ exports.default = _default;
package/dist/index.js ADDED
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "FormRenderer", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _FormRenderer.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "FormTypes", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _models.FormTypes;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "HubFormats", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _models.HubFormats;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "Utils", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _utils.default;
28
+ }
29
+ });
30
+ exports.intercepts = exports.default = void 0;
31
+
32
+ var _FormRenderer = _interopRequireDefault(require("./components/FormRenderer"));
33
+
34
+ var _useHooks = require("./hooks/useHooks");
35
+
36
+ var _models = require("./models");
37
+
38
+ var _utils = _interopRequireDefault(require("./utils"));
39
+
40
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
41
+
42
+ // Local imports
43
+ var intercepts = {
44
+ add: _useHooks.addHook
45
+ };
46
+ exports.intercepts = intercepts;
47
+ var _default = _FormRenderer.default;
48
+ exports.default = _default;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var TYPE_AUTOCOMPLETE = 'autocomplete';
8
+ var TYPE_EMAIL = 'email';
9
+ var TYPE_HEADING = 'heading';
10
+ var TYPE_HTML = 'html';
11
+ var TYPE_INSET_TEXT = 'inset-text';
12
+ var TYPE_PHONE_NUMBER = 'phone-number';
13
+ var TYPE_RADIOS = 'radios';
14
+ var TYPE_TEXT = 'text';
15
+ var ComponentTypes = {
16
+ AUTOCOMPLETE: TYPE_AUTOCOMPLETE,
17
+ EMAIL: TYPE_EMAIL,
18
+ HEADING: TYPE_HEADING,
19
+ HTML: TYPE_HTML,
20
+ INSET_TEXT: TYPE_INSET_TEXT,
21
+ PHONE_NUMBER: TYPE_PHONE_NUMBER,
22
+ RADIOS: TYPE_RADIOS,
23
+ TEXT: TYPE_TEXT
24
+ };
25
+ var _default = ComponentTypes;
26
+ exports.default = _default;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var TYPE_FORM = 'form';
8
+ var TYPE_CHECK_YOUR_ANSWERS = 'cya';
9
+ var TYPE_HUB_AND_SPOKE = 'hub-and-spoke';
10
+ var TYPE_WIZARD = 'wizard';
11
+ var FormTypes = {
12
+ FORM: TYPE_FORM,
13
+ CYA: TYPE_CHECK_YOUR_ANSWERS,
14
+ HUB: TYPE_HUB_AND_SPOKE,
15
+ WIZARD: TYPE_WIZARD
16
+ };
17
+ var _default = FormTypes;
18
+ exports.default = _default;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var HUB_FORMAT_CYA = 'CYA';
8
+ var HubFormats = {
9
+ CYA: HUB_FORMAT_CYA
10
+ };
11
+ var _default = HubFormats;
12
+ exports.default = _default;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "ComponentTypes", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _ComponentTypes.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "FormTypes", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _FormTypes.default;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "HubFormats", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _HubFormats.default;
22
+ }
23
+ });
24
+
25
+ var _ComponentTypes = _interopRequireDefault(require("./ComponentTypes"));
26
+
27
+ var _FormTypes = _interopRequireDefault(require("./FormTypes"));
28
+
29
+ var _HubFormats = _interopRequireDefault(require("./HubFormats"));
30
+
31
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var getCYAAction = function getCYAAction(readonly, cya_link, onAction) {
9
+ if (readonly !== true && cya_link) {
10
+ return {
11
+ href: cya_link.url || '#',
12
+ label: cya_link.label || 'Change',
13
+ aria_suffix: cya_link.aria_suffix,
14
+ onAction: onAction
15
+ };
16
+ }
17
+
18
+ return null;
19
+ };
20
+
21
+ var _default = getCYAAction;
22
+ exports.default = _default;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+
3
+ var _getCYAAction = _interopRequireDefault(require("./getCYAAction"));
4
+
5
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
+
7
+ // Local imports
8
+ describe('utils', function () {
9
+ describe('CheckYourAnswers', function () {
10
+ describe('getCYAAction', function () {
11
+ it('should return null if readonly', function () {
12
+ expect((0, _getCYAAction.default)(true, {}, function () {})).toBeNull();
13
+ });
14
+ it('should return null if there is no cya_link', function () {
15
+ expect((0, _getCYAAction.default)(false, null, function () {})).toBeNull();
16
+ });
17
+ it('should return a default action if the cya_link is empty', function () {
18
+ var CYA_LINK = {};
19
+
20
+ var ON_ACTION = function ON_ACTION() {};
21
+
22
+ expect((0, _getCYAAction.default)(false, CYA_LINK, ON_ACTION)).toEqual({
23
+ href: '#',
24
+ label: 'Change',
25
+ onAction: ON_ACTION
26
+ });
27
+ });
28
+ it('should use url specified in cya_link', function () {
29
+ var URL = 'https://fake.url.com/something';
30
+ var CYA_LINK = {
31
+ url: URL
32
+ };
33
+
34
+ var ON_ACTION = function ON_ACTION() {};
35
+
36
+ expect((0, _getCYAAction.default)(false, CYA_LINK, ON_ACTION)).toEqual({
37
+ href: URL,
38
+ label: 'Change',
39
+ onAction: ON_ACTION
40
+ });
41
+ });
42
+ it('should use label specified in cya_link', function () {
43
+ var LABEL = 'Alpha Bravo Charlie';
44
+ var CYA_LINK = {
45
+ label: LABEL
46
+ };
47
+
48
+ var ON_ACTION = function ON_ACTION() {};
49
+
50
+ expect((0, _getCYAAction.default)(false, CYA_LINK, ON_ACTION)).toEqual({
51
+ href: '#',
52
+ label: LABEL,
53
+ onAction: ON_ACTION
54
+ });
55
+ });
56
+ it('should use aria_suffix specified in cya_link', function () {
57
+ var ARIA_SUFFIX = 'This is hidden text';
58
+ var CYA_LINK = {
59
+ aria_suffix: ARIA_SUFFIX
60
+ };
61
+
62
+ var ON_ACTION = function ON_ACTION() {};
63
+
64
+ expect((0, _getCYAAction.default)(false, CYA_LINK, ON_ACTION)).toEqual({
65
+ href: '#',
66
+ label: 'Change',
67
+ aria_suffix: ARIA_SUFFIX,
68
+ onAction: ON_ACTION
69
+ });
70
+ });
71
+ it('should use all properties specified in cya_link', function () {
72
+ var URL = 'https://fake.url.com/something';
73
+ var LABEL = 'Alpha Bravo Charlie';
74
+ var ARIA_SUFFIX = 'This is hidden text';
75
+ var CYA_LINK = {
76
+ label: LABEL,
77
+ url: URL,
78
+ aria_suffix: ARIA_SUFFIX
79
+ };
80
+
81
+ var ON_ACTION = function ON_ACTION() {};
82
+
83
+ expect((0, _getCYAAction.default)(false, CYA_LINK, ON_ACTION)).toEqual({
84
+ href: URL,
85
+ label: LABEL,
86
+ aria_suffix: ARIA_SUFFIX,
87
+ onAction: ON_ACTION
88
+ });
89
+ });
90
+ });
91
+ });
92
+ });
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _Component = _interopRequireDefault(require("../Component"));
9
+
10
+ var _getCYAAction = _interopRequireDefault(require("./getCYAAction"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ // Local imports
15
+ var getCYARow = function getCYARow(page, component, onAction) {
16
+ return {
17
+ pageId: page.id,
18
+ fieldId: component.fieldId,
19
+ key: component.label || component.cya_label,
20
+ component: _Component.default.editable(component) ? component : undefined,
21
+ value: page.formData[component.fieldId] || '',
22
+ action: (0, _getCYAAction.default)(component.readonly, page.cya_link, onAction)
23
+ };
24
+ };
25
+
26
+ var _default = getCYARow;
27
+ exports.default = _default;