@ukhomeoffice/cop-react-form-renderer 4.73.0 → 4.75.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 (107) hide show
  1. package/dist/components/CheckYourAnswers/Answer.js +10 -4
  2. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +51 -27
  3. package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +6 -5
  4. package/dist/components/CollectionPage/CollectionPage.js +7 -5
  5. package/dist/components/FormComponent/Collection.js +25 -17
  6. package/dist/components/FormComponent/Container.js +23 -13
  7. package/dist/components/FormComponent/FormComponent.js +24 -9
  8. package/dist/components/FormComponent/helpers/addLabel.js +4 -3
  9. package/dist/components/FormPage/FormPage.js +30 -19
  10. package/dist/components/FormRenderer/FormRenderer.js +90 -34
  11. package/dist/components/FormRenderer/FormRenderer.test.js +29 -27
  12. package/dist/components/FormRenderer/handlers/index.js +1 -2
  13. package/dist/components/FormRenderer/handlers/navigate.js +3 -1
  14. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +19 -15
  15. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +8 -8
  16. package/dist/components/FormRenderer/helpers/getCYA.js +5 -1
  17. package/dist/components/FormRenderer/helpers/getNextPageId.js +13 -7
  18. package/dist/components/FormRenderer/helpers/getRelevantPages.js +10 -2
  19. package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +1 -1
  20. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +38 -24
  21. package/dist/components/FormRenderer/helpers/index.js +1 -2
  22. package/dist/components/FormRenderer/onCYAAction.js +2 -2
  23. package/dist/components/FormRenderer/onCYAAction.test.js +13 -13
  24. package/dist/components/FormRenderer/onPageAction.js +28 -9
  25. package/dist/components/FormRenderer/onPageAction.test.js +54 -18
  26. package/dist/components/FormRenderer/onTaskAction.js +14 -11
  27. package/dist/components/PageActions/ActionButton.js +0 -3
  28. package/dist/components/PageActions/PageActions.js +2 -2
  29. package/dist/components/SummaryList/SummaryList.js +13 -8
  30. package/dist/components/SummaryList/SummaryListHeadingRow.js +6 -2
  31. package/dist/components/SummaryList/SummaryListRow.js +5 -2
  32. package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +2 -1
  33. package/dist/components/SummaryList/helpers/getRowActionAttributes.js +2 -1
  34. package/dist/components/TaskList/Task.js +1 -1
  35. package/dist/components/TaskList/TaskList.js +21 -12
  36. package/dist/components/TaskList/TaskState.js +2 -2
  37. package/dist/components/index.js +7 -0
  38. package/dist/context/HooksContext/HooksContext.js +33 -1
  39. package/dist/context/ValidationContext/ValidationContext.js +8 -1
  40. package/dist/context/ValidationContext/ValidationContext.test.js +8 -2
  41. package/dist/hooks/useGetRequest.js +3 -2
  42. package/dist/hooks/useRefData.js +1 -0
  43. package/dist/index.js +6 -0
  44. package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
  45. package/dist/utils/CheckYourAnswers/getCYAAction.test.js +34 -34
  46. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +2 -1
  47. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +4 -4
  48. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +2 -1
  49. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +2 -2
  50. package/dist/utils/CheckYourAnswers/getCYARow.js +13 -11
  51. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +8 -8
  52. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +25 -22
  53. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +1 -0
  54. package/dist/utils/CheckYourAnswers/showComponentCYA.js +1 -1
  55. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +1 -0
  56. package/dist/utils/CollectionPage/mergeCollectionPages.js +7 -6
  57. package/dist/utils/Component/applyToComponentTree.js +4 -2
  58. package/dist/utils/Component/cleanAttributes.js +7 -1
  59. package/dist/utils/Component/cleanAttributes.test.js +4 -4
  60. package/dist/utils/Component/getComponent.js +8 -6
  61. package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +4 -4
  62. package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +1 -0
  63. package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +3 -3
  64. package/dist/utils/Component/getComponentTests/getComponent.email.test.js +1 -1
  65. package/dist/utils/Component/getComponentTests/getComponent.file.test.js +1 -1
  66. package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +1 -1
  67. package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +1 -1
  68. package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +3 -3
  69. package/dist/utils/Component/getComponentTests/getComponent.text.test.js +1 -1
  70. package/dist/utils/Component/getComponentTests/getComponent.time.test.js +5 -5
  71. package/dist/utils/Component/setupContainerComponentsPath.js +2 -0
  72. package/dist/utils/Condition/meetsCondition.js +2 -1
  73. package/dist/utils/Condition/setupConditions.js +2 -2
  74. package/dist/utils/Container/setupNesting.js +5 -1
  75. package/dist/utils/Data/applyFormula.js +16 -10
  76. package/dist/utils/Data/getAutocompleteSource.js +3 -1
  77. package/dist/utils/Data/getOptions.js +3 -2
  78. package/dist/utils/Data/setupFormData.js +4 -2
  79. package/dist/utils/FormPage/getFormPage.js +1 -1
  80. package/dist/utils/FormPage/getPageActions.js +5 -3
  81. package/dist/utils/FormPage/showFormPage.js +2 -2
  82. package/dist/utils/FormPage/showFormPageCYA.js +1 -0
  83. package/dist/utils/FormPage/useComponent.js +1 -0
  84. package/dist/utils/Format/formatDataForComponent.js +2 -1
  85. package/dist/utils/Meta/index.js +1 -2
  86. package/dist/utils/Operate/getFirstOf.test.js +2 -1
  87. package/dist/utils/Operate/persistValueInFormData.js +1 -0
  88. package/dist/utils/Operate/persistValueInFormData.test.js +1 -1
  89. package/dist/utils/Operate/setValueInFormData.test.js +1 -1
  90. package/dist/utils/Operate/shouldRun.js +16 -13
  91. package/dist/utils/Validate/additional/index.js +2 -1
  92. package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +1 -1
  93. package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +2 -2
  94. package/dist/utils/Validate/additional/mustBeInTheFuture.js +1 -1
  95. package/dist/utils/Validate/additional/mustBeInThePast.js +5 -5
  96. package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +1 -0
  97. package/dist/utils/Validate/additional/utils.js +16 -16
  98. package/dist/utils/Validate/validateCollection.js +3 -3
  99. package/dist/utils/Validate/validateComponent.js +26 -20
  100. package/dist/utils/Validate/validateContainer.js +2 -2
  101. package/dist/utils/Validate/validateDate.js +2 -1
  102. package/dist/utils/Validate/validateEmail.js +1 -0
  103. package/dist/utils/Validate/validatePage.js +6 -3
  104. package/dist/utils/Validate/validatePage.test.js +9 -18
  105. package/dist/utils/Validate/validateRegex.js +2 -5
  106. package/dist/utils/Validate/validateRequired.js +2 -4
  107. package/package.json +3 -2
