@ukhomeoffice/cop-react-form-renderer 5.39.1 → 5.41.1

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 (195) hide show
  1. package/dist/components/CheckYourAnswers/Answer.js +1 -2
  2. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +4 -8
  3. package/dist/components/CheckYourAnswers/index.js +1 -2
  4. package/dist/components/CollectionPage/CollectionPage.js +2 -4
  5. package/dist/components/CollectionPage/index.js +1 -2
  6. package/dist/components/CollectionSummary/BannerStrip.js +2 -4
  7. package/dist/components/CollectionSummary/CollectionSummary.js +34 -11
  8. package/dist/components/CollectionSummary/Confirmation.js +4 -8
  9. package/dist/components/CollectionSummary/SummaryCard.js +30 -29
  10. package/dist/components/CollectionSummary/SummaryCard.scss +4 -0
  11. package/dist/components/CollectionSummary/SummaryCard.test.js +152 -101
  12. package/dist/components/CollectionSummary/index.js +1 -2
  13. package/dist/components/FormComponent/Collection.js +3 -5
  14. package/dist/components/FormComponent/Container.js +2 -4
  15. package/dist/components/FormComponent/FormComponent.js +1 -2
  16. package/dist/components/FormComponent/helpers/addLabel.js +1 -2
  17. package/dist/components/FormComponent/helpers/getComponentDisabled.js +1 -2
  18. package/dist/components/FormComponent/helpers/getComponentError.js +1 -2
  19. package/dist/components/FormComponent/helpers/getComponentFieldSet.js +2 -3
  20. package/dist/components/FormComponent/index.js +1 -2
  21. package/dist/components/FormPage/FormPage.js +2 -4
  22. package/dist/components/FormPage/index.js +1 -2
  23. package/dist/components/FormRenderer/FormRenderer.js +2 -4
  24. package/dist/components/FormRenderer/handlers/cyaAction.js +1 -2
  25. package/dist/components/FormRenderer/handlers/getPageId.js +1 -2
  26. package/dist/components/FormRenderer/handlers/index.js +1 -2
  27. package/dist/components/FormRenderer/handlers/navigate.js +1 -2
  28. package/dist/components/FormRenderer/handlers/submissionError.js +1 -2
  29. package/dist/components/FormRenderer/helpers/canActionProceed.js +1 -2
  30. package/dist/components/FormRenderer/helpers/canCYASubmit.js +1 -2
  31. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +2 -3
  32. package/dist/components/FormRenderer/helpers/getCYA.js +1 -2
  33. package/dist/components/FormRenderer/helpers/getFormState.js +1 -2
  34. package/dist/components/FormRenderer/helpers/getNextPageId.js +2 -3
  35. package/dist/components/FormRenderer/helpers/getPage.js +1 -2
  36. package/dist/components/FormRenderer/helpers/getRelevantPages.js +1 -2
  37. package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +1 -2
  38. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +1 -2
  39. package/dist/components/FormRenderer/helpers/index.js +1 -2
  40. package/dist/components/FormRenderer/index.js +1 -2
  41. package/dist/components/FormRenderer/onCYAAction.js +1 -2
  42. package/dist/components/FormRenderer/onPageAction.js +1 -2
  43. package/dist/components/FormRenderer/onTaskAction.js +1 -2
  44. package/dist/components/PageActions/ActionButton.js +2 -4
  45. package/dist/components/PageActions/PageActions.js +1 -2
  46. package/dist/components/PageActions/index.js +1 -2
  47. package/dist/components/SummaryList/GroupAction.js +1 -2
  48. package/dist/components/SummaryList/RowAction.js +1 -2
  49. package/dist/components/SummaryList/SummaryList.js +2 -4
  50. package/dist/components/SummaryList/SummaryListHeadingRow.js +1 -2
  51. package/dist/components/SummaryList/SummaryListRow.js +1 -2
  52. package/dist/components/SummaryList/SummaryListTitleRow.js +1 -2
  53. package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +1 -2
  54. package/dist/components/SummaryList/helpers/getRowActionAttributes.js +1 -2
  55. package/dist/components/SummaryList/index.js +1 -2
  56. package/dist/components/TaskList/Task.js +2 -4
  57. package/dist/components/TaskList/TaskList.js +3 -6
  58. package/dist/components/TaskList/TaskState.js +2 -4
  59. package/dist/components/TaskList/index.js +1 -2
  60. package/dist/context/HooksContext/HooksContext.js +3 -6
  61. package/dist/context/HooksContext/index.js +1 -2
  62. package/dist/context/ValidationContext/ValidationContext.js +2 -4
  63. package/dist/context/ValidationContext/index.js +1 -2
  64. package/dist/hooks/useAxios.js +1 -2
  65. package/dist/hooks/useGetRequest.js +6 -12
  66. package/dist/hooks/useHooks.js +1 -2
  67. package/dist/hooks/useRefData.js +3 -6
  68. package/dist/hooks/useValidation.js +1 -2
  69. package/dist/index.js +1 -2
  70. package/dist/models/CollectionLabels.js +1 -2
  71. package/dist/models/ComponentTypes.js +1 -2
  72. package/dist/models/EventTypes.js +1 -2
  73. package/dist/models/FormPages.js +1 -2
  74. package/dist/models/FormTypes.js +1 -2
  75. package/dist/models/HubFormats.js +1 -2
  76. package/dist/models/PageAction.js +3 -6
  77. package/dist/models/TaskStates.js +2 -4
  78. package/dist/models/index.js +1 -2
  79. package/dist/setupTests.js +6 -11
  80. package/dist/utils/CheckYourAnswers/getCYAAction.js +1 -2
  81. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +1 -2
  82. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +1 -2
  83. package/dist/utils/CheckYourAnswers/getCYARow.js +2 -3
  84. package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +1 -2
  85. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +1 -2
  86. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +1 -2
  87. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +1 -2
  88. package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +1 -2
  89. package/dist/utils/CheckYourAnswers/index.js +1 -2
  90. package/dist/utils/CheckYourAnswers/showComponentCYA.js +2 -4
  91. package/dist/utils/CollectionPage/addCollectionPageEntry.js +1 -2
  92. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +1 -2
  93. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +5 -5
  94. package/dist/utils/CollectionPage/getCollectionPageActiveId.js +1 -2
  95. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +1 -2
  96. package/dist/utils/CollectionPage/getCollectionPageData.js +1 -2
  97. package/dist/utils/CollectionPage/getQuickEditPage.js +2 -3
  98. package/dist/utils/CollectionPage/index.js +1 -2
  99. package/dist/utils/CollectionPage/mergeCollectionPages.js +1 -2
  100. package/dist/utils/CollectionPage/removeCollectionPageEntry.js +1 -2
  101. package/dist/utils/CollectionPage/setCollectionPageData.js +1 -2
  102. package/dist/utils/Component/addShowWhen.js +1 -2
  103. package/dist/utils/Component/applyToComponentTree.js +1 -2
  104. package/dist/utils/Component/cleanAttributes.js +2 -4
  105. package/dist/utils/Component/elevateNestedComponents.js +3 -4
  106. package/dist/utils/Component/getComponent.js +2 -4
  107. package/dist/utils/Component/getDefaultValue.js +1 -2
  108. package/dist/utils/Component/getDefaultValueFromConfig.js +1 -2
  109. package/dist/utils/Component/index.js +1 -2
  110. package/dist/utils/Component/isEditable.js +2 -4
  111. package/dist/utils/Component/optionIsSelected.js +1 -2
  112. package/dist/utils/Component/setupContainerComponentsPath.js +1 -2
  113. package/dist/utils/Component/showComponent.js +1 -2
  114. package/dist/utils/Component/wrapInFormGroup.js +1 -2
  115. package/dist/utils/Condition/index.js +1 -2
  116. package/dist/utils/Condition/meetsAllConditions.js +1 -2
  117. package/dist/utils/Condition/meetsCondition.js +1 -2
  118. package/dist/utils/Condition/meetsOneCondition.js +1 -2
  119. package/dist/utils/Condition/setupConditions.js +1 -2
  120. package/dist/utils/Container/getEditableComponents.js +1 -2
  121. package/dist/utils/Container/index.js +1 -2
  122. package/dist/utils/Container/setupNesting.js +3 -4
  123. package/dist/utils/Container/showContainer.js +1 -2
  124. package/dist/utils/Data/applyFormula.js +1 -2
  125. package/dist/utils/Data/getAutocompleteSource.js +12 -3
  126. package/dist/utils/Data/getAutocompleteSource.test.js +38 -0
  127. package/dist/utils/Data/getDataPath.js +1 -2
  128. package/dist/utils/Data/getOptions.js +1 -2
  129. package/dist/utils/Data/getSourceData.js +1 -2
  130. package/dist/utils/Data/index.js +1 -2
  131. package/dist/utils/Data/refDataToOptions.js +1 -2
  132. package/dist/utils/Data/setDataItem.js +1 -2
  133. package/dist/utils/Data/setupFormData.js +1 -2
  134. package/dist/utils/Data/setupRefDataUrlForComponent.js +1 -2
  135. package/dist/utils/FormPage/applyConditionalProperties.js +1 -2
  136. package/dist/utils/FormPage/getFormPage.js +1 -2
  137. package/dist/utils/FormPage/getFormPages.js +1 -2
  138. package/dist/utils/FormPage/getPageActions.js +1 -2
  139. package/dist/utils/FormPage/getPageTitle.js +1 -2
  140. package/dist/utils/FormPage/getParagraphFromText.js +1 -2
  141. package/dist/utils/FormPage/index.js +1 -2
  142. package/dist/utils/FormPage/showFormPage.js +1 -2
  143. package/dist/utils/FormPage/showFormPageCYA.js +1 -2
  144. package/dist/utils/FormPage/useComponent.js +1 -2
  145. package/dist/utils/Format/formatData.js +1 -2
  146. package/dist/utils/Format/formatDataForComponent.js +2 -4
  147. package/dist/utils/Format/formatDataForForm.js +1 -2
  148. package/dist/utils/Format/formatDataForPage.js +2 -4
  149. package/dist/utils/Format/index.js +1 -2
  150. package/dist/utils/Hub/getFormHub.js +1 -2
  151. package/dist/utils/Hub/index.js +1 -2
  152. package/dist/utils/Meta/constants.js +2 -4
  153. package/dist/utils/Meta/documents/getDocuments.js +1 -2
  154. package/dist/utils/Meta/documents/index.js +1 -2
  155. package/dist/utils/Meta/documents/setDocumentsForField.js +1 -2
  156. package/dist/utils/Meta/index.js +1 -2
  157. package/dist/utils/Operate/checkValueIsTruthy.js +1 -2
  158. package/dist/utils/Operate/getFirstOf.js +1 -2
  159. package/dist/utils/Operate/getIndexOfMatchingValueIn.js +1 -2
  160. package/dist/utils/Operate/index.js +1 -2
  161. package/dist/utils/Operate/persistValueInFormData.js +1 -2
  162. package/dist/utils/Operate/runPageOperations.js +1 -2
  163. package/dist/utils/Operate/setValueInFormData.js +1 -2
  164. package/dist/utils/Operate/shouldRun.js +1 -2
  165. package/dist/utils/Validate/additional/conditionallyRequired.js +1 -2
  166. package/dist/utils/Validate/additional/index.js +1 -2
  167. package/dist/utils/Validate/additional/mustBeAfter.js +1 -2
  168. package/dist/utils/Validate/additional/mustBeBefore.js +1 -2
  169. package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +1 -2
  170. package/dist/utils/Validate/additional/mustBeGreaterThan.js +1 -2
  171. package/dist/utils/Validate/additional/mustBeInTheFuture.js +1 -2
  172. package/dist/utils/Validate/additional/mustBeInThePast.js +1 -2
  173. package/dist/utils/Validate/additional/mustBeLessThan.js +1 -2
  174. package/dist/utils/Validate/additional/mustBeLongerThan.js +1 -2
  175. package/dist/utils/Validate/additional/mustBeNumbersOnly.js +1 -2
  176. package/dist/utils/Validate/additional/mustBeShorterThan.js +1 -2
  177. package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +1 -2
  178. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +1 -2
  179. package/dist/utils/Validate/additional/mustNotContainSql.js +1 -2
  180. package/dist/utils/Validate/additional/mustSelectOnlyOne.js +1 -2
  181. package/dist/utils/Validate/additional/utils.js +3 -6
  182. package/dist/utils/Validate/index.js +1 -2
  183. package/dist/utils/Validate/validateCollection.js +1 -2
  184. package/dist/utils/Validate/validateComponent.js +2 -3
  185. package/dist/utils/Validate/validateContainer.js +1 -2
  186. package/dist/utils/Validate/validateDate.js +2 -4
  187. package/dist/utils/Validate/validateEmail.js +1 -2
  188. package/dist/utils/Validate/validateMultifile.js +2 -4
  189. package/dist/utils/Validate/validatePage.js +1 -2
  190. package/dist/utils/Validate/validateRegex.js +1 -2
  191. package/dist/utils/Validate/validateRequired.js +1 -2
  192. package/dist/utils/Validate/validateTextArea.js +1 -2
  193. package/dist/utils/Validate/validateTime.js +1 -2
  194. package/dist/utils/index.js +1 -2
  195. package/package.json +2 -2
