@ukhomeoffice/cop-react-form-renderer 4.74.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 (105) 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 +3 -3
  97. package/dist/utils/Validate/validateComponent.js +26 -20
  98. package/dist/utils/Validate/validateContainer.js +2 -2
  99. package/dist/utils/Validate/validateDate.js +2 -1
  100. package/dist/utils/Validate/validateEmail.js +1 -0
  101. package/dist/utils/Validate/validatePage.js +6 -3
  102. package/dist/utils/Validate/validatePage.test.js +9 -18
  103. package/dist/utils/Validate/validateRegex.js +2 -5
  104. package/dist/utils/Validate/validateRequired.js +2 -4
  105. package/package.json +3 -2
@@ -6,16 +6,16 @@ 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 _hooks = require("../../hooks");
12
12
  var _utils = _interopRequireDefault(require("../../utils"));
13
13
  var _FormComponent = _interopRequireDefault(require("../FormComponent"));
14
14
  var _PageActions = _interopRequireDefault(require("../PageActions"));
15
15
  require("./FormPage.scss");
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
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; }
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
19
  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; }
20
20
  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; }
21
21
  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; }
@@ -30,7 +30,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
30
30
  var DEFAULT_CLASS = 'hods-form__page';
31
31
  exports.DEFAULT_CLASS = DEFAULT_CLASS;
32
32
  var FormPage = function FormPage(_ref) {
33
- var _page$actions, _page$actions2;
33
+ var _formPage$actions, _page$actions;
34
34
  var page = _ref.page,
35
35
  _onAction = _ref.onAction,
36
36
  onWrapperChange = _ref.onWrapperChange,
@@ -58,7 +58,8 @@ var FormPage = function FormPage(_ref) {
58
58
  */
59
59
  var onPageChange = function onPageChange(_ref2) {
60
60
  var target = _ref2.target;
61
- page.formData[target.name] = target.value;
61
+ var formPage = page;
62
+ formPage.formData[target.name] = target.value;
62
63
  setPatch(function (prev) {
63
64
  return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, target.name, target.value));
64
65
  });
@@ -71,16 +72,19 @@ var FormPage = function FormPage(_ref) {
71
72
  ;
72
73
  };
73
74
  (0, _react.useEffect)(function () {
75
+ // eslint-disable-next-line no-useless-concat
74
76
  var coreDocTitle = document.title.replace('Error: ', '');
77
+ // eslint-disable-next-line prefer-template
75
78
  document.title = errors.length > 0 ? 'Error: ' + coreDocTitle : coreDocTitle;
76
79
  }, [errors]);
77
80
  var classes = _utils.default.classBuilder(classBlock, classModifiers, className);
78
- page.actions = (_page$actions = page.actions) === null || _page$actions === void 0 ? void 0 : _page$actions.map(function (action) {
81
+ var formPage = page;
82
+ formPage.actions = (_formPage$actions = formPage.actions) === null || _formPage$actions === void 0 ? void 0 : _formPage$actions.map(function (action) {
79
83
  return action.label ? _objectSpread(_objectSpread({}, action), {}, {
80
- label: _utils.default.interpolateString(action.label, page.formData)
84
+ label: _utils.default.interpolateString(action.label, formPage.formData)
81
85
  }) : action;
82
86
  });
83
- page.formData = _utils.default.Operate.runPageOperations(page, _objectSpread(_objectSpread({}, page.formData), patch), onWrapperChange || onPageChange);
87
+ formPage.formData = _utils.default.Operate.runPageOperations(formPage, _objectSpread(_objectSpread({}, formPage.formData), patch), onWrapperChange || onPageChange);
84
88
  return /*#__PURE__*/_react.default.createElement("div", {
85
89
  className: classes(),
86
90
  key: page.id
@@ -99,7 +103,7 @@ var FormPage = function FormPage(_ref) {
99
103
  formData: page.formData
100
104
  });
101
105
  }), /*#__PURE__*/_react.default.createElement(_PageActions.default, {
102
- actions: (_page$actions2 = page.actions) === null || _page$actions2 === void 0 ? void 0 : _page$actions2.filter(function (action) {
106
+ actions: (_page$actions = page.actions) === null || _page$actions === void 0 ? void 0 : _page$actions.filter(function (action) {
103
107
  return _utils.default.Component.show(action, page.formData);
104
108
  }),
105
109
  onAction: function onAction(action) {
@@ -108,26 +112,33 @@ var FormPage = function FormPage(_ref) {
108
112
  }));
109
113
  };
110
114
  FormPage.propTypes = {
111
- page: _propTypes.default.shape({
112
- id: _propTypes.default.string.isRequired,
113
- title: _propTypes.default.string,
114
- components: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object])).isRequired,
115
- actions: _propTypes.default.array,
116
- formData: _propTypes.default.object.isRequired
117
- }).isRequired,
115
+ classBlock: _propTypes.default.string,
116
+ classModifiers: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
117
+ className: _propTypes.default.string,
118
+ hashLink: _propTypes.default.string,
118
119
  onAction: _propTypes.default.func.isRequired,
119
120
  // If passed in, this function will override the default
120
121
  // onPageChange functionality. Useful for anything that
121
122
  // wants to wrap FormPage.
122
123
  onWrapperChange: _propTypes.default.func,
123
124
  onChange: _propTypes.default.func,
124
- classBlock: _propTypes.default.string,
125
- classModifiers: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
126
- className: _propTypes.default.string
125
+ onTopLevelChange: _propTypes.default.func,
126
+ page: _propTypes.default.shape({
127
+ id: _propTypes.default.string.isRequired,
128
+ title: _propTypes.default.string,
129
+ components: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({})])).isRequired,
130
+ actions: _propTypes.default.shape([]),
131
+ formData: _propTypes.default.shape({}).isRequired
132
+ }).isRequired
127
133
  };