@@ -15,29 +15,32 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _ty
15
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
16
  var onTaskAction = function onTaskAction(currentTask, pages, setCurrentTask, hubDetails, data, onPageChange, FormPages) {
17
17
  if (currentTask) {
18
- currentTask.fullPages = [];
19
- currentTask.pages.forEach(function (page) {
20
- currentTask.fullPages.push(_helpers.default.getPage(page, pages));
18
+ var task = currentTask;
19
+ task.fullPages = [];
20
+ task.pages.forEach(function (page) {
21
+ task.fullPages.push(_helpers.default.getPage(page, pages));
21
22
  });
22
23
  setCurrentTask(currentTask);
23
- var state = _objectSpread({}, currentTask);
24
- if (currentTask.state === _models.TaskStates.TYPES.COMPLETE) {
24
+ var state = _objectSpread({}, task);
25
+ if (task.state === _models.TaskStates.TYPES.COMPLETE) {
25
26
  if (hubDetails !== null && hubDetails !== void 0 && hubDetails.noTaskCYAs) {
26
27
  // If the task is complete and there are no CYA's then show user first page
28
+ /* eslint-disable prefer-destructuring */
27
29
  var currentPage = data.formStatus.tasks[currentTask.name].currentPage;
28
- onPageChange(currentTask.pages[0] || currentPage);
29
- } else if (currentTask.customCYA) {
30
- onPageChange(currentTask.customCYA);
30
+ onPageChange(task.pages[0] || currentPage);
31
+ } else if (task.customCYA) {
32
+ onPageChange(task.customCYA);
31
33
  } else {
32
34
  onPageChange(FormPages.CYA, state);
33
35
  }
34
- } else if (currentTask.state === _models.TaskStates.TYPES.IN_PROGRESS) {
36
+ } else if (task.state === _models.TaskStates.TYPES.IN_PROGRESS) {
35
37
  var _currentPage = data.formStatus.tasks[currentTask.name].currentPage;
38
+ /* eslint-enable prefer-destructuring */
36
39
  onPageChange(_currentPage || currentTask.pages[0], state);
37
- } else if (currentTask.firstPage) {
40
+ } else if (task.firstPage) {
38
41
  onPageChange(currentTask.firstPage, state);
39
42
  } else {
40
- onPageChange(currentTask.pages[0], state);
43
+ onPageChange(task.pages[0], state);
41
44
  }
42
45
  }
43
46
  };
@@ -37,8 +37,5 @@ ActionButton.propTypes = {
37
37
  action: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]).isRequired,
38
38
  onAction: _propTypes.default.func.isRequired
39
39
  };
40
- ActionButton.defaultProps = {
41
- action: ''
42
- };
43
40
  var _default = ActionButton;
44
41
  exports.default = _default;
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _copReactComponents = require("@ukhomeoffice/cop-react-components");
8
- var _propTypes = _interopRequireDefault(require("prop-types"));
9
8
  var _react = _interopRequireDefault(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _ActionButton = _interopRequireDefault(require("./ActionButton"));
11
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
12
  // Global imports
@@ -28,7 +28,7 @@ var PageActions = function PageActions(_ref) {
28
28
  }));
