@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
@@ -4,11 +4,19 @@ import { TextField } from '@mui/material';
4
4
  import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
5
5
  import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
6
6
  import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
7
+ import useStatus from '@pega/react-sdk-components/lib/hooks/useStatus';
8
+ import { getFieldSx } from '@pega/react-sdk-components/lib/components/helpers/field-utils';
7
9
 
8
10
  import StyledPegaDxilMyIntegerWrapper from './styles';
9
11
 
10
12
  interface PegaDxilMyIntegerProps extends PConnFieldProps {
11
13
  // If any, enter additional props that only exist on this componentName
14
+ showFieldMessage?: boolean;
15
+ messageConfig?: {
16
+ content?: string;
17
+ visibility?: boolean;
18
+ };
19
+ variant?: string;
12
20
  }
13
21
 
14
22
  // Duplicated runtime code from React SDK
@@ -26,20 +34,29 @@ export default function PegaDxilMyInteger(props: PegaDxilMyIntegerProps) {
26
34
  disabled,
27
35
  value = '',
28
36
  validatemessage,
29
- status,
30
37
  readOnly,
31
38
  testId,
32
39
  helperText,
33
40
  displayMode,
34
41
  hideLabel,
35
- placeholder
42
+ placeholder,
43
+ showFieldMessage,
44
+ messageConfig = {}
36
45
  } = props;
37
46
 
38
47
  const pConn = getPConnect();
39
48
  const actions = pConn.getActionsApi();
40
49
  const propName = (pConn.getStateProps() as any).value;
41
50
 
42
- const helperTextToDisplay = validatemessage || helperText;
51
+ const eligibleForFieldWarning = showFieldMessage && messageConfig.visibility && !readOnly;
52
+ const helperTextToDisplay = validatemessage || (eligibleForFieldWarning ? messageConfig.content : helperText);
53
+
54
+ const status = useStatus({
55
+ showFieldMessage,
56
+ messageVisibility: messageConfig.visibility,
57
+ validatemessage,
58
+ readOnly
59
+ });
43
60
 
44
61
  const [inputValue, setInputValue] = useState('');
45
62
 
@@ -48,22 +65,14 @@ export default function PegaDxilMyInteger(props: PegaDxilMyIntegerProps) {
48
65
  }, [value]);
49
66
 
50
67
  if (displayMode === 'DISPLAY_ONLY') {
51
- return <FieldValueList name={hideLabel ? '' : label} value={value} />;
52
- }
53
-
54
- if (displayMode === 'STACKED_LARGE_VAL') {
55
- return <FieldValueList name={hideLabel ? '' : label} value={value} variant='stacked' />;
68
+ return <FieldValueList name={hideLabel ? '' : label} value={value} variant={props.variant} />;
56
69
  }
57
70
 
58
71
  if (readOnly) {
59
72
  return <TextInput {...props} />;
60
73
  }
61
74
 
62
- let testProp = {};
63
-
64
- testProp = {
65
- 'data-test-id': testId
66
- };
75
+ const testProps: any = { 'data-test-id': testId };
67
76
 