@@ -45,5 +45,4 @@ Answer.defaultProps = {
45
45
  formData: null,
46
46
  value: null
47
47
  };
48
- var _default = Answer;
49
- exports.default = _default;
48
+ var _default = exports.default = Answer;
@@ -33,12 +33,9 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
33
33
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } /* eslint-disable camelcase, react/no-array-index-key */ // Global imports
34
34
  // Local imports
35
35
  // Styles
36
- var DEFAULT_CLASS = 'hods-check-your-answers';
37
- exports.DEFAULT_CLASS = DEFAULT_CLASS;
38
- var DEFAULT_TITLE = 'Check your answers';
39
- exports.DEFAULT_TITLE = DEFAULT_TITLE;
40
- var DEFAULT_MARGIN_BOTTOM = 9;
41
- exports.DEFAULT_MARGIN_BOTTOM = DEFAULT_MARGIN_BOTTOM;
36
+ var DEFAULT_CLASS = exports.DEFAULT_CLASS = 'hods-check-your-answers';
37
+ var DEFAULT_TITLE = exports.DEFAULT_TITLE = 'Check your answers';
38
+ var DEFAULT_MARGIN_BOTTOM = exports.DEFAULT_MARGIN_BOTTOM = 9;
42
39
  var CheckYourAnswers = function CheckYourAnswers(_ref) {
43
40
  var title = _ref.title,
44
41
  _pages = _ref.pages,
@@ -242,5 +239,4 @@ CheckYourAnswers.defaultProps = {
242
239
  title: DEFAULT_TITLE,
243
240
  type: null
244
241
  };
245
- var _default = CheckYourAnswers;
246
- exports.default = _default;
242
+ var _default = exports.default = CheckYourAnswers;
@@ -6,5 +6,4 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _CheckYourAnswers = _interopRequireDefault(require("./CheckYourAnswers"));
8
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
- var _default = _CheckYourAnswers.default;
10
- exports.default = _default;
9
+ var _default = exports.default = _CheckYourAnswers.default;
@@ -27,8 +27,7 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
27
27
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // Global imports
28
28
  // Local imports.
29
29
  // Styles
30
- var DEFAULT_CLASS = _FormPage2.DEFAULT_CLASS;
31
- exports.DEFAULT_CLASS = DEFAULT_CLASS;
30
+ var DEFAULT_CLASS = exports.DEFAULT_CLASS = _FormPage2.DEFAULT_CLASS;
32
31
  var CollectionPage = function CollectionPage(_ref) {
33
32
  var page = _ref.page,
34
33
  onCollectionChange = _ref.onCollectionChange,
@@ -152,5 +151,4 @@ CollectionPage.defaultProps = {
152
151
  classModifiers: [],
153
152
  className: ''
154
153
  };
155
- var _default = CollectionPage;
156
- exports.default = _default;
154
+ var _default = exports.default = CollectionPage;
@@ -6,5 +6,4 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _CollectionPage = _interopRequireDefault(require("./CollectionPage"));
8
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
- var _default = _CollectionPage.default;
10
- exports.default = _default;
9
+ var _default = exports.default = _CollectionPage.default;
@@ -16,8 +16,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
16
16
 
17
17
  // Styles.
18
18
 
19
- var DEFAULT_CLASS = 'hods-form-banner-strip';
20
- exports.DEFAULT_CLASS = DEFAULT_CLASS;
19
+ var DEFAULT_CLASS = exports.DEFAULT_CLASS = 'hods-form-banner-strip';
21
20
  var BannerStrip = function BannerStrip(_ref) {
22
21
  var id = _ref.id,
23
22
  banners = _ref.banners,
@@ -58,5 +57,4 @@ BannerStrip.defaultProps = {
58
57
  formData: null,
59
58
  classModifiers: null
60
59
  };
61
- var _default = BannerStrip;
62
- exports.default = _default;
60
+ var _default = exports.default = BannerStrip;
@@ -29,8 +29,7 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
29
29
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // Global imports.
30
30
  // Local imports.
31
31
  // Styles.
32
- var DEFAULT_ADD_BUTTON_LABEL = 'Add';
33
- exports.DEFAULT_ADD_BUTTON_LABEL = DEFAULT_ADD_BUTTON_LABEL;
32
+ var DEFAULT_ADD_BUTTON_LABEL = exports.DEFAULT_ADD_BUTTON_LABEL = 'Add';
34
33
  var CollectionSummary = function CollectionSummary(_ref) {
35
34
  var _config$confirmation, _config$confirmation2;
36
35
  var config = _ref.config,
@@ -38,10 +37,14 @@ var CollectionSummary = function CollectionSummary(_ref) {
38
37
  onAction = _ref.onAction,
39
38
  onChange = _ref.onChange,
40
39
  pages = _ref.pages;
41
- var _useState = (0, _react.useState)(null),
40
+ var _useState = (0, _react.useState)([]),
42
41
  _useState2 = _slicedToArray(_useState, 2),
43
- entryToDelete = _useState2[0],
44
- setEntryToDelete = _useState2[1];
42
+ duplicatedEntries = _useState2[0],
43
+ setDuplicatedEntries = _useState2[1];
44
+ var _useState3 = (0, _react.useState)(null),
45
+ _useState4 = _slicedToArray(_useState3, 2),
46
+ entryToDelete = _useState4[0],
47
+ setEntryToDelete = _useState4[1];
45
48
  var data = (0, _react.useMemo)(function () {
46
49
  return _utils.default.CollectionPage.getData(config.collectionName, formData) || [];
47
50
  }, [formData]);
@@ -52,7 +55,21 @@ var CollectionSummary = function CollectionSummary(_ref) {
52
55
  return ((_page$collection = page.collection) === null || _page$collection === void 0 ? void 0 : _page$collection.name) === config.collectionName;
53
56
  });
54
57
  }, [pages]);
58
+ (0, _react.useEffect)(function () {
59
+ var storedEntries = localStorage.getItem('duplicatedEntries');
60
+ if (storedEntries) {
61
+ setDuplicatedEntries(JSON.parse(storedEntries));
62
+ }
63
+ }, []);
64
+ var removeDuplicatedEntry = function removeDuplicatedEntry(entryId) {
65
+ var filteredEntries = duplicatedEntries.filter(function (id) {
66
+ return id !== entryId;
67
+ });
68
+ localStorage.setItem('duplicatedEntries', JSON.stringify(filteredEntries));
69
+ setDuplicatedEntries(filteredEntries);
70
+ };
55
71
  var onSummaryCardChange = function onSummaryCardChange(page, entryId) {
72
+ removeDuplicatedEntry(entryId);
56
73
  if (typeof onAction !== 'function') {
57
74
  return;
58
75
  }
@@ -67,7 +84,12 @@ var CollectionSummary = function CollectionSummary(_ref) {
67
84
  };
68
85
  var onDuplicate = function onDuplicate(entry) {
69
86
  var _config$card;
70
- _utils.default.CollectionPage.duplicateEntry(config.collectionName, formData, entry.id, ((_config$card = config.card) === null || _config$card === void 0 || (_config$card = _config$card.duplicateAction) === null || _config$card === void 0 ? void 0 : _config$card.fieldsToIgnore) || []);
87
+ var newEntryId = _utils.default.CollectionPage.duplicateEntry(config.collectionName, formData, entry.id, ((_config$card = config.card) === null || _config$card === void 0 || (_config$card = _config$card.duplicateAction) === null || _config$card === void 0 ? void 0 : _config$card.fieldsToIgnore) || []);
88
+ if (newEntryId) {
89
+ var newData = [].concat(duplicatedEntries, [newEntryId]);
90
+ localStorage.setItem('duplicatedEntries', JSON.stringify(newData));
91
+ setDuplicatedEntries(newData);
92
+ }
71
93
  var parentCollection = config.collectionName.split('.').shift();
72
94
  // Report the whole top-level collection as being changed. We have to do this
73
95
  // because of how patch is applied to formData on a page submission.
@@ -143,12 +165,14 @@ var CollectionSummary = function CollectionSummary(_ref) {
143
165
  return setEntryToDelete(entry);
144
166
  },
145
167
  pages: pages,
146
- onQuickEdit: function onQuickEdit(target) {
147
- return onChange(target);
168
+ onQuickEdit: function onQuickEdit(target, entryId) {
169
+ removeDuplicatedEntry(entryId);
170
+ onChange(target);
148
171
  },
149
172
  parentCollectionName: config.collectionName.split('.').shift(),
150
173
  formData: formData,
151
- classModifiers: entry === entryToDelete ? ['deleting-summary-card'] : ['']
174
+ classModifiers: entry === entryToDelete ? ['deleting-summary-card'] : [''],
175
+ isDuplicated: duplicatedEntries.includes(entry.id)
152
176
  });
153
177
  }));
