@pega/dx-component-builder-sdk 24.2.14 → 25.1.11

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 (556) hide show
  1. package/README.md +3 -3
  2. package/package.json +1 -1
  3. package/src/constants.js +46 -0
  4. package/src/tasks/create/index.js +50 -51
  5. package/src/tasks/create/templates/Constellation/field/Boolean/Boolean.ts.mustache +1 -1
  6. package/src/tasks/create/templates/Constellation/field/Boolean/config.json.mustache +0 -1
  7. package/src/tasks/create/templates/Constellation/field/Date/config.json.mustache +0 -1
  8. package/src/tasks/create/templates/Constellation/field/Date/date.ts.mustache +0 -1
  9. package/src/tasks/create/templates/Constellation/field/DateTime/config.json.mustache +0 -1
  10. package/src/tasks/create/templates/Constellation/field/Decimal/config.json.mustache +0 -1
  11. package/src/tasks/create/templates/Constellation/field/Decimal-Currency/config.json.mustache +0 -1
  12. package/src/tasks/create/templates/Constellation/field/Decimal-Percentage/config.json.mustache +0 -1
  13. package/src/tasks/create/templates/Constellation/field/Icon-Button-URL/config.json.mustache +0 -1
  14. package/src/tasks/create/templates/Constellation/field/Integer/config.json.mustache +0 -1
  15. package/src/tasks/create/templates/Constellation/field/Picklist/config.json.mustache +0 -1
  16. package/src/tasks/create/templates/Constellation/field/Picklist/index.tsx.mustache +0 -1
  17. package/src/tasks/create/templates/Constellation/field/Picklist-Autocomplete/config.json.mustache +0 -1
  18. package/src/tasks/create/templates/Constellation/field/Picklist-Autocomplete/date.ts.mustache +0 -2
  19. package/src/tasks/create/templates/Constellation/field/Picklist-Autocomplete/index.tsx.mustache +7 -2
  20. package/src/tasks/create/templates/Constellation/field/Picklist-Autocomplete/repeat-utils.ts.mustache +0 -4
  21. package/src/tasks/create/templates/Constellation/field/Picklist-RadioButtons/config.json.mustache +0 -1
  22. package/src/tasks/create/templates/Constellation/field/Picklist-RadioButtons/index.tsx.mustache +1 -2
  23. package/src/tasks/create/templates/Constellation/field/Text/config.json.mustache +0 -1
  24. package/src/tasks/create/templates/Constellation/field/Text-Email/config.json.mustache +0 -1
  25. package/src/tasks/create/templates/Constellation/field/Text-Input/{StatusWork.tsx → StatusWork.tsx.mustache} +0 -1
  26. package/src/tasks/create/templates/Constellation/field/Text-Input/config.json.mustache +0 -1
  27. package/src/tasks/create/templates/Constellation/field/Text-Paragraph/config.json.mustache +0 -1
  28. package/src/tasks/create/templates/Constellation/field/Text-Phone/config.json.mustache +0 -1
  29. package/src/tasks/create/templates/Constellation/field/Text-URL/config.json.mustache +0 -1
  30. package/src/tasks/create/templates/Constellation/field/TimeOfDay/config.json.mustache +0 -1
  31. package/src/tasks/create/templates/Constellation/template/DETAILS/Avatar.tsx.mustache +0 -1
  32. package/src/tasks/create/templates/Constellation/template/DETAILS/HighlightRender.tsx.mustache +0 -1
  33. package/src/tasks/create/templates/Constellation/template/DETAILS/StatusWork.tsx.mustache +0 -1
  34. package/src/tasks/create/templates/Constellation/template/DETAILS/config.json.mustache +0 -1
  35. package/src/tasks/create/templates/Constellation/template/DETAILS/utils.js.mustache +0 -2
  36. package/src/tasks/create/templates/Constellation/template/DETAILS-region/Avatar.tsx.mustache +0 -1
  37. package/src/tasks/create/templates/Constellation/template/DETAILS-region/HighlightRender.tsx.mustache +0 -1
  38. package/src/tasks/create/templates/Constellation/template/DETAILS-region/StatusWork.tsx.mustache +0 -1
  39. package/src/tasks/create/templates/Constellation/template/DETAILS-region/config.json.mustache +0 -1
  40. package/src/tasks/create/templates/Constellation/template/DETAILS-region/mock.ts.mustache +0 -1
  41. package/src/tasks/create/templates/Constellation/template/FORM/config.json.mustache +0 -1
  42. package/src/tasks/create/templates/Constellation/template/FORM-region/config.json.mustache +0 -1
  43. package/src/tasks/create/templates/Constellation/template/PAGE/GetNextWork.tsx.mustache +0 -1
  44. package/src/tasks/create/templates/Constellation/template/PAGE/config.json.mustache +0 -1
  45. package/src/tasks/create/templates/Constellation/widget/CASE/config.json.mustache +0 -1
  46. package/src/tasks/create/templates/Constellation/widget/PAGE/config.json.mustache +0 -1
  47. package/src/tasks/create/templates/Constellation/widget/PAGE-CASE/Avatar.tsx.mustache +0 -1
  48. package/src/tasks/create/templates/Constellation/widget/PAGE-CASE/config.json.mustache +0 -1
  49. package/src/tasks/create/templates/Constellation/widget/PAGE-CASE/index.tsx.mustache +0 -2
  50. package/src/tasks/create/templates/SDK-Angular/field/Boolean/boolean.component.html.mustache +14 -6
  51. package/src/tasks/create/templates/SDK-Angular/field/Boolean/boolean.component.ts.mustache +4 -3
  52. package/src/tasks/create/templates/SDK-Angular/field/Boolean/config.json.mustache +0 -1
  53. package/src/tasks/create/templates/SDK-Angular/field/Date/config.json.mustache +0 -1
  54. package/src/tasks/create/templates/SDK-Angular/field/Date/date.component.ts.mustache +1 -2
  55. package/src/tasks/create/templates/SDK-Angular/field/DateTime/config.json.mustache +0 -1
  56. package/src/tasks/create/templates/SDK-Angular/field/DateTime/date-time.component.ts.mustache +1 -2
  57. package/src/tasks/create/templates/SDK-Angular/field/Decimal/config.json.mustache +0 -1
  58. package/src/tasks/create/templates/SDK-Angular/field/Decimal/decimal.component.ts.mustache +0 -1
  59. package/src/tasks/create/templates/SDK-Angular/field/Decimal-Currency/config.json.mustache +0 -1
  60. package/src/tasks/create/templates/SDK-Angular/field/Decimal-Currency/decimal-currency.component.ts.mustache +4 -3
  61. package/src/tasks/create/templates/SDK-Angular/field/Decimal-Percentage/config.json.mustache +0 -1
  62. package/src/tasks/create/templates/SDK-Angular/field/Decimal-Percentage/decimal-percentage.component.ts.mustache +1 -2
  63. package/src/tasks/create/templates/SDK-Angular/field/Icon-Button-URL/config.json.mustache +0 -1
  64. package/src/tasks/create/templates/SDK-Angular/field/Icon-Button-URL/icon-button-url.component.ts.mustache +0 -1
  65. package/src/tasks/create/templates/SDK-Angular/field/Integer/config.json.mustache +0 -1
  66. package/src/tasks/create/templates/SDK-Angular/field/Integer/integer.component.ts.mustache +1 -2
  67. package/src/tasks/create/templates/SDK-Angular/field/Picklist/config.json.mustache +0 -1
  68. package/src/tasks/create/templates/SDK-Angular/field/Picklist/picklist.component.ts.mustache +7 -6
  69. package/src/tasks/create/templates/SDK-Angular/field/Picklist-Autocomplete/config.json.mustache +0 -1
  70. package/src/tasks/create/templates/SDK-Angular/field/Picklist-Autocomplete/picklist-autocomplete.component.html.mustache +0 -1
  71. package/src/tasks/create/templates/SDK-Angular/field/Picklist-Autocomplete/picklist-autocomplete.component.ts.mustache +10 -14
  72. package/src/tasks/create/templates/SDK-Angular/field/Picklist-RadioButtons/config.json.mustache +0 -1
  73. package/src/tasks/create/templates/SDK-Angular/field/Picklist-RadioButtons/picklist-radio-buttons.component.html.mustache +14 -6
  74. package/src/tasks/create/templates/SDK-Angular/field/Picklist-RadioButtons/picklist-radio-buttons.component.ts.mustache +5 -2
  75. package/src/tasks/create/templates/SDK-Angular/field/Text/config.json.mustache +0 -1
  76. package/src/tasks/create/templates/SDK-Angular/field/Text/text.component.ts.mustache +0 -1
  77. package/src/tasks/create/templates/SDK-Angular/field/Text-Email/config.json.mustache +0 -1
  78. package/src/tasks/create/templates/SDK-Angular/field/Text-Email/text-email.component.ts.mustache +1 -2
  79. package/src/tasks/create/templates/SDK-Angular/field/Text-Input/config.json.mustache +0 -1
  80. package/src/tasks/create/templates/SDK-Angular/field/Text-Input/text.component.ts.mustache +1 -2
  81. package/src/tasks/create/templates/SDK-Angular/field/Text-Paragraph/config.json.mustache +0 -1
  82. package/src/tasks/create/templates/SDK-Angular/field/Text-Paragraph/text-paragraph.component.ts.mustache +1 -2
  83. package/src/tasks/create/templates/SDK-Angular/field/Text-Phone/config.json.mustache +0 -1
  84. package/src/tasks/create/templates/SDK-Angular/field/Text-Phone/text-phone.component.html.mustache +5 -4
  85. package/src/tasks/create/templates/SDK-Angular/field/Text-Phone/text-phone.component.ts.mustache +17 -5
  86. package/src/tasks/create/templates/SDK-Angular/field/Text-URL/config.json.mustache +0 -1
  87. package/src/tasks/create/templates/SDK-Angular/field/Text-URL/text-url.component.ts.mustache +1 -2
  88. package/src/tasks/create/templates/SDK-Angular/field/TimeOfDay/config.json.mustache +0 -1
  89. package/src/tasks/create/templates/SDK-Angular/field/TimeOfDay/time-of-day.component.ts.mustache +1 -2
  90. package/src/tasks/create/templates/SDK-Angular/template/DETAILS/config.json.mustache +0 -1
  91. package/src/tasks/create/templates/SDK-Angular/template/DETAILS-region/config.json.mustache +0 -1
  92. package/src/tasks/create/templates/SDK-Angular/template/DETAILS-region/mock.ts.mustache +0 -1
  93. package/src/tasks/create/templates/SDK-Angular/template/FORM/config.json.mustache +0 -1
  94. package/src/tasks/create/templates/SDK-Angular/template/FORM-region/config.json.mustache +0 -1
  95. package/src/tasks/create/templates/SDK-Angular/template/PAGE/config.json.mustache +0 -1
  96. package/src/tasks/create/templates/SDK-Angular/widget/CASE/config.json.mustache +0 -1
  97. package/src/tasks/create/templates/SDK-Angular/widget/PAGE/config.json.mustache +0 -1
  98. package/src/tasks/create/templates/SDK-Angular/widget/PAGE/mock.ts.mustache +0 -1
  99. package/src/tasks/create/templates/SDK-Angular/widget/PAGE-CASE/config.json.mustache +0 -1
  100. package/src/tasks/create/templates/SDK-Angular/widget/PAGE-CASE/page-case.component.ts.mustache +0 -1
  101. package/src/tasks/create/templates/SDK-React/field/Boolean/config.json.mustache +0 -1
  102. package/src/tasks/create/templates/SDK-React/field/Boolean/index.tsx.mustache +96 -5
  103. package/src/tasks/create/templates/SDK-React/field/Date/config.json.mustache +0 -1
  104. package/src/tasks/create/templates/SDK-React/field/DateTime/config.json.mustache +0 -1
  105. package/src/tasks/create/templates/SDK-React/field/Decimal/config.json.mustache +0 -1
  106. package/src/tasks/create/templates/SDK-React/field/Decimal-Currency/config.json.mustache +0 -1
  107. package/src/tasks/create/templates/SDK-React/field/Decimal-Percentage/config.json.mustache +0 -1
  108. package/src/tasks/create/templates/SDK-React/field/Icon-Button-URL/config.json.mustache +0 -1
  109. package/src/tasks/create/templates/SDK-React/field/Icon-Button-URL/index.tsx.mustache +0 -2
  110. package/src/tasks/create/templates/SDK-React/field/Icon-Button-URL/mock.ts.mustache +0 -1
  111. package/src/tasks/create/templates/SDK-React/field/Integer/config.json.mustache +0 -1
  112. package/src/tasks/create/templates/SDK-React/field/Picklist/config.json.mustache +0 -1
  113. package/src/tasks/create/templates/SDK-React/field/Picklist/index.tsx.mustache +0 -1
  114. package/src/tasks/create/templates/SDK-React/field/Picklist-Autocomplete/config.json.mustache +0 -1
  115. package/src/tasks/create/templates/SDK-React/field/Picklist-RadioButtons/config.json.mustache +0 -1
  116. package/src/tasks/create/templates/SDK-React/field/Picklist-RadioButtons/index.tsx.mustache +48 -1
  117. package/src/tasks/create/templates/SDK-React/field/Text/config.json.mustache +0 -1
  118. package/src/tasks/create/templates/SDK-React/field/Text/mock.ts.mustache +0 -1
  119. package/src/tasks/create/templates/SDK-React/field/Text-Email/config.json.mustache +0 -1
  120. package/src/tasks/create/templates/SDK-React/field/Text-Email/mock.ts.mustache +0 -1
  121. package/src/tasks/create/templates/SDK-React/field/Text-Input/config.json.mustache +0 -1
  122. package/src/tasks/create/templates/SDK-React/field/Text-Paragraph/config.json.mustache +0 -1
  123. package/src/tasks/create/templates/SDK-React/field/Text-Phone/config.json.mustache +0 -1
  124. package/src/tasks/create/templates/SDK-React/field/Text-Phone/index.tsx.mustache +6 -4
  125. package/src/tasks/create/templates/SDK-React/field/Text-Phone/mock.ts.mustache +0 -1
  126. package/src/tasks/create/templates/SDK-React/field/Text-URL/config.json.mustache +0 -1
  127. package/src/tasks/create/templates/SDK-React/field/Text-URL/mock.ts.mustache +0 -1
  128. package/src/tasks/create/templates/SDK-React/field/TimeOfDay/config.json.mustache +0 -1
  129. package/src/tasks/create/templates/SDK-React/template/DETAILS/config.json.mustache +0 -1
  130. package/src/tasks/create/templates/SDK-React/template/DETAILS/index.tsx.mustache +10 -11
  131. package/src/tasks/create/templates/SDK-React/template/DETAILS-region/config.json.mustache +0 -1
  132. package/src/tasks/create/templates/SDK-React/template/DETAILS-region/index.tsx.mustache +9 -10
  133. package/src/tasks/create/templates/SDK-React/template/FORM/config.json.mustache +0 -1
  134. package/src/tasks/create/templates/SDK-React/template/FORM/index.tsx.mustache +0 -1
  135. package/src/tasks/create/templates/SDK-React/template/FORM-region/config.json.mustache +0 -1
  136. package/src/tasks/create/templates/SDK-React/template/FORM-region/demo.stories.tsx.mustache +5 -3
  137. package/src/tasks/create/templates/SDK-React/template/FORM-region/index.tsx.mustache +10 -8
  138. package/src/tasks/create/templates/SDK-React/template/PAGE/OneColumn.tsx.mustache +8 -5
  139. package/src/tasks/create/templates/SDK-React/template/PAGE/config.json.mustache +0 -1
  140. package/src/tasks/create/templates/SDK-React/widget/CASE/config.json.mustache +0 -1
  141. package/src/tasks/create/templates/SDK-React/widget/CASE/index.tsx.mustache +3 -3
  142. package/src/tasks/create/templates/SDK-React/widget/CASE/mock.ts.mustache +0 -1
  143. package/src/tasks/create/templates/SDK-React/widget/PAGE/config.json.mustache +0 -1
  144. package/src/tasks/create/templates/SDK-React/widget/PAGE/index.tsx.mustache +3 -3
  145. package/src/tasks/create/templates/SDK-React/widget/PAGE-CASE/config.json.mustache +0 -1
  146. package/src/tasks/create/templates/SDK-React/widget/PAGE-CASE/index.tsx.mustache +14 -12
  147. package/src/tasks/create-all/index.js +68 -55
  148. package/src/tasks/validator/index.js +22 -2
  149. package/src/util.js +89 -4
  150. package/tests/assets/sdk-r/components/create/custom-constellation/field/Pega_DXIL_MyTestText/demo.stories.tsx +0 -1
  151. package/tests/assets/sdk-r/components/create/custom-sdk/field/Pega_DXIL_MyTestText/config.json +0 -1
  152. package/tests/assets/sdk-r/components/create/custom-sdk/field/Pega_DXIL_MyTestText/mock.ts +0 -1
  153. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/Banner/Banner.css +1 -1
  154. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/Banner/Banner.tsx +10 -7
  155. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/CaseSummaryFields/CaseSummaryFields.css +0 -1
  156. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +53 -37
  157. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/DetailsFields/DetailsFields.tsx +11 -13
  158. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/FieldGroup/FieldGroup.tsx +8 -9
  159. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/FieldGroupList/FieldGroupList.tsx +9 -9
  160. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/FieldValueList/FieldValueList.tsx +8 -9
  161. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/Operator/Operator.tsx +21 -19
  162. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/Pulse/Pulse.tsx +1 -1
  163. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/RichTextEditor/RichTextEditor.tsx +32 -4
  164. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/WssQuickCreate/WssQuickCreate.css +7 -14
  165. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/WssQuickCreate/WssQuickCreate.tsx +13 -2
  166. package/tests/assets/sdk-r/components/create/override-sdk/field/AutoComplete/AutoComplete.tsx +1 -1
  167. package/tests/assets/sdk-r/components/create/override-sdk/field/CancelAlert/CancelAlert.css +4 -4
  168. package/tests/assets/sdk-r/components/create/override-sdk/field/CancelAlert/CancelAlert.tsx +7 -10
  169. package/tests/assets/sdk-r/components/create/override-sdk/field/Checkbox/Checkbox.tsx +97 -4
  170. package/tests/assets/sdk-r/components/create/override-sdk/field/Currency/Currency.tsx +10 -7
  171. package/tests/assets/sdk-r/components/create/override-sdk/field/Currency/currency-utils.ts +1 -2
  172. package/tests/assets/sdk-r/components/create/override-sdk/field/Date/Date.tsx +8 -8
  173. package/tests/assets/sdk-r/components/create/override-sdk/field/DateTime/DateTime.tsx +16 -13
  174. package/tests/assets/sdk-r/components/create/override-sdk/field/Decimal/Decimal.tsx +10 -7
  175. package/tests/assets/sdk-r/components/create/override-sdk/field/Dropdown/Dropdown.tsx +30 -25
  176. package/tests/assets/sdk-r/components/create/override-sdk/field/Email/Email.tsx +11 -13
  177. package/tests/assets/sdk-r/components/create/override-sdk/field/Group/Group.tsx +10 -8
  178. package/tests/assets/sdk-r/components/create/override-sdk/field/Integer/Integer.tsx +5 -7
  179. package/tests/assets/sdk-r/components/create/override-sdk/field/Location/Location.css +4 -0
  180. package/tests/assets/sdk-r/components/create/override-sdk/field/Location/Location.tsx +258 -0
  181. package/tests/assets/sdk-r/components/create/override-sdk/field/Location/config-ext.json +10 -0
  182. package/tests/assets/sdk-r/components/create/override-sdk/field/Location/index.tsx +1 -0
  183. package/tests/assets/sdk-r/components/create/override-sdk/field/Multiselect/utils.ts +1 -1
  184. package/tests/assets/sdk-r/components/create/override-sdk/field/ObjectReference/ObjectReference.tsx +235 -0
  185. package/tests/assets/sdk-r/components/create/override-sdk/field/ObjectReference/index.tsx +1 -0
  186. package/tests/assets/sdk-r/components/create/override-sdk/field/ObjectReference/utils.ts +111 -0
  187. package/tests/assets/sdk-r/components/create/override-sdk/field/Percentage/Percentage.tsx +9 -9
  188. package/tests/assets/sdk-r/components/create/override-sdk/field/Phone/Phone.tsx +7 -5
  189. package/tests/assets/sdk-r/components/create/override-sdk/field/RadioButtons/RadioButtons.tsx +47 -5
  190. package/tests/assets/sdk-r/components/create/override-sdk/field/RichText/RichText.css +79 -0
  191. package/tests/assets/sdk-r/components/create/override-sdk/field/RichText/RichText.tsx +3 -1
  192. package/tests/assets/sdk-r/components/create/override-sdk/field/ScalarList/ScalarList.tsx +2 -4
  193. package/tests/assets/sdk-r/components/create/override-sdk/field/SelectableCard/SelectableCard.tsx +175 -0
  194. package/tests/assets/sdk-r/components/create/override-sdk/field/SelectableCard/index.tsx +1 -0
  195. package/tests/assets/sdk-r/components/create/override-sdk/field/SelectableCard/utils.tsx +223 -0
  196. package/tests/assets/sdk-r/components/create/override-sdk/field/SemanticLink/SemanticLink.tsx +160 -28
  197. package/tests/assets/sdk-r/components/create/override-sdk/field/SemanticLink/utils.ts +1 -1
  198. package/tests/assets/sdk-r/components/create/override-sdk/field/TextArea/TextArea.tsx +5 -7
  199. package/tests/assets/sdk-r/components/create/override-sdk/field/TextContent/TextContent.tsx +1 -2
  200. package/tests/assets/sdk-r/components/create/override-sdk/field/TextInput/TextInput.tsx +5 -7
  201. package/tests/assets/sdk-r/components/create/override-sdk/field/Time/Time.tsx +4 -8
  202. package/tests/assets/sdk-r/components/create/override-sdk/field/URL/URL.tsx +5 -7
  203. package/tests/assets/sdk-r/components/create/override-sdk/field/UserReference/UserReference.tsx +3 -6
  204. package/tests/assets/sdk-r/components/create/override-sdk/infra/ActionButtons/ActionButtons.tsx +28 -21
  205. package/tests/assets/sdk-r/components/create/override-sdk/infra/Assignment/Assignment.tsx +39 -36
  206. package/tests/assets/sdk-r/components/create/override-sdk/infra/AssignmentCard/AssignmentCard.tsx +2 -2
  207. package/tests/assets/sdk-r/components/create/override-sdk/infra/DashboardFilter/DashboardFilter.tsx +5 -9
  208. package/tests/assets/sdk-r/components/create/override-sdk/infra/DashboardFilter/filterUtils.tsx +3 -6
  209. package/tests/assets/sdk-r/components/create/override-sdk/infra/DeferLoad/DeferLoad.tsx +7 -9
  210. package/tests/assets/sdk-r/components/create/override-sdk/infra/ErrorBoundary/ErrorBoundary.tsx +1 -3
  211. package/tests/assets/sdk-r/components/create/override-sdk/infra/FlowContainer/FlowContainer.tsx +21 -113
  212. package/tests/assets/sdk-r/components/create/override-sdk/infra/FlowContainer/helpers.ts +1 -5
  213. package/tests/assets/sdk-r/components/create/override-sdk/infra/ModalViewContainer/ListViewActionButtons/ListViewActionButtons.tsx +4 -3
  214. package/tests/assets/sdk-r/components/create/override-sdk/infra/ModalViewContainer/ModalViewContainer.tsx +7 -6
  215. package/tests/assets/sdk-r/components/create/override-sdk/infra/MultiStep/MultiStep.css +48 -70
  216. package/tests/assets/sdk-r/components/create/override-sdk/infra/MultiStep/MultiStep.tsx +27 -58
  217. package/tests/assets/sdk-r/components/create/override-sdk/infra/NavBar/NavBar.css +1 -1
  218. package/tests/assets/sdk-r/components/create/override-sdk/infra/NavBar/NavBar.tsx +43 -32
  219. package/tests/assets/sdk-r/components/create/override-sdk/infra/Reference/Reference.tsx +3 -4
  220. package/tests/assets/sdk-r/components/create/override-sdk/infra/Region/Region.tsx +1 -1
  221. package/tests/assets/sdk-r/components/create/override-sdk/infra/RootContainer/RootContainer.tsx +3 -4
  222. package/tests/assets/sdk-r/components/create/override-sdk/infra/SimpleView/helper.ts +1 -1
  223. package/tests/assets/sdk-r/components/create/override-sdk/infra/Stages/Stages.tsx +3 -4
  224. package/tests/assets/sdk-r/components/create/override-sdk/infra/View/View.tsx +4 -3
  225. package/tests/assets/sdk-r/components/create/override-sdk/infra/ViewContainer/ViewContainer.tsx +4 -5
  226. package/tests/assets/sdk-r/components/create/override-sdk/template/AdvancedSearch/AdvancedSearch.tsx +86 -0
  227. package/tests/assets/sdk-r/components/create/override-sdk/template/AdvancedSearch/SearchGroup/persistUtils.ts +52 -0
  228. package/tests/assets/sdk-r/components/create/override-sdk/template/AdvancedSearch/SearchGroups/SearchGroups.tsx +244 -0
  229. package/tests/assets/sdk-r/components/create/override-sdk/template/AdvancedSearch/SearchGroups/hooks.ts +37 -0
  230. package/tests/assets/sdk-r/components/create/override-sdk/template/AdvancedSearch/SearchGroups/index.tsx +1 -0
  231. package/tests/assets/sdk-r/components/create/override-sdk/template/AdvancedSearch/SearchGroups/utils.ts +29 -0
  232. package/tests/assets/sdk-r/components/create/override-sdk/template/AdvancedSearch/TemplateContext.ts +11 -0
  233. package/tests/assets/sdk-r/components/create/override-sdk/template/AdvancedSearch/config-ext.json +10 -0
  234. package/tests/assets/sdk-r/components/create/override-sdk/template/AdvancedSearch/index.tsx +1 -0
  235. package/tests/assets/sdk-r/components/create/override-sdk/template/AppShell/AppShell.css +1 -1
  236. package/tests/assets/sdk-r/components/create/override-sdk/template/AppShell/AppShell.tsx +22 -23
  237. package/tests/assets/sdk-r/components/create/override-sdk/template/BannerPage/BannerPage.tsx +2 -2
  238. package/tests/assets/sdk-r/components/create/override-sdk/template/CaseSummary/CaseSummary.tsx +28 -41
  239. package/tests/assets/sdk-r/components/create/override-sdk/template/CaseView/CaseView.tsx +32 -38
  240. package/tests/assets/sdk-r/components/create/override-sdk/template/CaseViewActionsMenu/CaseViewActionsMenu.tsx +1 -1
  241. package/tests/assets/sdk-r/components/create/override-sdk/template/Confirmation/Confirmation.tsx +3 -4
  242. package/tests/assets/sdk-r/components/create/override-sdk/template/DataReference/DataReference.tsx +312 -106
  243. package/tests/assets/sdk-r/components/create/override-sdk/template/DataReference/DataReferenceAdvancedSearchContext.ts +10 -0
  244. package/tests/assets/sdk-r/components/create/override-sdk/template/DataReference/SearchForm.tsx +149 -0
  245. package/tests/assets/sdk-r/components/create/override-sdk/template/DataReference/utils.ts +90 -0
  246. package/tests/assets/sdk-r/components/create/override-sdk/template/DefaultForm/DefaultForm.tsx +3 -3
  247. package/tests/assets/sdk-r/components/create/override-sdk/template/DefaultForm/utils/index.ts +1 -3
  248. package/tests/assets/sdk-r/components/create/override-sdk/template/Details/Details.tsx +11 -11
  249. package/tests/assets/sdk-r/components/create/override-sdk/template/DetailsSubTabs/DetailsSubTabs.tsx +2 -2
  250. package/tests/assets/sdk-r/components/create/override-sdk/template/DetailsThreeColumn/DetailsThreeColumn.tsx +11 -11
  251. package/tests/assets/sdk-r/components/create/override-sdk/template/DetailsTwoColumn/DetailsTwoColumn.tsx +11 -11
  252. package/tests/assets/sdk-r/components/create/override-sdk/template/DynamicTabs/DynamicTabs.tsx +1 -2
  253. package/tests/assets/sdk-r/components/create/override-sdk/template/FieldGroupTemplate/FieldGroupTemplate.tsx +2 -5
  254. package/tests/assets/sdk-r/components/create/override-sdk/template/InlineDashboard/InlineDashboard.tsx +14 -16
  255. package/tests/assets/sdk-r/components/create/override-sdk/template/InlineDashboardPage/InlineDashboardPage.tsx +2 -2
  256. package/tests/assets/sdk-r/components/create/override-sdk/template/ListPage/ListPage.tsx +1 -1
  257. package/tests/assets/sdk-r/components/create/override-sdk/template/ListView/ListView.tsx +285 -204
  258. package/tests/assets/sdk-r/components/create/override-sdk/template/ListView/hooks.ts +1 -5
  259. package/tests/assets/sdk-r/components/create/override-sdk/template/ListView/utils.ts +38 -6
  260. package/tests/assets/sdk-r/components/create/override-sdk/template/MultiReferenceReadOnly/MultiReferenceReadOnly.tsx +1 -1
  261. package/tests/assets/sdk-r/components/create/override-sdk/template/NarrowWide/NarrowWide.tsx +5 -5
  262. package/tests/assets/sdk-r/components/create/override-sdk/template/NarrowWideDetails/NarrowWideDetails.tsx +11 -11
  263. package/tests/assets/sdk-r/components/create/override-sdk/template/NarrowWideForm/NarrowWideForm.tsx +2 -2
  264. package/tests/assets/sdk-r/components/create/override-sdk/template/NarrowWidePage/NarrowWidePage.tsx +2 -2
  265. package/tests/assets/sdk-r/components/create/override-sdk/template/OneColumn/OneColumn.tsx +7 -7
  266. package/tests/assets/sdk-r/components/create/override-sdk/template/OneColumnPage/OneColumnPage.tsx +1 -1
  267. package/tests/assets/sdk-r/components/create/override-sdk/template/OneColumnTab/OneColumnTab.tsx +2 -2
  268. package/tests/assets/sdk-r/components/create/override-sdk/template/PromotedFilters/PromotedFilters.tsx +1 -3
  269. package/tests/assets/sdk-r/components/create/override-sdk/template/SearchGroups/SearchGroups.tsx +244 -0
  270. package/tests/assets/sdk-r/components/create/override-sdk/template/SearchGroups/hooks.ts +37 -0
  271. package/tests/assets/sdk-r/components/create/override-sdk/template/SearchGroups/index.tsx +1 -0
  272. package/tests/assets/sdk-r/components/create/override-sdk/template/SearchGroups/utils.ts +29 -0
  273. package/tests/assets/sdk-r/components/create/override-sdk/template/SimpleTable/SimpleTable.tsx +2 -5
  274. package/tests/assets/sdk-r/components/create/override-sdk/template/SimpleTableManual/SimpleTableManual.tsx +99 -84
  275. package/tests/assets/sdk-r/components/create/override-sdk/template/SimpleTableSelect/SimpleTableSelect.tsx +3 -5
  276. package/tests/assets/sdk-r/components/create/override-sdk/template/SingleReferenceReadOnly/SingleReferenceReadOnly.tsx +10 -2
  277. package/tests/assets/sdk-r/components/create/override-sdk/template/SubTabs/SubTabs.tsx +2 -2
  278. package/tests/assets/sdk-r/components/create/override-sdk/template/SubTabs/tabUtils.ts +118 -1
  279. package/tests/assets/sdk-r/components/create/override-sdk/template/TwoColumn/TwoColumn.tsx +9 -10
  280. package/tests/assets/sdk-r/components/create/override-sdk/template/TwoColumnPage/TwoColumnPage.tsx +1 -1
  281. package/tests/assets/sdk-r/components/create/override-sdk/template/TwoColumnTab/TwoColumnTab.tsx +9 -10
  282. package/tests/assets/sdk-r/components/create/override-sdk/template/WideNarrow/WideNarrow.tsx +5 -5
  283. package/tests/assets/sdk-r/components/create/override-sdk/template/WideNarrowDetails/WideNarrowDetails.tsx +11 -11
  284. package/tests/assets/sdk-r/components/create/override-sdk/template/WideNarrowForm/WideNarrowForm.tsx +2 -2
  285. package/tests/assets/sdk-r/components/create/override-sdk/template/WideNarrowPage/WideNarrowPage.tsx +2 -2
  286. package/tests/assets/sdk-r/components/create/override-sdk/template/WssNavBar/WssNavBar.css +1 -1
  287. package/tests/assets/sdk-r/components/create/override-sdk/template/WssNavBar/WssNavBar.tsx +6 -6
  288. package/tests/assets/sdk-r/components/create/override-sdk/widget/ActionButtonsForFileUtil/ActionButtonsForFileUtil.css +0 -14
  289. package/tests/assets/sdk-r/components/create/override-sdk/widget/ActionButtonsForFileUtil/ActionButtonsForFileUtil.tsx +3 -3
  290. package/tests/assets/sdk-r/components/create/override-sdk/widget/AppAnnouncement/AppAnnouncement.tsx +1 -1
  291. package/tests/assets/sdk-r/components/create/override-sdk/widget/Attachment/Attachment.css +7 -8
  292. package/tests/assets/sdk-r/components/create/override-sdk/widget/Attachment/Attachment.tsx +304 -231
  293. package/tests/assets/sdk-r/components/create/override-sdk/widget/Attachment/Attachment.types.ts +96 -0
  294. package/tests/assets/sdk-r/components/create/override-sdk/widget/Attachment/AttachmentUtils.ts +316 -0
  295. package/tests/assets/sdk-r/components/create/override-sdk/widget/CaseHistory/CaseHistory.tsx +5 -5
  296. package/tests/assets/sdk-r/components/create/override-sdk/widget/FileUtility/FileUtility.css +7 -6
  297. package/tests/assets/sdk-r/components/create/override-sdk/widget/FileUtility/FileUtility.tsx +30 -23
  298. package/tests/assets/sdk-r/components/create/override-sdk/widget/Followers/Followers.tsx +2 -4
  299. package/tests/assets/sdk-r/components/create/override-sdk/widget/QuickCreate/QuickCreate.tsx +1 -3
  300. package/tests/assets/sdk-r/components/create/override-sdk/widget/SummaryItem/SummaryItem.css +9 -11
  301. package/tests/assets/sdk-r/components/create/override-sdk/widget/SummaryItem/SummaryItem.tsx +3 -3
  302. package/tests/assets/sdk-r/components/create/override-sdk/widget/SummaryList/SummaryList.tsx +1 -1
  303. package/tests/assets/sdk-r/components/create/override-sdk/widget/ToDo/ToDo.css +1 -13
  304. package/tests/assets/sdk-r/components/create/override-sdk/widget/ToDo/ToDo.tsx +38 -37
  305. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyBoolean/Boolean.ts +1 -1
  306. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyCurrency/demo.stories.tsx +0 -1
  307. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyDate/date.ts +0 -1
  308. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyDate/demo.stories.tsx +0 -16
  309. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyDateTime/demo.stories.tsx +0 -17
  310. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyDecimal/demo.stories.tsx +0 -1
  311. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyEmail/demo.stories.tsx +0 -1
  312. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyEmail/mock.ts +1 -0
  313. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyIconButtonURL/demo.stories.tsx +9 -20
  314. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyParagraph/demo.stories.tsx +0 -1
  315. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyPercentage/demo.stories.tsx +0 -1
  316. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyPercentage/mock.ts +1 -0
  317. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyPhone/demo.stories.tsx +1 -2
  318. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyPicklist/demo.stories.tsx +0 -1
  319. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyPicklist/index.tsx +0 -1
  320. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyRadiobuttons/demo.stories.tsx +0 -1
  321. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyRadiobuttons/index.tsx +1 -2
  322. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MySearchbox/date.ts +0 -2
  323. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MySearchbox/demo.stories.tsx +0 -1
  324. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MySearchbox/index.tsx +7 -2
  325. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MySearchbox/repeat-utils.ts +0 -4
  326. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyText/demo.stories.tsx +0 -1
  327. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyTextInput/StatusWork.tsx +0 -1
  328. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyTextInput/demo.stories.tsx +0 -1
  329. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyTimeOfDay/demo.stories.tsx +0 -1
  330. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyURL/demo.stories.tsx +0 -1
  331. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyDetails/Avatar.tsx +0 -1
  332. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyDetails/HighlightRender.tsx +0 -1
  333. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyDetails/StatusWork.tsx +0 -1
  334. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyDetails/demo.stories.tsx +10 -0
  335. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyDetails/utils.js +0 -2
  336. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyPage/GetNextWork.tsx +0 -1
  337. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyPage/demo.stories.tsx +1 -13
  338. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyTwoColumnDetails/Avatar.tsx +0 -1
  339. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyTwoColumnDetails/HighlightRender.tsx +0 -1
  340. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyTwoColumnDetails/StatusWork.tsx +0 -1
  341. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyTwoColumnDetails/mock.ts +0 -1
  342. package/tests/assets/sdk-r/components/createAll/custom-constellation/widget/Pega_DXIL_MyCaseWidget/demo.stories.tsx +10 -32
  343. package/tests/assets/sdk-r/components/createAll/custom-constellation/widget/Pega_DXIL_MyPageCaseWidget/Avatar.tsx +0 -1
  344. package/tests/assets/sdk-r/components/createAll/custom-constellation/widget/Pega_DXIL_MyPageCaseWidget/demo.stories.tsx +10 -22
  345. package/tests/assets/sdk-r/components/createAll/custom-constellation/widget/Pega_DXIL_MyPageCaseWidget/index.tsx +0 -2
  346. package/tests/assets/sdk-r/components/createAll/custom-constellation/widget/Pega_DXIL_MyPageWidget/demo.stories.tsx +10 -21
  347. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyBoolean/config.json +0 -1
  348. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyBoolean/index.tsx +93 -5
  349. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyCurrency/config.json +0 -1
  350. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyCurrency/demo.stories.tsx +0 -14
  351. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDate/config.json +0 -1
  352. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDate/demo.stories.tsx +0 -24
  353. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDateTime/config.json +0 -1
  354. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDateTime/demo.stories.tsx +0 -24
  355. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDecimal/config.json +0 -1
  356. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDecimal/demo.stories.tsx +0 -14
  357. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyEmail/config.json +0 -1
  358. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyEmail/mock.ts +0 -1
  359. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyIconButtonURL/config.json +0 -1
  360. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyIconButtonURL/demo.stories.tsx +2 -6
  361. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyIconButtonURL/index.tsx +0 -2
  362. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyIconButtonURL/mock.ts +0 -1
  363. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyInteger/config.json +0 -1
  364. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyParagraph/config.json +0 -1
  365. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyPercentage/config.json +0 -1
  366. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyPercentage/demo.stories.tsx +0 -14
  367. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyPhone/config.json +0 -1
  368. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyPhone/index.tsx +6 -4
  369. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyPhone/mock.ts +0 -1
  370. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyPicklist/config.json +0 -1
  371. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyPicklist/index.tsx +0 -1
  372. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyRadiobuttons/config.json +0 -1
  373. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyRadiobuttons/index.tsx +45 -1
  374. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MySearchbox/config.json +0 -1
  375. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyText/config.json +0 -1
  376. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyText/mock.ts +0 -1
  377. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyTextInput/config.json +0 -1
  378. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyTimeOfDay/config.json +0 -1
  379. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyURL/config.json +0 -1
  380. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyURL/mock.ts +0 -1
  381. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyDetails/config.json +0 -1
  382. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyDetails/demo.stories.tsx +8 -28
  383. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyDetails/index.tsx +10 -11
  384. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyForm/config.json +0 -1
  385. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyForm/demo.stories.tsx +10 -16
  386. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyForm/index.tsx +0 -1
  387. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyPage/OneColumn.tsx +5 -5
  388. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyPage/config.json +0 -1
  389. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyTwoColumnDetails/config.json +0 -1
  390. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyTwoColumnDetails/demo.stories.tsx +8 -28
  391. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyTwoColumnDetails/index.tsx +9 -10
  392. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyTwoColumnForm/config.json +0 -1
  393. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyTwoColumnForm/demo.stories.tsx +5 -3
  394. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyTwoColumnForm/index.tsx +7 -8
  395. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyCaseWidget/config.json +0 -1
  396. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyCaseWidget/demo.stories.tsx +10 -20
  397. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyCaseWidget/index.tsx +3 -3
  398. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyCaseWidget/mock.ts +0 -1
  399. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageCaseWidget/config.json +0 -1
  400. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageCaseWidget/demo.stories.tsx +10 -20
  401. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageCaseWidget/index.tsx +11 -12
  402. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageWidget/config.json +0 -1
  403. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageWidget/demo.stories.tsx +9 -19
  404. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageWidget/index.tsx +3 -3
  405. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/Banner/Banner.css +1 -1
  406. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/Banner/Banner.tsx +10 -7
  407. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/CaseSummaryFields/CaseSummaryFields.css +0 -1
  408. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +53 -37
  409. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/DetailsFields/DetailsFields.tsx +11 -13
  410. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/FieldGroup/FieldGroup.tsx +8 -9
  411. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/FieldGroupList/FieldGroupList.tsx +9 -9
  412. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/FieldValueList/FieldValueList.tsx +8 -9
  413. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/Operator/Operator.tsx +21 -19
  414. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/Pulse/Pulse.tsx +1 -1
  415. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/RichTextEditor/RichTextEditor.tsx +32 -4
  416. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/WssQuickCreate/WssQuickCreate.css +7 -14
  417. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/WssQuickCreate/WssQuickCreate.tsx +13 -2
  418. package/tests/assets/sdk-r/components/createAll/override-sdk/field/AutoComplete/AutoComplete.tsx +1 -1
  419. package/tests/assets/sdk-r/components/createAll/override-sdk/field/CancelAlert/CancelAlert.css +4 -4
  420. package/tests/assets/sdk-r/components/createAll/override-sdk/field/CancelAlert/CancelAlert.tsx +7 -10
  421. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Checkbox/Checkbox.tsx +97 -4
  422. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Currency/Currency.tsx +10 -7
  423. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Currency/currency-utils.ts +1 -2
  424. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Date/Date.tsx +8 -8
  425. package/tests/assets/sdk-r/components/createAll/override-sdk/field/DateTime/DateTime.tsx +16 -13
  426. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Decimal/Decimal.tsx +10 -7
  427. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Dropdown/Dropdown.tsx +30 -25
  428. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Email/Email.tsx +11 -13
  429. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Group/Group.tsx +10 -8
  430. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Integer/Integer.tsx +5 -7
  431. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Location/Location.css +4 -0
  432. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Location/Location.tsx +258 -0
  433. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Location/config-ext.json +10 -0
  434. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Location/index.tsx +1 -0
  435. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Multiselect/utils.ts +1 -1
  436. package/tests/assets/sdk-r/components/createAll/override-sdk/field/ObjectReference/ObjectReference.tsx +235 -0
  437. package/tests/assets/sdk-r/components/createAll/override-sdk/field/ObjectReference/index.tsx +1 -0
  438. package/tests/assets/sdk-r/components/createAll/override-sdk/field/ObjectReference/utils.ts +111 -0
  439. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Percentage/Percentage.tsx +9 -9
  440. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Phone/Phone.tsx +7 -5
  441. package/tests/assets/sdk-r/components/createAll/override-sdk/field/RadioButtons/RadioButtons.tsx +47 -5
  442. package/tests/assets/sdk-r/components/createAll/override-sdk/field/RichText/RichText.css +79 -0
  443. package/tests/assets/sdk-r/components/createAll/override-sdk/field/RichText/RichText.tsx +3 -1
  444. package/tests/assets/sdk-r/components/createAll/override-sdk/field/ScalarList/ScalarList.tsx +2 -4
  445. package/tests/assets/sdk-r/components/createAll/override-sdk/field/SelectableCard/SelectableCard.tsx +175 -0
  446. package/tests/assets/sdk-r/components/createAll/override-sdk/field/SelectableCard/index.tsx +1 -0
  447. package/tests/assets/sdk-r/components/createAll/override-sdk/field/SelectableCard/utils.tsx +223 -0
  448. package/tests/assets/sdk-r/components/createAll/override-sdk/field/SemanticLink/SemanticLink.tsx +160 -28
  449. package/tests/assets/sdk-r/components/createAll/override-sdk/field/SemanticLink/utils.ts +1 -1
  450. package/tests/assets/sdk-r/components/createAll/override-sdk/field/TextArea/TextArea.tsx +5 -7
  451. package/tests/assets/sdk-r/components/createAll/override-sdk/field/TextContent/TextContent.tsx +1 -2
  452. package/tests/assets/sdk-r/components/createAll/override-sdk/field/TextInput/TextInput.tsx +5 -7
  453. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Time/Time.tsx +4 -8
  454. package/tests/assets/sdk-r/components/createAll/override-sdk/field/URL/URL.tsx +5 -7
  455. package/tests/assets/sdk-r/components/createAll/override-sdk/field/UserReference/UserReference.tsx +3 -6
  456. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/ActionButtons/ActionButtons.tsx +28 -21
  457. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/Assignment/Assignment.tsx +39 -36
  458. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/AssignmentCard/AssignmentCard.tsx +2 -2
  459. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/DashboardFilter/DashboardFilter.tsx +5 -9
  460. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/DashboardFilter/filterUtils.tsx +3 -6
  461. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/DeferLoad/DeferLoad.tsx +7 -9
  462. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/ErrorBoundary/ErrorBoundary.tsx +1 -3
  463. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/FlowContainer/FlowContainer.tsx +21 -113
  464. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/FlowContainer/helpers.ts +1 -5
  465. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/ModalViewContainer/ListViewActionButtons/ListViewActionButtons.tsx +4 -3
  466. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/ModalViewContainer/ModalViewContainer.tsx +7 -6
  467. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/MultiStep/MultiStep.css +48 -70
  468. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/MultiStep/MultiStep.tsx +27 -58
  469. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/NavBar/NavBar.css +1 -1
  470. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/NavBar/NavBar.tsx +43 -32
  471. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/Reference/Reference.tsx +3 -4
  472. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/Region/Region.tsx +1 -1
  473. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/RootContainer/RootContainer.tsx +3 -4
  474. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/SimpleView/helper.ts +1 -1
  475. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/Stages/Stages.tsx +3 -4
  476. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/View/View.tsx +4 -3
  477. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/ViewContainer/ViewContainer.tsx +4 -5
  478. package/tests/assets/sdk-r/components/createAll/override-sdk/template/AdvancedSearch/AdvancedSearch.tsx +86 -0
  479. package/tests/assets/sdk-r/components/createAll/override-sdk/template/AdvancedSearch/SearchGroup/persistUtils.ts +52 -0
  480. package/tests/assets/sdk-r/components/createAll/override-sdk/template/AdvancedSearch/SearchGroups/SearchGroups.tsx +244 -0
  481. package/tests/assets/sdk-r/components/createAll/override-sdk/template/AdvancedSearch/SearchGroups/hooks.ts +37 -0
  482. package/tests/assets/sdk-r/components/createAll/override-sdk/template/AdvancedSearch/SearchGroups/index.tsx +1 -0
  483. package/tests/assets/sdk-r/components/createAll/override-sdk/template/AdvancedSearch/SearchGroups/utils.ts +29 -0
  484. package/tests/assets/sdk-r/components/createAll/override-sdk/template/AdvancedSearch/TemplateContext.ts +11 -0
  485. package/tests/assets/sdk-r/components/createAll/override-sdk/template/AdvancedSearch/config-ext.json +10 -0
  486. package/tests/assets/sdk-r/components/createAll/override-sdk/template/AdvancedSearch/index.tsx +1 -0
  487. package/tests/assets/sdk-r/components/createAll/override-sdk/template/AppShell/AppShell.css +1 -1
  488. package/tests/assets/sdk-r/components/createAll/override-sdk/template/AppShell/AppShell.tsx +22 -23
  489. package/tests/assets/sdk-r/components/createAll/override-sdk/template/BannerPage/BannerPage.tsx +2 -2
  490. package/tests/assets/sdk-r/components/createAll/override-sdk/template/CaseSummary/CaseSummary.tsx +28 -41
  491. package/tests/assets/sdk-r/components/createAll/override-sdk/template/CaseView/CaseView.tsx +32 -38
  492. package/tests/assets/sdk-r/components/createAll/override-sdk/template/CaseViewActionsMenu/CaseViewActionsMenu.tsx +1 -1
  493. package/tests/assets/sdk-r/components/createAll/override-sdk/template/Confirmation/Confirmation.tsx +3 -4
  494. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DataReference/DataReference.tsx +312 -106
  495. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DataReference/DataReferenceAdvancedSearchContext.ts +10 -0
  496. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DataReference/SearchForm.tsx +149 -0
  497. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DataReference/utils.ts +90 -0
  498. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DefaultForm/DefaultForm.tsx +3 -3
  499. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DefaultForm/utils/index.ts +1 -3
  500. package/tests/assets/sdk-r/components/createAll/override-sdk/template/Details/Details.tsx +11 -11
  501. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DetailsSubTabs/DetailsSubTabs.tsx +2 -2
  502. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DetailsThreeColumn/DetailsThreeColumn.tsx +11 -11
  503. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DetailsTwoColumn/DetailsTwoColumn.tsx +11 -11
  504. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DynamicTabs/DynamicTabs.tsx +1 -2
  505. package/tests/assets/sdk-r/components/createAll/override-sdk/template/FieldGroupTemplate/FieldGroupTemplate.tsx +2 -5
  506. package/tests/assets/sdk-r/components/createAll/override-sdk/template/InlineDashboard/InlineDashboard.tsx +14 -16
  507. package/tests/assets/sdk-r/components/createAll/override-sdk/template/InlineDashboardPage/InlineDashboardPage.tsx +2 -2
  508. package/tests/assets/sdk-r/components/createAll/override-sdk/template/ListPage/ListPage.tsx +1 -1
  509. package/tests/assets/sdk-r/components/createAll/override-sdk/template/ListView/ListView.tsx +285 -204
  510. package/tests/assets/sdk-r/components/createAll/override-sdk/template/ListView/hooks.ts +1 -5
  511. package/tests/assets/sdk-r/components/createAll/override-sdk/template/ListView/utils.ts +38 -6
  512. package/tests/assets/sdk-r/components/createAll/override-sdk/template/MultiReferenceReadOnly/MultiReferenceReadOnly.tsx +1 -1
  513. package/tests/assets/sdk-r/components/createAll/override-sdk/template/NarrowWide/NarrowWide.tsx +5 -5
  514. package/tests/assets/sdk-r/components/createAll/override-sdk/template/NarrowWideDetails/NarrowWideDetails.tsx +11 -11
  515. package/tests/assets/sdk-r/components/createAll/override-sdk/template/NarrowWideForm/NarrowWideForm.tsx +2 -2
  516. package/tests/assets/sdk-r/components/createAll/override-sdk/template/NarrowWidePage/NarrowWidePage.tsx +2 -2
  517. package/tests/assets/sdk-r/components/createAll/override-sdk/template/OneColumn/OneColumn.tsx +7 -7
  518. package/tests/assets/sdk-r/components/createAll/override-sdk/template/OneColumnPage/OneColumnPage.tsx +1 -1
  519. package/tests/assets/sdk-r/components/createAll/override-sdk/template/OneColumnTab/OneColumnTab.tsx +2 -2
  520. package/tests/assets/sdk-r/components/createAll/override-sdk/template/PromotedFilters/PromotedFilters.tsx +1 -3
  521. package/tests/assets/sdk-r/components/createAll/override-sdk/template/SearchGroups/SearchGroups.tsx +244 -0
  522. package/tests/assets/sdk-r/components/createAll/override-sdk/template/SearchGroups/hooks.ts +37 -0
  523. package/tests/assets/sdk-r/components/createAll/override-sdk/template/SearchGroups/index.tsx +1 -0
  524. package/tests/assets/sdk-r/components/createAll/override-sdk/template/SearchGroups/utils.ts +29 -0
  525. package/tests/assets/sdk-r/components/createAll/override-sdk/template/SimpleTable/SimpleTable.tsx +2 -5
  526. package/tests/assets/sdk-r/components/createAll/override-sdk/template/SimpleTableManual/SimpleTableManual.tsx +99 -84
  527. package/tests/assets/sdk-r/components/createAll/override-sdk/template/SimpleTableSelect/SimpleTableSelect.tsx +3 -5
  528. package/tests/assets/sdk-r/components/createAll/override-sdk/template/SingleReferenceReadOnly/SingleReferenceReadOnly.tsx +10 -2
  529. package/tests/assets/sdk-r/components/createAll/override-sdk/template/SubTabs/SubTabs.tsx +2 -2
  530. package/tests/assets/sdk-r/components/createAll/override-sdk/template/SubTabs/tabUtils.ts +118 -1
  531. package/tests/assets/sdk-r/components/createAll/override-sdk/template/TwoColumn/TwoColumn.tsx +9 -10
  532. package/tests/assets/sdk-r/components/createAll/override-sdk/template/TwoColumnPage/TwoColumnPage.tsx +1 -1
  533. package/tests/assets/sdk-r/components/createAll/override-sdk/template/TwoColumnTab/TwoColumnTab.tsx +9 -10
  534. package/tests/assets/sdk-r/components/createAll/override-sdk/template/WideNarrow/WideNarrow.tsx +5 -5
  535. package/tests/assets/sdk-r/components/createAll/override-sdk/template/WideNarrowDetails/WideNarrowDetails.tsx +11 -11
  536. package/tests/assets/sdk-r/components/createAll/override-sdk/template/WideNarrowForm/WideNarrowForm.tsx +2 -2
  537. package/tests/assets/sdk-r/components/createAll/override-sdk/template/WideNarrowPage/WideNarrowPage.tsx +2 -2
  538. package/tests/assets/sdk-r/components/createAll/override-sdk/template/WssNavBar/WssNavBar.css +1 -1
  539. package/tests/assets/sdk-r/components/createAll/override-sdk/template/WssNavBar/WssNavBar.tsx +6 -6
  540. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/ActionButtonsForFileUtil/ActionButtonsForFileUtil.css +0 -14
  541. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/ActionButtonsForFileUtil/ActionButtonsForFileUtil.tsx +3 -3
  542. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/AppAnnouncement/AppAnnouncement.tsx +1 -1
  543. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/Attachment/Attachment.css +7 -8
  544. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/Attachment/Attachment.tsx +304 -231
  545. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/Attachment/Attachment.types.ts +96 -0
  546. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/Attachment/AttachmentUtils.ts +316 -0
  547. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/CaseHistory/CaseHistory.tsx +5 -5
  548. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/FileUtility/FileUtility.css +7 -6
  549. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/FileUtility/FileUtility.tsx +30 -23
  550. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/Followers/Followers.tsx +2 -4
  551. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/QuickCreate/QuickCreate.tsx +1 -3
  552. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/SummaryItem/SummaryItem.css +9 -11
  553. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/SummaryItem/SummaryItem.tsx +3 -3
  554. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/SummaryList/SummaryList.tsx +1 -1
  555. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/ToDo/ToDo.css +1 -13
  556. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/ToDo/ToDo.tsx +38 -37
