@ukhomeoffice/cop-react-form-renderer 4.74.0 → 4.76.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 (106) 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/helpers/cleanHiddenNestedData.js +19 -15
  14. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +8 -8
  15. package/dist/components/FormRenderer/helpers/getCYA.js +5 -1
  16. package/dist/components/FormRenderer/helpers/getNextPageId.js +13 -7
  17. package/dist/components/FormRenderer/helpers/getRelevantPages.js +10 -2
  18. package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +1 -1
  19. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +38 -24
  20. package/dist/components/FormRenderer/helpers/index.js +1 -2
  21. package/dist/components/FormRenderer/onCYAAction.js +2 -2
  22. package/dist/components/FormRenderer/onCYAAction.test.js +13 -13
  23. package/dist/components/FormRenderer/onPageAction.js +27 -11
  24. package/dist/components/FormRenderer/onPageAction.test.js +16 -16
  25. package/dist/components/FormRenderer/onTaskAction.js +14 -11
  26. package/dist/components/PageActions/ActionButton.js +0 -3
  27. package/dist/components/PageActions/PageActions.js +2 -2
  28. package/dist/components/SummaryList/SummaryList.js +13 -8
  29. package/dist/components/SummaryList/SummaryListHeadingRow.js +6 -2
  30. package/dist/components/SummaryList/SummaryListRow.js +5 -2
  31. package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +2 -1
  32. package/dist/components/SummaryList/helpers/getRowActionAttributes.js +2 -1
  33. package/dist/components/TaskList/Task.js +1 -1
  34. package/dist/components/TaskList/TaskList.js +21 -12
  35. package/dist/components/TaskList/TaskState.js +2 -2
  36. package/dist/components/index.js +7 -0
  37. package/dist/context/HooksContext/HooksContext.js +33 -1
  38. package/dist/context/ValidationContext/ValidationContext.js +8 -1
  39. package/dist/context/ValidationContext/ValidationContext.test.js +8 -2
  40. package/dist/hooks/useGetRequest.js +3 -2
  41. package/dist/hooks/useRefData.js +1 -0
  42. package/dist/index.js +6 -0
  43. package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
  44. package/dist/utils/CheckYourAnswers/getCYAAction.test.js +34 -34
  45. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +2 -1
  46. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +4 -4
  47. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +2 -1
  48. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +2 -2
  49. package/dist/utils/CheckYourAnswers/getCYARow.js +13 -11
  50. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +8 -8
  51. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +25 -22
  52. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +1 -0
  53. package/dist/utils/CheckYourAnswers/showComponentCYA.js +1 -1
  54. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +1 -0
  55. package/dist/utils/CollectionPage/mergeCollectionPages.js +7 -6
  56. package/dist/utils/Component/applyToComponentTree.js +4 -2
  57. package/dist/utils/Component/cleanAttributes.js +7 -1
  58. package/dist/utils/Component/cleanAttributes.test.js +4 -4
  59. package/dist/utils/Component/getComponent.js +8 -6
  60. package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +4 -4
  61. package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +1 -0
  62. package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +3 -3
  63. package/dist/utils/Component/getComponentTests/getComponent.email.test.js +1 -1
  64. package/dist/utils/Component/getComponentTests/getComponent.file.test.js +1 -1
  65. package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +1 -1
  66. package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +1 -1
  67. package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +3 -3
  68. package/dist/utils/Component/getComponentTests/getComponent.text.test.js +1 -1
  69. package/dist/utils/Component/getComponentTests/getComponent.time.test.js +5 -5
  70. package/dist/utils/Component/setupContainerComponentsPath.js +2 -0
  71. package/dist/utils/Condition/meetsCondition.js +2 -1
  72. package/dist/utils/Condition/setupConditions.js +2 -2
  73. package/dist/utils/Container/setupNesting.js +5 -1
  74. package/dist/utils/Data/applyFormula.js +16 -10
  75. package/dist/utils/Data/getAutocompleteSource.js +3 -1
  76. package/dist/utils/Data/getOptions.js +3 -2
  77. package/dist/utils/Data/setupFormData.js +4 -2
  78. package/dist/utils/FormPage/getFormPage.js +1 -1
  79. package/dist/utils/FormPage/getPageActions.js +5 -3
  80. package/dist/utils/FormPage/showFormPage.js +2 -2
  81. package/dist/utils/FormPage/showFormPageCYA.js +1 -0
  82. package/dist/utils/FormPage/useComponent.js +1 -0
  83. package/dist/utils/Format/formatDataForComponent.js +2 -1
  84. package/dist/utils/Meta/index.js +1 -2
  85. package/dist/utils/Operate/getFirstOf.test.js +1 -0
  86. package/dist/utils/Operate/persistValueInFormData.js +1 -0
  87. package/dist/utils/Operate/persistValueInFormData.test.js +1 -1
  88. package/dist/utils/Operate/shouldRun.js +16 -13
  89. package/dist/utils/Validate/additional/index.js +2 -1
  90. package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +1 -1
  91. package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +2 -2
  92. package/dist/utils/Validate/additional/mustBeInTheFuture.js +1 -1
  93. package/dist/utils/Validate/additional/mustBeInThePast.js +5 -5
  94. package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +1 -0
  95. package/dist/utils/Validate/additional/utils.js +16 -16
  96. package/dist/utils/Validate/validateCollection.js +16 -4
  97. package/dist/utils/Validate/validateCollection.test.js +17 -0
  98. package/dist/utils/Validate/validateComponent.js +26 -20
  99. package/dist/utils/Validate/validateContainer.js +2 -2
  100. package/dist/utils/Validate/validateDate.js +2 -1
  101. package/dist/utils/Validate/validateEmail.js +1 -0
  102. package/dist/utils/Validate/validatePage.js +6 -3
  103. package/dist/utils/Validate/validatePage.test.js +9 -18
  104. package/dist/utils/Validate/validateRegex.js +2 -5
  105. package/dist/utils/Validate/validateRequired.js +2 -4
  106. package/package.json +3 -2
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _propTypes = _interopRequireDefault(require("prop-types"));
8
7
  var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _VisuallyHidden = _interopRequireDefault(require("@ukhomeoffice/cop-react-components/dist/VisuallyHidden"));