68
77
  function intOnChange(event) {
69
78
  // console.log(`Integer intOnChange inValue: ${event.target.value}`);
@@ -102,7 +111,10 @@ export default function PegaDxilMyInteger(props: PegaDxilMyIntegerProps) {
102
111
  label={label}
103
112
  value={inputValue}
104
113
  type='text'
105
- inputProps={{ inputMode: 'numeric', pattern: '[0-9]*', ...testProp }}
114
+ slotProps={{
115
+ htmlInput: { inputMode: 'numeric', pattern: '[0-9]*', ...testProps }
116
+ }}
117
+ sx={getFieldSx(status)}
106
118
  />
107
119
  </StyledPegaDxilMyIntegerWrapper>
108
120
  );
@@ -4,12 +4,20 @@ import { TextField } from '@mui/material';
4
4
  import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
5
5
  import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
6
6
  import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
7
+ import useStatus from '@pega/react-sdk-components/lib/hooks/useStatus';
8
+ import { getFieldSx } from '@pega/react-sdk-components/lib/components/helpers/field-utils';
7
9
 
8
10
  import StyledPegaDxilMyParagraphWrapper from './styles';
9
11
 
10
12
  interface PegaDxilMyParagraphProps extends PConnFieldProps {
11
13
  // If any, enter additional props that only exist on this componentName
12
14
  fieldMetadata?: any;
15
+ showFieldMessage?: boolean;
16
+ messageConfig?: {
17
+ content?: string;
18
+ visibility?: boolean;
19
+ };
20
+ variant?: string;
13
21
  }
14
22
 
15
23
  // Duplicated runtime code from React SDK
@@ -26,22 +34,31 @@ export default function PegaDxilMyParagraph(props: PegaDxilMyParagraphProps) {
26
34
  disabled,
27
35
  value = '',
28
36
  validatemessage,
29
- status,
30
37
  readOnly,
31
38
  testId,
32
39
  fieldMetadata,
33
40
  helperText,
34
41
  displayMode,
35
42
  hideLabel,
36
- placeholder
43
+ placeholder,
44
+ showFieldMessage,
45
+ messageConfig = {}
37
46
  } = props;
38
- const helperTextToDisplay = validatemessage || helperText;
47
+ const eligibleForFieldWarning = showFieldMessage && messageConfig.visibility && !readOnly;
48
+ const helperTextToDisplay = validatemessage || (eligibleForFieldWarning ? messageConfig.content : helperText);
39
49
 
40
50
  const pConn = getPConnect();
41
51
  const actions = pConn.getActionsApi();
42
52
  const propName = (pConn.getStateProps() as any).value;
43
53
  const maxLength = fieldMetadata?.maxLength;
44
54
 
55
+ const status = useStatus({
56
+ showFieldMessage,
57
+ messageVisibility: messageConfig.visibility,
58
+ validatemessage,
59
+ readOnly
60
+ });
61
+
45
62
  const [inputValue, setInputValue] = useState('');
46
63
 
47
64
  let readOnlyProp = {};
@@ -51,11 +68,7 @@ export default function PegaDxilMyParagraph(props: PegaDxilMyParagraphProps) {
51
68
  }, [value]);
52
69
 
53
70
  if (displayMode === 'DISPLAY_ONLY') {
54
- return <FieldValueList name={hideLabel ? '' : label} value={value} />;
55
- }
56
-
57
- if (displayMode === 'STACKED_LARGE_VAL') {
58
- return <FieldValueList name={hideLabel ? '' : label} value={value} variant='stacked' />;
71
+ return <FieldValueList name={hideLabel ? '' : label} value={value} variant={props.variant} />;
59
72
  }
60
73
 