154
178
  };
@@ -183,5 +207,4 @@ CollectionSummary.defaultProps = {
183
207
  onChange: null,
184
208
  pages: []
185
209
  };
186
- var _default = CollectionSummary;
187
- exports.default = _default;
210
+ var _default = exports.default = CollectionSummary;
@@ -13,12 +13,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
13
13
 
14
14
  // Styles.
15
15
 
16
- var DEFAULT_CLASS = 'hods-form-confirmation';
17
- exports.DEFAULT_CLASS = DEFAULT_CLASS;
18
- var DEFAULT_MESSAGE = 'Are you sure?';
19
- exports.DEFAULT_MESSAGE = DEFAULT_MESSAGE;
20
- var DEFAULT_CONFIRM_LABEL = 'Confirm';
21
- exports.DEFAULT_CONFIRM_LABEL = DEFAULT_CONFIRM_LABEL;
16
+ var DEFAULT_CLASS = exports.DEFAULT_CLASS = 'hods-form-confirmation';
17
+ var DEFAULT_MESSAGE = exports.DEFAULT_MESSAGE = 'Are you sure?';
18
+ var DEFAULT_CONFIRM_LABEL = exports.DEFAULT_CONFIRM_LABEL = 'Confirm';
22
19
  var Confirmation = function Confirmation(_ref) {
23
20
  var id = _ref.id,
24
21
  message = _ref.message,
@@ -56,5 +53,4 @@ Confirmation.defaultProps = {
56
53
  children: null,
57
54
  classModifiers: []
58
55
  };
59
- var _default = Confirmation;
60
- exports.default = _default;
56
+ var _default = exports.default = Confirmation;
@@ -4,7 +4,7 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = exports.DEFAULT_TITLE = exports.DEFAULT_EDIT_LABEL = exports.DEFAULT_DUPLICATE_BUTTON_LABEL = exports.DEFAULT_DELETE_BUTTON_LABEL = exports.DEFAULT_CLASS = exports.DEFAULT_CHANGE_BUTTON_LABEL = void 0;
7
+ exports.default = exports.DEFAULT_TITLE = exports.DEFAULT_REMOVE_BUTTON_LABEL = exports.DEFAULT_FULL_EDIT_BUTTON_LABEL = exports.DEFAULT_EDIT_LABEL = exports.DEFAULT_DUPLICATE_BUTTON_LABEL = exports.DEFAULT_DELETE_BUTTON_LABEL = exports.DEFAULT_CLASS = exports.DEFAULT_CHANGE_BUTTON_LABEL = void 0;
8
8
  var _copReactComponents = require("@ukhomeoffice/cop-react-components");
9
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _react = _interopRequireWildcard(require("react"));
@@ -34,20 +34,16 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
34
34
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // Global imports.
35
35
  // Local imports.
36
36
  // Styles.
37
- var DEFAULT_CLASS = 'hods-form-summary-card';
38
- exports.DEFAULT_CLASS = DEFAULT_CLASS;
39
- var DEFAULT_TITLE = 'Item';
40
- exports.DEFAULT_TITLE = DEFAULT_TITLE;
41
- var DEFAULT_CHANGE_BUTTON_LABEL = 'Change';
42
- exports.DEFAULT_CHANGE_BUTTON_LABEL = DEFAULT_CHANGE_BUTTON_LABEL;
43
- var DEFAULT_DELETE_BUTTON_LABEL = 'Delete';
44
- exports.DEFAULT_DELETE_BUTTON_LABEL = DEFAULT_DELETE_BUTTON_LABEL;
45
- var DEFAULT_EDIT_LABEL = 'Quick Edit';
46
- exports.DEFAULT_EDIT_LABEL = DEFAULT_EDIT_LABEL;
47
- var DEFAULT_DUPLICATE_BUTTON_LABEL = 'Duplicate';
48
- exports.DEFAULT_DUPLICATE_BUTTON_LABEL = DEFAULT_DUPLICATE_BUTTON_LABEL;
37
+ var DEFAULT_CLASS = exports.DEFAULT_CLASS = 'hods-form-summary-card';
38
+ var DEFAULT_TITLE = exports.DEFAULT_TITLE = 'Item';
39
+ var DEFAULT_CHANGE_BUTTON_LABEL = exports.DEFAULT_CHANGE_BUTTON_LABEL = 'Change';
40
+ var DEFAULT_DELETE_BUTTON_LABEL = exports.DEFAULT_DELETE_BUTTON_LABEL = 'Delete';
41
+ var DEFAULT_EDIT_LABEL = exports.DEFAULT_EDIT_LABEL = 'Quick Edit';
42
+ var DEFAULT_DUPLICATE_BUTTON_LABEL = exports.DEFAULT_DUPLICATE_BUTTON_LABEL = 'Duplicate';
43
+ var DEFAULT_FULL_EDIT_BUTTON_LABEL = exports.DEFAULT_FULL_EDIT_BUTTON_LABEL = 'Full edit';
44
+ var DEFAULT_REMOVE_BUTTON_LABEL = exports.DEFAULT_REMOVE_BUTTON_LABEL = 'Remove';
49
45
  var SummaryCard = function SummaryCard(_ref) {
50
- var _config$changeAction2, _config$duplicateActi, _config$deleteAction, _masterPage$childPage;
46
+ var _config$changeAction2, _config$changeAction3, _config$duplicateActi, _config$deleteAction, _config$deleteAction2, _masterPage$childPage;
51
47
  var id = _ref.id,
52
48
  entryData = _ref.entryData,
53
49
  config = _ref.config,
@@ -60,12 +56,13 @@ var SummaryCard = function SummaryCard(_ref) {
60
56
  parentCollectionName = _ref.parentCollectionName,
61
57
  formData = _ref.formData,
62
58
  masterPage = _ref.masterPage,
63
- hideDetails = _ref.hideDetails;
64
- var classes = _copReactComponents.Utils.classBuilder(DEFAULT_CLASS, classModifiers, '');
59
+ hideDetails = _ref.hideDetails,
60
+ isDuplicated = _ref.isDuplicated;
65
61
  var _useState = (0, _react.useState)(false),
66
62
  _useState2 = _slicedToArray(_useState, 2),
67
63
  quickEdit = _useState2[0],
68
64
  setQuickEdit = _useState2[1];
65
+ var classes = _copReactComponents.Utils.classBuilder(DEFAULT_CLASS, classModifiers, isDuplicated ? 'duplicated' : '');
69
66
  var quickEditPage = (0, _react.useMemo)(function () {
70
67
  return (0, _getQuickEditPage.default)(config.quickEdit, pages, entryData);
71
68
  }, [pages, config, entryData]);
@@ -116,7 +113,7 @@ var SummaryCard = function SummaryCard(_ref) {
116
113
  name: parentCollectionName,
117
114
  value: allData
118
115
  }
119
- });
116
+ }, entryData.id);
120
117
  setQuickEdit(function (prevState) {
121
118
  return !prevState;
122
119
  });