10
10
  var _FormComponent = _interopRequireDefault(require("../FormComponent"));
11
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -23,7 +23,7 @@ var Answer = function Answer(_ref) {
23
23
  return /*#__PURE__*/_react.default.createElement(_VisuallyHidden.default, null, "No answer");
24
24
  }
25
25
  if (!component) {
26
- return value.hasOwnProperty('label') ? value.label : value;
26
+ return Object.prototype.hasOwnProperty.call(value, 'label') ? value.label : value;
27
27
  }
28
28
  return /*#__PURE__*/_react.default.createElement(_FormComponent.default, {
29
29
  component: _objectSpread(_objectSpread({}, component), {}, {
@@ -35,8 +35,14 @@ var Answer = function Answer(_ref) {
35
35
  });
36
36
  };
37
37
  Answer.propTypes = {
38
- value: _propTypes.default.any,
39
- component: _propTypes.default.object
38
+ component: _propTypes.default.shape({}),
39
+ formData: _propTypes.default.shape({}),
40
+ value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({})])
41
+ };
42
+ Answer.defaultProps = {
43
+ component: null,
44
+ formData: null,
45
+ value: null
40
46
  };
41
47
  var _default = Answer;
42
48
  exports.default = _default;
@@ -6,17 +6,17 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = exports.DEFAULT_TITLE = exports.DEFAULT_MARGIN_BOTTOM = exports.DEFAULT_CLASS = void 0;
8
8
  var _copReactComponents = require("@ukhomeoffice/cop-react-components");