29
29
  };
30
30
  PageActions.propTypes = {
31
- actions: _propTypes.default.array,
31
+ actions: _propTypes.default.shape([]).isRequired,
32
32
  onAction: _propTypes.default.func.isRequired
33
33
  };
34
34
  var _default = PageActions;
@@ -79,28 +79,33 @@ var SummaryList = function SummaryList(_ref) {
79
79
  }))));
80
80
  };
81
81
  SummaryList.propTypes = {
82
+ classBlock: _propTypes.default.string,
83
+ classModifiers: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
84
+ className: _propTypes.default.string,
85
+ isGroup: _propTypes.default.bool,
86
+ noChangeAction: _propTypes.default.bool,
87
+ noGroupAction: _propTypes.default.bool,
82
88
  rows: _propTypes.default.arrayOf(_propTypes.default.shape({
83
89
  pageId: _propTypes.default.string.isRequired,
84
90
  fieldId: _propTypes.default.string.isRequired,
85
91
  full_path: _propTypes.default.string,
86
92
  key: _propTypes.default.string.isRequired,
87
- value: _propTypes.default.any,
93
+ value: _propTypes.default.string,
88
94
  action: _propTypes.default.shape({
89
95
  page: _propTypes.default.string,
90
96
  label: _propTypes.default.string,
91
97
  aria_suffix: _propTypes.default.string,
92
98
  onAction: _propTypes.default.func
93
99
  })
94
- })).isRequired,
95
- noChangeAction: _propTypes.default.bool,
96
- isGroup: _propTypes.default.bool,
97
- classBlock: _propTypes.default.string,
98
- classModifiers: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
99
- className: _propTypes.default.string
100
+ })).isRequired
100
101
  };
101
102
  SummaryList.defaultProps = {
102
103
  classBlock: DEFAULT_CLASS,
103
- noChangeAction: false
104
+ classModifiers: [],
105
+ className: '',
106
+ isGroup: false,
107
+ noChangeAction: false,
108
+ noGroupAction: false
104
109
  };
105
110
  var _default = SummaryList;
106
111
  exports.default = _default;
@@ -19,8 +19,12 @@ var SummaryListHeadingRow = function SummaryListHeadingRow(_ref) {
19
19
  }, size === 's' && /*#__PURE__*/_react.default.createElement(_copReactComponents.SmallHeading, null, title), size === 'm' && /*#__PURE__*/_react.default.createElement(_copReactComponents.MediumHeading, null, title));
20
20
  };
21
21
  SummaryListHeadingRow.propTypes = {
22
- title: _propTypes.default.string.isRequired,
23
- classes: _propTypes.default.func.isRequired
22
+ classes: _propTypes.default.func.isRequired,
23
+ size: _propTypes.default.string,
24
+ title: _propTypes.default.string.isRequired
25
+ };
26
+ SummaryListHeadingRow.defaultProps = {
27
+ size: 'm'
24
28
  };
25
29
  var _default = SummaryListHeadingRow;
26
30
  exports.default = _default;
@@ -29,10 +29,11 @@ var SummaryListRow = function SummaryListRow(_ref) {
29
29
  })));
30
30
  };