128
134
  FormPage.defaultProps = {
129
135
  classBlock: DEFAULT_CLASS,
130
- classModifiers: []
136
+ classModifiers: [],
137
+ className: '',
138
+ hashLink: '',
139
+ onChange: undefined,
140
+ onTopLevelChange: undefined,
141
+ onWrapperChange: undefined
131
142
  };
132
143
  var _default = FormPage;
133
144
  exports.default = _default;
@@ -6,8 +6,8 @@ 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 _context = require("../../context");
12
12
  var _hooks = require("../../hooks");
13
13
  var _models = require("../../models");
@@ -20,11 +20,10 @@ var _handlers = _interopRequireDefault(require("./handlers"));
20
20
  var _helpers = _interopRequireDefault(require("./helpers"));
21
21
  var _onCYAAction = _interopRequireDefault(require("./onCYAAction"));
22
22
  var _onPageAction = _interopRequireDefault(require("./onPageAction"));
23
- var _onTaskAction2 = _interopRequireDefault(require("./onTaskAction"));
24
23
  require("./FormRenderer.scss");
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
25
  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); }
26
26
  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; }
27
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
27
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
29
28
  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; }
30
29
  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; }
@@ -50,7 +49,7 @@ var FormRenderer = function FormRenderer(_ref) {
50
49
  classBlock = _ref.classBlock,
51
50
  classModifiers = _ref.classModifiers,
52
51
  className = _ref.className,
53
- hide_title = _ref.hide_title,
52
+ hideTitle = _ref.hide_title,
54
53
  summaryListClassModifiers = _ref.summaryListClassModifiers,
55
54
  noChangeAction = _ref.noChangeAction,
56
55
  newPageId = _ref.newPageId,
@@ -69,7 +68,7 @@ var FormRenderer = function FormRenderer(_ref) {
69
68
  classModifiers: classModifiers,
70
69
  className: className,
71
70
  hashLink: hashLink,
72
- hide_title: hide_title,
71
+ hide_title: hideTitle,
73
72
  summaryListClassModifiers: summaryListClassModifiers,
74
73
  noChangeAction: noChangeAction,
75
74
  newPageId: newPageId,
@@ -91,7 +90,7 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
91
90
  classModifiers = _ref2.classModifiers,
92
91
  className = _ref2.className,
93
92
  hashLink = _ref2.hashLink,
94
- hide_title = _ref2.hide_title,
93
+ hideTitle = _ref2.hide_title,
95
94
  summaryListClassModifiers = _ref2.summaryListClassModifiers,
96
95
  noChangeAction = _ref2.noChangeAction,
97
96
  newPageId = _ref2.newPageId,
@@ -163,7 +162,7 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
163
162
  });
164
163
  }
165
164
  setGoingBack(true);
