@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
@@ -1,4 +1,4 @@
1
- import React, { type PropsWithChildren, useEffect, useLayoutEffect, useRef, useState } from 'react';
1
+ import React, { type PropsWithChildren, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
2
2
  import Table from '@mui/material/Table';
3
3
  import TableBody from '@mui/material/TableBody';
4
4
  import TableCell from '@mui/material/TableCell';
@@ -28,9 +28,10 @@ import { Utils } from '@pega/react-sdk-components/lib/components/helpers/utils';
28
28
  import { getReferenceList } from '@pega/react-sdk-components/lib/components/helpers/field-group-utils';
29
29
  import { getDataPage } from '@pega/react-sdk-components/lib/components/helpers/data_page';
30
30
  import { getGenericFieldsLocalizedValue } from '@pega/react-sdk-components/lib/components/helpers/common-utils';
31
- import { buildFieldsForTable, filterData, getContext } from '@pega/react-sdk-components/lib/components/helpers/simpleTableHelpers';
31
+ import { buildFieldsForTable, filterData, getConfigFields, getContext } from '@pega/react-sdk-components/lib/components/helpers/simpleTableHelpers';
32
32
  import type { PConnProps } from '@pega/react-sdk-components/lib/types/PConnProps';
33
33
  import { format } from '@pega/react-sdk-components/lib/components/helpers/formatters';
34
+ import { initializeColumns } from '@pega/react-sdk-components/lib/components/template/ListView/utils';
34
35
 
35
36
  interface SimpleTableManualProps extends PConnProps {
36
37
  // If any, enter additional props that only exist on this component
@@ -54,6 +55,8 @@ interface SimpleTableManualProps extends PConnProps {
54
55
  viewForEditModal: any;
55
56
  validatemessage?: string;
56
57
  required?: boolean;
58
+ targetClassLabel?: string;
59
+ uniqueField?: string;
57
60
  }
58
61
 
59
62
  const useStyles = makeStyles((/* theme */) => ({
@@ -100,9 +103,6 @@ let menuColumnId = '';
100
103
  let menuColumnType = '';
101
104
  let menuColumnLabel = '';
102
105
 
103
- const filterByColumns: any[] = [];
104
- let myRows: any[];
105
-
106
106
  export default function SimpleTableManual(props: PropsWithChildren<SimpleTableManualProps>) {
107
107
  const classes = useStyles();
108
108
  const {
@@ -127,8 +127,11 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
127
127
  useSeparateViewForEdit,
128
128
  viewForEditModal,
129
129
  required,
130
- validatemessage
130
+ validatemessage,
131
+ targetClassLabel,
132
+ uniqueField
131
133
  } = props;
134
+ const normalizedUniqueField = uniqueField?.charAt(0) === '.' ? uniqueField.substring(1) : uniqueField;
132
135
  const pConn = getPConnect();
133
136
  const [rowData, setRowData] = useState([]);
134
137
  const [elements, setElementsData] = useState([]);
@@ -147,12 +150,15 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
147
150
  const [displayDialogDateFilter, setDisplayDialogDateFilter] = useState<string>('notequal');
148
151
  const [displayDialogDateValue, setDisplayDialogDateValue] = useState<string>('');
149
152
  const selectedRowIndex: any = useRef(null);
153
+ const myRowsRef = useRef<any[]>([]);
154
+ const filterByColumnsRef = useRef<any[]>([]);
150
155
  const localizedVal = PCore.getLocaleUtils().getLocaleValue;
151
156
  const localeCategory = 'SimpleTable';
152
157
  const parameters = fieldMetadata?.datasource?.parameters;
153
158
  const { referenceListStr } = getContext(getPConnect());
154
159
  const label = labelProp || propertyLabel;
155
160
  const propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() };
161
+
156
162
  if (propsToUse.showLabel === false) {
157
163
  propsToUse.label = '';
158
164
  }
@@ -163,13 +169,17 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
163
169
  const menuIconOverride$ = Utils.getImageSrc('trash', Utils.getSDKStaticConentUrl());
164
170
 
165
171
  const resolvedFields = children?.[0]?.children || presets?.[0].children?.[0].children;
166
- const primaryFieldsViewIndex = resolvedFields.findIndex(field => field.config.value === 'pyPrimaryFields');
172
+ // @ts-ignore
173
+ const qualifiedPrimaryFields = PCore.getNameSpaceUtils().getDefaultQualifiedName('pyPrimaryFields');
174
+ const primaryFieldsViewIndex = resolvedFields?.findIndex(field => {
175
+ const value = field.config.value;
176
+ return value === 'pyPrimaryFields' || value === qualifiedPrimaryFields;
177
+ });
167
178
  // NOTE: props has each child.config with datasource and value undefined
168
179
  // but getRawMetadata() has each child.config with datasource and value showing their unresolved values (ex: "@P thePropName")
169
180
  // We need to use the prop name as the "glue" to tie the table dataSource, displayColumns and data together.
170
181
  // So, in the code below, we'll use the unresolved config.value (but replacing the space with an underscore to keep things happy)
171
182
  const rawMetadata: any = getPConnect().getRawMetadata();
172
-
173
183
  // get raw config since @P and other annotations are processed and don't appear in the resolved config.
174
184
  // Destructure "raw" children into array var: "rawFields"
175
185
  // NOTE: when config.listType == "associated", the property can be found in either
@@ -186,12 +196,41 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
186
196
  const allowEditingInModal =
187
197
  (editMode ? editMode === 'modal' : addAndEditRowsWithin === 'modal') && !(renderMode === 'ReadOnly' || isDisplayModeEnabled);
188
198
  const showDeleteButton = editableMode && !hideDeleteRow;
199
+ const { allowRowDelete: allowRowDeleteConfig } = pConn.getComponentConfig?.() ?? {};
200
+
201
+ const isDeleteAllowedForRow = (index: number): boolean => {
202
+ if (!showDeleteButton) return false;
203
+ if (allowRowDeleteConfig === undefined || allowRowDeleteConfig === true) return true;
204
+ if (typeof allowRowDeleteConfig === 'string' && allowRowDeleteConfig.startsWith('@E ')) {
205
+ try {
206
+ const expression = allowRowDeleteConfig.replace('@E ', '');
207
+ // @ts-expect-error - options param is optional per corejs docs
208
+ return PCore.getExpressionEngine().evaluate(expression, referenceList[index]);
209
+ } catch {
210
+ return true;
211
+ }
212
+ }
213
+ return false;
214
+ };
215
+
189
216
  const defaultView = editModeConfig ? editModeConfig.defaultView : viewForAddAndEditModal;
190
217
  const bUseSeparateViewForEdit = editModeConfig ? editModeConfig.useSeparateViewForEdit : useSeparateViewForEdit;
191
218
  const editView = editModeConfig ? editModeConfig.editView : viewForEditModal;
192
-
193
- const fieldsWithPropNames = rawFields.map((field, index) => {
194
- return { ...resolvedFields[index], propName: field.config.value.replace('@P .', '') };
219
+ const editType = editModeConfig?.editType;
220
+ const defaultActionId = editType === 'action' ? editModeConfig?.defaultAction : undefined;
221
+ const editActionId = editType === 'action' && editModeConfig?.useSeparateActionForEdit ? editModeConfig?.editAction : editModeConfig?.defaultAction;
222
+ const configFields = getConfigFields(rawFields, contextClass, primaryFieldsViewIndex);
223
+ const addLabel = targetClassLabel ? localizedVal('Add {0}', 'SimpleTable').replace('{0}', targetClassLabel) : localizedVal('Add', 'SimpleTable');
224
+
225
+ const fieldsWithPropNames = configFields.map(field => {
226
+ let propName = field.config.value;
227
+ if (propName.startsWith('@')) {
228
+ propName = propName.substring(propName.indexOf(' ') + 1);
229
+ }
230
+ if (propName.startsWith('.')) {
231
+ propName = propName.substring(1);
232
+ }
233
+ return { ...field, propName };
195
234
  });
196
235
 
197
236
  useEffect(() => {
@@ -207,10 +246,15 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
207
246
  // Constellation DX Components do). It will also have the "label", and "meta" contains the original,
208
247
  // unchanged config info. For now, much of the info here is carried over from
209
248
  // Constellation DX Components.
210
- const fieldDefs = buildFieldsForTable(rawFields, getPConnect(), showDeleteButton, {
211
- primaryFieldsViewIndex,
212
- fields: resolvedFields
213
- });
249
+
250
+ const fieldDefs = useMemo(
251
+ () =>
252
+ isDisplayModeEnabled || readOnlyMode
253
+ ? initializeColumns(configFields, undefined)
254
+ : // For inline edit table
255
+ buildFieldsForTable(configFields, getPConnect(), showDeleteButton, { primaryFieldsViewIndex, fields: resolvedFields }),
256
+ []
257
+ );
214
258
 
215
259
  useLayoutEffect(() => {
216
260
  if (allowEditingInModal) {
@@ -218,11 +262,12 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
218
262
  .getListActions()
219
263
  .initDefaultPageInstructions(
220
264
  getPConnect().getReferenceList(),
221
- fieldDefs.filter(item => item.name).map(item => item.name)
265
+ // Temporary filter for attachments to align with constellation payload behavior.
266
+ fieldDefs.filter(item => item.name && item.meta?.type !== 'Attachment').map(item => item.name)
222
267
  );
223
268
  } else {
224
- // @ts-expect-error - An argument for 'fields' was not provided
225
- getPConnect().getListActions().initDefaultPageInstructions(getPConnect().getReferenceList());
269
+ // @ts-ignore - fields param is optional, uniqueField passed as 3rd arg for page instructions
270
+ getPConnect().getListActions().initDefaultPageInstructions(getPConnect().getReferenceList(), undefined, uniqueField);
226
271
  }
227
272
  }, []);
228
273
 
@@ -252,8 +297,10 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
252
297
  // See what data (if any) we have to display
253
298
  const refKeys: string[] = inColKey?.split('.');
254
299
  let valBuilder = inRowData;
300
+ let index = 0;
255
301
  for (const key of refKeys) {
256
- valBuilder = valBuilder[key];
302
+ index += 1;
303
+ valBuilder = valBuilder[key] !== undefined || index === refKeys.length ? valBuilder[key] : valBuilder;
257
304
  }
258
305
  return getFormattedValue(valBuilder, inColKey);
259
306
  }
@@ -261,21 +308,25 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
261
308
  const formatRowsData = data => {
262
309
  if (!data) return {};
263
310
 
264
- return data.map(item => {
265
- return displayedColumns.reduce((dataForRow, colKey) => {
266
- dataForRow[colKey] = getRowValue(item, colKey);
267
- return dataForRow;
268
- }, {});
311
+ return data.map((item, idx) => {
312
+ const dataForRow = displayedColumns.reduce((acc, colKey) => {
313
+ acc[colKey] = getRowValue(item, colKey);
314
+ return acc;
315
+ }, {} as any);
316
+ dataForRow.__originalIndex = idx;
317
+ return dataForRow;
269
318
  });
270
319
  };
271
320
 
272
321
  function generateRowsData() {
322
+ myRowsRef.current = [];
323
+
273
324
  // if referenceList is empty and dataPageName property value exists then make a datapage fetch call and get the list of data.
274
325
  if (!referenceList.length && dataPageName) {
275
326
  getDataPage(dataPageName, parameters, context)
276
327
  .then(listData => {
277
328
  const data = formatRowsData(listData);
278
- myRows = data;
329
+ myRowsRef.current = data || [];
279
330
  setRowData(data);
280
331
  })
281
332
  .catch(e => {
@@ -286,16 +337,19 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
286
337
  // in the table. So, iterate over referenceList to create the dataRows that
287
338
  // we're using as the table's dataSource
288
339
  const data: any = [];
289
- for (const row of referenceList) {
290
- const dataForRow: object = {};
340
+ referenceList.forEach((row, idx) => {
341
+ const dataForRow: any = {};
291
342
  for (const col of displayedColumns) {
292
343
  const colKey: string = col;
293
344
  const theVal = getRowValue(row, colKey);
294
345
  dataForRow[colKey] = theVal || '';
295
346
  }
347
+ // Preserve the original position so stableSort can look up the right
348
+ // entry in `elements` even after filtering shrinks rowData.
349
+ dataForRow.__originalIndex = idx;
296
350
  data.push(dataForRow);
297
- myRows = data;
298
- }
351
+ });
352
+ myRowsRef.current = data;
299
353
  setRowData(data);
300
354
  }
301
355
  }
@@ -316,13 +370,27 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
316
370
  // console.log(JSON.stringify(rowData));
317
371
 
318
372
  const addRecord = () => {
319
- if (allowEditingInModal && defaultView) {
373
+ if (allowEditingInModal && (defaultView || defaultActionId)) {
320
374
  pConn
321
375
  .getActionsApi()
322
- // @ts-expect-error
323
- .openEmbeddedDataModal(defaultView, pConn, referenceListStr, referenceList.length, PCore.getConstants().RESOURCE_STATUS.CREATE);
376
+
377
+ .openEmbeddedDataModal(
378
+ defaultView,
379
+ // @ts-expect-error
380
+ pConn,
381
+ referenceListStr,
382
+ referenceList.length,
383
+ PCore.getConstants().RESOURCE_STATUS.CREATE,
384
+ targetClassLabel,
385
+ editType,
386
+ defaultActionId
387
+ );
324
388
  } else {
325
- pConn.getListActions().insert({ classID: contextClass }, referenceList.length);
389
+ const payload: any = { classID: contextClass };
390
+ if (normalizedUniqueField) {
391
+ payload[normalizedUniqueField] = crypto.randomUUID();
392
+ }
393
+ pConn.getListActions().insert(payload, referenceList.length);
326
394
  }
327
395
 
328
396
  getPConnect().clearErrorMessages({
@@ -335,13 +403,17 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
335
403
  if (typeof selectedRowIndex.current === 'number') {
336
404
  pConn
337
405
  .getActionsApi()
338
- // @ts-expect-error
406
+
339
407
  .openEmbeddedDataModal(
340
408
  bUseSeparateViewForEdit ? editView : defaultView,
409
+ // @ts-expect-error
341
410
  pConn,
342
411
  referenceListStr,
343
412
  selectedRowIndex.current,
344
- PCore.getConstants().RESOURCE_STATUS.UPDATE
413
+ PCore.getConstants().RESOURCE_STATUS.UPDATE,
414
+ targetClassLabel,
415
+ editType,
416
+ editActionId
345
417
  );
346
418
  }
347
419
  };
@@ -359,7 +431,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
359
431
  const eleData: any = [];
360
432
  referenceList.forEach((element, index) => {
361
433
  const data: any = [];
362
- rawFields.forEach(item => {
434
+ configFields.forEach(item => {
363
435
  // removing label field from config to hide title in the table cell
364
436
  if (!item.config.hide) {
365
437
  item = { ...item, config: { ...item.config, label: '', displayMode: readOnlyMode || allowEditingInModal ? 'DISPLAY_ONLY' : undefined } };
@@ -426,12 +498,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
426
498
  if (order !== 0) return order;
427
499
  return a[1] - b[1];
428
500
  });
429
-
430
- const newElements = new Array(stabilizedThis.length);
431
- stabilizedThis.forEach((el, index) => {
432
- newElements[index] = elements[el[1]];
433
- });
434
- return newElements;
501
+ return stabilizedThis.map(([el]) => el);
435
502
  }
436
503
 
437
504
  function _menuClick(event, columnId: string, columnType: string, labelValue: string) {
@@ -457,7 +524,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
457
524
 
458
525
  let bFound = false;
459
526
 
460
- for (const filterObj of filterByColumns) {
527
+ for (const filterObj of filterByColumnsRef.current) {
461
528
  if (filterObj.ref === menuColumnId) {
462
529
  setFilterBy(menuColumnLabel);
463
530
  if (filterObj.type === 'Date' || filterObj.type === 'DateTime' || filterObj.type === 'Time') {
@@ -523,10 +590,10 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
523
590
 
524
591
  function filterSortGroupBy() {
525
592
  // get original data set
526
- let theData: any = myRows.slice();
593
+ let theData: any = myRowsRef.current?.slice();
527
594
 
528
595
  // last filter config data is global
529
- theData = theData.filter(filterData(filterByColumns));
596
+ theData = theData?.filter(filterData(filterByColumnsRef.current));
530
597
 
531
598
  // move data to array and then sort
532
599
  setRowData(theData);
@@ -534,7 +601,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
534
601
 
535
602
  function updateFilterWithInfo() {
536
603
  let bFound = false;
537
- for (const filterObj of filterByColumns) {
604
+ for (const filterObj of filterByColumnsRef.current) {
538
605
  if (filterObj.ref === menuColumnId) {
539
606
  filterObj.type = filterType;
540
607
  if (containsDateOrTime) {
@@ -562,7 +629,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
562
629
  filterObj.containsFilterValue = displayDialogContainsValue;
563
630
  }
564
631
 
565
- filterByColumns.push(filterObj);
632
+ filterByColumnsRef.current.push(filterObj);
566
633
  }
567
634
  }
568
635
 
@@ -574,7 +641,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
574
641
  }
575
642
 
576
643
  function _showFilteredIcon(columnId) {
577
- for (const filterObj of filterByColumns) {
644
+ for (const filterObj of filterByColumnsRef.current) {
578
645
  if (filterObj.ref === columnId) {
579
646
  if (filterObj.containsFilterValue !== '') {
580
647
  return true;
@@ -587,7 +654,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
587
654
  }
588
655
 
589
656
  function results() {
590
- const len = editableMode ? elements.length : rowData.length;
657
+ const len = editableMode ? elements?.length : rowData?.length;
591
658
 
592
659
  return len ? (
593
660
  <span style={{ fontSize: '0.9em', opacity: '0.7' }}>
@@ -596,6 +663,10 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
596
663
  ) : null;
597
664
  }
598
665
 
666
+ if (!rawFields) {
667
+ return null;
668
+ }
669
+
599
670
  return (
600
671
  <>
601
672
  <TableContainer component={Paper} style={{ margin: '4px 0px' }} id='simple-table-manual'>
@@ -651,7 +722,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
651
722
  const theKey = `row-${index}`;
652
723
  return (
653
724
  <TableRow key={theKey}>
654
- {row.map((item, childIndex) => {
725
+ {row?.map((item, childIndex) => {
655
726
  const theColKey = `data-${index}-${childIndex}`;
656
727
  return (
657
728
  <TableCell key={theColKey} className={classes.tableCell}>
@@ -661,15 +732,17 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
661
732
  })}
662
733
  {showDeleteButton && (
663
734
  <TableCell>
664
- <button
665
- type='button'
666
- className='psdk-utility-button'
667
- id='delete-button'
668
- aria-label='Delete Cell'
669
- onClick={() => deleteRecordFromInlineEditable(index)}
670
- >
671
- <img className='psdk-utility-card-action-svg-icon' src={menuIconOverride$} />
672
- </button>
735
+ {isDeleteAllowedForRow(index) && (
736
+ <button
737
+ type='button'
738
+ className='psdk-utility-button'
739
+ id='delete-button'
740
+ aria-label='Delete Cell'
741
+ onClick={() => deleteRecordFromInlineEditable(index)}
742
+ >
743
+ <img className='psdk-utility-card-action-svg-icon' src={menuIconOverride$} />
744
+ </button>
745
+ )}
673
746
  </TableCell>
674
747
  )}
675
748
  </TableRow>
@@ -678,42 +751,43 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
678
751
  {(readOnlyMode || allowEditingInModal) &&
679
752
  rowData &&
680
753
  rowData.length > 0 &&
681
- stableSort(rowData, getComparator(order, orderBy))
682
- .slice(0)
683
- .map((row, index) => {
684
- return (
685
- <TableRow key={index}>
686
- {row.map((item, childIndex) => {
687
- const theColKey = displayedColumns[childIndex];
688
- return (
689
- <TableCell key={theColKey} className={classes.tableCell}>
690
- {item}
691
- </TableCell>
692
- );
693
- })}
694
- {showDeleteButton && (
695
- <TableCell key='DeleteIcon' className={classes.tableCell}>
696
- <div>
697
- <MoreIcon
698
- id='table-edit-menu-icon'
699
- className={classes.moreIcon}
700
- onClick={event => {
701
- editMenuClick(event, index);
702
- }}
703
- />
704
- <Menu id='table-edit-menu' anchorEl={editAnchorEl} keepMounted open={Boolean(editAnchorEl)} onClose={_menuClose}>
705
- <MenuItem onClick={() => editRecord()}>Edit</MenuItem>
706
- <MenuItem onClick={() => deleteRecord()}>Delete</MenuItem>
707
- </Menu>
708
- </div>
754
+ stableSort(rowData, getComparator(order, orderBy)).map((row: any, displayIndex) => {
755
+ const originalIndex = row.__originalIndex;
756
+ return (
757
+ <TableRow key={displayIndex}>
758
+ {(elements as any[])[originalIndex]?.map((item, childIndex) => {
759
+ const theColKey = displayedColumns[childIndex];
760
+ return (
761
+ <TableCell key={theColKey} className={classes.tableCell}>
762
+ {item}
709
763
  </TableCell>
710
- )}
711
- </TableRow>
712
- );
713
- })}
764
+ );
765
+ })}
766
+ {showDeleteButton && (
767
+ <TableCell key='DeleteIcon' className={classes.tableCell}>
768
+ <div>
769
+ <MoreIcon
770
+ id='table-edit-menu-icon'
771
+ className={classes.moreIcon}
772
+ onClick={event => {
773
+ editMenuClick(event, originalIndex);
774
+ }}
775
+ />
776
+ <Menu id='table-edit-menu' anchorEl={editAnchorEl} keepMounted open={Boolean(editAnchorEl)} onClose={_menuClose}>
777
+ <MenuItem onClick={() => editRecord()}>Edit</MenuItem>
778
+ {isDeleteAllowedForRow(originalIndex) && <MenuItem onClick={() => deleteRecord()}>Delete</MenuItem>}
779
+ </Menu>
780
+ </div>
781
+ </TableCell>
782
+ )}
783
+ </TableRow>
784
+ );
785
+ })}
714
786
  </TableBody>
715
787
  </Table>
716
- {((readOnlyMode && (!rowData || rowData?.length === 0)) || (editableMode && (!referenceList || referenceList?.length === 0))) && (
788
+ {((readOnlyMode && (!rowData || rowData?.length === 0)) ||
789
+ (editableMode && (!referenceList || referenceList?.length === 0)) ||
790
+ (allowEditingInModal && (!rowData || rowData?.length === 0))) && (
717
791
  <div className='no-records' id='no-records'>
718
792
  {getGenericFieldsLocalizedValue('COSMOSFIELDS.lists', 'No records found.')}
719
793
  </div>
@@ -722,7 +796,7 @@ export default function SimpleTableManual(props: PropsWithChildren<SimpleTableMa
722
796
  {showAddRowButton && (
723
797
  <div style={{ fontSize: '1rem' }}>
724
798
  <Link style={{ cursor: 'pointer' }} onClick={addRecord} underline='hover'>
725
- + {localizedVal('Add', localeCategory)}
799
+ + {localizedVal(addLabel, localeCategory)}
726
800
  </Link>
727
801
  </div>
728
802
  )}