@@ -1,175 +1,192 @@
1
- /* eslint-disable react/jsx-boolean-value */
2
- /* eslint-disable react/no-array-index-key */
3
- /* eslint-disable no-nested-ternary */
4
- import { useState, useEffect, useCallback } from 'react';
1
+ import { useState, useEffect, useCallback, useMemo, useRef } from 'react';
5
2
  import { CircularProgress, IconButton, Menu, MenuItem, Button } from '@mui/material';
6
3
  import MoreVertIcon from '@mui/icons-material/MoreVert';
7
- import download from 'downloadjs';
8
4
 
9
- import { buildFilePropsFromResponse, getIconFromFileType, validateMaxSize } from '@pega/react-sdk-components/lib/components/helpers/attachmentHelpers';
10
5
  import { Utils } from '@pega/react-sdk-components/lib/components/helpers/utils';
11
- import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
6
+ import {
7
+ clearFieldErrorMessages,
8
+ deleteAttachments,
9
+ getIconFromFileType,
10
+ getMappedValue,
11
+ insertAttachments,
12
+ useDeepMemo,
13
+ useFileDownload,
14
+ validateFileExtension
15
+ } from './AttachmentUtils';
16
+ import { validateMaxSize } from '@pega/react-sdk-components/lib/components/helpers/attachmentShared';
17
+ import type { PageInstructionOptions } from './Attachment.types';
18
+ import type { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
12
19
 
13
20
  import './Attachment.css';
14
21
 
15
22
  interface AttachmentProps extends Omit<PConnFieldProps, 'value'> {
16
23
  // If any, enter additional props that only exist on this component
17
24
  value: any;
18
- allowMultiple: string;
25
+ allowMultiple: boolean | string;
19
26
  extensions: string;
27
+ editMode: string;
28
+ isTableFormatter: boolean;
20
29
  }
21
30
 
22
- const getAttachmentKey = (name = '') => (name ? `attachmentsList.${name}` : 'attachmentsList');
23
-
24
- const getCurrentAttachmentsList = (key, context) => {
25
- return PCore.getStoreValue(`.${key}`, 'context_data', context) || [];
26
- };
27
-
28
- const updateAttachmentState = (pConn, key, attachments) => {
29
- PCore.getStateUtils().updateState(pConn.getContextName(), key, attachments, {
30
- pageReference: 'context_data',
31
- isArrayDeepMerge: false
32
- });
33
- };
34
-
35
31
  export default function Attachment(props: AttachmentProps) {
36
- const { value, getPConnect, label, validatemessage, allowMultiple, extensions, displayMode } = props;
32
+ const { value, getPConnect, label, validatemessage, extensions, displayMode, helperText, editMode, isTableFormatter } = props;
37
33
  /* this is a temporary fix because required is supposed to be passed as a boolean and NOT as a string */
38
- let { required, disabled } = props;
39
- [required, disabled] = [required, disabled].map(prop => prop === true || (typeof prop === 'string' && prop === 'true'));
34
+ let { required, disabled, allowMultiple } = props;
35
+ [required, disabled, allowMultiple] = [required, disabled, allowMultiple].map(
36
+ prop => prop === true || (typeof prop === 'string' && prop === 'true')
37
+ );
40
38
  const pConn = getPConnect();
41
- const caseID = PCore.getStoreValue('.pyID', 'caseInfo.content', pConn.getContextName());
39
+ const localizationService = pConn.getLocalizationService();
40
+
41
+ const actionSequencer = useMemo(() => PCore.getActionsSequencer(), []);
42
+ const rawValue = pConn.getComponentConfig().value;
43
+ const isAttachmentAnnotationPresent = typeof rawValue === 'object' ? false : rawValue?.includes('@ATTACHMENT');
44
+ const { attachments, isOldAttachment } = isAttachmentAnnotationPresent ? value : PCore.getAttachmentUtils().prepareAttachmentData(value);
45
+
46
+ let valueRef = (pConn.getStateProps() as any).value;
47
+ valueRef = valueRef.indexOf('.') === 0 ? valueRef.substring(1) : valueRef;
48
+
49
+ pConn.setReferenceList(`.${valueRef}`);
50
+
51
+ const isMultiAttachmentInInlineEditTable = isTableFormatter && allowMultiple && editMode === 'tableRows';
52
+
53
+ const [files, setFiles] = useState<any[]>(attachments);
54
+ const overrideLocalState = useRef(false);
55
+ const attachmentCount = useRef(attachments.length);
56
+ const filesWithError = useRef<any[]>([]);
57
+ const multiAttachmentsInInlineEdit = useRef([]);
58
+ const thumbnailURLs = useRef<any[]>([]);
59
+ const contextName = pConn.getContextName();
60
+ const onFileDownload = useFileDownload(contextName);
61
+
42
62
  const localizedVal = PCore.getLocaleUtils().getLocaleValue;
43
63
  const localeCategory = 'CosmosFields';
44
64
  const uploadMultipleFilesLabel = localizedVal('file_upload_text_multiple', localeCategory);
45
65
  const uploadSingleFileLabel = localizedVal('file_upload_text_one', localeCategory);
46
- let categoryName = '';
47
- if (value && value.pyCategoryName) {
48
- categoryName = value.pyCategoryName;
49
- }
50
66
  const deleteIcon = Utils.getImageSrc('trash', Utils.getSDKStaticConentUrl());
51
67
  const srcImg = Utils.getImageSrc('document-doc', Utils.getSDKStaticConentUrl());
52
- let valueRef = (pConn.getStateProps() as any).value;
53
- valueRef = valueRef.indexOf('.') === 0 ? valueRef.substring(1) : valueRef;
68
+
54
69
  const [anchorEl, setAnchorEl] = useState(null);
55
70
  const open = Boolean(anchorEl);
56
- const [files, setFiles] = useState<any[]>(() =>
57
- value?.pxResults && +value.pyCount > 0 ? value.pxResults.map(f => buildFilePropsFromResponse(f)) : []
58
- );
59
- const [filesWithError, setFilesWithError] = useState<any[]>([]);
71
+
72
+ const fileInputRef = useRef<HTMLInputElement>(null);
60
73
  const [toggleUploadBegin, setToggleUploadBegin] = useState(false);
61
74
 
62
- const resetAttachmentStoredState = () => {
63
- PCore.getStateUtils().updateState(pConn.getContextName(), getAttachmentKey(valueRef), undefined, {
64
- pageReference: 'context_data',
65
- isArrayDeepMerge: false
66
- });
67
- };
75
+ const deleteFile = useCallback(
76
+ (file, fileIndex) => {
77
+ setAnchorEl(null);
68
78
 
69
- const fileDownload = (data, fileName, ext) => {
70
- const fileData = ext ? `${fileName}.${ext}` : fileName;
71
- download(atob(data), fileData);
72
- };
79
+ // reset the file input so that it will allow re-uploading the same file after deletion
80
+ if (fileInputRef.current) {
81
+ fileInputRef.current.value = ''; // Reset the input
82
+ }
73
83
 
74
- const downloadFile = (fileObj: any) => {
75
- setAnchorEl(null);
76
- PCore.getAttachmentUtils()
77
- // @ts-ignore - 3rd parameter "responseEncoding" should be optional
78
- .downloadAttachment(fileObj.pzInsKey, pConn.getContextName())
79
- .then((content: any) => {
80
- const extension = fileObj.pyAttachName.split('.').pop();
81
- fileDownload(content.data, fileObj.pyFileName, extension);
82
- })
83
- .catch(() => {});
84
- };
84
+ if (filesWithError.current.length > 0) {
85
+ filesWithError.current = filesWithError.current.filter(fileWithError => fileWithError.props.id !== file.props.id);
86
+ if (filesWithError.current.length === 0) {
87
+ clearFieldErrorMessages(pConn);
88
+ }
89
+ }
85
90
 
86
- const deleteFile = useCallback(
87
- file => {
88
- setAnchorEl(null);
89
- let attachmentsList: any[] = [];
90
- let currentAttachmentList = getCurrentAttachmentsList(getAttachmentKey(valueRef), pConn.getContextName());
91
-
92
- // If file to be deleted is the one added in previous stage i.e. for which a file instance is created in server
93
- // no need to filter currentAttachmentList as we will get another entry of file in redux with delete & label
94
- // eslint-disable-next-line no-unsafe-optional-chaining
95
- if (value && value?.pxResults && +value?.pyCount > 0 && file.responseProps && file?.responseProps?.pzInsKey !== 'temp') {
96
- const updatedAttachments = files.map(f => {
97
- if (f.responseProps && f.responseProps.pzInsKey === file.responseProps.pzInsKey) {
98
- return { ...f, delete: true, label: valueRef };
99
- }
100
- return f;
91
+ if (file.inProgress) {
92
+ // @ts-ignore - Expected 1 arguments, but got 2.ts(2554)
93
+ PCore.getAttachmentUtils().cancelRequest(file.props.id, contextName);
94
+ actionSequencer.deRegisterBlockingAction(contextName).catch(() => {});
95
+ setFiles(localFiles => {
96
+ return localFiles.filter(localFile => localFile.props.id !== file.props.id);
101
97
  });
98
+ } else {
99
+ deleteAttachments([file], pConn, multiAttachmentsInInlineEdit.current, {
100
+ allowMultiple,
101
+ isOldAttachment,
102
+ isMultiAttachmentInInlineEditTable,
103
+ attachmentCount: attachmentCount.current,
104
+ deleteIndex: fileIndex
105
+ } as any);
106
+ // Filter out without deleted file and reset the file indexes
107
+ setFiles(localFiles => {
108
+ let tempLocalFiles = [...localFiles];
109
+ tempLocalFiles = tempLocalFiles.filter(localFile => localFile.props.id !== file.props.id);
110
+ tempLocalFiles.forEach(localFile => {
111
+ if (!localFile.props.error && !file.props.error) {
112
+ const updatedDeleteIndex =
113
+ localFile.responseProps.deleteIndex > fileIndex ? localFile.responseProps.deleteIndex - 1 : localFile.responseProps.deleteIndex;
102
114
 
103
- // updating the redux store to help form-handler in passing the data to delete the file from server
104
- updateAttachmentState(pConn, getAttachmentKey(valueRef), [...updatedAttachments]);
105
- setFiles(current => {
106
- const newlyAddedFiles = current.filter(f => !!f.ID);
107
- const filesPostDelete = current.filter(
108
- f => f.responseProps?.pzInsKey !== 'temp' && f.responseProps?.pzInsKey !== file.responseProps?.pzInsKey
109
- );
110
- attachmentsList = [...filesPostDelete, ...newlyAddedFiles];
111
- return attachmentsList;
112
- });
113
- } // if the file being deleted is the added in this stage i.e. whose data is not yet created in server
114
- else {
115
- // filter newly added files in this stage, later the updated current stage files will be added to redux once files state is updated in below setFiles()
116
- currentAttachmentList = currentAttachmentList.filter(f => f.label !== valueRef);
117
- setFiles(current => {
118
- attachmentsList = current.filter(f => f.ID !== file.ID);
119
- return attachmentsList;
115
+ localFile.props.onDelete = () => deleteFile(localFile, updatedDeleteIndex);
116
+
117
+ localFile.responseProps.deleteIndex = updatedDeleteIndex;
118
+ }
119
+ });
120
+ return tempLocalFiles;
120
121
  });
121
- updateAttachmentState(pConn, getAttachmentKey(valueRef), [...currentAttachmentList, ...attachmentsList]);
122
- if (file.inProgress) {
123
- // @ts-ignore - 3rd parameter "responseEncoding" should be optional
124
- PCore.getAttachmentUtils().cancelRequest(file.ID, pConn.getContextName());
122
+ if (!file.props.error) {
123
+ attachmentCount.current -= 1;
125
124
  }
126
125
  }
127
126
 
128
127
  setToggleUploadBegin(false);
129
- setFilesWithError(prevFilesWithError => {
130
- return prevFilesWithError.filter(f => f.ID !== file.ID);
131
- });
132
128
  },
133
- [pConn, value, valueRef, filesWithError]
129
+ [pConn]
134
130
  );
135
131
 
136
- const onUploadProgress = () => {};
132
+ const onUploadProgress = (id, ev) => {
133
+ const progress = Math.floor((ev.loaded / ev.total) * 100);
134
+ setFiles(localFiles => [
135
+ ...localFiles.map(localFile => {
136
+ if (localFile.props?.id === id) {
137
+ localFile.inProgress = true;
138
+ localFile.props.progress = progress;
139
+ }
140
+ return localFile;
141
+ })
142
+ ]);
143
+ };
137
144
 
138
- const errorHandler = (isFetchCanceled, attachedFile) => {
145
+ const populateErrorAndUpdateRedux = file => {
146
+ const fieldName = (pConn.getStateProps() as any).value;
147
+ // set errors to property to block submit even on errors in file upload
148
+ PCore.getMessageManager().addMessages({
149
+ messages: [
150
+ {
151
+ type: 'error',
152
+ message: localizationService.getLocalizedText('Error with one or more files')
153
+ }
154
+ ],
155
+ property: fieldName,
156
+ pageReference: pConn.getPageReference(),
157
+ context: contextName
158
+ });
159
+ insertAttachments([file], pConn, multiAttachmentsInInlineEdit.current, {
160
+ allowMultiple,
161
+ isOldAttachment,
162
+ isMultiAttachmentInInlineEditTable,
163
+ attachmentCount: attachmentCount.current
164
+ } as any);
165
+ };
166
+
167
+ const errorHandler = (isFetchCanceled, file) => {
139
168
  return error => {
140
169
  if (!isFetchCanceled(error)) {
141
- let uploadFailMsg = pConn.getLocalizedValue('Something went wrong', '', '');
170
+ let uploadFailMsg = localizationService.getLocalizedText('Something went wrong');
142
171
  if (error.response && error.response.data && error.response.data.errorDetails) {
143
- uploadFailMsg = pConn.getLocalizedValue(error.response.data.errorDetails[0].localizedValue, '', '');
172
+ uploadFailMsg = localizationService.getLocalizedText(error.response.data.errorDetails[0].localizedValue);
144
173
  }
174
+
145
175
  setFiles(current => {
146
- return current.map(f => {
147
- if (f.ID === attachedFile.ID) {
148
- f.props.meta = uploadFailMsg;
149
- f.props.error = true;
150
- f.props.onDelete = () => deleteFile(f);
151
- f.props.icon = getIconFromFileType(f.type);
152
- f.props.name = pConn.getLocalizedValue('Unable to upload file', '', '');
153
- f.inProgress = false;
154
- const fieldName = (pConn.getStateProps() as any).value;
155
- const context = pConn.getContextName();
156
- // set errors to property to block submit even on errors in file upload
157
- PCore.getMessageManager().addMessages({
158
- // @ts-ignore
159
- messages: [
160
- {
161
- type: 'error',
162
- // @ts-ignore - Type '{ type: string; message: string; }' is not assignable to type 'MessagesConfigObject'.
163
- message: pConn.getLocalizedValue('Error with one or more files', '', '')
164
- }
165
- ],
166
- property: fieldName,
167
- pageReference: pConn.getPageReference(),
168
- context
169
- });
170
- delete f.props.progress;
176
+ return current.map((localFile, index) => {
177
+ if (localFile.props.id === file.props.id) {
178
+ localFile.props.meta = uploadFailMsg;
179
+ localFile.props.error = true;
180
+ localFile.props.onDelete = () => deleteFile(localFile, index);
181
+ localFile.props.icon = getIconFromFileType(localFile.type);
182
+ localFile.props.name = localizationService.getLocalizedText('Unable to upload file');
183
+ localFile.inProgress = false;
184
+ delete localFile.props.progress;
185
+ filesWithError.current.push(localFile);
186
+
187
+ populateErrorAndUpdateRedux(localFile);
171
188
  }
172
- return f;
189
+ return localFile;
173
190
  });
174
191
  });
175
192
  }
@@ -177,81 +194,62 @@ export default function Attachment(props: AttachmentProps) {
177
194
  };
178
195
  };
179
196
 
180
- const validateFileExtension = (fileObj, allowedExtensions) => {
181
- if (!allowedExtensions) {
182
- return true;
183
- }
184
- const allowedExtensionList = allowedExtensions
185
- .toLowerCase()
186
- .split(',')
187
- .map(item => item.replaceAll('.', '').trim());
188
- const extension = fileObj.name.split('.').pop().toLowerCase();
189
- return allowedExtensionList.includes(extension);
190
- };
191
-
192
- const clearFieldErrorMessages = () => {
193
- const fieldName = (pConn.getStateProps() as any).value;
194
- const context = pConn.getContextName();
195
- // @ts-ignore
196
- PCore.getMessageManager().clearMessages({
197
- type: PCore.getConstants().MESSAGES.MESSAGES_TYPE_ERROR,
198
- property: fieldName,
199
- pageReference: pConn.getPageReference(),
200
- context
201
- });
202
- };
203
-
204
197
  const onFileAdded = event => {
205
198
  let addedFiles = Array.from(event.target.files);
206
- addedFiles = allowMultiple === 'true' ? addedFiles : [addedFiles[0]];
199
+ addedFiles = allowMultiple ? addedFiles : [addedFiles[0]];
207
200
  const maxAttachmentSize = PCore.getEnvironmentInfo().getMaxAttachmentSize() || '5';
208
201
  const tempFilesToBeUploaded = [
209
202
  ...addedFiles.map((f: any, index) => {
210
203
  f.ID = `${new Date().getTime()}I${index}`;
211
- f.inProgress = true;
212
204
  f.props = {
213
205
  type: f.type,
214
206
  name: f.name,
207
+ id: f.ID,
208
+ format: f.name.split('.').pop(),
215
209
  icon: getIconFromFileType(f.type),
216
- onDelete: () => deleteFile(f)
210
+ onDelete: () => deleteFile(f, index),
211
+ thumbnail: window.URL.createObjectURL(f)
217
212
  };
218
213
  if (!validateMaxSize(f, maxAttachmentSize)) {
219
214
  f.props.error = true;
220
- f.inProgress = false;
221
- f.props.meta = pConn.getLocalizedValue(`File is too big. Max allowed size is ${maxAttachmentSize}MB.`, '', '');
215
+ f.props.meta = localizationService.getLocalizedText(`File is too big. Max allowed size is ${maxAttachmentSize}MB.`);
222
216
  } else if (!validateFileExtension(f, extensions)) {
223
217
  f.props.error = true;
224
- f.inProgress = false;
225
- f.props.meta = `${pConn.getLocalizedValue('File has invalid extension. Allowed extensions are:', '', '')} ${extensions.replaceAll(
218
+ f.props.meta = `${localizationService.getLocalizedText('File has invalid extension. Allowed extensions are:')} ${extensions.replaceAll(
226
219
  '.',
227
220
  ''
228
221
  )}`;
229
222
  }
230
223
  if (f.props.error) {
231
224
  const fieldName = (pConn.getStateProps() as any).value;
232
- const context = pConn.getContextName();
233
225
  PCore.getMessageManager().addMessages({
234
- // @ts-ignore
235
226
  messages: [
236
227
  {
237
228
  type: 'error',
238
- // @ts-ignore - Type '{ type: string; message: string; }' is not assignable to type 'MessagesConfigObject'.
239
- message: pConn.getLocalizedValue('Error with one or more files', '', '')
229
+ message: localizationService.getLocalizedText('Error with one or more files')
240
230
  }
241
231
  ],
242
232
  property: fieldName,
243
233
  pageReference: pConn.getPageReference(),
244
- context
234
+ context: contextName
245
235
  });
246
236
  }
247
237
  return f;
248
238
  })
249
239
  ];
240
+
250
241
  const tempFilesWithError = tempFilesToBeUploaded.filter(f => f.props.error);
251
242
  if (tempFilesWithError.length > 0) {
252
- setFilesWithError(tempFilesWithError);
243
+ filesWithError.current = [...filesWithError.current, ...tempFilesWithError];
244
+
245
+ insertAttachments(tempFilesWithError, pConn, multiAttachmentsInInlineEdit.current, {
246
+ allowMultiple,
247
+ isOldAttachment,
248
+ isMultiAttachmentInInlineEditTable,
249
+ attachmentCount: attachmentCount.current
250
+ } as PageInstructionOptions);
253
251
  }
254
- setFiles(current => (allowMultiple !== 'true' ? [...tempFilesToBeUploaded] : [...current, ...tempFilesToBeUploaded]));
252
+ setFiles(current => (!allowMultiple ? [...tempFilesToBeUploaded] : [...current, ...tempFilesToBeUploaded]));
255
253
  setToggleUploadBegin(true);
256
254
  };
257
255
 
@@ -260,106 +258,178 @@ export default function Attachment(props: AttachmentProps) {
260
258
  .filter(e => {
261
259
  const isFileUploaded = e.props && e.props.progress === 100;
262
260
  const fileHasError = e.props && e.props.error;
263
- const isFileUploadedinLastStep = e.responseProps && e.responseProps.pzInsKey;
264
- return !isFileUploaded && !fileHasError && !isFileUploadedinLastStep;
261
+ const isFileUploadedInLastStep = e.responseProps && e.responseProps.ID !== 'temp';
262
+ const isFileUploadInProgress = e.inProgress;
263
+ return !isFileUploadInProgress && !isFileUploaded && !fileHasError && !isFileUploadedInLastStep;
265
264
  })
266
- .map(f =>
267
- window.PCore.getAttachmentUtils().uploadAttachment(
268
- f,
269
- () => {
270
- onUploadProgress();
265
+ .map(file =>
266
+ PCore.getAttachmentUtils().uploadAttachment(
267
+ file,
268
+ ev => {
269
+ onUploadProgress(file.props.id, ev);
271
270
  },
272
271
  isFetchCanceled => {
273
- return errorHandler(isFetchCanceled, f);
272
+ return errorHandler(isFetchCanceled, file);
274
273
  },
275
- pConn.getContextName()
274
+ contextName
276
275
  )
277
276
  );
277
+
278
+ // allow new files to be added when other files upload is still in progress
279
+ setToggleUploadBegin(false);
278
280
  Promise.allSettled(filesToBeUploaded)
279
281
  .then((fileResponses: any) => {
280
282
  fileResponses = fileResponses.filter(fr => fr.status !== 'rejected'); // in case of deleting an in progress file, promise gets cancelled but still enters then block
281
283
  if (fileResponses.length > 0) {
282
- setFiles(current => {
283
- const tempFilesUploaded = [...current];
284
- tempFilesUploaded.forEach(f => {
285
- const index = fileResponses.findIndex((fr: any) => fr.value.clientFileID === f.ID);
284
+ setFiles(localFiles => {
285
+ const tempFilesUploaded = [...localFiles];
286
+ tempFilesUploaded.forEach(localFile => {
287
+ // if attach field has multiple files & in bw any error files are present
288
+ // Example : files = [properFile1, errFile, errFile, properFile2]
289
+ // indexes for delete & preview should be for files [properFile1, properFile2] which is [1,2]
290
+ const index = fileResponses.findIndex(fileResponse => fileResponse.value.clientFileID === localFile.props.id);
286
291
  if (index >= 0) {
287
- f.props.meta = pConn.getLocalizedValue('Uploaded successfully', '', '');
288
- f.props.progress = 100;
289
- f.inProgress = false;
290
- f.handle = fileResponses[index].value.ID;
291
- f.label = valueRef;
292
- f.category = categoryName;
293
- f.responseProps = {
294
- pzInsKey: 'temp',
295
- pyAttachName: f.props.name
292
+ fileResponses[index].value.thumbnail = localFile.props.thumbnail;
293
+ localFile.inProgress = false;
294
+ localFile.ID = fileResponses[index].value.ID;
295
+ localFile.props.meta = localizationService.getLocalizedText('Uploaded successfully');
296
+ localFile.props.progress = 100;
297
+ localFile.handle = fileResponses[index].value.ID;
298
+ localFile.label = valueRef;
299
+ localFile.responseProps = {
300
+ pzInsKey: 'temp'
296
301
  };
297
302
  }
298
303
  });
299
304
  return tempFilesUploaded;
300
305
  });
301
306
 
302
- if (filesWithError.length === 0) {
303
- clearFieldErrorMessages();
307
+ insertAttachments(fileResponses, pConn, multiAttachmentsInInlineEdit.current, {
308
+ allowMultiple,
309
+ isOldAttachment,
310
+ isMultiAttachmentInInlineEditTable,
311
+ attachmentCount: attachmentCount.current,
312
+ insert: true
313
+ } as any);
314
+ attachmentCount.current += fileResponses.length;
315
+
316
+ if (filesWithError.current.length === 0) {
317
+ clearFieldErrorMessages(pConn);
304
318
  }
305
319
  }
306
- setToggleUploadBegin(false);
320
+ actionSequencer.deRegisterBlockingAction(contextName).catch(() => {});
307
321
  })
308
322
  .catch(error => {
309
- // eslint-disable-next-line no-console
310
323
  console.log(error);
311
324
  setToggleUploadBegin(false);
312
325
  });
313
- }, [files, filesWithError]);
326
+ }, [files]);
314
327
 
315
328
  useEffect(() => {
316
329
  if (toggleUploadBegin && files.length > 0) {
317
- uploadFiles();
330
+ actionSequencer.registerBlockingAction(contextName).then(() => {
331
+ uploadFiles();
332
+ });
318
333
  }
319
334
  }, [toggleUploadBegin]);
320
335
 
321
336
  useEffect(() => {
322
- if (files.length > 0 && displayMode !== 'DISPLAY_ONLY') {
323
- const currentAttachmentList = getCurrentAttachmentsList(getAttachmentKey(valueRef), pConn.getContextName());
324
- // block duplicate files to redux store when added 1 after another to prevent multiple duplicates being added to the case on submit
325
- const tempFiles = files.filter(f => currentAttachmentList.findIndex(fr => fr.ID === f.ID) === -1 && !f.inProgress && f.responseProps);
326
-
327
- const updatedAttList = [...currentAttachmentList, ...tempFiles];
328
- updateAttachmentState(pConn, getAttachmentKey(valueRef), updatedAttList);
337
+ if (filesWithError.current.length === 0) {
338
+ clearFieldErrorMessages(pConn);
329
339
  }
330
- }, [files]);
340
+ }, [filesWithError]);
341
+
342
+ const memoizedAttachments = useDeepMemo(() => {
343
+ return attachments;
344
+ }, [attachments]);
345
+
346
+ // Prepares new structure as per Cosmos component
347
+ const transformAttachments = () => {
348
+ const transformedFiles = [...attachments];
349
+ let deleteIndex = -1;
350
+ transformedFiles.forEach(attachment => {
351
+ attachment.props.id = attachment.responseProps.ID;
352
+ attachment.props.format = attachment.props.name.split('.').pop();
353
+ if (attachment.props.error) {
354
+ attachment.responseProps.deleteIndex = deleteIndex;
355
+ } else {
356
+ deleteIndex += 1;
357
+ attachment.responseProps.deleteIndex = deleteIndex;
358
+ }
359
+ if (attachment.props.thumbnail) {
360
+ thumbnailURLs.current.push(attachment.props.thumbnail);
361
+ }
362
+ });
363
+
364
+ return transformedFiles;
365
+ };
331
366
 
332
367
  useEffect(() => {
333
- if (filesWithError.length === 0) {
334
- clearFieldErrorMessages();
368
+ const caseID = PCore.getStoreValue(`.${getMappedValue('pyID')}`, PCore.getResolvedConstantValue('caseInfo.content'), contextName);
369
+ if (displayMode !== 'DISPLAY_ONLY') {
370
+ PCore.getPubSubUtils().subscribe(
371
+ PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS.ASSIGNMENT_SUBMISSION,
372
+ () => {
373
+ overrideLocalState.current = true;
374
+ },
375
+ caseID
376
+ );
335
377
  }
336
- }, [filesWithError]);
337
378
 
338
- useEffect(() => {
339
- let tempUploadedFiles = getCurrentAttachmentsList(getAttachmentKey(valueRef), pConn.getContextName());
340
- tempUploadedFiles = tempUploadedFiles.filter(f => f.label === valueRef);
341
- setFiles(current => {
342
- return [
343
- ...current.map(f => {
344
- return f.responseProps.pzInsKey && !f.responseProps.pzInsKey.includes('temp')
345
- ? {
346
- ...f,
347
- props: {
348
- ...f.props,
349
- onDelete: () => deleteFile(f)
350
- }
351
- }
352
- : { ...f };
353
- }),
354
- ...tempUploadedFiles
355
- ];
356
- });
357
- PCore.getPubSubUtils().subscribe(PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS.ASSIGNMENT_SUBMISSION, resetAttachmentStoredState, caseID);
379
+ // When component mounts, only set local files state from redux.
380
+ const serverFiles = transformAttachments();
381
+ setFiles(serverFiles);
382
+ filesWithError.current = serverFiles.filter(file => file.props.error);
383
+
358
384
  return () => {
359
- PCore.getPubSubUtils().unsubscribe(PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS.ASSIGNMENT_SUBMISSION, caseID);
385
+ if (displayMode !== 'DISPLAY_ONLY') {
386
+ PCore.getPubSubUtils().unsubscribe(PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS.ASSIGNMENT_SUBMISSION, caseID);
387
+ }
360
388
  };
361
389
  }, []);
362
390
 
391
+ useEffect(() => {
392
+ if (overrideLocalState.current) {
393
+ const serverFiles = transformAttachments();
394
+ overrideLocalState.current = false;
395
+ attachmentCount.current = attachments.length;
396
+ filesWithError.current = [];
397
+ setFiles(serverFiles);
398
+ } else {
399
+ // Determine whether refresh call has overridden any error files in redux, push error files back to redux from local state to perform client side validation during assignment submit
400
+ const errorFiles = attachments.filter(attachment => attachment.props.error);
401
+ if (errorFiles.length === 0 && filesWithError.current.length > 0) {
402
+ // Check if local file state contains error files and push those to redux
403
+ const uniqueKey = getMappedValue('pzInsKey');
404
+ const transformedErrorFiles = filesWithError.current.map(errorFile => {
405
+ const filename = errorFile.props.name;
406
+ return {
407
+ [uniqueKey]: errorFile.props.id,
408
+ FileName: filename,
409
+ Category: '',
410
+ FileExtension: filename.split('.').pop() ?? filename,
411
+ error: errorFile.props.error || null
412
+ };
413
+ });
414
+ let key = '';
415
+ let updatedAttachments: any = [];
416
+ if (allowMultiple || isOldAttachment) {
417
+ key = isOldAttachment ? `${valueRef}.pxResults` : valueRef;
418
+ const existingAttachments = PCore.getStoreValue(`.${key}`, pConn.getPageReference(), pConn.getContextName()) || [];
419
+ updatedAttachments = [...existingAttachments, ...transformedErrorFiles];
420
+ } else {
421
+ key = valueRef;
422
+ updatedAttachments = transformedErrorFiles[0];
423
+ }
424
+ PCore.getStateUtils().updateState(pConn.getContextName(), key, updatedAttachments, {
425
+ pageReference: pConn.getPageReference(),
426
+ isArrayDeepMerge: false,
427
+ removePropertyFromChangedList: true
428
+ });
429
+ }
430
+ }
431
+ }, [memoizedAttachments]);
432
+
363
433
  const handleClick = event => {
364
434
  setAnchorEl(event.currentTarget);
365
435
  };
@@ -380,13 +450,13 @@ export default function Attachment(props: AttachmentProps) {
380
450
  id={valueRef}
381
451
  name='upload-photo'
382
452
  type='file'
383
- multiple={allowMultiple === 'true'}
453
+ multiple={allowMultiple}
384
454
  required={required}
385
455
  disabled={disabled}
386
456
  onChange={onFileAdded}
387
457
  />
388
458
  <Button style={{ textTransform: 'none' }} variant='outlined' color='primary' component='span'>
389
- {allowMultiple === 'true'
459
+ {allowMultiple
390
460
  ? uploadMultipleFilesLabel === 'file_upload_text_multiple'
391
461
  ? 'Choose files'
392
462
  : uploadMultipleFilesLabel
@@ -420,7 +490,7 @@ export default function Attachment(props: AttachmentProps) {
420
490
  </div>
421
491
  <div className='psdk-utility-action'>
422
492
  {item.ID && (
423
- <button type='button' className='psdk-utility-button' aria-label='Delete Attachment' onClick={() => deleteFile(item)}>
493
+ <button type='button' className='psdk-utility-button' aria-label='Delete Attachment' onClick={() => deleteFile(item, index)}>
424
494
  <img className='psdk-utility-card-action-svg-icon' src={deleteIcon} />
425
495
  </button>
426
496
  )}
@@ -440,11 +510,14 @@ export default function Attachment(props: AttachmentProps) {
440
510
  <MenuItem
441
511
  style={{ fontSize: '14px' }}
442
512
  key='download'
443
- onClick={() => downloadFile(item.responseProps ? item.responseProps : {})}
513
+ onClick={() => {
514
+ setAnchorEl(null);
515
+ onFileDownload(item.responseProps ? item.responseProps : {});
516
+ }}
444
517
  >
445
518
  Download
446
519
  </MenuItem>
447
- <MenuItem style={{ fontSize: '14px' }} key='delete' onClick={() => deleteFile(item)}>
520
+ <MenuItem style={{ fontSize: '14px' }} key='delete' onClick={() => deleteFile(item, index)}>
448
521
  Delete
449
522
  </MenuItem>
450
523
  </Menu>
@@ -460,8 +533,8 @@ export default function Attachment(props: AttachmentProps) {
460
533
  return (
461
534
  <div className='file-upload-container'>
462
535
  <span className={`label ${required ? 'file-label' : ''}`}>{label}</span>
463
- {((files.length === 0 && allowMultiple !== 'true') || allowMultiple === 'true') && <section>{content}</section>}
464
- {validatemessage !== '' ? <span className='file-error'>{validatemessage}</span> : ''}
536
+ {((files.length === 0 && !allowMultiple) || allowMultiple) && <section>{content}</section>}
537
+ {validatemessage !== '' ? <span className='file-error'>{validatemessage}</span> : <span style={{ fontSize: '14px' }}>{helperText}</span>}
465
538
  {files && files.length > 0 && <section>{fileDisplay}</section>}
466
539
  </div>
467
540
  );