31
31
  SummaryListRow.propTypes = {
32
+ classes: _propTypes.default.func.isRequired,
32
33
  row: _propTypes.default.shape({
33
34
  key: _propTypes.default.string.isRequired,
34
35
  required: _propTypes.default.bool,
35
- value: _propTypes.default.any,
36
+ value: _propTypes.default.string,
36
37
  action: _propTypes.default.shape({
37
38
  page: _propTypes.default.string,
38
39
  label: _propTypes.default.string,
@@ -40,8 +41,10 @@ SummaryListRow.propTypes = {
40
41
  onAction: _propTypes.default.func
41
42
  })
42
43
  }).isRequired,
43
- classes: _propTypes.default.func.isRequired,
44
44
  showAction: _propTypes.default.bool
45
45
  };
46
+ SummaryListRow.defaultProps = {
47
+ showAction: false
48
+ };
46
49
  var _default = SummaryListRow;
47
50
  exports.default = _default;
@@ -18,7 +18,8 @@ var getGroupActionAttributes = function getGroupActionAttributes(groupRow) {
18
18
  },
19
19
  tabIndex: '0'
20
20
  };
21
- } else if (groupRow.action.page) {
21
+ }
22
+ if (groupRow.action.page) {
22
23
  return {
23
24
  href: "/".concat(groupRow.action.page)
24
25
  };
@@ -18,7 +18,8 @@ var getRowActionAttributes = function getRowActionAttributes(row) {
18
18
  },
19
19
  tabIndex: '0'
20
20
  };
21
- } else if (row.action.page) {
21
+ }
22
+ if (row.action.page) {
22
23
  return {
23
24
  href: "/".concat(row.action.page)
24
25
  };
@@ -59,7 +59,7 @@ var Task = function Task(_ref) {
59
59
  Task.propTypes = {
60
60
  task: _propTypes.default.shape({
61
61
  name: _propTypes.default.string.isRequired,
62
- pages: _propTypes.default.array.isRequired,
62
+ pages: _propTypes.default.shape([]).isRequired,
63
63
  state: _propTypes.default.string,
64
64
  displayName: _propTypes.default.string
65
65
  }).isRequired,
@@ -46,7 +46,7 @@ var TaskList = function TaskList(_ref) {
46
46
  attrs = _objectWithoutProperties(_ref, _excluded);
47
47
  var classes = _copReactComponents.Utils.classBuilder(classBlock, classModifiers, className);
48
48
 
49
- //TODO state will be retrieved from a document in S3 rather than given in the component definition, covered under COP-9885
49
+ // TODO state will be retrieved from a document in S3 rather than given in the component definition, covered under COP-9885
50
50
  var _sections$filter$redu = sections.filter(function (section) {
51
51
  return !section.skipped;
52
52
  }).reduce(function (acc, current) {
@@ -61,7 +61,7 @@ var TaskList = function TaskList(_ref) {
61
61
  completeSections = _sections$filter$redu2[0],
62
62
  totalSections = _sections$filter$redu2[1];
63
63
  var notesId = "".concat(id, "Notes");
64
- var _ref2 = notes ? notes : {},
64
+ var _ref2 = notes && notes || {},
65
65
  notesTitle = _ref2.title,
66
66
  notesText = _ref2.text;
67
67
  var onClick = function onClick(task) {
@@ -115,32 +115,41 @@ var TaskList = function TaskList(_ref) {
115
115
  }));
116
116
  };
117
117
  TaskList.propTypes = {
118
+ classBlock: _propTypes.default.string,
119
+ classModifiers: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
120
+ className: _propTypes.default.string,
121
+ fieldId: _propTypes.default.string,
122
+ formData: _propTypes.default.shape({}),
118
123
  id: _propTypes.default.string,
119
- refTitle: _propTypes.default.string,
120
- refNumber: _propTypes.default.string,
124
+ incompleteTitle: _propTypes.default.string,
121
125
  notes: _propTypes.default.shape({
122
126
  title: _propTypes.default.string,
123
127
  text: _propTypes.default.string
124
128
  }),
125
- incompleteTitle: _propTypes.default.string,
129
+ onTaskAction: _propTypes.default.func,
130
+ refTitle: _propTypes.default.string.isRequired,
131
+ refNumber: _propTypes.default.string.isRequired,
126
132
  sections: _propTypes.default.arrayOf(_propTypes.default.shape({
127
133
  name: _propTypes.default.string.isRequired,
128
134
  label: _propTypes.default.string,
129
135
  tasks: _propTypes.default.arrayOf(_propTypes.default.shape({
130
136
  name: _propTypes.default.string.isRequired,
131
- pages: _propTypes.default.array.isRequired,
137
+ pages: _propTypes.default.shape([]).isRequired,
132
138
  state: _propTypes.default.string,
133
139
  displayName: _propTypes.default.string
134
140
  })).isRequired
135
- })).isRequired,
136
- classBlock: _propTypes.default.string,
137
- classModifiers: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
138
- className: _propTypes.default.string,
139
- formData: _propTypes.default.shape({})
141
+ })).isRequired
140
142
  };
141
143
  TaskList.defaultProps = {
142
144
  classBlock: DEFAULT_CLASS,
143
- incompleteTitle: DEFAULT_INCOMPLETE_TITLE
145
+ classModifiers: [],
146
+ className: '',
147
+ fieldId: '',
148
+ formData: {},
149
+ id: '',
150
+ incompleteTitle: DEFAULT_INCOMPLETE_TITLE,
151
+ onTaskAction: undefined,
152
+ notes: ''
144
153
  };
145
154
  var _default = TaskList;
146
155
  exports.default = _default;
@@ -9,9 +9,9 @@ var _react = _interopRequireDefault(require("react"));
9
9
  var _copReactComponents = require("@ukhomeoffice/cop-react-components");
10
10
  var _models = require("../../models");
11
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
- //Global Imports
12
+ // Global Imports
13
13
 
14
- //Local imports
14
+ // Local imports
15
15
 
16
16
  var DEFAULT_CLASS = 'hods-task-list';
17
17
  exports.DEFAULT_CLASS = DEFAULT_CLASS;
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "CheckYourAnswers", {
9
9
  return _CheckYourAnswers.default;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "Container", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _Container.default;
16
+ }
17
+ });
12
18
  Object.defineProperty(exports, "FormComponent", {
13
19
  enumerable: true,
14
20
  get: function get() {
@@ -39,6 +45,7 @@ Object.defineProperty(exports, "SummaryList", {
39
45
  return _SummaryList.default;
40
46
  }
41
47
  });
48
+ var _Container = _interopRequireDefault(require("./FormComponent/Container"));
42
49
  var _CheckYourAnswers = _interopRequireDefault(require("./CheckYourAnswers"));
43
50
  var _FormComponent = _interopRequireDefault(require("./FormComponent"));
44
51
  var _FormPage = _interopRequireDefault(require("./FormPage"));
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = exports.HooksContext = exports.ALLOWED_HOOKS = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
11
  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); }