@@ -150,7 +147,7 @@ var SummaryCard = function SummaryCard(_ref) {
150
147
  className: classes('header-content-detail')
151
148
  }, _copReactComponents.Utils.interpolateString(config.details, entryData))), /*#__PURE__*/_react.default.createElement("div", {
152
149
  className: classes('header-actions')
153
- }, config.quickEdit && /*#__PURE__*/_react.default.createElement(_copReactComponents.Button, {
150
+ }, config.quickEdit && isDuplicated && /*#__PURE__*/_react.default.createElement(_copReactComponents.Button, {
154
151
  id: "".concat(id, ".quickEditButton"),
155
152
  onClick: function onClick() {
156
153
  return setQuickEdit(function (prevState) {
@@ -165,11 +162,11 @@ var SummaryCard = function SummaryCard(_ref) {
165
162
  var _config$changeAction;
166
163
  return onChange((_config$changeAction = config.changeAction) === null || _config$changeAction === void 0 ? void 0 : _config$changeAction.page, entryData.id);
167
164
  },
168
- classModifiers: "secondary"
169
- }, ((_config$changeAction2 = config.changeAction) === null || _config$changeAction2 === void 0 ? void 0 : _config$changeAction2.label) || DEFAULT_CHANGE_BUTTON_LABEL), config.duplicateAction && typeof onDuplicate === 'function' && /*#__PURE__*/_react.default.createElement(_copReactComponents.Button, {
165
+ classModifiers: isDuplicated ? 'primary' : 'secondary'
166
+ }, isDuplicated ? ((_config$changeAction2 = config.changeAction) === null || _config$changeAction2 === void 0 ? void 0 : _config$changeAction2.isDuplicateLabel) || DEFAULT_FULL_EDIT_BUTTON_LABEL : ((_config$changeAction3 = config.changeAction) === null || _config$changeAction3 === void 0 ? void 0 : _config$changeAction3.label) || DEFAULT_CHANGE_BUTTON_LABEL), config.duplicateAction && !isDuplicated && typeof onDuplicate === 'function' && /*#__PURE__*/_react.default.createElement(_copReactComponents.Button, {
170
167
  id: "".concat(id, ".duplicateButton"),
171
168
  onClick: function onClick() {
172
- return onDuplicate(entryData);
169
+ onDuplicate(entryData);
173
170
  },
174
171
  classModifiers: "secondary"
175
172
  }, ((_config$duplicateActi = config.duplicateAction) === null || _config$duplicateActi === void 0 ? void 0 : _config$duplicateActi.label) || DEFAULT_DUPLICATE_BUTTON_LABEL), config.deleteAction && typeof onDelete === 'function' && /*#__PURE__*/_react.default.createElement(_copReactComponents.Button, {
@@ -178,7 +175,7 @@ var SummaryCard = function SummaryCard(_ref) {
178
175
  return onDelete(entryData);
179
176
  },
180
177
  classModifiers: "secondary"
181
- }, ((_config$deleteAction = config.deleteAction) === null || _config$deleteAction === void 0 ? void 0 : _config$deleteAction.label) || DEFAULT_DELETE_BUTTON_LABEL))), quickEdit && /*#__PURE__*/_react.default.createElement(_FormPage.default, {
178
+ }, isDuplicated ? ((_config$deleteAction = config.deleteAction) === null || _config$deleteAction === void 0 ? void 0 : _config$deleteAction.isDuplicateLabel) || DEFAULT_REMOVE_BUTTON_LABEL : ((_config$deleteAction2 = config.deleteAction) === null || _config$deleteAction2 === void 0 ? void 0 : _config$deleteAction2.label) || DEFAULT_DELETE_BUTTON_LABEL))), quickEdit && /*#__PURE__*/_react.default.createElement(_FormPage.default, {
182
179
  page: quickEditPage,
183
180
  onAction: function onAction(action, patch) {
184
181
  return _onAction(action, patch);
@@ -187,7 +184,7 @@ var SummaryCard = function SummaryCard(_ref) {
187
184
  }), /*#__PURE__*/_react.default.createElement("div", {
188
185
  className: classes('body')
189
186
  }, !hideDetails && /*#__PURE__*/_react.default.createElement(_copReactComponents.Details, {
190
- summary: "Full details",
187
+ summary: isDuplicated ? 'View duplicated details' : 'Full details',
191
188
  className: "details"
192
189
  }, masterPage === null || masterPage === void 0 || (_masterPage$childPage = masterPage.childPages) === null || _masterPage$childPage === void 0 ? void 0 : _masterPage$childPage.map(function (childPage) {
193
190
  var _childPage$summaryLay;
@@ -233,13 +230,16 @@ SummaryCard.propTypes = {
233
230
  details: _propTypes.default.string,
234
231
  changeAction: _propTypes.default.shape({
235
232
  label: _propTypes.default.string,
233
+ isDuplicateLabel: _propTypes.default.string,
236
234
  page: _propTypes.default.string.isRequired
237
235
  }),
238
236
  deleteAction: _propTypes.default.shape({
239
- label: _propTypes.default.string
237
+ label: _propTypes.default.string,
238
+ isDuplicateLabel: _propTypes.default.string
240
239
  }),
241
240
  duplicateAction: _propTypes.default.shape({
242
- label: _propTypes.default.string
241
+ label: _propTypes.default.string,
242
+ isDuplicateLabel: _propTypes.default.string
243
243
  }),
244
244
  quickEdit: _propTypes.default.shape({
245
245
  components: _propTypes.default.arrayOf(_propTypes.default.shape({
@@ -260,7 +260,8 @@ SummaryCard.propTypes = {
260
260
  pages: _propTypes.default.arrayOf(_propTypes.default.shape({})).isRequired,
261
261
  parentCollectionName: _propTypes.default.string.isRequired,
262
262
  formData: _propTypes.default.shape({}).isRequired,
263
- hideDetails: _propTypes.default.bool
263
+ hideDetails: _propTypes.default.bool,
264
+ isDuplicated: _propTypes.default.bool
264
265
  };
265
266
  SummaryCard.defaultProps = {
266
267
  classModifiers: null,
@@ -268,7 +269,7 @@ SummaryCard.defaultProps = {
268
269
  onDelete: null,
269
270
  onDuplicate: null,
270
271
  onQuickEdit: null,
271
- hideDetails: false
272
+ hideDetails: false,
273
+ isDuplicated: false
272
274
  };
273
- var _default = SummaryCard;
274
- exports.default = _default;
275
+ var _default = exports.default = SummaryCard;
@@ -19,6 +19,10 @@ $govuk-font-family: 'Roboto', arial, sans-serif;
19
19
  padding: 0.75rem;
20
20
  display: block;
21
21
 
22
+ &.duplicated {
23
+ border-left: 7px solid red;
24
+ }
25
+
22
26
  &--deleting-summary-card {
23
27
  background-color: #FCF0EE;
24
28
  }