166
- hooks.onGoingBack(e.state ? e.state : null);
165
+ hooks.onGoingBack();
167
166
  clearErrors();
168
167
  if (components && pages && data && (_formState$page = formState.page) !== null && _formState$page !== void 0 && _formState$page.formData && pagePoint === undefined) {
169
168
  var submissionData = _utils.default.Format.form({
@@ -218,7 +217,8 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
218
217
  setPagePoint(undefined);
219
218
  // In case of refresh the current task needs to be reset
220
219
  hooks.onFormLoad(function (currentTask) {
221
- return setCurrentTask(currentTask);
220
+ var task = currentTask;
221
+ setCurrentTask(task);
222
222
  });
223
223
  }, [hooks]);
224
224
  (0, _react.useEffect)(function () {
@@ -241,8 +241,9 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
241
241
  var pages = currentTask.fullPages;
242
242
  if (pages) {
243
243
  pages.forEach(function (page) {
244
- if (page) {
245
- page.formData = data;
244
+ var p = page;
245
+ if (p) {
246
+ p.formData = data;
246
247
  }
247
248
  });
248
249
  setCurrentTask(function (prev) {
@@ -277,6 +278,38 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
277
278
  hooks.onChange(data);
278
279
  };
279
280
 
281
+ // Kick off a task, gather required pages and move to the correct point
282
+ var onTaskAction = function onTaskAction(currentTask) {
283
+ if (currentTask) {
284
+ var task = currentTask;
285
+ task.fullPages = [];
286
+ task.pages.forEach(function (page) {
287
+ task.fullPages.push(_helpers.default.getPage(page, pages));
288
+ });
289
+ setCurrentTask(task);
290
+ var state = _objectSpread({}, task);
291
+ if (task.state === _models.TaskStates.TYPES.COMPLETE) {
292
+ if (hubDetails !== null && hubDetails !== void 0 && hubDetails.noTaskCYAs) {
293
+ // If the task is complete and there are no CYA's then show user first page
294
+ var currentPage = data.formStatus.tasks[task.name].currentPage;
295
+ onPageChange(task.pages[0] || currentPage);
296
+ } else if (task.customCYA) {
297
+ onPageChange(task.customCYA);
298
+ } else {
299
+ onPageChange(_models.FormPages.CYA, state);
300
+ }
301
+ } else if (task.state === _models.TaskStates.TYPES.IN_PROGRESS) {
302
+ var _currentPage = data.formStatus.tasks[task.name].currentPage;
303
+ onPageChange(_currentPage || task.pages[0], state);
304
+ } else if (task.firstPage) {
305
+ var _currentPage2 = task.firstPage;
306
+ onPageChange(_currentPage2 || task.pages[0], state);
307
+ } else {
308
+ onPageChange(task.pages[0], state);
309
+ }
310
+ }
311
+ };
312
+
280
313
  // Handle navigation from "Check your answers".
281
314
  // Passing a dataCallback allows changes to formData from the
282
315
  // CYA screen. This is necessary to allow changing the active
@@ -293,24 +326,26 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
293
326
  hubDetails.sections.every(function (section) {
294
327
  return section.tasks.every(function (task) {
295
328
  if (task.pages.includes(page.pageId) && task.name !== currentTask.name) {
296
- (0, _onTaskAction2.default)(task, pages, setCurrentTask, hubDetails, data, onPageChange, _models.FormPages);
329
+ onTaskAction(task);
297
330
  return false;
298
331
  }
299
332
  return true;
300
333
  });
301
334
  });
302
335
  }
336
+ ;
303
337
  if (page) {
304
338
  _handlers.default.cyaAction(page, pageId, onPageChange);
305
339
  }
306
340
  };
307
341
  var classes = _utils.default.classBuilder(classBlock, classModifiers, className);
308
342
  if (hub === _models.HubFormats.TASK) {
309
- cya.actions = [_models.PageAction.TYPES.SAVE_AND_CONTINUE, _models.PageAction.TYPES.SAVE_AND_RETURN];
343
+ var currentCYA = cya;
344
+ currentCYA.actions = [_models.PageAction.TYPES.SAVE_AND_CONTINUE, _models.PageAction.TYPES.SAVE_AND_RETURN];
310
345
  }
311
346
  return /*#__PURE__*/_react.default.createElement("div", {
312
347
  className: classes()
313
- }, title && !hide_title && pageId === _models.FormPages.HUB && /*#__PURE__*/_react.default.createElement(_copReactComponents.LargeHeading, null, title), formState.cya && /*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, _extends({
348
+ }, title && !hideTitle && pageId === _models.FormPages.HUB && /*#__PURE__*/_react.default.createElement(_copReactComponents.LargeHeading, null, title), formState.cya && /*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, _extends({
314
349
  pages: _helpers.default.getRelevantPages(formState, pages, currentTask.fullPages)
315
350
  }, cya, ((_formState$page4 = formState.page) === null || _formState$page4 === void 0 ? void 0 : _formState$page4.type) === _models.FormPages.PARTIAL_CYA && {
316
351
  actions: (_formState$page$actio = formState.page.actions) === null || _formState$page$actio === void 0 ? void 0 : _formState$page$actio.filter(function (action) {
@@ -322,16 +357,14 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
322
357
  },
323
358
  onRowAction: onCYARowAction,
324
359
  summaryListClassModifiers: summaryListClassModifiers,
325
- hide_title: hide_title,
360
+ hide_title: hideTitle,
326
361
  noChangeAction: (_formState$cya$hideCh = formState.cya.hideChangeActions) !== null && _formState$cya$hideCh !== void 0 ? _formState$cya$hideCh : noChangeAction,
327
362
  noGroupAction: (_formState$cya$hideGr = formState.cya.hideGroupActions) !== null && _formState$cya$hideGr !== void 0 ? _formState$cya$hideGr : false,
328
363
  sections: typeof hubDetails !== 'undefined' ? hubDetails.sections : [],
329
364
  type: type
330
365
  })), hub === _models.HubFormats.TASK && formState.pageId === _models.FormPages.HUB && /*#__PURE__*/_react.default.createElement(_TaskList.default, _extends({}, hubDetails, {
331
366
  refNumber: data.businessKey,
332
- onTaskAction: function onTaskAction(task) {
333
- (0, _onTaskAction2.default)(task, pages, setCurrentTask, hubDetails, data, onPageChange, _models.FormPages);
334
- },
367
+ onTaskAction: onTaskAction,
335
368
  formData: data
336
369
  })), formState.page && !formState.cya && !formState.page.collection && /*#__PURE__*/_react.default.createElement(_FormPage.default, {
337
370
  page: formState.page,
@@ -347,36 +380,59 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
347
380
  }
348
381
  }));
349
382
  };
350
- FormRenderer.propTypes = InternalFormRenderer.propTypes = {
351
- title: _propTypes.default.string,
352
- /** See <a href="/?path=/docs/f-json--page#formtypes">FormTypes</a>. */
353
- type: _propTypes.default.oneOf([_models.FormTypes.CYA, _models.FormTypes.FORM, _models.FormTypes.HUB, _models.FormTypes.TASK, _models.FormTypes.WIZARD, _models.FormTypes.TASK_CYA, _models.FormTypes.FORM_WITH_TASK]).isRequired,
354
- components: _propTypes.default.arrayOf(_propTypes.default.object).isRequired,
355
- pages: _propTypes.default.arrayOf(_propTypes.default.object).isRequired,
356
- hashLink: _propTypes.default.bool,
357
- hub: _propTypes.default.object,
358
- cya: _propTypes.default.object,
359
- data: _propTypes.default.object,
360
- hooks: _propTypes.default.object,
383
+ var propTypes = {
361
384
  classBlock: _propTypes.default.string,
362
385
  classModifiers: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
363
386
  className: _propTypes.default.string,
387
+ components: _propTypes.default.arrayOf(_propTypes.default.shape({})).isRequired,
388
+ cya: _propTypes.default.shape({
389
+ actions: _propTypes.default.shape([])
390
+ }),
391
+ data: _propTypes.default.shape({
392
+ formStatus: _propTypes.default.shape({
393
+ page: _propTypes.default.shape({})
394
+ })
395
+ }),
396
+ hashLink: _propTypes.default.bool,
364
397
  hide_title: _propTypes.default.bool,
365
- summaryListClassModifiers: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
398
+ hooks: _propTypes.default.shape({}),
399
+ hub: _propTypes.default.shape({
400
+ nonSequential: _propTypes.default.bool,
401
+ sections: _propTypes.default.shape([])
402
+ }),
403
+ newPageId: _propTypes.default.string,
366
404
  noChangeAction: _propTypes.default.bool,
405
+ pages: _propTypes.default.arrayOf(_propTypes.default.shape({})).isRequired,
406
+ summaryListClassModifiers: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]),
407
+ title: _propTypes.default.string,
408
+ /** See <a href="/?path=/docs/f-json--page#formtypes">FormTypes</a>. */
409
+ type: _propTypes.default.oneOf([_models.FormTypes.CYA, _models.FormTypes.FORM, _models.FormTypes.HUB, _models.FormTypes.TASK, _models.FormTypes.WIZARD, _models.FormTypes.TASK_CYA, _models.FormTypes.FORM_WITH_TASK]).isRequired,
367
410
  viewOnly: _propTypes.default.bool
368
411
  };
369
- FormRenderer.defaultProps = InternalFormRenderer.defaultProps = {
370
- type: _models.FormTypes.HUB,
371
- components: [],
372
- pages: [],
412
+ var defaultProps = {
373
413
  classBlock: DEFAULT_CLASS,
414
+ className: '',
374
415
  classModifiers: [],
416
+ cya: {
417
+ actions: []
418
+ },
419
+ data: null,
375
420
  hashLink: false,
376
421
  hide_title: false,
377
- summaryListClassModifiers: [],
422
+ hooks: null,
423
+ hub: {
424
+ nonSequential: false,
425
+ sections: []
426
+ },
427
+ newPageId: '',
378
428
  noChangeAction: false,
429
+ summaryListClassModifiers: [],
430
+ title: '',
379
431
  viewOnly: true
380
432
  };
433
+ FormRenderer.propTypes = propTypes;
434
+ InternalFormRenderer.propTypes = propTypes;
435
+ FormRenderer.defaultProps = defaultProps;
436
+ InternalFormRenderer.defaultProps = defaultProps;
381
437
  var _default = FormRenderer;
382
438
  exports.default = _default;
@@ -51,8 +51,9 @@ describe('components', function () {
51
51
  container.remove();
52
52
  container = null;
53
53
  });
54
- var checkForm = function checkForm(container) {
55
- var form = container.childNodes[0];
54
+ var checkForm = function checkForm(formContainer) {
55
+ var formWrapper = formContainer;
56
+ var form = formWrapper.childNodes[0];
56
57
  expect(form.tagName).toEqual('DIV');
57
58
  expect(form.classList).toContain(_FormRenderer.DEFAULT_CLASS);
58
59
  return form;
@@ -395,7 +396,7 @@ describe('components', function () {
395
396
  })));
396
397
  case 2:
397
398
  form = checkForm(container);
398
- expect(form.childNodes.length).toEqual(1); //Hub page (= CYA)
399
+ expect(form.childNodes.length).toEqual(1); // Hub page (= CYA)
399
400
  hub = form.childNodes[0];
400
401
  expect(hub.tagName).toEqual('DIV');
401
402
  expect(hub.classList).toContain(_CheckYourAnswers.DEFAULT_CLASS);
@@ -463,7 +464,7 @@ describe('components', function () {
463
464
  while (1) switch (_context20.prev = _context20.next) {
464
465
  case 0:
465
466
  ON_SUBMIT_CALLS = [];
466
- ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess, onError) {
467
+ ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess) {
467
468
  ON_SUBMIT_CALLS.push(payload);
468
469
  onSuccess();
469
470
  };
@@ -511,7 +512,7 @@ describe('components', function () {
511
512
  while (1) switch (_context22.prev = _context22.next) {
512
513
  case 0:
513
514
  ON_SUBMIT_CALLS = [];
514
- ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess, onError) {
515
+ ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess) {
515
516
  ON_SUBMIT_CALLS.push(payload);
516
517
  onSuccess();
517
518
  };
@@ -546,6 +547,7 @@ describe('components', function () {
546
547
  case 7:
547
548
  taskList = container.childNodes[0].childNodes[1];
548
549
  taskList.childNodes.forEach(function (child) {
550
+ // eslint-disable-next-line no-console
549
551
  console.log("taskList, child = ".concat(JSON.stringify(child.textContent)));
550
552
  });
551
553
  expect(taskList.childNodes[5].textContent).not.toEqual("test text");
@@ -562,7 +564,7 @@ describe('components', function () {
562
564
  while (1) switch (_context24.prev = _context24.next) {
563
565
  case 0:
564
566
  ON_SUBMIT_CALLS = [];
565
- ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess, onError) {
567
+ ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess) {
566
568
  ON_SUBMIT_CALLS.push(payload);
567
569
  onSuccess();
568
570
  };
@@ -584,18 +586,18 @@ describe('components', function () {
584
586
  }, _callee23);
585
587
  })));
586
588
  case 5:
587
- taskList = container.childNodes[0].childNodes[1]; //Check statuses are correct
589
+ taskList = container.childNodes[0].childNodes[1]; // Check statuses are correct
588
590
  firstTaskStatus = taskList.childNodes[3].childNodes[1].childNodes[1];
589
591
  expect(firstTaskStatus.textContent).toEqual(_models.TaskStates.DETAILS[_models.TaskStates.TYPES.NOT_STARTED].label);
590
592
  secondTaskStatus = taskList.childNodes[3].childNodes[2].childNodes[1];
591
593
  expect(secondTaskStatus.textContent).toEqual(_models.TaskStates.DETAILS[_models.TaskStates.TYPES.CANNOT_START_YET].label);
592
594
 
593
- //Launch first task
595
+ // Launch first task
594
596
  firstTask = taskList.childNodes[3].childNodes[1].childNodes[0].childNodes[0];
595
597
  expect(firstTask.textContent).toEqual('Date, location and mode details');
596
598
  _react.fireEvent.click(firstTask, {});
597
599
 
598
- //Fill first page and navigate
600
+ // Fill first page and navigate
599
601
  newPage = container.childNodes[0].childNodes[0];
600
602
  expect(newPage.childNodes[0].textContent).toEqual('Event Date');
601
603
  _react.fireEvent.change(newPage.childNodes[1].childNodes[0].childNodes[2].childNodes[0].childNodes[0].childNodes[1], {
@@ -619,7 +621,7 @@ describe('components', function () {
619
621
  continueButton = newPage.childNodes[2].childNodes[0];
620
622
  _react.fireEvent.click(continueButton, {});
621
623
 
622
- //Fill second page and navigate
624
+ // Fill second page and navigate
623
625
  newPage = container.childNodes[0].childNodes[0];
624
626
  expect(newPage.childNodes[0].textContent).toEqual('Event Mode');
625
627
  seaButton = newPage.childNodes[1].childNodes[0].childNodes[2].childNodes[0];
@@ -628,7 +630,7 @@ describe('components', function () {
628
630
  continueButton = newPage.childNodes[2].childNodes[0];
629
631
  _react.fireEvent.click(continueButton, {});
630
632
 
631
- //Click change to mode on CYA page
633
+ // Click change to mode on CYA page
632
634
  cyaPageChange = container.childNodes[0].childNodes[0];
633
635
  expect(cyaPageChange.childNodes[0].textContent).toEqual('Check your answers');
634
636
  modeChangeLink = cyaPageChange.childNodes[4].childNodes[0].childNodes[0].childNodes[2].childNodes[0];
@@ -645,23 +647,23 @@ describe('components', function () {
645
647
  continueButton = changePage.childNodes[2].childNodes[0];
646
648
  _react.fireEvent.click(continueButton, {});
647
649
 
648
- //Continue on from CYA page
650
+ // Continue on from CYA page
649
651
  cyaPage = container.childNodes[0].childNodes[0];
650
652
  expect(cyaPage.childNodes[0].textContent).toEqual('Check your answers');
651
653
  expect(cyaPage.childNodes[5].childNodes[0].textContent).toEqual('Save and continue');
652
654
  expect(cyaPage.childNodes[5].childNodes[1].textContent).toEqual('Save and return later');
653
655
  _react.fireEvent.click(cyaPage.childNodes[5].childNodes[0], {});
654
656
 
655
- //Should be back at task list
657
+ // Should be back at task list
656
658
  expect(container.childNodes[0].childNodes[0].textContent).toEqual('Task List Form');
657
659
 
658
- //Check statuses are correct
660
+ // Check statuses are correct
659
661
  firstTaskStatus = container.childNodes[0].childNodes[1].childNodes[3].childNodes[1].childNodes[1];
660
662
  expect(firstTaskStatus.textContent).toEqual(_models.TaskStates.DETAILS[_models.TaskStates.TYPES.COMPLETE].label);
661
663
  secondTaskStatus = container.childNodes[0].childNodes[1].childNodes[3].childNodes[2].childNodes[1];
662
664
  expect(secondTaskStatus.textContent).toEqual(_models.TaskStates.DETAILS[_models.TaskStates.TYPES.NOT_STARTED].label);
663
665
 
664
- //Check final data submitted to backend is as expected
666
+ // Check final data submitted to backend is as expected
665
667
  finalSubmit = ON_SUBMIT_CALLS[ON_SUBMIT_CALLS.length - 1];
666
668
  expect(finalSubmit.date).toEqual('7-7-2022');
667
669
  expect(finalSubmit.mode).toEqual('air');
@@ -677,7 +679,7 @@ describe('components', function () {
677
679
  return _regeneratorRuntime().wrap(function _callee26$(_context26) {
678
680
  while (1) switch (_context26.prev = _context26.next) {
679
681
  case 0:
680
- ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess, onError) {
682
+ ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess) {
681
683
  onSuccess();
682
684
  };
683
685
  HOOKS = {
@@ -698,10 +700,10 @@ describe('components', function () {
698
700
  }, _callee25);
699
701
  })));
700
702
  case 4:
701
- taskList = container.childNodes[0].childNodes[1]; //Launch first task
703
+ taskList = container.childNodes[0].childNodes[1]; // Launch first task
702
704
  _react.fireEvent.click(taskList.childNodes[3].childNodes[1].childNodes[0].childNodes[0], {});
703
705
 
704
- //Fill first page and navigate
706
+ // Fill first page and navigate
705
707
  newPage = container.childNodes[0].childNodes[0];
706
708
  _react.fireEvent.change(newPage.childNodes[1].childNodes[0].childNodes[2].childNodes[0].childNodes[0].childNodes[1], {
707
709
  target: {
@@ -723,18 +725,18 @@ describe('components', function () {
723
725
  });
724
726
  _react.fireEvent.click(newPage.childNodes[2].childNodes[0], {});
725
727
 
726
- //Fill second page and navigate
728
+ // Fill second page and navigate
727
729
  newPage = container.childNodes[0].childNodes[0];
728
730
  _react.fireEvent.click(newPage.childNodes[1].childNodes[0].childNodes[2].childNodes[0].childNodes[0], {});
729
731
  _react.fireEvent.click(newPage.childNodes[2].childNodes[0], {});
730
732
 
731
- //Continue on from CYA page
733
+ // Continue on from CYA page
732
734
  _react.fireEvent.click(container.childNodes[0].childNodes[0].childNodes[5].childNodes[0], {});
733
735
 
734
- //Launch same task again
736
+ // Launch same task again
735
737
  _react.fireEvent.click(container.childNodes[0].childNodes[1].childNodes[3].childNodes[1].childNodes[0].childNodes[0], {});
736
738
 
737
- //Should be at CYA page
739
+ // Should be at CYA page
738
740
  expect(container.childNodes[0].childNodes[0].childNodes[0].textContent).toEqual('Check your answers');
739
741
  case 17:
740
742
  case "end":
@@ -747,7 +749,7 @@ describe('components', function () {
747
749
  return _regeneratorRuntime().wrap(function _callee28$(_context28) {
748
750
  while (1) switch (_context28.prev = _context28.next) {
749
751
  case 0:
750
- ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess, onError) {
752
+ ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess) {
751
753
  onSuccess();
752
754
  };
753
755
  HOOKS = {
@@ -781,10 +783,10 @@ describe('components', function () {
781
783
  }, _callee27);
782
784
  })));
783
785
  case 5:
784
- taskList = container.childNodes[0].childNodes[1]; //Launch first task
786
+ taskList = container.childNodes[0].childNodes[1]; // Launch first task
785
787
  _react.fireEvent.click(taskList.childNodes[3].childNodes[1].childNodes[0].childNodes[0], {});
786
788
 
787
- //Should be at Event Mode page
789
+ // Should be at Event Mode page
788
790
  expect(container.childNodes[0].childNodes[0].childNodes[0].textContent).toEqual('Event Mode');
789
791
  case 8:
790
792
  case "end":
@@ -797,7 +799,7 @@ describe('components', function () {
797
799
  return _regeneratorRuntime().wrap(function _callee30$(_context30) {
798
800
  while (1) switch (_context30.prev = _context30.next) {
799
801
  case 0:
800
- ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess, onError) {
802
+ ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess) {
801
803
  onSuccess();
802
804
  };
803
805
  HOOKS = {
@@ -918,7 +920,7 @@ describe('components', function () {
918
920
  while (1) switch (_context34.prev = _context34.next) {
919
921
  case 0:
920
922
  ON_SUBMIT_CALLS = [];
921
- ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess, onError) {
923
+ ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess) {
922
924
  ON_SUBMIT_CALLS.push(payload);
923
925
  onSuccess();
924
926
  };
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.handlers = exports.default = void 0;
6
+ exports.default = void 0;
7
7
  var _cyaAction = _interopRequireDefault(require("./cyaAction"));
8
8
  var _navigate = _interopRequireDefault(require("./navigate"));
9
9
  var _submissionError = _interopRequireDefault(require("./submissionError"));
@@ -13,6 +13,5 @@ var handlers = {
13
13
  navigate: _navigate.default,
14
14
  submissionError: _submissionError.default
15
15
  };
16
- exports.handlers = handlers;
17
16
  var _default = handlers;
18
17
  exports.default = _default;
@@ -13,38 +13,42 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
13
13
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
14
14
  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); }
15
15
  var parentComponents = ['radios', 'checkboxes'];
16
+ function getIdsToDelete(component, selectedValue) {
17
+ var _component$data, _component$data$optio;
18
+ var idsToDelete = [];
19
+ component === null || component === void 0 ? void 0 : (_component$data = component.data) === null || _component$data === void 0 ? void 0 : (_component$data$optio = _component$data.options) === null || _component$data$optio === void 0 ? void 0 : _component$data$optio.forEach(function (option) {
20
+ if (!(0, _optionIsSelected.default)(selectedValue, option) && option.nested) {
21
+ option.nested.forEach(function (nested) {
22
+ idsToDelete.push(nested.id);
23
+ });
24
+ }
25
+ });
26
+ return idsToDelete;
27
+ }
28
+ ;
16
29
  var cleanHiddenNestedData = function cleanHiddenNestedData(patch, page) {
17
30
  page.components.forEach(function (component) {
18
31
  if (!parentComponents.includes(component.type)) {
19
32
  return;
20
33
  }
21
- var idsToDelete = getIdsToDelete(component, patch[component.id]);
34
+ var _patch = patch;
35
+ var idsToDelete = getIdsToDelete(component, _patch[component.id]);
22
36
  idsToDelete.forEach(function (id) {
23
- delete patch[id];
37
+ delete _patch[id];
24
38
  });
25
39
  });
26
40
  if (page.collection && patch[page.collection.name]) {
27
41
  var _page$formData;
28
42
  var activeId = patch["".concat(page.collection.name, "ActiveId")] || ((_page$formData = page.formData) === null || _page$formData === void 0 ? void 0 : _page$formData["".concat(page.collection.name, "ActiveId")]);
29
- patch[page.collection.name] = patch[page.collection.name].map(function (entry) {
43
+ var _patch = patch;
44
+ _patch[page.collection.name] = _patch[page.collection.name].map(function (entry) {
30
45
  return entry.id === activeId ? cleanHiddenNestedData(entry, _objectSpread(_objectSpread({}, page), {}, {
31
46
  collection: undefined
32
47
  })) : entry;
33
48
  });
34
49
  }
50
+ ;
35
51
  return patch;
36
52
  };
37
- function getIdsToDelete(component, selectedValue) {
38
- var _component$data, _component$data$optio;
39
- var idsToDelete = [];
40
- component === null || component === void 0 ? void 0 : (_component$data = component.data) === null || _component$data === void 0 ? void 0 : (_component$data$optio = _component$data.options) === null || _component$data$optio === void 0 ? void 0 : _component$data$optio.forEach(function (option) {
41
- if (!(0, _optionIsSelected.default)(selectedValue, option) && option.nested) {
42
- option.nested.forEach(function (nested) {
43
- idsToDelete.push(nested.id);
44
- });
45
- }
46
- });
47
- return idsToDelete;
48
- }
49
53
  var _default = cleanHiddenNestedData;
50
54
  exports.default = _default;