10
12
  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; }
11
13
  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; }
@@ -87,4 +89,34 @@ var HooksContextProvider = function HooksContextProvider(_ref) {
87
89
  }, children);
88
90
  };
89
91
  var _default = HooksContextProvider;
90
- exports.default = _default;
92
+ exports.default = _default;
93
+ HooksContextProvider.propTypes = {
94
+ children: _propTypes.default.node,
95
+ overrides: _propTypes.default.shape({
96
+ onCancel: _propTypes.default.func,
97
+ onChange: _propTypes.default.func,
98
+ onFormComplete: _propTypes.default.func,
99
+ onFormLoad: _propTypes.default.func,
100
+ onGetComponent: _propTypes.default.func,
101
+ onGetCYA: _propTypes.default.func,
102
+ onGoingBack: _propTypes.default.func,
103
+ onPageChange: _propTypes.default.func,
104
+ onRequest: _propTypes.default.func,
105
+ onSubmit: _propTypes.default.func
106
+ })
107
+ };
108
+ HooksContextProvider.defaultProps = {
109
+ children: null,
110
+ overrides: {
111
+ onCancel: undefined,
112
+ onChange: undefined,
113
+ onFormComplete: undefined,
114
+ onFormLoad: undefined,
115
+ onGetComponent: undefined,
116
+ onGetCYA: undefined,
117
+ onGoingBack: undefined,
118
+ onPageChange: undefined,
119
+ onRequest: undefined,
120
+ onSubmit: undefined
121
+ }
122
+ };
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = exports.ValidationContext = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
10
  var _utils = _interopRequireDefault(require("../../utils"));
10
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
12
  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); }
@@ -87,4 +88,10 @@ var ValidationContextProvider = function ValidationContextProvider(_ref) {
87
88
  }, children);
88
89
  };
89
90
  var _default = ValidationContextProvider;
90
- exports.default = _default;
91
+ exports.default = _default;
92
+ ValidationContextProvider.propTypes = {
93
+ children: _propTypes.default.node
94
+ };
95
+ ValidationContextProvider.defaultProps = {
96
+ children: null
97
+ };
@@ -4,6 +4,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
4
4
  var _react = require("@testing-library/react");