61
74
  if (readOnly) {
@@ -64,11 +77,7 @@ export default function PegaDxilMyParagraph(props: PegaDxilMyParagraphProps) {
64
77
  readOnlyProp = { readOnly: true };
65
78
  }
66
79
 
67
- let testProp = {};
68
-
69
- testProp = {
70
- 'data-test-id': testId
71
- };
80
+ const testProps: any = { 'data-test-id': testId };
72
81
 
73
82
  function handleChange(event) {
74
83
  // update internal value
@@ -97,7 +106,10 @@ export default function PegaDxilMyParagraph(props: PegaDxilMyParagraphProps) {
97
106
  error={status === 'error'}
98
107
  label={label}
99
108
  value={inputValue}
100
- InputProps={{ ...readOnlyProp, inputProps: { maxLength, ...testProp } }}
109
+ slotProps={{
110
+ input: { ...readOnlyProp, inputProps: { maxLength, ...testProps } }
111
+ }}
112
+ sx={getFieldSx(status)}
101
113
  />
102
114
  </StyledPegaDxilMyParagraphWrapper>
103
115
  );
@@ -6,6 +6,8 @@ import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps
6
6
  import { getCurrencyCharacters, getCurrencyOptions } from '@pega/react-sdk-components/lib/components/field/Currency/currency-utils';
7
7
  import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
8
8
  import { format } from '@pega/react-sdk-components/lib/components/helpers/formatters';
9
+ import useStatus from '@pega/react-sdk-components/lib/hooks/useStatus';
10
+ import { getFieldSx } from '@pega/react-sdk-components/lib/components/helpers/field-utils';
9
11
 
10
12
  import StyledPegaDxilMyPercentageWrapper from './styles';
11
13
 
@@ -18,6 +20,12 @@ interface PegaDxilMyPercentageProps extends PConnFieldProps {
18
20
  currencyISOCode?: string;
19
21
  showGroupSeparators?: string;
20
22
  decimalPrecision?: number;
23
+ showFieldMessage?: boolean;
24
+ messageConfig?: {
25
+ content?: string;
26
+ visibility?: boolean;
27
+ };
28
+ variant?: string;
21
29
  }
22
30
 
23
31
  // props passed in combination of props from property panel (config.json) and run time props from Constellation
@@ -32,7 +40,6 @@ export default function PegaDxilMyPercentage(props: PegaDxilMyPercentageProps) {
32
40
  disabled,
33
41
  value = '',
34
42
  validatemessage,
35
- status,
36
43
  // onChange,
37
44
  // onBlur,
38
45
  readOnly,
@@ -43,7 +50,9 @@ export default function PegaDxilMyPercentage(props: PegaDxilMyPercentageProps) {
43
50
  hideLabel,
44
51
  placeholder,
45
52
  showGroupSeparators,
46
- decimalPrecision
53
+ decimalPrecision,
54
+ showFieldMessage,
55
+ messageConfig = {}
47
56
  } = props;
48
57
 
49
58
  const [values, setValues] = useState(value.toString());
@@ -51,7 +60,15 @@ export default function PegaDxilMyPercentage(props: PegaDxilMyPercentageProps) {
51
60
  const pConn = getPConnect();
52
61
  const actions = pConn.getActionsApi();
53
62
  const propName = (pConn.getStateProps() as any).value;
54
- const helperTextToDisplay = validatemessage || helperText;
63
+ const eligibleForFieldWarning = showFieldMessage && messageConfig.visibility && !readOnly;
64
+ const helperTextToDisplay = validatemessage || (eligibleForFieldWarning ? messageConfig.content : helperText);
65
+
66
+ const status = useStatus({
67
+ showFieldMessage,
68
+ messageVisibility: messageConfig.visibility,
69
+ validatemessage,
70
+ readOnly
71
+ });
55
72
 
56
73
  const theCurrencyOptions = getCurrencyOptions(currencyISOCode);
57
74
  const formattedValue = format(value, pConn.getComponentName()?.toLowerCase(), theCurrencyOptions);
@@ -67,18 +84,14 @@ export default function PegaDxilMyPercentage(props: PegaDxilMyPercentageProps) {
67
84
  }
68
85
 
69
86
  if (displayMode === 'DISPLAY_ONLY') {
70
- return <FieldValueList name={hideLabel ? '' : label} value={formattedValue} />;
87
+ return <FieldValueList name={hideLabel ? '' : label} value={formattedValue} variant={props.variant} />;
71
88
  }
72
89
 
73
90
  if (displayMode === 'STACKED_LARGE_VAL') {
74
91
  return <FieldValueList name={hideLabel ? '' : label} value={formattedValue} variant='stacked' />;
75
92
  }
76
93
 
77
- let testProp = {};
78
-
79
- testProp = {
80
- 'data-test-id': testId
81
- };
94
+ const testProps: any = { 'data-test-id': testId };
82
95
 
83
96
  const theSymbols = getCurrencyCharacters(currencyISOCode);
84
97
  const theCurrDec = theSymbols.theDecimalIndicator;
@@ -114,7 +127,8 @@ export default function PegaDxilMyPercentage(props: PegaDxilMyPercentageProps) {
114
127
  thousandSeparator={showGroupSeparators ? theCurrSep : ''}
115
128
  decimalScale={decimalPrecision}
116
129
  suffix='%'
117
- InputProps={{ ...readOnlyProp, inputProps: { ...testProp } }}
130
+ slotProps={{ input: { ...readOnlyProp, inputProps: { ...testProps } } }}
131
+ sx={getFieldSx(status)}
118
132
  customInput={TextField}
119
133
  />
120
134
  </StyledPegaDxilMyPercentageWrapper>
@@ -4,11 +4,19 @@ import { MuiTelInput } from 'mui-tel-input';
4
4
  import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
5
5
  import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
6
6
  import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
7
+ import useStatus from '@pega/react-sdk-components/lib/hooks/useStatus';
8
+ import { getFieldSx } from '@pega/react-sdk-components/lib/components/helpers/field-utils';
7
9
 
8
10
  import StyledPegaDxilMyPhoneWrapper from './styles';
9
11
 
10
12
  interface PegaDxilMyPhoneProps extends PConnFieldProps {
11
13
  // If any, enter additional props that only exist on this componentName
14
+ showFieldMessage?: boolean;
15
+ messageConfig?: {
16
+ content?: string;
17
+ visibility?: boolean;
18
+ };
19
+ variant?: string;
12
20
  }
13
21
 
14
22
  // Duplicated runtime code from React SDK
@@ -25,14 +33,15 @@ export default function PegaDxilMyPhone(props: PegaDxilMyPhoneProps) {
25
33
  disabled,
26
34
  value = '',
27
35
  validatemessage,
28
- status,
29
36
  onChange,
30
37
  readOnly,
31
38
  testId,
32
39
  helperText,
33
40
  displayMode,
34
41
  hideLabel,
35
- placeholder
42
+ placeholder,
43
+ showFieldMessage,
44
+ messageConfig = {}
36
45
  } = props;
37
46
 
38
47
  const pConn = getPConnect();
@@ -42,16 +51,20 @@ export default function PegaDxilMyPhone(props: PegaDxilMyPhoneProps) {
42
51
  const [inputValue, setInputValue] = useState(value);
43
52
  useEffect(() => setInputValue(value), [value]);
44
53
 
45
- const helperTextToDisplay = validatemessage || helperText;
54
+ const eligibleForFieldWarning = showFieldMessage && messageConfig.visibility && !readOnly;
55
+ const helperTextToDisplay = validatemessage || (eligibleForFieldWarning ? messageConfig.content : helperText);
46
56
 
47
- let testProp = {};
57
+ const status = useStatus({
58
+ showFieldMessage,
59
+ messageVisibility: messageConfig.visibility,
60
+ validatemessage,
61
+ readOnly
62
+ });
48
63
 
49
- testProp = {
50
- 'data-test-id': testId
51
- };
64
+ const testProps: any = { 'data-test-id': testId };
52
65
 
53
66
  if (displayMode === 'DISPLAY_ONLY') {
54
- return <FieldValueList name={hideLabel ? '' : label} value={value} />;
67
+ return <FieldValueList name={hideLabel ? '' : label} value={value} variant={props.variant} />;
55
68
  }
56
69
 
57
70
  if (displayMode === 'STACKED_LARGE_VAL') {
@@ -78,10 +91,11 @@ export default function PegaDxilMyPhone(props: PegaDxilMyPhoneProps) {
78
91
  slotProps={{
79
92
  input: {
80
93
  readOnly: true,
81
- ...testProp,
94
+ ...testProps,
82
95
  },
83
96
  }}
84
97
  disableDropdown={disableDropdown}
98
+ sx={getFieldSx(status)}
85
99
  />
86
100
  </StyledPegaDxilMyPhoneWrapper>
87
101
  </div>
@@ -115,7 +129,8 @@ export default function PegaDxilMyPhone(props: PegaDxilMyPhoneProps) {
115
129
  error={status === 'error'}
116
130
  label={label}
117
131
  value={inputValue}
118
- slotProps={{ input: { ...testProp } }}
132
+ slotProps={{ input: { ...testProps } }}
133
+ sx={getFieldSx(status)}
119
134
  />
120
135
  </StyledPegaDxilMyPhoneWrapper>
121
136
  );
@@ -7,6 +7,8 @@ import { getDataPage } from '@pega/react-sdk-components/lib/components/helpers/d
7
7
  import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
8
8
  import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
9
9
  import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
10
+ import useStatus from '@pega/react-sdk-components/lib/hooks/useStatus';
11
+ import { getFieldSx } from '@pega/react-sdk-components/lib/components/helpers/field-utils';
10
12
 
11
13
  import StyledPegaDxilMyPicklistWrapper from './styles';
12
14
 
@@ -58,6 +60,12 @@ interface PegaDxilMyPicklistProps extends PConnFieldProps {
58
60
  datasourceMetadata?: any;
59
61
  parameters?: any;
60
62
  columns: any[];
63
+ showFieldMessage?: boolean;
64
+ messageConfig?: {
65
+ content?: string;
66
+ visibility?: boolean;
67
+ };
68
+ variant?: string;
61
69
  }
62
70
 
63
71
  // Duplicated runtime code from React SDK
@@ -74,7 +82,6 @@ export default function PegaDxilMyPicklist(props: PegaDxilMyPicklistProps) {
74
82
  disabled,
75
83
  value = '',
76
84
  validatemessage,
77
- status,
78
85
  readOnly,
79
86
  testId,
80
87
  helperText,
@@ -83,7 +90,9 @@ export default function PegaDxilMyPicklist(props: PegaDxilMyPicklistProps) {
83
90
  datasourceMetadata,
84
91
  hideLabel,
85
92
  onRecordChange,
86
- fieldMetadata
93
+ fieldMetadata,
94
+ showFieldMessage,
95
+ messageConfig = {}
87
96
  } = props;
88
97
  let { placeholder = '' } = props;
89
98
  const context = getPConnect().getContextName();
@@ -91,7 +100,8 @@ export default function PegaDxilMyPicklist(props: PegaDxilMyPicklistProps) {
91
100
  placeholder = placeholder || 'Select...';
92
101
  const [options, setOptions] = useState<IOption[]>([]);
93
102
  const [theDatasource, setDatasource] = useState<any[] | null>(null);
94
- const helperTextToDisplay = validatemessage || helperText;
103
+ const eligibleForFieldWarning = showFieldMessage && messageConfig.visibility && !readOnly;
104
+ const helperTextToDisplay = validatemessage || (eligibleForFieldWarning ? messageConfig.content : helperText);
95
105
 
96
106
  const thePConn = getPConnect();
97
107
  const actionsApi = thePConn.getActionsApi();
@@ -99,6 +109,13 @@ export default function PegaDxilMyPicklist(props: PegaDxilMyPicklistProps) {
99
109
  const className = thePConn.getCaseInfo().getClassName();
100
110
  const refName = propName?.slice(propName.lastIndexOf('.') + 1);
101
111
 
112
+ const status = useStatus({
113
+ showFieldMessage,
114
+ messageVisibility: messageConfig.visibility,
115
+ validatemessage,
116
+ readOnly
117
+ });
118
+
102
119
  if (!isDeepEqual(datasource, theDatasource)) {
103
120
  // inbound datasource is different, so update theDatasource (to trigger useEffect)
104
121
  setDatasource(datasource);
@@ -135,7 +152,7 @@ export default function PegaDxilMyPicklist(props: PegaDxilMyPicklistProps) {
135
152
  const optionsList = [...list];
136
153
  optionsList.unshift({
137
154
  key: placeholder,
138
- value: thePConn.getLocalizedValue(placeholder)
155
+ value: thePConn.getLocalizedValue(placeholder, '', '')
139
156
  }); // 2nd and 3rd args empty string until typedef marked correctly
140
157
  setOptions(optionsList);
141
158
  }
@@ -154,7 +171,14 @@ export default function PegaDxilMyPicklist(props: PegaDxilMyPicklistProps) {
154
171
  };
155
172
  optionsData.push(obj);
156
173
  });
174
+ optionsData.unshift({
175
+ key: placeholder,
176
+ value: thePConn.getLocalizedValue(placeholder, '', '')
177
+ });
157
178
  setOptions(optionsData);
179
+ })
180
+ .catch(e => {
181
+ console.error(e);
158
182
  });
159
183
  }
160
184
  }, []);
@@ -176,6 +200,7 @@ export default function PegaDxilMyPicklist(props: PegaDxilMyPicklistProps) {
176
200
  <FieldValueList
177
201
  name={hideLabel ? '' : label}
178
202
  value={thePConn.getLocalizedValue(val, localePath, thePConn.getLocaleRuleNameFromKeys(localeClass, localeContext, localeName))}
203
+ variant={props.variant}
179
204
  />
180
205
  );
181
206
  }
@@ -201,9 +226,7 @@ export default function PegaDxilMyPicklist(props: PegaDxilMyPicklistProps) {
201
226
  readOnlyProp = { readOnly: true };
202
227
  }
203
228
 
204
- let testProp = {};
205
-
206
- testProp = {
229
+ const testProps: any = {
207
230
  'data-test-id': testId
208
231
  };
209
232
 
@@ -232,7 +255,10 @@ export default function PegaDxilMyPicklist(props: PegaDxilMyPicklistProps) {
232
255
  label={label}
233
256
  value={value === '' && !readOnly ? placeholder : value}
234
257
  select
235
- InputProps={{ ...readOnlyProp, ...testProp }}
258
+ slotProps={{
259
+ input: { ...readOnlyProp, ...testProps }
260
+ }}
261
+ sx={getFieldSx(status)}
236
262
  >
237
263
  {options.map((option: any) => (
238
264
  <MenuItem key={option.key} value={option.key}>
@@ -5,6 +5,8 @@ import Utils from '@pega/react-sdk-components/lib/components/helpers/utils';
5
5
  import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
6
6
  import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
7
7
  import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
8
+ import useStatus from '@pega/react-sdk-components/lib/hooks/useStatus';
9
+ import { getFormControlSx } from '@pega/react-sdk-components/lib/components/helpers/field-utils';
8
10
 
9
11
  import StyledPegaDxilMyRadiobuttonsWrapper from './styles';
10
12
 
@@ -20,6 +22,11 @@ interface PegaDxilMyRadiobuttonsProps extends PConnFieldProps {
20
22
  imageSize?: string;
21
23
  showImageDescription?: boolean;
22
24
  datasource?: any;
25
+ showFieldMessage?: boolean;
26
+ messageConfig?: {
27
+ content?: string;
28
+ visibility?: boolean;
29
+ };
23
30
  }
24
31
 
25
32
  // Duplicated runtime code from React SDK
@@ -37,7 +44,6 @@ export default function PegaDxilMyRadiobuttons(props: PegaDxilMyRadiobuttonsProp
37
44
  readOnly,
38
45
  validatemessage,
39
46
  helperText,
40
- status,
41
47
  required,
42
48
  inline,
43
49
  displayMode,
@@ -49,7 +55,9 @@ export default function PegaDxilMyRadiobuttons(props: PegaDxilMyRadiobuttonsProp
49
55
  datasource,
50
56
  imagePosition,
51
57
  imageSize,
52
- showImageDescription
58
+ showImageDescription,
59
+ showFieldMessage,
60
+ messageConfig = {}
53
61
  } = props;
54
62
  const [theSelectedButton, setSelectedButton] = useState(value);
55
63
 
@@ -57,9 +65,17 @@ export default function PegaDxilMyRadiobuttons(props: PegaDxilMyRadiobuttonsProp
57
65
  const theConfigProps = thePConn.getConfigProps();
58
66
  const actionsApi = thePConn.getActionsApi();
59
67
  const propName = (thePConn.getStateProps() as any).value;
60
- const helperTextToDisplay = validatemessage || helperText;
68
+ const eligibleForFieldWarning = showFieldMessage && messageConfig.visibility && !readOnly;
69
+ const helperTextToDisplay = validatemessage || (eligibleForFieldWarning ? messageConfig.content : helperText);
61
70
  const className = thePConn.getCaseInfo().getClassName();
62
71
 
72
+ const status = useStatus({
73
+ showFieldMessage,
74
+ messageVisibility: messageConfig.visibility,
75
+ validatemessage,
76
+ readOnly
77
+ });
78
+
63
79
  let configProperty = (thePConn.getRawMetadata() as any)?.config?.value || '';
64
80
  configProperty = configProperty.startsWith('@P') ? configProperty.substring(3) : configProperty;
65
81
  configProperty = configProperty.startsWith('.') ? configProperty.substring(1) : configProperty;
@@ -113,7 +129,7 @@ export default function PegaDxilMyRadiobuttons(props: PegaDxilMyRadiobuttonsProp
113
129
  return (
114
130
  <div>
115
131
  <h4 style={{ marginTop: 0, marginBottom: 0 }}>{label}</h4>
116
- <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(min(200px, 100%), 1fr))', gap: '1rem' }}>
132
+ <div id='selectable-card' style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(min(200px, 100%), 1fr))', gap: '1rem' }}>
117
133
  <SelectableCard
118
134
  hideFieldLabels={hideFieldLabels}
119
135
  additionalProps={additionalProps}
@@ -139,7 +155,7 @@ export default function PegaDxilMyRadiobuttons(props: PegaDxilMyRadiobuttonsProp
139
155
  }
140
156
  return (
141
157
  <StyledPegaDxilMyRadiobuttonsWrapper>
142
- <FormControl variant='standard' error={status === 'error'} required={required}>
158
+ <FormControl variant='standard' error={status === 'error'} required={required} sx={getFormControlSx(status)}>
143
159
  <FormLabel component='legend'>{label}</FormLabel>
144
160
  <RadioGroup value={theSelectedButton} onChange={handleChange} onBlur={!readOnly ? handleBlur : undefined} row={inline}>
145
161
  {theOptions.map(theOption => {
@@ -8,6 +8,8 @@ import { getDataPage } from '@pega/react-sdk-components/lib/components/helpers/d
8
8
  import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
9
9
  import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
10
10
  import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
11
+ import useStatus from '@pega/react-sdk-components/lib/hooks/useStatus';
12
+ import { getFieldSx } from '@pega/react-sdk-components/lib/components/helpers/field-utils';
11
13
 
12
14
  import StyledPegaDxilMySearchboxWrapper from './styles';
13
15
 
@@ -44,13 +46,18 @@ interface PegaDxilMySearchboxProps extends PConnFieldProps {
44
46
  displayMode?: string;
45
47
  deferDatasource?: boolean;
46
48
  datasourceMetadata?: any;
47
- status?: string;
48
49
  onRecordChange?: any;
49
50
  additionalProps?: object;
50
51
  listType: string;
51
52
  parameters?: any;
52
53
  datasource: any;
53
54
  columns: any[];
55
+ showFieldMessage?: boolean;
56
+ messageConfig?: {
57
+ content?: string;
58
+ visibility?: boolean;
59
+ };
60
+ variant?: string;
54
61
  }
55
62
 
56
63
  // Duplicated runtime code from React SDK
@@ -73,10 +80,11 @@ export default function PegaDxilMySearchbox(props: PegaDxilMySearchboxProps) {
73
80
  displayMode,
74
81
  deferDatasource,
75
82
  datasourceMetadata,
76
- status,
77
83
  helperText,
78
84
  hideLabel,
79
- onRecordChange
85
+ onRecordChange,
86
+ showFieldMessage,
87
+ messageConfig = {}
80
88
  } = props;
81
89
 
82
90
  const context = getPConnect().getContextName();
@@ -85,12 +93,20 @@ export default function PegaDxilMySearchbox(props: PegaDxilMySearchboxProps) {
85
93
  const [options, setOptions] = useState<IOption[]>([]);
86
94
  const [theDatasource, setDatasource] = useState(null);
87
95
  let selectedValue: any = '';
88
- const helperTextToDisplay = validatemessage || helperText;
96
+ const eligibleForFieldWarning = showFieldMessage && messageConfig.visibility && !readOnly;
97
+ const helperTextToDisplay = validatemessage || (eligibleForFieldWarning ? messageConfig.content : helperText);
89
98
 
90
99
  const thePConn = getPConnect();
91
100
  const actionsApi = thePConn.getActionsApi();
92
101
  const propName = (thePConn.getStateProps() as any).value;
93
102
 
103
+ const status = useStatus({
104
+ showFieldMessage,
105
+ messageVisibility: messageConfig.visibility,
106
+ validatemessage,
107
+ readOnly
108
+ });
109
+
94
110
  if (!isDeepEqual(datasource, theDatasource)) {
95
111
  // inbound datasource is different, so update theDatasource (to trigger useEffect)
96
112
  setDatasource(datasource);
@@ -156,11 +172,7 @@ export default function PegaDxilMySearchbox(props: PegaDxilMySearchboxProps) {
156
172
  }, []);
157
173
 
158
174
  if (displayMode === 'DISPLAY_ONLY') {
159
- return <FieldValueList name={hideLabel ? '' : label} value={value} />;
160
- }
161
-
162
- if (displayMode === 'STACKED_LARGE_VAL') {
163
- return <FieldValueList name={hideLabel ? '' : label} value={value} variant='stacked' />;
175
+ return <FieldValueList name={hideLabel ? '' : label} value={value} variant={props.variant} />;
164
176
  }
165
177
 
166
178
  if (value) {
@@ -217,6 +229,7 @@ export default function PegaDxilMySearchbox(props: PegaDxilMySearchboxProps) {
217
229
  error={status === 'error'}
218
230
  label={label}
219
231
  data-test-id={testId}
232
+ sx={getFieldSx(status)}
220
233
  />
221
234
  )}
222
235
  />