@pega/dx-component-builder-sdk 25.1.16 → 26.1.10

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 (208) hide show
  1. package/package.json +1 -1
  2. package/pega-dx-component-builder-sdk-26.1.10.tgz +0 -0
  3. package/src/constants.js +4 -0
  4. package/src/tasks/create/templates/Constellation/field/Picklist-Autocomplete/utils.ts.mustache +1 -1
  5. package/src/tasks/create/templates/Constellation/template/DETAILS/DetailsRender.tsx.mustache +1 -1
  6. package/src/tasks/create/templates/Constellation/template/DETAILS-region/DetailsRender.tsx.mustache +1 -1
  7. package/src/tasks/create/templates/Constellation/template/FORM/DetailsRender.tsx +1 -1
  8. package/src/tasks/create/templates/Constellation/template/FORM-region/DetailsRender.tsx +1 -1
  9. package/src/tasks/create/templates/SDK-React/field/Boolean/index.tsx.mustache +22 -6
  10. package/src/tasks/create/templates/SDK-React/field/Date/demo.stories.tsx.mustache +8 -1
  11. package/src/tasks/create/templates/SDK-React/field/Date/index.tsx.mustache +22 -13
  12. package/src/tasks/create/templates/SDK-React/field/DateTime/demo.stories.tsx.mustache +9 -1
  13. package/src/tasks/create/templates/SDK-React/field/DateTime/index.tsx.mustache +23 -14
  14. package/src/tasks/create/templates/SDK-React/field/Decimal/index.tsx.mustache +24 -8
  15. package/src/tasks/create/templates/SDK-React/field/Decimal-Currency/index.tsx.mustache +24 -8
  16. package/src/tasks/create/templates/SDK-React/field/Decimal-Percentage/index.tsx.mustache +24 -10
  17. package/src/tasks/create/templates/SDK-React/field/Integer/index.tsx.mustache +26 -14
  18. package/src/tasks/create/templates/SDK-React/field/Picklist/index.tsx.mustache +34 -8
  19. package/src/tasks/create/templates/SDK-React/field/Picklist-Autocomplete/index.tsx.mustache +25 -9
  20. package/src/tasks/create/templates/SDK-React/field/Picklist-RadioButtons/index.tsx.mustache +21 -5
  21. package/src/tasks/create/templates/SDK-React/field/Text/index.tsx.mustache +25 -14
  22. package/src/tasks/create/templates/SDK-React/field/Text-Email/index.tsx.mustache +32 -21
  23. package/src/tasks/create/templates/SDK-React/field/Text-Input/index.tsx.mustache +25 -10
  24. package/src/tasks/create/templates/SDK-React/field/Text-Paragraph/index.tsx.mustache +26 -14
  25. package/src/tasks/create/templates/SDK-React/field/Text-Phone/index.tsx.mustache +28 -10
  26. package/src/tasks/create/templates/SDK-React/field/Text-URL/index.tsx.mustache +26 -14
  27. package/src/tasks/create/templates/SDK-React/field/TimeOfDay/demo.stories.tsx.mustache +9 -1
  28. package/src/tasks/create/templates/SDK-React/field/TimeOfDay/index.tsx.mustache +22 -17
  29. package/src/tasks/create/templates/SDK-React/template/FORM/DefaultForm.css +82 -2
  30. package/src/tasks/create/templates/SDK-React/template/FORM/index.tsx.mustache +51 -11
  31. package/src/tasks/create/templates/SDK-React/widget/CASE/index.tsx.mustache +19 -15
  32. package/src/tasks/create/templates/SDK-React/widget/PAGE/index.tsx.mustache +2 -167
  33. package/src/tasks/create/templates/SDK-React/widget/PAGE-CASE/index.tsx.mustache +72 -15
  34. package/tests/assets/sdk-r/components/create/custom-sdk/field/Pega_DXIL_MyTestText/index.tsx +25 -14
  35. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/AlertBanner/AlertBanner.css +46 -0
  36. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/AlertBanner/AlertBanner.tsx +37 -20
  37. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/CaseSummaryFields/CaseSummaryFields.css +14 -0
  38. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +57 -5
  39. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/FieldGroup/FieldGroup.tsx +18 -11
  40. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/FieldGroupList/FieldGroupList.tsx +1 -1
  41. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/FieldValueList/FieldValueList.tsx +19 -4
  42. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/Operator/Operator.tsx +125 -74
  43. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/RichTextEditor/RichTextEditor.tsx +184 -90
  44. package/tests/assets/sdk-r/components/create/override-sdk/field/AutoComplete/AutoComplete.tsx +372 -26
  45. package/tests/assets/sdk-r/components/create/override-sdk/field/Checkbox/Checkbox.tsx +22 -6
  46. package/tests/assets/sdk-r/components/create/override-sdk/field/Currency/Currency.tsx +22 -4
  47. package/tests/assets/sdk-r/components/create/override-sdk/field/Date/Date.tsx +35 -4
  48. package/tests/assets/sdk-r/components/create/override-sdk/field/DateTime/DateTime.tsx +35 -4
  49. package/tests/assets/sdk-r/components/create/override-sdk/field/Decimal/Decimal.tsx +22 -4
  50. package/tests/assets/sdk-r/components/create/override-sdk/field/Dropdown/Dropdown.tsx +48 -16
  51. package/tests/assets/sdk-r/components/create/override-sdk/field/Email/Email.tsx +21 -4
  52. package/tests/assets/sdk-r/components/create/override-sdk/field/Group/Group.tsx +28 -4
  53. package/tests/assets/sdk-r/components/create/override-sdk/field/Integer/Integer.tsx +21 -4
  54. package/tests/assets/sdk-r/components/create/override-sdk/field/Multiselect/Multiselect.tsx +42 -20
  55. package/tests/assets/sdk-r/components/create/override-sdk/field/Multiselect/utils.ts +5 -3
  56. package/tests/assets/sdk-r/components/create/override-sdk/field/ObjectReference/ObjectReference.tsx +554 -66
  57. package/tests/assets/sdk-r/components/create/override-sdk/field/ObjectReference/utils.ts +108 -20
  58. package/tests/assets/sdk-r/components/create/override-sdk/field/Percentage/Percentage.tsx +22 -4
  59. package/tests/assets/sdk-r/components/create/override-sdk/field/Phone/Phone.tsx +23 -4
  60. package/tests/assets/sdk-r/components/create/override-sdk/field/RadioButtons/RadioButtons.tsx +20 -4
  61. package/tests/assets/sdk-r/components/create/override-sdk/field/RichText/RichText.css +0 -79
  62. package/tests/assets/sdk-r/components/create/override-sdk/field/RichText/RichText.tsx +1 -1
  63. package/tests/assets/sdk-r/components/create/override-sdk/field/SelectableCard/SelectableCard.tsx +25 -10
  64. package/tests/assets/sdk-r/components/create/override-sdk/field/TextArea/TextArea.tsx +22 -4
  65. package/tests/assets/sdk-r/components/create/override-sdk/field/TextInput/TextInput.tsx +21 -4
  66. package/tests/assets/sdk-r/components/create/override-sdk/field/Time/Time.tsx +35 -4
  67. package/tests/assets/sdk-r/components/create/override-sdk/field/URL/URL.tsx +22 -4
  68. package/tests/assets/sdk-r/components/create/override-sdk/field/UserReference/UserReference.tsx +10 -6
  69. package/tests/assets/sdk-r/components/create/override-sdk/infra/Assignment/Assignment.tsx +36 -14
  70. package/tests/assets/sdk-r/components/create/override-sdk/infra/Assignment/useValidationBanner.ts +29 -0
  71. package/tests/assets/sdk-r/components/create/override-sdk/infra/DeferLoad/DeferLoad.tsx +31 -10
  72. package/tests/assets/sdk-r/components/create/override-sdk/infra/FlowContainer/FlowContainer.tsx +5 -6
  73. package/tests/assets/sdk-r/components/create/override-sdk/infra/LeftAlignVerticalTabs/LeftAlignVerticalTabs.tsx +1 -1
  74. package/tests/assets/sdk-r/components/create/override-sdk/infra/ModalViewContainer/DataViewActionButtons/DataViewActionButtons.tsx +138 -0
  75. package/tests/assets/sdk-r/components/create/override-sdk/infra/ModalViewContainer/ModalViewContainer.tsx +110 -64
  76. package/tests/assets/sdk-r/components/create/override-sdk/infra/MultiStep/MultiStep.css +63 -0
  77. package/tests/assets/sdk-r/components/create/override-sdk/infra/MultiStep/MultiStep.tsx +23 -52
  78. package/tests/assets/sdk-r/components/create/override-sdk/infra/NavBar/NavBar.tsx +8 -3
  79. package/tests/assets/sdk-r/components/create/override-sdk/infra/Reference/Reference.tsx +5 -0
  80. package/tests/assets/sdk-r/components/create/override-sdk/infra/RootContainer/RootContainer.tsx +4 -5
  81. package/tests/assets/sdk-r/components/create/override-sdk/infra/View/View.css +1 -0
  82. package/tests/assets/sdk-r/components/create/override-sdk/infra/View/View.tsx +10 -17
  83. package/tests/assets/sdk-r/components/create/override-sdk/infra/ViewContainer/ViewContainer.tsx +8 -10
  84. package/tests/assets/sdk-r/components/create/override-sdk/template/AppShell/AppShell.css +0 -4
  85. package/tests/assets/sdk-r/components/create/override-sdk/template/AppShell/AppShell.tsx +7 -1
  86. package/tests/assets/sdk-r/components/create/override-sdk/template/CaseSummary/CaseSummary.tsx +9 -42
  87. package/tests/assets/sdk-r/components/create/override-sdk/template/CaseView/CaseView.tsx +8 -2
  88. package/tests/assets/sdk-r/components/create/override-sdk/template/CaseViewActionsMenu/CaseViewActionsMenu.tsx +58 -3
  89. package/tests/assets/sdk-r/components/create/override-sdk/template/DataReference/DataReference.tsx +56 -33
  90. package/tests/assets/sdk-r/components/create/override-sdk/template/DataReference/SearchForm.tsx +3 -4
  91. package/tests/assets/sdk-r/components/create/override-sdk/template/DefaultForm/DefaultForm.css +71 -0
  92. package/tests/assets/sdk-r/components/create/override-sdk/template/DefaultForm/DefaultForm.tsx +45 -9
  93. package/tests/assets/sdk-r/components/create/override-sdk/template/FieldGroupTemplate/FieldGroupTemplate.tsx +10 -3
  94. package/tests/assets/sdk-r/components/create/override-sdk/template/ListView/ListView.tsx +139 -59
  95. package/tests/assets/sdk-r/components/create/override-sdk/template/ListView/hooks.ts +80 -13
  96. package/tests/assets/sdk-r/components/create/override-sdk/template/ListView/utils.ts +13 -3
  97. package/tests/assets/sdk-r/components/create/override-sdk/template/MultiReferenceReadOnly/MultiReferenceReadOnly.tsx +16 -1
  98. package/tests/assets/sdk-r/components/create/override-sdk/template/SimpleTableManual/SimpleTableManual.tsx +167 -93
  99. package/tests/assets/sdk-r/components/create/override-sdk/template/SimpleTableSelect/SimpleTableSelect.tsx +71 -56
  100. package/tests/assets/sdk-r/components/create/override-sdk/template/SingleReferenceReadOnly/SingleReferenceReadOnly.tsx +12 -7
  101. package/tests/assets/sdk-r/components/create/override-sdk/widget/Attachment/Attachment.tsx +119 -26
  102. package/tests/assets/sdk-r/components/create/override-sdk/widget/Attachment/AttachmentUtils.ts +1 -1
  103. package/tests/assets/sdk-r/components/create/override-sdk/widget/CaseHistory/CaseHistory.tsx +16 -12
  104. package/tests/assets/sdk-r/components/create/override-sdk/widget/FileUtility/FileUtility.tsx +40 -28
  105. package/tests/assets/sdk-r/components/create/override-sdk/widget/ToDo/ToDo.tsx +14 -6
  106. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MySearchbox/utils.ts +1 -1
  107. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyDetails/DetailsRender.tsx +1 -1
  108. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyForm/DetailsRender.tsx +1 -1
  109. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyTwoColumnDetails/DetailsRender.tsx +1 -1
  110. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyTwoColumnForm/DetailsRender.tsx +1 -1
  111. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyBoolean/index.tsx +22 -6
  112. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyCurrency/index.tsx +24 -8
  113. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDate/demo.stories.tsx +8 -1
  114. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDate/index.tsx +22 -13
  115. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDateTime/demo.stories.tsx +9 -1
  116. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDateTime/index.tsx +23 -14
  117. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDecimal/index.tsx +24 -8
  118. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyEmail/index.tsx +32 -21
  119. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyIconButtonURL/index.tsx +2 -2
  120. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyInteger/index.tsx +26 -14
  121. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyParagraph/index.tsx +26 -14
  122. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyPercentage/index.tsx +24 -10
  123. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyPhone/index.tsx +25 -10
  124. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyPicklist/index.tsx +34 -8
  125. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyRadiobuttons/index.tsx +21 -5
  126. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MySearchbox/index.tsx +22 -9
  127. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyText/index.tsx +25 -14
  128. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyTextInput/index.tsx +25 -10
  129. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyTimeOfDay/demo.stories.tsx +9 -1
  130. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyTimeOfDay/index.tsx +22 -17
  131. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyURL/index.tsx +26 -14
  132. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyForm/DefaultForm.css +82 -2
  133. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyForm/index.tsx +45 -8
  134. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyCaseWidget/index.tsx +19 -15
  135. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageCaseWidget/index.tsx +66 -15
  136. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageWidget/index.tsx +2 -167
  137. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/AlertBanner/AlertBanner.css +46 -0
  138. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/AlertBanner/AlertBanner.tsx +37 -20
  139. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/CaseSummaryFields/CaseSummaryFields.css +14 -0
  140. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +57 -5
  141. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/FieldGroup/FieldGroup.tsx +18 -11
  142. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/FieldGroupList/FieldGroupList.tsx +1 -1
  143. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/FieldValueList/FieldValueList.tsx +19 -4
  144. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/Operator/Operator.tsx +125 -74
  145. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/RichTextEditor/RichTextEditor.tsx +184 -90
  146. package/tests/assets/sdk-r/components/createAll/override-sdk/field/AutoComplete/AutoComplete.tsx +372 -26
  147. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Checkbox/Checkbox.tsx +22 -6
  148. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Currency/Currency.tsx +22 -4
  149. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Date/Date.tsx +35 -4
  150. package/tests/assets/sdk-r/components/createAll/override-sdk/field/DateTime/DateTime.tsx +35 -4
  151. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Decimal/Decimal.tsx +22 -4
  152. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Dropdown/Dropdown.tsx +48 -16
  153. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Email/Email.tsx +21 -4
  154. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Group/Group.tsx +28 -4
  155. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Integer/Integer.tsx +21 -4
  156. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Multiselect/Multiselect.tsx +42 -20
  157. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Multiselect/utils.ts +5 -3
  158. package/tests/assets/sdk-r/components/createAll/override-sdk/field/ObjectReference/ObjectReference.tsx +554 -66
  159. package/tests/assets/sdk-r/components/createAll/override-sdk/field/ObjectReference/utils.ts +108 -20
  160. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Percentage/Percentage.tsx +22 -4
  161. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Phone/Phone.tsx +23 -4
  162. package/tests/assets/sdk-r/components/createAll/override-sdk/field/RadioButtons/RadioButtons.tsx +20 -4
  163. package/tests/assets/sdk-r/components/createAll/override-sdk/field/RichText/RichText.css +0 -79
  164. package/tests/assets/sdk-r/components/createAll/override-sdk/field/RichText/RichText.tsx +1 -1
  165. package/tests/assets/sdk-r/components/createAll/override-sdk/field/SelectableCard/SelectableCard.tsx +25 -10
  166. package/tests/assets/sdk-r/components/createAll/override-sdk/field/TextArea/TextArea.tsx +22 -4
  167. package/tests/assets/sdk-r/components/createAll/override-sdk/field/TextInput/TextInput.tsx +21 -4
  168. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Time/Time.tsx +35 -4
  169. package/tests/assets/sdk-r/components/createAll/override-sdk/field/URL/URL.tsx +22 -4
  170. package/tests/assets/sdk-r/components/createAll/override-sdk/field/UserReference/UserReference.tsx +10 -6
  171. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/Assignment/Assignment.tsx +36 -14
  172. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/Assignment/useValidationBanner.ts +29 -0
  173. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/DeferLoad/DeferLoad.tsx +31 -10
  174. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/FlowContainer/FlowContainer.tsx +5 -6
  175. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/LeftAlignVerticalTabs/LeftAlignVerticalTabs.tsx +1 -1
  176. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/ModalViewContainer/DataViewActionButtons/DataViewActionButtons.tsx +138 -0
  177. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/ModalViewContainer/ModalViewContainer.tsx +110 -64
  178. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/MultiStep/MultiStep.css +63 -0
  179. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/MultiStep/MultiStep.tsx +23 -52
  180. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/NavBar/NavBar.tsx +8 -3
  181. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/Reference/Reference.tsx +5 -0
  182. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/RootContainer/RootContainer.tsx +4 -5
  183. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/View/View.css +1 -0
  184. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/View/View.tsx +10 -17
  185. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/ViewContainer/ViewContainer.tsx +8 -10
  186. package/tests/assets/sdk-r/components/createAll/override-sdk/template/AppShell/AppShell.css +0 -4
  187. package/tests/assets/sdk-r/components/createAll/override-sdk/template/AppShell/AppShell.tsx +7 -1
  188. package/tests/assets/sdk-r/components/createAll/override-sdk/template/CaseSummary/CaseSummary.tsx +9 -42
  189. package/tests/assets/sdk-r/components/createAll/override-sdk/template/CaseView/CaseView.tsx +8 -2
  190. package/tests/assets/sdk-r/components/createAll/override-sdk/template/CaseViewActionsMenu/CaseViewActionsMenu.tsx +58 -3
  191. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DataReference/DataReference.tsx +56 -33
  192. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DataReference/SearchForm.tsx +3 -4
  193. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DefaultForm/DefaultForm.css +71 -0
  194. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DefaultForm/DefaultForm.tsx +45 -9
  195. package/tests/assets/sdk-r/components/createAll/override-sdk/template/FieldGroupTemplate/FieldGroupTemplate.tsx +10 -3
  196. package/tests/assets/sdk-r/components/createAll/override-sdk/template/ListView/ListView.tsx +139 -59
  197. package/tests/assets/sdk-r/components/createAll/override-sdk/template/ListView/hooks.ts +80 -13
  198. package/tests/assets/sdk-r/components/createAll/override-sdk/template/ListView/utils.ts +13 -3
  199. package/tests/assets/sdk-r/components/createAll/override-sdk/template/MultiReferenceReadOnly/MultiReferenceReadOnly.tsx +16 -1
  200. package/tests/assets/sdk-r/components/createAll/override-sdk/template/SimpleTableManual/SimpleTableManual.tsx +167 -93
  201. package/tests/assets/sdk-r/components/createAll/override-sdk/template/SimpleTableSelect/SimpleTableSelect.tsx +71 -56
  202. package/tests/assets/sdk-r/components/createAll/override-sdk/template/SingleReferenceReadOnly/SingleReferenceReadOnly.tsx +12 -7
  203. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/Attachment/Attachment.tsx +119 -26
  204. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/Attachment/AttachmentUtils.ts +1 -1
  205. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/CaseHistory/CaseHistory.tsx +16 -12
  206. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/FileUtility/FileUtility.tsx +40 -28
  207. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/ToDo/ToDo.tsx +14 -6
  208. package/SECURITY.md +0 -10