9
- var _propTypes = _interopRequireDefault(require("prop-types"));
10
9
  var _react = _interopRequireWildcard(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
  var _hooks = require("../../hooks");
12
12
  var _utils = _interopRequireDefault(require("../../utils"));
13
13
  var _PageActions = _interopRequireDefault(require("../PageActions"));
14
14
  var _SummaryList = _interopRequireDefault(require("../SummaryList"));
15
15
  var _Answer = _interopRequireDefault(require("./Answer"));
16
16
  require("./CheckYourAnswers.scss");
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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); }
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; }
19
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
20
  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; }
21
21
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
22
22
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -93,10 +93,16 @@ var CheckYourAnswers = function CheckYourAnswers(_ref) {
93
93
  (0, _react.useEffect)(function () {
94
94
  var groupsList = function groupsList() {
95
95
  var groupIds = [];
96
- groups !== undefined && groups.length && groups.forEach(function (group) {
97
- var groupedPageId = group.pageId;
98
- groupIds.push(groupedPageId);
99
- });
96
+ if (groups !== undefined) {
97
+ if (groups.length) {
98
+ groups.forEach(function (group) {
99
+ var groupedPageId = group.pageId;
100
+ groupIds.push(groupedPageId);
101
+ });
102
+ }
103
+ ;
104
+ }
105
+ ;
100
106
  setListOfGroups(groupIds);
101
107
  };
102
108
  groupsList();
@@ -121,16 +127,18 @@ var CheckYourAnswers = function CheckYourAnswers(_ref) {
121
127
  if (override) {
122
128
  return override;
123
129
  }
130
+ ;
124
131
  var isGroup = function isGroup(pageId) {
125
132
  return listOfGroups.includes(pageId);
126
133
  };
127
134
  var getGroupForPage = function getGroupForPage(pageId) {
128
135
  var groupAnswer;
129
- groups !== undefined && groups.length && pageId !== undefined && groups.forEach(function (group) {
130
- if (group.pageId === pageId) {
131
- groupAnswer = group;
132
- }
133
- });
136
+ if (groups !== undefined) {
137
+ groupAnswer = groups.find(function (group) {
138
+ return group.pageId === pageId;
139
+ });
140
+ }
141
+ ;
134
142
  return groupAnswer;
135
143
  };
136
144
  return /*#__PURE__*/_react.default.createElement("div", {
@@ -150,12 +158,16 @@ var CheckYourAnswers = function CheckYourAnswers(_ref) {
150
158
  className: "govuk-heading-m govuk-!-margin-top-8 govuk-!-margin-bottom-0"
151
159
  }, filterPages.length > 0 && task.name), filterPages.map(function (page, pageIndex) {
152
160
  var hideActionButtons;
153
- isGroup(page.id) ? hideActionButtons = true : hideActionButtons = noChangeAction;
161
+ if (isGroup(page.id)) {
162
+ hideActionButtons = true;
163
+ } else {
164
+ hideActionButtons = noChangeAction;
165
+ }
154
166
  return /*#__PURE__*/_react.default.createElement(_react.Fragment, {
155
167
  key: pageIndex
156
- }, !hide_page_titles && page.title && !isGroup(page.id) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h4", {
168
+ }, !hide_page_titles && page.title && !isGroup(page.id) && /*#__PURE__*/_react.default.createElement("h4", {
157
169
  className: "govuk-heading-m govuk-!-margin-top-6 govuk-!-margin-bottom-5"
158
- }, _utils.default.interpolateString(page.title, page.formData))), /*#__PURE__*/_react.default.createElement(_SummaryList.default, {
170
+ }, _utils.default.interpolateString(page.title, page.formData)), /*#__PURE__*/_react.default.createElement(_SummaryList.default, {
159
171
  rows: page.rows,
160
172
  classModifiers: summaryListClassModifiers,
161
173
  noChangeAction: hideActionButtons,
@@ -167,10 +179,17 @@ var CheckYourAnswers = function CheckYourAnswers(_ref) {
167
179
  }), type !== 'task-list-cya' && pages && pages.map(function (page, pageIndex, array) {
168
180
  var pageMarginBottom = isLastPage(pageIndex) || isGroup(array[pageIndex].id) || isGroup(array[pageIndex + 1].id) ? DEFAULT_MARGIN_BOTTOM : listMarginBottom;
169
181
  var currentGroup;
170
- isGroup(page.id) && (currentGroup = getGroupForPage(page.id));
182
+ if (isGroup(page.id)) {
183
+ currentGroup = getGroupForPage(page.id);
184
+ }
185
+ ;
171
186
  var className = "govuk-!-margin-bottom-".concat(pageMarginBottom);
172
187
  var hideActionButtons;
173
- isGroup(page.id) ? hideActionButtons = true : hideActionButtons = noChangeAction;
188
+ if (isGroup(page.id)) {
189
+ hideActionButtons = true;
190
+ } else {
191
+ hideActionButtons = noChangeAction;
192
+ }
174
193
  return /*#__PURE__*/_react.default.createElement(_react.Fragment, {
175
194
  key: pageIndex
176
195
  }, !hide_page_titles && page.title && !isGroup(page.id) && /*#__PURE__*/_react.default.createElement(_copReactComponents.MediumHeading, null, _utils.default.interpolateString(page.title, page.formData)), isGroup(page.id) && /*#__PURE__*/_react.default.createElement("div", {
@@ -191,35 +210,40 @@ var CheckYourAnswers = function CheckYourAnswers(_ref) {
191
210
  }));
192
211
  };
193
212
  CheckYourAnswers.propTypes = {
194
- title: _propTypes.default.string.isRequired,
195
- pages: _propTypes.default.arrayOf(_propTypes.default.object).isRequired,
196
213
  actions: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.string])),
197
- onAction: _propTypes.default.func.isRequired,
198
- onRowAction: _propTypes.default.func.isRequired,
199
- hide_page_titles: _propTypes.default.bool,
214
+ groups: _propTypes.default.shape([]),
200
215
  hide_actions: _propTypes.default.bool,
216
+ hide_page_titles: _propTypes.default.bool,
201
217
  hide_title: _propTypes.default.bool,
202
- summaryListClassModifiers: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
203
218
  noChangeAction: _propTypes.default.bool,
204
219
  noGroupAction: _propTypes.default.bool,
220
+ onAction: _propTypes.default.func.isRequired,
221
+ onRowAction: _propTypes.default.func.isRequired,
222
+ pages: _propTypes.default.arrayOf(_propTypes.default.shape({})).isRequired,
205
223
  sections: _propTypes.default.arrayOf(_propTypes.default.shape({
206
224
  name: _propTypes.default.string.isRequired,
207
225
  tasks: _propTypes.default.arrayOf(_propTypes.default.shape({
208
226
  name: _propTypes.default.string.isRequired,
209
- pages: _propTypes.default.array.isRequired,
227
+ pages: _propTypes.default.shape([]).isRequired,
210
228
  state: _propTypes.default.string.isRequired
211
229
  })).isRequired
212
230
  })),
231
+ summaryListClassModifiers: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
232
+ title: _propTypes.default.string,
213
233
  type: _propTypes.default.string
214
234
  };
215
235
  CheckYourAnswers.defaultProps = {
216
- title: DEFAULT_TITLE,
217
- hide_page_titles: false,
236
+ actions: [],
237
+ groups: [],
218
238
  hide_actions: false,
239
+ hide_page_titles: false,
219
240
  hide_title: false,
220
- summaryListClassModifiers: null,
221
241
  noChangeAction: false,
222
- sections: []
242
+ noGroupAction: false,
243
+ sections: [],
244
+ summaryListClassModifiers: null,
245
+ title: DEFAULT_TITLE,
246
+ type: null
223
247
  };
224
248
  var _default = CheckYourAnswers;
225
249
  exports.default = _default;
@@ -69,8 +69,9 @@ describe('components', function () {
69
69
  container.remove();
70
70
  container = null;
71
71
  });
72
- var checkCYA = function checkCYA(container) {
73
- var cya = container.childNodes[0];
72
+ var checkCYA = function checkCYA(cyaContainer) {
73
+ var checkCYAContainer = cyaContainer;
74
+ var cya = checkCYAContainer.childNodes[0];
74
75
  expect(cya.tagName).toEqual('DIV');
75
76
  expect(cya.classList).toContain(_CheckYourAnswers.DEFAULT_CLASS);
76
77
  return cya;
@@ -358,12 +359,12 @@ describe('components', function () {
358
359
  }, _callee14);
359
360
  })));
360
361
  it('Show answers from multiple address fields into in one DL', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {
361
- var DATA, GROUP_PAGES, cya, groupedComponent, keyGroup, valueGroup, changeButtonDiv, changeButton;
362
+ var ADDRESS_DATA, GROUP_PAGES, cya, groupedComponent, keyGroup, valueGroup, changeButtonDiv, changeButton;
362
363
  return _regeneratorRuntime().wrap(function _callee16$(_context16) {
363
364
  while (1) switch (_context16.prev = _context16.next) {
364
365
  case 0:
365
- DATA = _utils.default.Data.setupForm(_group.default.pages, _group.default.components, _groupData.default);
366
- GROUP_PAGES = _utils.default.FormPage.getAll(_group.default.pages, _group.default.components, _objectSpread({}, DATA));
366
+ ADDRESS_DATA = _utils.default.Data.setupForm(_group.default.pages, _group.default.components, _groupData.default);
367
+ GROUP_PAGES = _utils.default.FormPage.getAll(_group.default.pages, _group.default.components, _objectSpread({}, ADDRESS_DATA));
367
368
  _context16.next = 4;
368
369
  return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {
369
370
  return _regeneratorRuntime().wrap(function _callee15$(_context15) {
@@ -45,10 +45,11 @@ var CollectionPage = function CollectionPage(_ref) {
45
45
  * This is so that the overall form data isn't affected until such
46
46
  * time as the onAction handler is invoked.
47
47
  */
48
+ var currentPage = page;
48
49
  var onPageChange = function onPageChange(_ref2) {
49
50
  var target = _ref2.target;
50
- page.formData[target.name] = target.value;
51
- data = page.formData[page.collection.name] || patch[page.collection.name] || [];
51
+ currentPage.formData[target.name] = target.value;
52
+ data = currentPage.formData[currentPage.collection.name] || patch[currentPage.collection.name] || [];
52
53
  setPatch(function (prev) {
53
54
  return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, target.name, target.value));
54
55
  });
@@ -108,8 +109,8 @@ CollectionPage.propTypes = {
108
109
  name: _propTypes.default.string.isRequired
109
110
  }).isRequired,
110
111
  components: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object])).isRequired,
111
- actions: _propTypes.default.array,
112
- formData: _propTypes.default.object.isRequired
112
+ actions: _propTypes.default.shape([]),
113
+ formData: _propTypes.default.shape({}).isRequired
113
114
  }).isRequired,
114
115
  onAction: _propTypes.default.func.isRequired,
115
116
  classBlock: _propTypes.default.string,
@@ -118,7 +119,8 @@ CollectionPage.propTypes = {
118
119
  };
119
120
  CollectionPage.defaultProps = {
120
121
  classBlock: DEFAULT_CLASS,
121
- classModifiers: []
122
+ classModifiers: [],
123
+ className: ''
122
124
  };
123
125
  var _default = CollectionPage;
124
126
  exports.default = _default;
@@ -6,15 +6,15 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = exports.DEFAULT_CLASS = void 0;
8
8
  var _copReactComponents = require("@ukhomeoffice/cop-react-components");
9
- var _propTypes = _interopRequireDefault(require("prop-types"));
10
9
  var _react = _interopRequireWildcard(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
  var _models = require("../../models");
12
12
  var _utils = _interopRequireDefault(require("../../utils"));
13
13
  var _Container = _interopRequireDefault(require("./Container"));
14
14
  require("./Collection.scss");
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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); }
16
17
  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; }
17
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
  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; }
19
19
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
20
20
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -90,7 +90,6 @@ var Collection = function Collection(_ref) {
90
90
  if (config.minimumEntries && !value.length) {
91
91
  onAddAnother();
92
92
  }
93
- // eslint-disable-next-line react-hooks/exhaustive-deps
94
93
  }, [config.minimumEntries, value.length]);
95
94
  var onRemoveItem = /*#__PURE__*/function () {
96
95
  var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(item) {
@@ -121,7 +120,7 @@ var Collection = function Collection(_ref) {
121
120
  className: classes('title')
122
121
  }, config.label), value && value.map(function (item, index) {
123
122
  var _config$removeLocatio;
124
- var full_path = "".concat(config.full_path || config.fieldId, "[").concat(index, "]");
123
+ var fullPath = "".concat(config.fullPath || config.fieldId, "[").concat(index, "]");
125
124
  var labelCount = (config.countOffset || 0) + index + 1;
126
125
  var itemTitle = _utils.default.interpolateString(labels.item, _objectSpread(_objectSpread({}, item), {}, {
127
126
  index: labelCount
@@ -148,14 +147,14 @@ var Collection = function Collection(_ref) {
148
147
  fieldId: item.id,
149
148
  type: 'container',
150
149
  required: config.required,
151
- full_path: full_path,
150
+ full_path: fullPath,
152
151
  components: config.item.map(function (component) {
153
152
  return _objectSpread(_objectSpread({}, component), {}, {
154
153
  readonly: config.readonly ? true : component.readonly,
155
154
  label: _utils.default.interpolateString(component.label, _objectSpread(_objectSpread({}, item), {}, {
156
155
  index: labelCount
157
156
  })),
158
- full_path: "".concat(full_path, ".").concat(component.fieldId)
157
+ fullPath: "".concat(fullPath, ".").concat(component.fieldId)
159
158
  });
160
159
  })
161
160
  },
@@ -177,30 +176,39 @@ var Collection = function Collection(_ref) {
177
176
  };
178
177
  Collection.propTypes = {
179
178
  config: _propTypes.default.shape({
179
+ className: _propTypes.default.string,
180
+ countOffset: _propTypes.default.number,
181
+ disableAddAndRemove: _propTypes.default.bool,
180
182
  id: _propTypes.default.string.isRequired,
181
183
  fieldId: _propTypes.default.string.isRequired,
184
+ fullPath: _propTypes.default.string,
185
+ item: _propTypes.default.arrayOf(_propTypes.default.shape({
186
+ fieldId: _propTypes.default.string,
187
+ type: _propTypes.default.string
188
+ })),
182
189
  label: _propTypes.default.string,
183
190
  labels: _propTypes.default.shape({
184
191
  item: _propTypes.default.string,
185
192
  add: _propTypes.default.string,
186
193
  remove: _propTypes.default.string
187
194
  }),
195
+ minimumEntries: _propTypes.default.string,
196
+ readonly: _propTypes.default.bool,
188
197
  removeLocation: _propTypes.default.string,
189
- disableAddAndRemove: _propTypes.default.bool,
190
- countOffset: _propTypes.default.number,
191
- className: _propTypes.default.string,
192
- item: _propTypes.default.arrayOf(_propTypes.default.shape({
193
- fieldId: _propTypes.default.string,
194
- type: _propTypes.default.string
195
- }))
198
+ required: _propTypes.default.bool
196
199
  }).isRequired,
200
+ formData: _propTypes.default.shape({}),
201
+ onChange: _propTypes.default.func,
202
+ onTopLevelChange: _propTypes.default.func,
197
203
  value: _propTypes.default.arrayOf(_propTypes.default.shape()),
198
- formData: _propTypes.default.any,
199
- wrap: _propTypes.default.bool,
200
- onChange: _propTypes.default.func
204
+ wrap: _propTypes.default.bool
201
205
  };
202
206
  Collection.defaultProps = {
203
- value: []
207
+ formData: null,
208
+ onChange: undefined,
209
+ onTopLevelChange: undefined,
210
+ value: [],
211
+ wrap: false
204
212
  };
205
213
  var _default = Collection;
206
214
  exports.default = _default;
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = exports.DEFAULT_CLASS = void 0;
8
- var _propTypes = _interopRequireDefault(require("prop-types"));
9
8
  var _react = _interopRequireDefault(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _models = require("../../models");
11
11
  var _utils = _interopRequireDefault(require("../../utils"));
12
12
  var _FormComponent = _interopRequireDefault(require("./FormComponent"));
@@ -49,14 +49,14 @@ var Container = function Container(_ref) {
49
49
  }
50
50
  };
51
51
  var shouldShow = function shouldShow(options) {
52
- var full_path = "".concat(container.full_path || container.fieldId, ".").concat(options.fieldId);
52
+ var fullPath = "".concat(container.full_path || container.fieldId, ".").concat(options.fieldId);
53
53
  if (options.type === _models.ComponentTypes.CONTAINER) {
54
54
  return _utils.default.Container.show(_objectSpread(_objectSpread({}, options), {}, {
55
- full_path: full_path
55
+ fullPath: fullPath
56
56
  }), formData);
57
57
  }
58
58
  return _utils.default.Component.show(_objectSpread(_objectSpread({}, options), {}, {
59
- full_path: full_path
59
+ fullPath: fullPath
60
60
  }), formData);
61
61
  };
62
62
  var classes = _utils.default.classBuilder(DEFAULT_CLASS, [], container.className);
@@ -66,12 +66,12 @@ var Container = function Container(_ref) {
66
66
  }), container.components && container.components.filter(shouldShow).map(function (component, index) {
67
67
  var defaultValue = component.type === _models.ComponentTypes.FILE ? {} : '';
68
68
  var val = value ? value[component.fieldId] : defaultValue;
69
- var full_path = "".concat(container.full_path || container.fieldId, ".").concat(component.fieldId);
69
+ var fullPath = "".concat(container.full_path || container.fieldId, ".").concat(component.fieldId);
70
70
  return /*#__PURE__*/_react.default.createElement(_FormComponent.default, _extends({
71
71
  key: index
72
72
  }, attrs, {
73
73
  component: _objectSpread(_objectSpread({}, component), {}, {
74
- full_path: full_path,
74
+ full_path: fullPath,
75
75
  readonly: container.readonly ? true : component.readonly
76
76
  }),
77
77
  formData: formData,
@@ -84,19 +84,29 @@ var Container = function Container(_ref) {
84
84
  };
85
85
  Container.propTypes = {
86
86
  container: _propTypes.default.shape({
87
- id: _propTypes.default.string.isRequired,
88
- fieldId: _propTypes.default.string.isRequired,
87
+ className: _propTypes.default.string,
89
88
  components: _propTypes.default.arrayOf(_propTypes.default.shape({
90
89
  fieldId: _propTypes.default.string,
91
90
  type: _propTypes.default.string
92
- }))
91
+ })),
92
+ fieldId: _propTypes.default.string,
93
+ full_path: _propTypes.default.string,
94
+ id: _propTypes.default.string,
95
+ readonly: _propTypes.default.bool
93
96
  }).isRequired,
94
- value: _propTypes.default.any,
95
- formData: _propTypes.default.any,
96
- wrap: _propTypes.default.bool,
97
- onChange: _propTypes.default.func
97
+ formData: _propTypes.default.shape({}),
98
+ fullPath: _propTypes.default.string,
99
+ onChange: _propTypes.default.func,
100
+ onTopLevelChange: _propTypes.default.func,
101
+ value: _propTypes.default.string,
102
+ wrap: _propTypes.default.bool
98
103
  };
99
104
  Container.defaultProps = {
105
+ formData: null,
106
+ fullPath: '',
107
+ onChange: undefined,
108
+ onTopLevelChange: undefined,
109
+ value: null,
100
110
  wrap: true
101
111
  };
102
112
  var _default = Container;
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
- var _propTypes = _interopRequireDefault(require("prop-types"));
9
8
  var _react = _interopRequireWildcard(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _hooks = require("../../hooks");
11
11
  var _models = require("../../models");
12
12
  var _utils = _interopRequireDefault(require("../../utils"));
@@ -15,9 +15,9 @@ var _Collection = _interopRequireDefault(require("./Collection"));
15
15
  var _Container = _interopRequireDefault(require("./Container"));
16
16
  var _helpers = require("./helpers");
17
17
  var _excluded = ["component", "value", "formData", "wrap", "onChange", "onTopLevelChange"];
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
19
  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; }
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
21
  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; }
22
22
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
23
23
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
@@ -59,8 +59,10 @@ var FormComponent = function FormComponent(_ref) {
59
59
  var target = _ref2.target;
60
60
  if (typeof onChange === 'function') {
61
61
  if (component.type === _models.ComponentTypes.EMAIL) {
62
- target['value'] = target.value.trim();
62
+ // eslint-disable-next-line no-param-reassign
63
+ target.value = target.value.trim();
63
64
  }
65
+ // eslint-disable-next-line no-param-reassign
64
66
  target = (0, _helpers.addLabel)(target, component, data);
65
67
  onChange({
66
68
  target: target
@@ -130,21 +132,34 @@ var FormComponent = function FormComponent(_ref) {
130
132
  };
131
133
  FormComponent.propTypes = {
132
134
  component: _propTypes.default.shape({
133
- fieldId: _propTypes.default.string,
134
- label: _propTypes.default.string,
135
- hint: _propTypes.default.string,
135
+ additionalValidation: _propTypes.default.shape([]),
136
+ allowMultiple: _propTypes.default.bool,
137
+ content: _propTypes.default.shape({}),
138
+ cya_label: _propTypes.default.string,
136
139
  data: _propTypes.default.shape({
137
140
  options: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object])),
138
141
  url: _propTypes.default.string
139
- })
142
+ }),
143
+ disabled: _propTypes.default.bool,
144
+ fieldId: _propTypes.default.string,
145
+ full_path: _propTypes.default.string,
146
+ hint: _propTypes.default.string,
147
+ id: _propTypes.default.string,
148
+ label: _propTypes.default.string,
149
+ suffix: _propTypes.default.string,
150
+ type: _propTypes.default.string
140
151
  }).isRequired,
141
- value: _propTypes.default.any,
142
- formData: _propTypes.default.any,
152
+ value: _propTypes.default.string,
153
+ formData: _propTypes.default.shape({}),
143
154
  wrap: _propTypes.default.bool,
144
155
  onChange: _propTypes.default.func,
145
156
  onTopLevelChange: _propTypes.default.func
146
157
  };
147
158
  FormComponent.defaultProps = {
159
+ formData: null,
160
+ onChange: undefined,
161
+ onTopLevelChange: undefined,
162
+ value: null,
148
163
  wrap: true
149
164
  };
150
165
  var _default = FormComponent;
@@ -10,7 +10,8 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
10
10
  * @param {object} target The target to be updated.
11
11
  * @returns The updated target.
12
12
  */
13
- var addLabel = function addLabel(target, component, data) {
13
+ var addLabel = function addLabel(paramTarget, component, data) {
14
+ var target = paramTarget;
14
15
  // target.value can be an object in which case use value in object attribute
15
16
  var value = _typeof(target.value) === 'object' ? target.value.value : target.value;
16
17
  // find the reference data item using the value
@@ -18,8 +19,8 @@ var addLabel = function addLabel(target, component, data) {
18
19
  return String(e.id) === value;
19
20
  });
20
21
  // if item is null it means that the target.value can be used as a label otherwise use item.label
21
- target['label'] = item === undefined ? target.value : item.label;
22
- target['component'] = component.cya_label;
22
+ target.label = item === undefined ? target.value : item.label;
23
+ target.component = component.cya_label;
23
24
  return target;
24
25
  };
25
26
  var _default = addLabel;