5
5
  var _copReactComponents = require("@ukhomeoffice/cop-react-components");
6
6
  var _react2 = _interopRequireWildcard(require("react"));
7
+ var _propTypes = _interopRequireDefault(require("prop-types"));
7
8
  var _hooks = require("../../hooks");
8
9
  var _ValidationContext = _interopRequireDefault(require("./ValidationContext"));
9
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -23,7 +24,6 @@ var TestComponent = function TestComponent(_ref) {
23
24
  if (customErrors) {
24
25
  addErrors(customErrors);
25
26
  }
26
- // eslint-disable-next-line react-hooks/exhaustive-deps
27
27
  }, [customErrors]);
28
28
  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, {
29
29
  errors: errors
@@ -74,4 +74,10 @@ describe('context.ValidationContext', function () {
74
74
  }
75
75
  }, _callee2);
76
76
  })));
77
- });
77
+ });
78
+ TestComponent.propTypes = {
79
+ customErrors: _propTypes.default.shape([])
80
+ };
81
+ TestComponent.defaultProps = {
82
+ customErrors: null
83
+ };
@@ -22,9 +22,10 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
22
22
  var cache = {};
23
23
  var errorCache = {};
24
24
  var clearCache = function clearCache(cacheObject) {
25
- var keys = Object.keys(cacheObject);
25
+ var cachedObject = cacheObject;
26
+ var keys = Object.keys(cachedObject);
26
27
  keys.forEach(function (key) {
27
- delete cacheObject[key];
28
+ delete cachedObject[key];
28
29
  });
29
30
  };