@@ -41,6 +41,7 @@ import { getGenericFieldsLocalizedValue } from '@pega/react-sdk-components/lib/c
41
41
  import { format } from '@pega/react-sdk-components/lib/components/helpers/formatters';
42
42
 
43
43
  import useInit from './hooks';
44
+ import { useCascadeAndUpdate } from './hooks';
44
45
  import type { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
45
46
 
46
47
  interface ListViewProps extends PConnProps {
@@ -56,10 +57,12 @@ interface ListViewProps extends PConnProps {
56
57
  compositeKeys?: any;
57
58
  showDynamicFields?: boolean;
58
59
  readonlyContextList?: any;
60
+ selectedValues?: any;
59
61
  value: any;
60
62
  viewName?: string;
61
63
  showRecords?: boolean;
62
64
  displayAs?: string;
65
+ localeReference?: string;
63
66
  }
64
67
 
65
68
  const SELECTION_MODE = { SINGLE: 'single', MULTI: 'multi' };
@@ -87,13 +90,17 @@ export default function ListView(props: ListViewProps) {
87
90
  compositeKeys,
88
91
  showDynamicFields,
89
92
  viewName,
90
- readonlyContextList: selectedValues,
93
+ readonlyContextList,
94
+ selectedValues: selectedValuesProp,
91
95
  value,
92
- displayAs
96
+ displayAs,
97
+ localeReference
93
98
  } = props;
99
+ // Use selectedValues prop (passed from SimpleTableSelect) with fallback to readonlyContextList
100
+ const selectedValues = selectedValuesProp ?? readonlyContextList;
94
101
  let { showRecords } = props;
95
102
  const ref = useRef({}).current;
96
- const cosmosTableRef = useRef();
103
+ const cosmosTableRef = useRef<any>(null);
97
104
  // List component context
98
105
  const [listContext, setListContext] = useState<any>({});
99
106
  const { meta } = listContext;
@@ -135,12 +142,19 @@ export default function ListView(props: ListViewProps) {
135
142
 
136
143
  const [selectedValue, setSelectedValue] = useState(value);
137
144
 
145
+ useEffect(() => {
146
+ setSelectedValue(value);
147
+ }, [value]);
148
+
149
+ // Tracks selected row keys for multi-select mode (mirrors Angular's SelectionModel)
150
+ const [selectedRowSet, setSelectedRowSet] = useState<Set<string>>(new Set());
151
+
138
152
  // This basically will hold the list of all current filters
139
153
  const filters = useRef({});
140
154
 
141
155
  // Will contain the list of columns specific for an instance
142
156
  const columnList: any = useRef([]);
143
- const filterPayload: any = useRef();
157
+ const filterPayload: any = useRef(null);
144
158
  // Will be sent in the dashboardFilterPayload
145
159
  let selectParam: any[] = [];
146
160
 
@@ -208,6 +222,7 @@ export default function ListView(props: ListViewProps) {
208
222
  getPConnect().getListActions().setSelectedRows({});
209
223
  } else {
210
224
  getPConnect().getListActions().clearSelectedRows();
225
+ setSelectedRowSet(new Set());
211
226
  }
212
227
  }
213
228
  }
@@ -445,7 +460,7 @@ export default function ListView(props: ListViewProps) {
445
460
  fetchDataFromServer();
446
461
  }
447
462
 
448
- function fetchAllData(fields): any {
463
+ function fetchAllData(fields, overrideParams?: any): any {
449
464
  if (displayAs === 'advancedSearch' && !showRecords) {
450
465
  return Promise.resolve({ data: null });
451
466
  }
@@ -465,12 +480,13 @@ export default function ListView(props: ListViewProps) {
465
480
  query = filterPayload.current?.query;
466
481
  }
467
482
  const context = getPConnect().getContextName();
483
+ const resolvedParams = overrideParams ?? dataViewParameters;
468
484
  // getDataAsync isn't returning correct data for the Page(i.e. ListView within a page) case
469
485
  return !bInForm
470
486
  ? // @ts-ignore - 3rd parameter "context" should be optional in getData method
471
487
  PCore.getDataApiUtils().getData(referenceList, payload)
472
488
  : // @ts-ignore - Argument of type 'null' is not assignable to parameter of type 'object'
473
- PCore.getDataPageUtils().getDataAsync(referenceList, context, payload ? payload.dataViewParameters : dataViewParameters, null, query);
489
+ PCore.getDataPageUtils().getDataAsync(referenceList, context, payload ? payload.dataViewParameters : resolvedParams, null, query);
474
490
  }
475
491
 
476
492
  const buildSelect = (fieldDefs, colId, patchQueryFields = [], compositeKeys = []) => {
@@ -543,60 +559,76 @@ export default function ListView(props: ListViewProps) {
543
559
  return fieldsMap;
544
560
  };
545
561
 
546
- async function fetchDataFromServer() {
562
+ async function fetchDataFromServer(overrideParams?: any) {
547
563
  let bCallSetRowsColumns = true;
548
- const { fieldDefs, itemKey, patchQueryFields } = meta;
549
- let listFields = fieldDefs ? buildSelect(fieldDefs, undefined, patchQueryFields, compositeKeys) : [];
550
- listFields = addItemKeyInSelect(fieldDefs, itemKey, listFields, compositeKeys);
551
- const workListJSON = await fetchAllData(listFields);
564
+ try {
565
+ const { fieldDefs, itemKey, patchQueryFields } = meta;
566
+ let listFields = fieldDefs ? buildSelect(fieldDefs, undefined, patchQueryFields, compositeKeys) : [];
567
+ listFields = addItemKeyInSelect(fieldDefs, itemKey, listFields, compositeKeys);
568
+ const workListJSON = await fetchAllData(listFields, overrideParams);
552
569
 
553
- // this is an unresovled version of this.fields$, need unresolved, so can get the property reference
554
- const columnFields = componentConfig.presets[0].children[0].children;
570
+ // this is an unresovled version of this.fields$, need unresolved, so can get the property reference
571
+ const columnFields = componentConfig.presets[0].children[0].children;
555
572
 
556
- const tableDataResults = !bInForm ? workListJSON.data.data : workListJSON.data;
573
+ const tableDataResults = !bInForm ? workListJSON.data.data : workListJSON.data;
557
574
 
558
- const myColumns = getHeaderCells(columnFields, fieldDefs);
575
+ const myColumns = getHeaderCells(columnFields, fieldDefs);
559
576
 
560
- const selectParams: any = [];
577
+ const selectParams: any = [];
561
578
 
562
- myColumns.forEach(column => {
563
- selectParams.push({
564
- field: column.id
579
+ myColumns.forEach(column => {
580
+ column.label = PCore.getLocaleUtils().getLocaleValue(column.label, localeReference);
581
+ selectParams.push({
582
+ field: column.id
583
+ });
565
584
  });
566
- });
567
585
 
568
- const colList: any = [];
586
+ const colList: any = [];
569
587
 
570
- selectParams.forEach(col => {
571
- colList.push(col.field);
572
- });
588
+ selectParams.forEach(col => {
589
+ colList.push(col.field);
590
+ });
573
591
 
574
- columnList.current = colList;
592
+ columnList.current = colList;
575
593
 
576
- setResponse(tableDataResults);
594
+ setResponse(tableDataResults);
577
595
 
578
- const usingDataResults = getUsingData(tableDataResults);
596
+ const usingDataResults = getUsingData(tableDataResults);
579
597
 
580
- // store globally, so can be searched, filtered, etc.
581
- myRows = usingDataResults;
598
+ // store globally, so can be searched, filtered, etc.
599
+ myRows = usingDataResults;
582
600
 
583
- setRowsData(myRows);
584
- // At this point, if we have data ready to render and haven't been asked
585
- // to NOT call setRows and setColumns, call them
586
- if (bCallSetRowsColumns) {
587
- setRows(myRows);
588
- setColumns(myColumns);
589
- }
601
+ setRowsData(myRows);
602
+ // At this point, if we have data ready to render and haven't been asked
603
+ // to NOT call setRows and setColumns, call them
604
+ if (bCallSetRowsColumns) {
605
+ setRows(myRows);
606
+ setColumns(myColumns);
590
607
 
591
- return () => {
592
- // Inspired by https://juliangaramendy.dev/blog/use-promise-subscription
593
- // The useEffect closure lets us have access to the bCallSetRowsColumns
594
- // variable inside the useEffect and inside the "then" clause of the
595
- // workListData promise
596
- // So, if this cleanup code gets run before the promise .then is called,
597
- // we can avoid calling the useState setters which would otherwise show a warning
598
- bCallSetRowsColumns = false;
599
- };
608
+ if (selectionMode === SELECTION_MODE.MULTI && selectedValues?.length > 0) {
609
+ const readonlyIds = new Set<string>(selectedValues.map((element: any) => element[rowID]));
610
+ const initialSet = new Set<string>();
611
+ myRows?.forEach(row => {
612
+ if (readonlyIds.has(row[rowID])) {
613
+ initialSet.add(row[rowID]);
614
+ }
615
+ });
616
+ setSelectedRowSet(initialSet);
617
+ }
618
+ }
619
+
620
+ return () => {
621
+ // Inspired by https://juliangaramendy.dev/blog/use-promise-subscription
622
+ // The useEffect closure lets us have access to the bCallSetRowsColumns
623
+ // variable inside the useEffect and inside the "then" clause of the
624
+ // workListData promise
625
+ // So, if this cleanup code gets run before the promise .then is called,
626
+ // we can avoid calling the useState setters which would otherwise show a warning
627
+ bCallSetRowsColumns = false;
628
+ };
629
+ } catch (e) {
630
+ console.error(e);
631
+ }
600
632
  }
601
633
 
602
634
  function prepareFilters(data) {
@@ -626,6 +658,14 @@ export default function ListView(props: ListViewProps) {
626
658
  }, {});
627
659
  }
628
660
 
661
+ useCascadeAndUpdate({
662
+ getPConnect,
663
+ listContext,
664
+ referenceList,
665
+ parameters,
666
+ fetchDataFromServer
667
+ });
668
+
629
669
  useEffect(() => {
630
670
  if (listContext.meta) {
631
671
  const identifier = `promoted-filters-queryable-${uniqueId}`;
@@ -1013,22 +1053,57 @@ export default function ListView(props: ListViewProps) {
1013
1053
  setSelectedValue(value);
1014
1054
  };
1015
1055
 
1016
- const onCheckboxClick = event => {
1017
- const value = event?.target?.value;
1018
- const checked = event?.target?.checked;
1056
+ const getSelectedValue = (row: any, checked: boolean) => {
1057
+ const rowValue = row[rowID];
1019
1058
  const reqObj: any = {};
1020
1059
  if (compositeKeys?.length > 1) {
1021
- const index = response.findIndex(element => element[rowID] === value);
1060
+ const index = response.findIndex(element => element[rowID] === rowValue);
1022
1061
  const selectedRow = response[index];
1023
1062
  compositeKeys.forEach(element => {
1024
1063
  reqObj[element] = selectedRow[element];
1025
1064
  });
1026
1065
  reqObj.$selected = checked;
1027
1066
  } else {
1028
- reqObj[rowID] = value;
1067
+ reqObj[rowID] = rowValue;
1029
1068
  reqObj.$selected = checked;
1030
1069
  }
1031
- getPConnect()?.getListActions()?.setSelectedRows([reqObj]);
1070
+ return reqObj;
1071
+ };
1072
+
1073
+ const onCheckboxClick = (row: any) => {
1074
+ const rowKey = row[rowID];
1075
+ const newSet = new Set(selectedRowSet);
1076
+ if (newSet.has(rowKey)) {
1077
+ newSet.delete(rowKey);
1078
+ } else {
1079
+ newSet.add(rowKey);
1080
+ }
1081
+ setSelectedRowSet(newSet);
1082
+ const checked = newSet.has(rowKey);
1083
+ const requiredValue = getSelectedValue(row, checked);
1084
+ getPConnect()?.getListActions()?.setSelectedRows([requiredValue]);
1085
+ };
1086
+
1087
+ const isAllSelected = (): boolean => {
1088
+ const numSelected = selectedRowSet.size;
1089
+ const numRows = arRows?.length || 0;
1090
+ return numRows > 0 && numSelected === numRows;
1091
+ };
1092
+
1093
+ const toggleAllRows = () => {
1094
+ if (isAllSelected()) {
1095
+ setSelectedRowSet(new Set());
1096
+ getPConnect()?.getListActions()?.clearSelectedRows();
1097
+ return;
1098
+ }
1099
+ if (selectedRowSet.size > 0 && !isAllSelected()) {
1100
+ getPConnect()?.getListActions()?.clearSelectedRows();
1101
+ }
1102
+ const newSet = new Set<string>();
1103
+ arRows.forEach(row => newSet.add(row[rowID]));
1104
+ setSelectedRowSet(newSet);
1105
+ const requiredValues = arRows.map(row => getSelectedValue(row, true));
1106
+ getPConnect()?.getListActions()?.setSelectedRows(requiredValues);
1032
1107
  };
1033
1108
 
1034
1109
  const processColumnValue = (column, value) => {
@@ -1151,7 +1226,16 @@ export default function ListView(props: ListViewProps) {
1151
1226
  <Table>
1152
1227
  <TableHead>
1153
1228
  <TableRow>
1154
- {(selectionMode === SELECTION_MODE.SINGLE || selectionMode === SELECTION_MODE.MULTI) && <TableCell />}
1229
+ {selectionMode === SELECTION_MODE.SINGLE && <TableCell padding='checkbox' />}
1230
+ {selectionMode === SELECTION_MODE.MULTI && (
1231
+ <TableCell padding='checkbox'>
1232
+ <Checkbox
1233
+ indeterminate={selectedRowSet.size > 0 && !isAllSelected()}
1234
+ checked={arRows?.length > 0 && isAllSelected()}
1235
+ onChange={toggleAllRows}
1236
+ />
1237
+ </TableCell>
1238
+ )}
1155
1239
  {arColumns.map(column => {
1156
1240
  return (
1157
1241
  <TableCell className={classes.cell} key={column.id} sortDirection={orderBy === column.id ? order : false}>
@@ -1179,7 +1263,7 @@ export default function ListView(props: ListViewProps) {
1179
1263
  return (
1180
1264
  <TableRow key={row[rowID]}>
1181
1265
  {selectionMode === SELECTION_MODE.SINGLE && (
1182
- <TableCell>
1266
+ <TableCell padding='checkbox'>
1183
1267
  <Radio
1184
1268
  onChange={handleChange}
1185
1269
  value={row[rowID]}
@@ -1190,12 +1274,8 @@ export default function ListView(props: ListViewProps) {
1190
1274
  </TableCell>
1191
1275
  )}
1192
1276
  {selectionMode === SELECTION_MODE.MULTI && (
1193
- <TableCell>
1194
- <Checkbox
1195
- onChange={onCheckboxClick}
1196
- checked={selectedValues.some(selectedValue => selectedValue[rowID] === row[rowID])}
1197
- value={row[rowID]}
1198
- />
1277
+ <TableCell padding='checkbox'>
1278
+ <Checkbox onChange={() => onCheckboxClick(row)} checked={selectedRowSet.has(row[rowID])} />
1199
1279
  </TableCell>
1200
1280
  )}
1201
1281
  {arColumns.map(column => {
@@ -1,7 +1,70 @@
1
- import { useEffect } from 'react';
1
+ import { useEffect, useRef } from 'react';
2
2
 
3
3
  import { getContext, readContextResponse } from './utils';
4
4
 
5
+ /**
6
+ * Hook that subscribes to parameter field changes and triggers a data re-fetch
7
+ * when the parameters change. This mirrors the useCascadeAndUpdate hook from
8
+ * the constellation-frontend codebase.
9
+ */
10
+ export function useCascadeAndUpdate({ getPConnect, listContext, referenceList, parameters, fetchDataFromServer }) {
11
+ const isParametersOverride = !!parameters;
12
+ const fetchRef = useRef(fetchDataFromServer);
13
+ fetchRef.current = fetchDataFromServer;
14
+
15
+ useEffect(() => {
16
+ if (Object.keys(listContext).length === 0) return;
17
+
18
+ const fieldChangeCallback = () => {
19
+ if (listContext.meta) {
20
+ // Resolve fresh parameters at callback time since the subscription fires
21
+ // before React re-renders with updated props
22
+ const { parameters: freshParams } = getPConnect().getConfigProps();
23
+ fetchRef.current(freshParams);
24
+ }
25
+ };
26
+
27
+ const rawViewParameters = getPConnect().getComponentConfig?.()?.parameters;
28
+ const subscriptionId = crypto.randomUUID();
29
+
30
+ const overriddenParamFields: string[] = [];
31
+
32
+ // Collect overridden parameter fields that are property references
33
+ if (rawViewParameters && isParametersOverride) {
34
+ Object.keys(rawViewParameters).forEach(paramKey => {
35
+ const paramField = rawViewParameters[paramKey];
36
+ if (PCore.getAnnotationUtils().isProperty(paramField)) {
37
+ overriddenParamFields.push(`.${PCore.getAnnotationUtils().getPropertyName(paramField)}`);
38
+ }
39
+ });
40
+ }
41
+
42
+ // Subscribe to parameter field changes when parameters are overridden on the view
43
+ if (overriddenParamFields.length !== 0) {
44
+ PCore.getDataPageUtils().subscribeToUpdate(
45
+ referenceList,
46
+ overriddenParamFields,
47
+ getPConnect().getContextName(),
48
+ getPConnect().getPageReference(),
49
+ fieldChangeCallback,
50
+ `${subscriptionId}-override-params`
51
+ );
52
+ }
53
+
54
+ return function cleanup() {
55
+ if (overriddenParamFields.length !== 0) {
56
+ PCore.getDataPageUtils().unsubscribe(
57
+ referenceList,
58
+ overriddenParamFields,
59
+ getPConnect().getContextName(),
60
+ getPConnect().getPageReference(),
61
+ `${subscriptionId}-override-params`
62
+ );
63
+ }
64
+ };
65
+ }, [listContext]);
66
+ }
67
+
5
68
  export default function useInit(props) {
6
69
  const {
7
70
  referenceList,
@@ -72,18 +135,22 @@ export default function useInit(props) {
72
135
  compositeKeys,
73
136
  isSearchable,
74
137
  isCacheable: true
75
- }).then(async context => {
76
- if (isCompStillMounted) {
77
- return readContextResponse(context, {
78
- ...props,
79
- editing,
80
- selectionCountThreshold,
81
- ref,
82
- selectionMode,
83
- cosmosTableRef
84
- });
85
- }
86
- });
138
+ })
139
+ .then(async context => {
140
+ if (isCompStillMounted) {
141
+ return readContextResponse(context, {
142
+ ...props,
143
+ editing,
144
+ selectionCountThreshold,
145
+ ref,
146
+ selectionMode,
147
+ cosmosTableRef
148
+ });
149
+ }
150
+ })
151
+ .catch(e => {
152
+ console.error(e);
153
+ });
87
154
  })();
88
155
 
89
156
  return () => {
@@ -620,15 +620,25 @@ export function initializeColumns(fields: any[] = [], getMappedProperty: any = n
620
620
  });
621
621
  }
622
622
 
623
- export const getItemKey = fields => {
623
+ export function getMappedKey(key) {
624
+ // @ts-ignore
625
+ const qualifiedKey = PCore.getNameSpaceUtils().getDefaultQualifiedName(key);
626
+ const mappedKey = PCore.getEnvironmentInfo().getKeyMapping(qualifiedKey);
627
+ if (!mappedKey) {
628
+ return qualifiedKey;
629
+ }
630
+ return mappedKey;
631
+ }
632
+
633
+ export function getItemKey(fields) {
624
634
  let itemKey;
625
635
  if (fields.findIndex(field => field.id === 'pyGUID') > -1) {
626
636
  itemKey = 'pyGUID';
627
637
  } else {
628
- itemKey = 'pzInsKey';
638
+ itemKey = getMappedKey('pzInsKey');
629
639
  }
630
640
  return itemKey;
631
- };
641
+ }
632
642
 
633
643
  export function preparePatchQueryFields(fields, isDataObject = false, classID = '') {
634
644
  const queryFields: any[] = [];
@@ -4,12 +4,27 @@ interface MultiReferenceReadOnlyProps extends PConnProps {
4
4
  config: { referenceList: any; readonlyContextList: any };
5
5
  label: string;
6
6
  hideLabel: boolean;
7
+ displayMode?: any;
8
+ displayAs?: any;
7
9
  }
8
10
 
9
11
  export default function MultiReferenceReadOnly(props: MultiReferenceReadOnlyProps) {
10
- const { getPConnect, label = '', hideLabel = false, config } = props;
12
+ const { getPConnect, label = '', hideLabel = false, config, displayMode, displayAs } = props;
11
13
  const { referenceList, readonlyContextList } = config;
12
14
 
15
+ if (['readonlyMulti', 'combobox', 'checkboxgroup'].includes(displayAs)) {
16
+ return getPConnect().createComponent({
17
+ type: 'SimpleTableSelectReadonly',
18
+ config: {
19
+ ...config,
20
+ displayMode,
21
+ label,
22
+ hideLabel,
23
+ displayAs
24
+ }
25
+ } as any);
26
+ }
27
+
13
28
  // When referenceList does not contain selected values, it should be replaced with readonlyContextList while calling SimpleTableManual
14
29
  let readonlyContextObject;
15
30
  if (!PCore.getAnnotationUtils().isProperty(referenceList)) {