30
31
  var clear = function clear() {
@@ -28,6 +28,7 @@ exports.STATUS_LOADING = STATUS_LOADING;
28
28
  var STATUS_COMPLETE = 'complete';
29
29
  exports.STATUS_COMPLETE = STATUS_COMPLETE;
30
30
  var getRefDataUrl = function getRefDataUrl(component) {
31
+ // eslint-disable-next-line prefer-destructuring
31
32
  var data = component.data;
32
33
  if (data && !data.options) {
33
34
  return _copReactComponents.Utils.interpolateString(data.url, component.formData);
package/dist/index.js CHANGED
@@ -4,6 +4,12 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
+ Object.defineProperty(exports, "Container", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _components.Container;
11
+ }
12
+ });
7
13
  Object.defineProperty(exports, "FormComponent", {
8
14
  enumerable: true,
9
15
  get: function get() {
@@ -29,12 +29,12 @@ var getPageFromCYALink = function getPageFromCYALink(link) {
29
29
  * - `href: '/bravo'` => `page: 'bravo'`
30
30
  */
31
31
  var getCYAAction = function getCYAAction(readonly, page, onAction) {
32
- var cya_link = page === null || page === void 0 ? void 0 : page.cya_link;
33
- if (readonly !== true && cya_link) {
32
+ var cyaLink = page === null || page === void 0 ? void 0 : page.cya_link;
33
+ if (readonly !== true && cyaLink) {
34
34
  return {
35
- page: getPageFromCYALink(cya_link) || page.id || '#',
36
- label: cya_link.label || 'Change',
37
- aria_suffix: cya_link.aria_suffix,
35
+ page: getPageFromCYALink(cyaLink) || page.id || '#',
36
+ label: cyaLink.label || 'Change',
37
+ aria_suffix: cyaLink.aria_suffix,
38
38
  onAction: onAction
39
39
  };
40
40
  }
@@ -7,9 +7,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
7
7
  describe('utils', function () {
8
8
  describe('CheckYourAnswers', function () {
9
9
  describe('getCYAAction', function () {
10
- var getPage = function getPage(cya_link, id) {
10
+ var getPage = function getPage(cyaLink, id) {
11
11
  return {
12
- cya_link: cya_link,
12
+ cya_link: cyaLink,
13
13
  id: id
14
14
  };
15
15
  };
@@ -20,100 +20,100 @@ describe('utils', function () {
20
20
  expect((0, _getCYAAction.default)(false, null, function () {})).toBeNull();
21
21
  });
22
22
  it('should return a default action if the cya_link is empty and the page has no id', function () {
23
- var CYA_LINK = {};
24
- var ON_ACTION = function ON_ACTION() {};
25
- expect((0, _getCYAAction.default)(false, getPage(CYA_LINK), ON_ACTION)).toEqual({
23
+ var cyaLink = {};
24
+ var onAction = function onAction() {};
25
+ expect((0, _getCYAAction.default)(false, getPage(cyaLink), onAction)).toEqual({
26
26
  page: '#',
27
27
  label: 'Change',
28
- onAction: ON_ACTION
28
+ onAction: onAction
29
29
  });
30
30
  });
31
31
  it('should return a default action if the cya_link is empty but the page has an id', function () {
32
32
  var PAGE_ID = 'page-id';
33
- var CYA_LINK = {};
34
- var ON_ACTION = function ON_ACTION() {};
35
- expect((0, _getCYAAction.default)(false, getPage(CYA_LINK, PAGE_ID), ON_ACTION)).toEqual({
33
+ var cyaLink = {};
34
+ var onAction = function onAction() {};
35
+ expect((0, _getCYAAction.default)(false, getPage(cyaLink, PAGE_ID), onAction)).toEqual({
36
36
  page: PAGE_ID,
37
37
  label: 'Change',
38
- onAction: ON_ACTION
38
+ onAction: onAction
39
39
  });
40
40
  });
41
41
  it('should use page specified in cya_link', function () {
42
42
  var PAGE = 'alpha';
43
- var CYA_LINK = {
43
+ var cyaLink = {
44
44
  page: PAGE
45
45
  };
46
- var ON_ACTION = function ON_ACTION() {};
47
- expect((0, _getCYAAction.default)(false, getPage(CYA_LINK), ON_ACTION)).toEqual({
46
+ var onAction = function onAction() {};
47
+ expect((0, _getCYAAction.default)(false, getPage(cyaLink), onAction)).toEqual({
48
48
  page: PAGE,
49
49
  label: 'Change',
50
- onAction: ON_ACTION
50
+ onAction: onAction
51
51
  });
52
52
  });
53
53
  it('should convert an href specified in cya_link', function () {
54
54
  var HREF = '/alpha/bravo';
55
- var CYA_LINK = {
55
+ var cyaLink = {
56
56
  href: HREF
57
57
  };
58
- var ON_ACTION = function ON_ACTION() {};
59
- expect((0, _getCYAAction.default)(false, getPage(CYA_LINK), ON_ACTION)).toEqual({
58
+ var onAction = function onAction() {};
59
+ expect((0, _getCYAAction.default)(false, getPage(cyaLink), onAction)).toEqual({
60
60
  page: 'bravo',
61
61
  label: 'Change',
62
- onAction: ON_ACTION
62
+ onAction: onAction
63
63
  });
64
64
  });
65
65
  it('should convert a url specified in cya_link', function () {
66
66
  var URL = '/alpha/bravo';
67
- var CYA_LINK = {
67
+ var cyaLink = {
68
68
  url: URL
69
69
  };
70
- var ON_ACTION = function ON_ACTION() {};
71
- expect((0, _getCYAAction.default)(false, getPage(CYA_LINK), ON_ACTION)).toEqual({
70
+ var onAction = function onAction() {};
71
+ expect((0, _getCYAAction.default)(false, getPage(cyaLink), onAction)).toEqual({
72
72
  page: 'bravo',
73
73
  label: 'Change',
74
- onAction: ON_ACTION
74
+ onAction: onAction
75
75
  });
76
76
  });
77
77
  it('should use label specified in cya_link', function () {
78
78
  var LABEL = 'Alpha Bravo Charlie';
79
- var CYA_LINK = {
79
+ var cyaLink = {
80
80
  label: LABEL
81
81
  };
82
- var ON_ACTION = function ON_ACTION() {};
83
- expect((0, _getCYAAction.default)(false, getPage(CYA_LINK), ON_ACTION)).toEqual({
82
+ var onAction = function onAction() {};
83
+ expect((0, _getCYAAction.default)(false, getPage(cyaLink), onAction)).toEqual({
84
84
  page: '#',
85
85
  label: LABEL,
86
- onAction: ON_ACTION
86
+ onAction: onAction
87
87
  });
88
88
  });
89
89
  it('should use aria_suffix specified in cya_link', function () {
90
90
  var ARIA_SUFFIX = 'This is hidden text';
91
- var CYA_LINK = {
91
+ var cyaLink = {
92
92
  aria_suffix: ARIA_SUFFIX
93
93
  };
94
- var ON_ACTION = function ON_ACTION() {};
95
- expect((0, _getCYAAction.default)(false, getPage(CYA_LINK), ON_ACTION)).toEqual({
94
+ var onAction = function onAction() {};
95
+ expect((0, _getCYAAction.default)(false, getPage(cyaLink), onAction)).toEqual({
96
96
  page: '#',
97
97
  label: 'Change',
98
98
  aria_suffix: ARIA_SUFFIX,
99
- onAction: ON_ACTION
99
+ onAction: onAction
100
100
  });
101
101
  });
102
102
  it('should use all properties specified in cya_link', function () {
103
103
  var PAGE = 'alpha';
104
104
  var LABEL = 'Alpha Bravo Charlie';
105
105
  var ARIA_SUFFIX = 'This is hidden text';
106
- var CYA_LINK = {
106
+ var cyaLink = {
107
107
  label: LABEL,
108
108
  page: PAGE,
109
109
  aria_suffix: ARIA_SUFFIX
110
110
  };
111
- var ON_ACTION = function ON_ACTION() {};
112
- expect((0, _getCYAAction.default)(false, getPage(CYA_LINK), ON_ACTION)).toEqual({
111
+ var onAction = function onAction() {};
112
+ expect((0, _getCYAAction.default)(false, getPage(cyaLink), onAction)).toEqual({
113
113
  page: PAGE,
114
114
  label: LABEL,
115
115
  aria_suffix: ARIA_SUFFIX,
116
- onAction: ON_ACTION
116
+ onAction: onAction
117
117
  });
118
118
  });
119
119
  });
@@ -21,7 +21,8 @@ var getCYACollectionChangeAction = function getCYACollectionChangeAction(page, i
21
21
  type: 'action',
22
22
  action: {
23
23
  onAction: function onAction(row) {
24
- var changeCallback = function changeCallback(data) {
24
+ var changeCallback = function changeCallback(cyaData) {
25
+ var data = cyaData;
25
26
  data["".concat(page.collection.name, "ActiveId")] = item.id;
26
27
  return data;
27
28
  };
@@ -32,9 +32,9 @@ describe('utils', function () {
32
32
  collectionNameActiveId: 3
33
33
  };
34
34
  it('should change activeId to the selected item and call onAction with the correct page', function () {
35
- var ON_ACTION = function ON_ACTION(row, call_back) {
35
+ var ON_ACTION = function ON_ACTION(row, callback) {
36
36
  expect(row.id).toEqual(2);
37
- TEST_DATA = call_back(TEST_DATA);
37
+ TEST_DATA = callback(TEST_DATA);
38
38
  };
39
39
  var action = (0, _getCYACollectionChangeAction.default)(PAGE, ITEM, ON_ACTION, 0, {});
40
40
  action.action.onAction(PAGE);
@@ -58,9 +58,9 @@ describe('utils', function () {
58
58
  }]
59
59
  }
60
60
  };
61
- var ON_ACTION = function ON_ACTION(page, call_back) {
61
+ var ON_ACTION = function ON_ACTION(page, callback) {
62
62
  expect(page.pageId).toEqual('confirmDelete');
63
- TEST_DATA = call_back(TEST_DATA);
63
+ TEST_DATA = callback(TEST_DATA);
64
64
  };
65
65
  var action = (0, _getCYACollectionChangeAction.default)(PAGE_WITH_CUSTOM_DESTINATION, ITEM, ON_ACTION, 0, PAGE_WITH_CUSTOM_DESTINATION.collection.actions[0]);
66
66
  action.action.onAction({});
@@ -21,7 +21,8 @@ var getCYACollectionDeleteAction = function getCYACollectionDeleteAction(page, i
21
21
  type: 'action',
22
22
  action: {
23
23
  onAction: function onAction() {
24
- var deleteCallback = function deleteCallback(data) {
24
+ var deleteCallback = function deleteCallback(cyaData) {
25
+ var data = cyaData;
25
26
  data["".concat(page.collection.name)] = data["".concat(page.collection.name)].filter(function (i) {
26
27
  return i.id !== item.id;
27
28
  });
@@ -35,8 +35,8 @@ describe('utils', function () {
35
35
  };
36
36
  it('should remove selected item from the form data', function () {
37
37
  var data = null;
38
- var ON_ACTION = function ON_ACTION(_, call_back) {
39
- data = call_back(TEST_DATA);
38
+ var ON_ACTION = function ON_ACTION(_, callback) {
39
+ data = callback(TEST_DATA);
40
40
  };
41
41
  var action = (0, _getCYACollectionDeleteAction.default)(PAGE, ITEM, ON_ACTION, 0, {});
42
42
  action.action.onAction();