@pega/dx-component-builder-sdk 23.1.15 → 24.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 (311) hide show
  1. package/README.md +3 -3
  2. package/package.json +1 -1
  3. package/src/cli.js +1 -1
  4. package/src/constants.js +4 -0
  5. package/src/tasks/build-all/helper.js +6 -0
  6. package/src/tasks/build-comp/helper.js +6 -0
  7. package/src/tasks/bundle/builderAngular/webpack.config.js +14 -1
  8. package/src/tasks/bundle/builderAssociated/webpack.config.js +13 -0
  9. package/src/tasks/bundle/builderReact/webpack.config.js +14 -1
  10. package/src/tasks/create/templates/Constellation/field/Boolean/index.tsx.mustache +3 -2
  11. package/src/tasks/create/templates/Constellation/field/Icon-Button-URL/PConnProps.d.ts.mustache +46 -0
  12. package/src/tasks/create/templates/Constellation/field/Icon-Button-URL/config.json.mustache +64 -0
  13. package/src/tasks/create/templates/Constellation/field/Icon-Button-URL/demo.stories.tsx.mustache +99 -0
  14. package/src/tasks/create/templates/Constellation/field/Icon-Button-URL/index.tsx.mustache +204 -0
  15. package/src/tasks/create/templates/Constellation/field/Icon-Button-URL/mock.ts.mustache +5 -0
  16. package/src/tasks/create/templates/Constellation/field/Icon-Button-URL/styles.ts.mustache +8 -0
  17. package/src/tasks/create/templates/Constellation/field/Picklist/index.tsx.mustache +0 -1
  18. package/src/tasks/create/templates/Constellation/field/Picklist-Autocomplete/date.ts.mustache +15 -37
  19. package/src/tasks/create/templates/Constellation/field/Picklist-Autocomplete/index.tsx.mustache +11 -0
  20. package/src/tasks/create/templates/Constellation/field/Picklist-Autocomplete/utils.ts.mustache +3 -0
  21. package/src/tasks/create/templates/Constellation/field/Text/index.tsx.mustache +94 -4
  22. package/src/tasks/create/templates/Constellation/template/DETAILS/Avatar.tsx.mustache +78 -0
  23. package/src/tasks/create/templates/Constellation/template/DETAILS/DetailsRender.tsx.mustache +55 -0
  24. package/src/tasks/create/templates/Constellation/template/DETAILS/HighlightRender.tsx.mustache +49 -0
  25. package/src/tasks/create/templates/Constellation/template/DETAILS/Operator.tsx.mustache +218 -0
  26. package/src/tasks/create/templates/Constellation/template/DETAILS/demo.stories.tsx.mustache +77 -23
  27. package/src/tasks/create/templates/Constellation/template/DETAILS/index.tsx.mustache +51 -40
  28. package/src/tasks/create/templates/Constellation/template/DETAILS/mock.ts.mustache +78 -20
  29. package/src/tasks/create/templates/Constellation/template/DETAILS/styles.ts.mustache +16 -0
  30. package/src/tasks/create/templates/Constellation/template/DETAILS-region/Avatar.tsx.mustache +78 -0
  31. package/src/tasks/create/templates/Constellation/template/DETAILS-region/DetailsRender.tsx.mustache +55 -0
  32. package/src/tasks/create/templates/Constellation/template/DETAILS-region/HighlightRender.tsx.mustache +49 -0
  33. package/src/tasks/create/templates/Constellation/template/DETAILS-region/Operator.tsx.mustache +218 -0
  34. package/src/tasks/create/templates/Constellation/template/DETAILS-region/demo.stories.tsx.mustache +95 -26
  35. package/src/tasks/create/templates/Constellation/template/DETAILS-region/index.tsx.mustache +42 -39
  36. package/src/tasks/create/templates/Constellation/template/DETAILS-region/mock.ts.mustache +68 -10
  37. package/src/tasks/create/templates/Constellation/template/DETAILS-region/styles.ts.mustache +15 -0
  38. package/src/tasks/create/templates/Constellation/template/FORM/DetailsRender.tsx +59 -0
  39. package/src/tasks/create/templates/Constellation/template/FORM/demo.stories.tsx.mustache +73 -8
  40. package/src/tasks/create/templates/Constellation/template/FORM/index.tsx.mustache +33 -5
  41. package/src/tasks/create/templates/Constellation/template/FORM-region/DetailsRender.tsx +59 -0
  42. package/src/tasks/create/templates/Constellation/template/FORM-region/demo.stories.tsx.mustache +95 -15
  43. package/src/tasks/create/templates/Constellation/template/FORM-region/index.tsx.mustache +29 -7
  44. package/src/tasks/create/templates/Constellation/template/PAGE/GetNextWork.tsx.mustache +2 -1
  45. package/src/tasks/create/templates/Constellation/template/PAGE/localizations.json.mustache +4 -2
  46. package/src/tasks/create/templates/Constellation/widget/PAGE/demo.stories.tsx.mustache +87 -6
  47. package/src/tasks/create/templates/Constellation/widget/PAGE/index.tsx.mustache +67 -5
  48. package/src/tasks/create/templates/SDK-Angular/field/Boolean/boolean.component.html.mustache +19 -18
  49. package/src/tasks/create/templates/SDK-Angular/field/Boolean/boolean.component.ts.mustache +127 -44
  50. package/src/tasks/create/templates/SDK-Angular/field/Icon-Button-URL/config.json.mustache +64 -0
  51. package/src/tasks/create/templates/SDK-Angular/field/Icon-Button-URL/demo.stories.tsx.mustache +63 -0
  52. package/src/tasks/create/templates/SDK-Angular/field/Icon-Button-URL/icon-button-url.component.html.mustache +40 -0
  53. package/src/tasks/create/templates/SDK-Angular/field/Icon-Button-URL/icon-button-url.component.scss.mustache +24 -0
  54. package/src/tasks/create/templates/SDK-Angular/field/Icon-Button-URL/icon-button-url.component.spec.ts.mustache +26 -0
  55. package/src/tasks/create/templates/SDK-Angular/field/Icon-Button-URL/icon-button-url.component.ts.mustache +195 -0
  56. package/src/tasks/create/templates/SDK-Angular/field/Icon-Button-URL/mock.ts.mustache +37 -0
  57. package/src/tasks/create/templates/SDK-Angular/field/Text-URL/text-url.component.html.mustache +1 -0
  58. package/src/tasks/create/templates/SDK-Angular/field/Text-URL/text-url.component.ts.mustache +2 -0
  59. package/src/tasks/create/templates/SDK-Angular/field/TimeOfDay/time-of-day.component.html.mustache +1 -0
  60. package/src/tasks/create/templates/SDK-Angular/field/TimeOfDay/time-of-day.component.ts.mustache +2 -0
  61. package/src/tasks/create/templates/SDK-Angular/template/FORM-region/form.component.scss.mustache +1 -1
  62. package/src/tasks/create/templates/SDK-Angular/widget/CASE/case.component.ts.mustache +2 -2
  63. package/src/tasks/create/templates/SDK-Angular/widget/PAGE/demo.stories.tsx.mustache +22 -5
  64. package/src/tasks/create/templates/SDK-Angular/widget/PAGE/mock.ts.mustache +25 -0
  65. package/src/tasks/create/templates/SDK-Angular/widget/PAGE/page.component.html.mustache +11 -1
  66. package/src/tasks/create/templates/SDK-Angular/widget/PAGE/page.component.ts.mustache +93 -1
  67. package/src/tasks/create/templates/SDK-React/field/Boolean/demo.stories.tsx.mustache +1 -1
  68. package/src/tasks/create/templates/SDK-React/field/Boolean/mock.ts.mustache +8 -8
  69. package/src/tasks/create/templates/SDK-React/field/Date/index.tsx.mustache +2 -2
  70. package/src/tasks/create/templates/SDK-React/field/Date/mock.ts.mustache +7 -7
  71. package/src/tasks/create/templates/SDK-React/field/DateTime/demo.stories.tsx.mustache +1 -1
  72. package/src/tasks/create/templates/SDK-React/field/DateTime/index.tsx.mustache +2 -3
  73. package/src/tasks/create/templates/SDK-React/field/DateTime/mock.ts.mustache +6 -6
  74. package/src/tasks/create/templates/SDK-React/field/Decimal/index.tsx.mustache +51 -35
  75. package/src/tasks/create/templates/SDK-React/field/Decimal/mock.ts.mustache +1 -1
  76. package/src/tasks/create/templates/SDK-React/field/Decimal-Currency/config.json.mustache +1 -1
  77. package/src/tasks/create/templates/SDK-React/field/Decimal-Currency/demo.stories.tsx.mustache +1 -1
  78. package/src/tasks/create/templates/SDK-React/field/Decimal-Currency/index.tsx.mustache +47 -37
  79. package/src/tasks/create/templates/SDK-React/field/Decimal-Currency/mock.ts.mustache +1 -1
  80. package/src/tasks/create/templates/SDK-React/field/Decimal-Percentage/config.json.mustache +1 -1
  81. package/src/tasks/create/templates/SDK-React/field/Decimal-Percentage/index.tsx.mustache +36 -21
  82. package/src/tasks/create/templates/SDK-React/field/Decimal-Percentage/mock.ts.mustache +1 -1
  83. package/src/tasks/create/templates/SDK-React/field/Icon-Button-URL/config.json.mustache +64 -0
  84. package/src/tasks/create/templates/SDK-React/field/Icon-Button-URL/demo.stories.tsx.mustache +91 -0
  85. package/src/tasks/create/templates/SDK-React/field/Icon-Button-URL/index.tsx.mustache +160 -0
  86. package/src/tasks/create/templates/SDK-React/field/Icon-Button-URL/mock.ts.mustache +4 -0
  87. package/src/tasks/create/templates/SDK-React/field/Icon-Button-URL/styles.js.mustache +7 -0
  88. package/src/tasks/create/templates/SDK-React/field/Integer/config.json.mustache +1 -1
  89. package/src/tasks/create/templates/SDK-React/field/Integer/index.tsx.mustache +19 -20
  90. package/src/tasks/create/templates/SDK-React/field/Integer/mock.ts.mustache +1 -1
  91. package/src/tasks/create/templates/SDK-React/field/Picklist/index.tsx.mustache +26 -26
  92. package/src/tasks/create/templates/SDK-React/field/Picklist-RadioButtons/mock.ts.mustache +0 -1
  93. package/src/tasks/create/templates/SDK-React/field/Text/config.json.mustache +1 -1
  94. package/src/tasks/create/templates/SDK-React/field/Text/index.tsx.mustache +0 -1
  95. package/src/tasks/create/templates/SDK-React/field/Text/mock.ts.mustache +1 -1
  96. package/src/tasks/create/templates/SDK-React/field/Text-Email/config.json.mustache +1 -1
  97. package/src/tasks/create/templates/SDK-React/field/Text-Email/mock.ts.mustache +1 -1
  98. package/src/tasks/create/templates/SDK-React/field/Text-Input/config.json.mustache +1 -1
  99. package/src/tasks/create/templates/SDK-React/field/Text-Input/index.tsx.mustache +0 -1
  100. package/src/tasks/create/templates/SDK-React/field/Text-Input/mock.ts.mustache +1 -1
  101. package/src/tasks/create/templates/SDK-React/field/Text-Paragraph/index.tsx.mustache +1 -3
  102. package/src/tasks/create/templates/SDK-React/field/Text-Paragraph/mock.ts.mustache +1 -1
  103. package/src/tasks/create/templates/SDK-React/field/Text-Phone/index.tsx.mustache +17 -9
  104. package/src/tasks/create/templates/SDK-React/field/Text-URL/index.tsx.mustache +1 -2
  105. package/src/tasks/create/templates/SDK-React/field/Text-URL/mock.ts.mustache +1 -1
  106. package/src/tasks/create/templates/SDK-React/field/TimeOfDay/demo.stories.tsx.mustache +4 -4
  107. package/src/tasks/create/templates/SDK-React/field/TimeOfDay/index.tsx.mustache +0 -2
  108. package/src/tasks/create/templates/SDK-React/field/TimeOfDay/mock.ts.mustache +6 -6
  109. package/src/tasks/create/templates/SDK-React/template/DETAILS/demo.stories.tsx.mustache +1 -7
  110. package/src/tasks/create/templates/SDK-React/template/DETAILS/index.tsx.mustache +4 -9
  111. package/src/tasks/create/templates/SDK-React/template/DETAILS/mock.ts.mustache +197 -164
  112. package/src/tasks/create/templates/SDK-React/template/DETAILS-region/demo.stories.tsx.mustache +1 -6
  113. package/src/tasks/create/templates/SDK-React/template/DETAILS-region/index.tsx.mustache +4 -9
  114. package/src/tasks/create/templates/SDK-React/template/DETAILS-region/mock.ts.mustache +207 -163
  115. package/src/tasks/create/templates/SDK-React/template/FORM/config.json.mustache +1 -1
  116. package/src/tasks/create/templates/SDK-React/template/FORM/demo.stories.tsx.mustache +13 -1
  117. package/src/tasks/create/templates/SDK-React/template/FORM/index.tsx.mustache +14 -16
  118. package/src/tasks/create/templates/SDK-React/template/FORM/utils.ts.mustache +1 -1
  119. package/src/tasks/create/templates/SDK-React/template/FORM-region/demo.stories.tsx.mustache +0 -2
  120. package/src/tasks/create/templates/SDK-React/template/FORM-region/mock.ts.mustache +121 -122
  121. package/src/tasks/create/templates/SDK-React/template/PAGE/OneColumn.tsx.mustache +12 -13
  122. package/src/tasks/create/templates/SDK-React/template/PAGE/demo.stories.tsx.mustache +1 -1
  123. package/src/tasks/create/templates/SDK-React/template/PAGE/index.tsx.mustache +3 -5
  124. package/src/tasks/create/templates/SDK-React/template/PAGE/mock.ts.mustache +8 -9
  125. package/src/tasks/create/templates/SDK-React/widget/CASE/config.json.mustache +2 -2
  126. package/src/tasks/create/templates/SDK-React/widget/CASE/demo.stories.tsx.mustache +19 -20
  127. package/src/tasks/create/templates/SDK-React/widget/CASE/index.tsx.mustache +3 -3
  128. package/src/tasks/create/templates/SDK-React/widget/PAGE/config.json.mustache +43 -43
  129. package/src/tasks/create/templates/SDK-React/widget/PAGE/demo.stories.tsx.mustache +45 -2
  130. package/src/tasks/create/templates/SDK-React/widget/PAGE/index.tsx.mustache +168 -3
  131. package/src/tasks/create/templates/SDK-React/widget/PAGE/mock.ts.mustache +26 -1
  132. package/src/tasks/create/templates/SDK-React/widget/PAGE-CASE/demo.stories.tsx.mustache +20 -21
  133. package/src/tasks/create/templates/SDK-React/widget/PAGE-CASE/index.tsx.mustache +0 -1
  134. package/src/tasks/create/templates/SDK-React/widget/PAGE-CASE/mock.ts.mustache +0 -1
  135. package/src/tasks/create-all/index.js +3 -0
  136. package/src/tasks/publish/helper.js +4 -0
  137. package/src/tasks/publish-all/helper.js +6 -2
  138. package/src/tasks/validator/index.js +7 -1
  139. package/tests/assets/sdk-r/components/create/custom-constellation/field/Pega_DXIL_MyTestText/index.tsx +94 -4
  140. package/tests/assets/sdk-r/components/create/custom-sdk/field/Pega_DXIL_MyTestText/config.json +1 -1
  141. package/tests/assets/sdk-r/components/create/custom-sdk/field/Pega_DXIL_MyTestText/index.tsx +0 -1
  142. package/tests/assets/sdk-r/components/create/custom-sdk/field/Pega_DXIL_MyTestText/mock.ts +1 -1
  143. package/tests/assets/sdk-r/components/create/override-sdk/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +2 -2
  144. package/tests/assets/sdk-r/components/create/override-sdk/field/CancelAlert/CancelAlert.tsx +2 -0
  145. package/tests/assets/sdk-r/components/create/override-sdk/field/Currency/Currency.tsx +36 -26
  146. package/tests/assets/sdk-r/components/create/override-sdk/field/Decimal/Decimal.tsx +33 -19
  147. package/tests/assets/sdk-r/components/create/override-sdk/field/Multiselect/Multiselect.tsx +1 -1
  148. package/tests/assets/sdk-r/components/create/override-sdk/field/Percentage/Percentage.tsx +33 -18
  149. package/tests/assets/sdk-r/components/create/override-sdk/field/Phone/Phone.tsx +16 -7
  150. package/tests/assets/sdk-r/components/create/override-sdk/field/ScalarList/ScalarList.tsx +2 -0
  151. package/tests/assets/sdk-r/components/create/override-sdk/field/UserReference/UserReference.tsx +11 -1
  152. package/tests/assets/sdk-r/components/create/override-sdk/infra/Assignment/Assignment.tsx +28 -1
  153. package/tests/assets/sdk-r/components/create/override-sdk/infra/DashboardFilter/DashboardFilter.tsx +1 -1
  154. package/tests/assets/sdk-r/components/create/override-sdk/infra/DeferLoad/DeferLoad.tsx +5 -1
  155. package/tests/assets/sdk-r/components/create/override-sdk/infra/MultiStep/MultiStep.tsx +3 -1
  156. package/tests/assets/sdk-r/components/create/override-sdk/infra/NavBar/NavBar.tsx +2 -2
  157. package/tests/assets/sdk-r/components/create/override-sdk/template/CaseView/CaseView.tsx +2 -1
  158. package/tests/assets/sdk-r/components/create/override-sdk/template/CaseViewActionsMenu/CaseViewActionsMenu.tsx +1 -1
  159. package/tests/assets/sdk-r/components/create/override-sdk/template/DataReference/DataReference.tsx +1 -1
  160. package/tests/assets/sdk-r/components/create/override-sdk/template/DefaultForm/utils/index.ts +2 -7
  161. package/tests/assets/sdk-r/components/create/override-sdk/template/Details/Details.tsx +1 -1
  162. package/tests/assets/sdk-r/components/create/override-sdk/template/DetailsThreeColumn/DetailsThreeColumn.tsx +1 -1
  163. package/tests/assets/sdk-r/components/create/override-sdk/template/DetailsTwoColumn/DetailsTwoColumn.tsx +1 -1
  164. package/tests/assets/sdk-r/components/create/override-sdk/template/FieldGroupTemplate/FieldGroupTemplate.tsx +2 -0
  165. package/tests/assets/sdk-r/components/create/override-sdk/template/ListView/ListView.tsx +20 -31
  166. package/tests/assets/sdk-r/components/create/override-sdk/template/MultiReferenceReadOnly/MultiReferenceReadOnly.tsx +1 -1
  167. package/tests/assets/sdk-r/components/create/override-sdk/template/NarrowWideDetails/NarrowWideDetails.tsx +1 -1
  168. package/tests/assets/sdk-r/components/create/override-sdk/template/PromotedFilters/PromotedFilters.tsx +1 -0
  169. package/tests/assets/sdk-r/components/create/override-sdk/template/SimpleTableManual/SimpleTableManual.tsx +4 -0
  170. package/tests/assets/sdk-r/components/create/override-sdk/template/SingleReferenceReadOnly/SingleReferenceReadOnly.tsx +1 -1
  171. package/tests/assets/sdk-r/components/create/override-sdk/template/WideNarrowDetails/WideNarrowDetails.tsx +1 -1
  172. package/tests/assets/sdk-r/components/create/override-sdk/widget/Attachment/Attachment.tsx +3 -2
  173. package/tests/assets/sdk-r/components/create/override-sdk/widget/FileUtility/FileUtility.tsx +1 -1
  174. package/tests/assets/sdk-r/components/create/override-sdk/widget/QuickCreate/QuickCreate.tsx +1 -0
  175. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyBoolean/index.tsx +3 -2
  176. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyIconButtonURL/PConnProps.d.ts +46 -0
  177. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyIconButtonURL/demo.stories.tsx +99 -0
  178. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyIconButtonURL/index.tsx +201 -0
  179. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyIconButtonURL/mock.ts +5 -0
  180. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyIconButtonURL/styles.ts +8 -0
  181. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyPicklist/index.tsx +0 -1
  182. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MySearchbox/date.ts +15 -37
  183. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MySearchbox/index.tsx +11 -0
  184. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MySearchbox/utils.ts +3 -0
  185. package/tests/assets/sdk-r/components/createAll/custom-constellation/field/Pega_DXIL_MyText/index.tsx +94 -4
  186. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyDetails/Avatar.tsx +78 -0
  187. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyDetails/DetailsRender.tsx +52 -0
  188. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyDetails/HighlightRender.tsx +46 -0
  189. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyDetails/Operator.tsx +215 -0
  190. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyDetails/demo.stories.tsx +77 -23
  191. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyDetails/index.tsx +48 -37
  192. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyDetails/mock.ts +78 -20
  193. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyDetails/styles.ts +16 -0
  194. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyForm/DetailsRender.tsx +59 -0
  195. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyForm/demo.stories.tsx +73 -8
  196. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyForm/index.tsx +30 -5
  197. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyPage/GetNextWork.tsx +2 -1
  198. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyPage/localizations.json +4 -2
  199. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyTwoColumnDetails/Avatar.tsx +78 -0
  200. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyTwoColumnDetails/DetailsRender.tsx +52 -0
  201. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyTwoColumnDetails/HighlightRender.tsx +46 -0
  202. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyTwoColumnDetails/Operator.tsx +215 -0
  203. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyTwoColumnDetails/demo.stories.tsx +95 -26
  204. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyTwoColumnDetails/index.tsx +39 -36
  205. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyTwoColumnDetails/mock.ts +68 -10
  206. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyTwoColumnDetails/styles.ts +15 -0
  207. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyTwoColumnForm/DetailsRender.tsx +59 -0
  208. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyTwoColumnForm/demo.stories.tsx +95 -15
  209. package/tests/assets/sdk-r/components/createAll/custom-constellation/template/Pega_DXIL_MyTwoColumnForm/index.tsx +23 -4
  210. package/tests/assets/sdk-r/components/createAll/custom-constellation/widget/Pega_DXIL_MyPageWidget/demo.stories.tsx +87 -6
  211. package/tests/assets/sdk-r/components/createAll/custom-constellation/widget/Pega_DXIL_MyPageWidget/index.tsx +67 -5
  212. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyBoolean/demo.stories.tsx +1 -1
  213. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyBoolean/mock.ts +8 -8
  214. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyCurrency/config.json +1 -1
  215. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyCurrency/demo.stories.tsx +1 -1
  216. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyCurrency/index.tsx +44 -34
  217. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyCurrency/mock.ts +1 -1
  218. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDate/index.tsx +2 -2
  219. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDate/mock.ts +7 -7
  220. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDateTime/demo.stories.tsx +1 -1
  221. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDateTime/index.tsx +2 -3
  222. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDateTime/mock.ts +6 -6
  223. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDecimal/index.tsx +48 -32
  224. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyDecimal/mock.ts +1 -1
  225. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyEmail/config.json +1 -1
  226. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyEmail/mock.ts +1 -1
  227. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyIconButtonURL/config.json +64 -0
  228. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyIconButtonURL/demo.stories.tsx +91 -0
  229. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyIconButtonURL/index.tsx +157 -0
  230. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyIconButtonURL/mock.ts +4 -0
  231. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyIconButtonURL/styles.js +7 -0
  232. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyInteger/config.json +1 -1
  233. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyInteger/index.tsx +16 -17
  234. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyInteger/mock.ts +1 -1
  235. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyParagraph/index.tsx +1 -3
  236. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyParagraph/mock.ts +1 -1
  237. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyPercentage/config.json +1 -1
  238. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyPercentage/index.tsx +34 -19
  239. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyPercentage/mock.ts +1 -1
  240. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyPhone/index.tsx +17 -9
  241. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyPicklist/index.tsx +23 -23
  242. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyRadiobuttons/mock.ts +0 -1
  243. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyText/config.json +1 -1
  244. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyText/index.tsx +0 -1
  245. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyText/mock.ts +1 -1
  246. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyTextInput/config.json +1 -1
  247. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyTextInput/index.tsx +0 -1
  248. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyTextInput/mock.ts +1 -1
  249. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyTimeOfDay/demo.stories.tsx +4 -4
  250. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyTimeOfDay/index.tsx +0 -2
  251. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyTimeOfDay/mock.ts +6 -6
  252. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyURL/index.tsx +1 -2
  253. package/tests/assets/sdk-r/components/createAll/custom-sdk/field/Pega_DXIL_MyURL/mock.ts +1 -1
  254. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyDetails/demo.stories.tsx +1 -7
  255. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyDetails/index.tsx +4 -9
  256. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyDetails/mock.ts +197 -164
  257. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyForm/config.json +1 -1
  258. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyForm/demo.stories.tsx +13 -1
  259. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyForm/index.tsx +11 -13
  260. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyForm/utils.ts +1 -1
  261. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyPage/OneColumn.tsx +12 -13
  262. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyPage/demo.stories.tsx +1 -1
  263. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyPage/index.tsx +3 -5
  264. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyPage/mock.ts +8 -9
  265. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyTwoColumnDetails/demo.stories.tsx +1 -6
  266. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyTwoColumnDetails/index.tsx +4 -9
  267. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyTwoColumnDetails/mock.ts +207 -163
  268. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyTwoColumnForm/demo.stories.tsx +0 -2
  269. package/tests/assets/sdk-r/components/createAll/custom-sdk/template/Pega_DXIL_MyTwoColumnForm/mock.ts +121 -122
  270. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyCaseWidget/config.json +2 -2
  271. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyCaseWidget/demo.stories.tsx +19 -20
  272. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyCaseWidget/index.tsx +3 -3
  273. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageCaseWidget/demo.stories.tsx +20 -21
  274. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageCaseWidget/index.tsx +0 -1
  275. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageCaseWidget/mock.ts +0 -1
  276. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageWidget/config.json +43 -43
  277. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageWidget/demo.stories.tsx +45 -2
  278. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageWidget/index.tsx +168 -3
  279. package/tests/assets/sdk-r/components/createAll/custom-sdk/widget/Pega_DXIL_MyPageWidget/mock.ts +26 -1
  280. package/tests/assets/sdk-r/components/createAll/override-sdk/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +2 -2
  281. package/tests/assets/sdk-r/components/createAll/override-sdk/field/CancelAlert/CancelAlert.tsx +2 -0
  282. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Currency/Currency.tsx +36 -26
  283. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Decimal/Decimal.tsx +33 -19
  284. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Multiselect/Multiselect.tsx +1 -1
  285. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Percentage/Percentage.tsx +33 -18
  286. package/tests/assets/sdk-r/components/createAll/override-sdk/field/Phone/Phone.tsx +16 -7
  287. package/tests/assets/sdk-r/components/createAll/override-sdk/field/ScalarList/ScalarList.tsx +2 -0
  288. package/tests/assets/sdk-r/components/createAll/override-sdk/field/UserReference/UserReference.tsx +11 -1
  289. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/Assignment/Assignment.tsx +28 -1
  290. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/DashboardFilter/DashboardFilter.tsx +1 -1
  291. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/DeferLoad/DeferLoad.tsx +5 -1
  292. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/MultiStep/MultiStep.tsx +3 -1
  293. package/tests/assets/sdk-r/components/createAll/override-sdk/infra/NavBar/NavBar.tsx +2 -2
  294. package/tests/assets/sdk-r/components/createAll/override-sdk/template/CaseView/CaseView.tsx +2 -1
  295. package/tests/assets/sdk-r/components/createAll/override-sdk/template/CaseViewActionsMenu/CaseViewActionsMenu.tsx +1 -1
  296. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DataReference/DataReference.tsx +1 -1
  297. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DefaultForm/utils/index.ts +2 -7
  298. package/tests/assets/sdk-r/components/createAll/override-sdk/template/Details/Details.tsx +1 -1
  299. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DetailsThreeColumn/DetailsThreeColumn.tsx +1 -1
  300. package/tests/assets/sdk-r/components/createAll/override-sdk/template/DetailsTwoColumn/DetailsTwoColumn.tsx +1 -1
  301. package/tests/assets/sdk-r/components/createAll/override-sdk/template/FieldGroupTemplate/FieldGroupTemplate.tsx +2 -0
  302. package/tests/assets/sdk-r/components/createAll/override-sdk/template/ListView/ListView.tsx +20 -31
  303. package/tests/assets/sdk-r/components/createAll/override-sdk/template/MultiReferenceReadOnly/MultiReferenceReadOnly.tsx +1 -1
  304. package/tests/assets/sdk-r/components/createAll/override-sdk/template/NarrowWideDetails/NarrowWideDetails.tsx +1 -1
  305. package/tests/assets/sdk-r/components/createAll/override-sdk/template/PromotedFilters/PromotedFilters.tsx +1 -0
  306. package/tests/assets/sdk-r/components/createAll/override-sdk/template/SimpleTableManual/SimpleTableManual.tsx +4 -0
  307. package/tests/assets/sdk-r/components/createAll/override-sdk/template/SingleReferenceReadOnly/SingleReferenceReadOnly.tsx +1 -1
  308. package/tests/assets/sdk-r/components/createAll/override-sdk/template/WideNarrowDetails/WideNarrowDetails.tsx +1 -1
  309. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/Attachment/Attachment.tsx +3 -2
  310. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/FileUtility/FileUtility.tsx +1 -1
  311. package/tests/assets/sdk-r/components/createAll/override-sdk/widget/QuickCreate/QuickCreate.tsx +1 -0
@@ -1,5 +1,6 @@
1
- import CurrencyTextField from '@unicef/material-ui-currency-textfield';
2
-
1
+ import { TextField } from '@material-ui/core';
2
+ import { NumericFormat } from 'react-number-format';
3
+ import { useState } from 'react';
3
4
  import { getCurrencyCharacters, getCurrencyOptions } from '@pega/react-sdk-components/lib/components/field/Currency/currency-utils.js';
4
5
  import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils';
5
6
  import { format } from '@pega/react-sdk-components/lib/components/helpers/formatters';
@@ -7,13 +8,15 @@ import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpe
7
8
  import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
8
9
  import StyledPegaDxilMyDecimalWrapper from './styles';
9
10
 
10
- // Using control from: https://github.com/unicef/material-ui-currency-textfield
11
+ /* Using react-number-format component here, since it allows formatting decimal values,
12
+ as per the locale.
13
+ */
11
14
 
12
15
  interface PegaDxilMyDecimalProps extends PConnFieldProps {
13
16
  // If any, enter additional props that only exist on this componentName
14
17
  currencyISOCode?: string;
15
18
  decimalPrecision?: number;
16
- showGroupSeparators?: string;
19
+ showGroupSeparators?: boolean;
17
20
  formatter?: string;
18
21
  }
19
22
 
@@ -38,13 +41,15 @@ export default function PegaDxilMyDecimal(props: PegaDxilMyDecimalProps) {
38
41
  displayMode,
39
42
  hideLabel,
40
43
  currencyISOCode = 'USD',
41
- decimalPrecision = 2,
42
- showGroupSeparators = true,
44
+ decimalPrecision,
45
+ showGroupSeparators,
43
46
  testId,
44
47
  placeholder,
45
48
  formatter
46
49
  } = props;
47
50
 
51
+ const [values, setValues] = useState(value.toString());
52
+
48
53
  const pConn = getPConnect();
49
54
  const actions = pConn.getActionsApi();
50
55
  const propName = (pConn.getStateProps() as any).value;
@@ -57,6 +62,12 @@ export default function PegaDxilMyDecimal(props: PegaDxilMyDecimalProps) {
57
62
 
58
63
  const theCurrencyOptions = getCurrencyOptions(currencyISOCode);
59
64
 
65
+ let readOnlyProp = {}; // Note: empty if NOT ReadOnly
66
+
67
+ if (readOnly) {
68
+ readOnlyProp = { readOnly: true };
69
+ }
70
+
60
71
  let formattedValue = '';
61
72
  if (formatter === 'Currency') {
62
73
  formattedValue = format(value, formatter.toLowerCase(), theCurrencyOptions);
@@ -76,34 +87,39 @@ export default function PegaDxilMyDecimal(props: PegaDxilMyDecimalProps) {
76
87
  'data-test-id': testId
77
88
  };
78
89
 
79
- function decimalOnBlur(event, inValue) {
80
- handleEvent(actions, 'changeNblur', propName, inValue !== '' ? Number(inValue) : inValue);
90
+ function decimalOnBlur() {
91
+ handleEvent(actions, 'changeNblur', propName, values);
81
92
  }
82
93
 
94
+ const handleChange = val => {
95
+ setValues(val.value);
96
+ };
97
+
83
98
  return (
84
- <StyledPegaDxilMyDecimalWrapper>
85
- <CurrencyTextField
86
- fullWidth
87
- variant={readOnly ? 'standard' : 'outlined'}
88
- helperText={helperTextToDisplay}
89
- placeholder={placeholder ?? ''}
90
- size='small'
91
- required={required}
92
- disabled={disabled}
93
- error={status === 'error'}
94
- label={label}
95
- value={value}
96
- readOnly={!!readOnly}
97
- type='text'
98
- outputFormat='number'
99
- textAlign='left'
100
- InputProps={{ inputProps: { ...testProp } }}
101
- currencySymbol={readOnly && formatter === 'Currency' ? theCurrSym : ''}
102
- decimalCharacter={theCurrDec}
103
- digitGroupSeparator={showGroupSeparators ? theCurrSep : ''}
104
- decimalPlaces={decimalPrecision}
105
- onBlur={!readOnly ? decimalOnBlur : undefined}
106
- />
107
- </StyledPegaDxilMyDecimalWrapper>
99
+ <StyledPegaDxilMyDecimalWrapper>
100
+ <NumericFormat
101
+ valueIsNumericString
102
+ fullWidth
103
+ variant={readOnly ? 'standard' : 'outlined'}
104
+ helperText={helperTextToDisplay}
105
+ placeholder={placeholder ?? ''}
106
+ size='small'
107
+ required={required}
108
+ disabled={disabled}
109
+ error={status === 'error'}
110
+ label={label}
111
+ value={values}
112
+ onValueChange={val => {
113
+ handleChange(val);
114
+ }}
115
+ onBlur={!readOnly ? decimalOnBlur : undefined}
116
+ prefix={readOnly && formatter === 'Currency' ? theCurrSym : ''}
117
+ decimalSeparator={theCurrDec}
118
+ thousandSeparator={showGroupSeparators ? theCurrSep : ''}
119
+ decimalScale={readOnly && formatter === 'Currency' ? undefined : decimalPrecision}
120
+ InputProps={{ ...readOnlyProp, inputProps: { ...testProp } }}
121
+ customInput={TextField}
122
+ />
123
+ </StyledPegaDxilMyDecimalWrapper>
108
124
  );
109
125
  }
@@ -18,4 +18,4 @@ export const fieldMetadata = {
18
18
  type: 'Decimal',
19
19
  displayAs: 'pxNumber',
20
20
  label: 'Decimal sample'
21
- };
21
+ };
@@ -10,7 +10,7 @@
10
10
  "type": "Field",
11
11
  "subtype": "Text-Email",
12
12
  "icon": "images/pz-email-active.svg",
13
- "properties": [
13
+ "properties": [
14
14
  {
15
15
  "name": "label",
16
16
  "label": "Field label",
@@ -12,4 +12,4 @@ export const configProps = {
12
12
  disabled: false,
13
13
  displayMode: '',
14
14
  validatemessage: ''
15
- };
15
+ };
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "Pega_DXIL_MyIconButtonURL",
3
+ "label": "My Icon Button URL",
4
+ "description": "My Icon Button URL",
5
+ "organization": "Pega",
6
+ "version": "0.0.1",
7
+ "library": "DXIL",
8
+ "allowedApplications": [],
9
+ "componentKey": "Pega_DXIL_MyIconButtonURL",
10
+ "type": "Field",
11
+ "subtype": "Text-URL",
12
+ "icon": "images/pz-url-active.svg",
13
+ "properties": [
14
+ {
15
+ "format": "SELECT",
16
+ "name": "countryCode",
17
+ "label": "Country code",
18
+ "defaultValue": "USA",
19
+ "source": [
20
+ {
21
+ "key": "USA",
22
+ "value": "United States"
23
+ },
24
+ {
25
+ "key": "CAN",
26
+ "value": "Canada"
27
+ },
28
+ {
29
+ "key": "AUS",
30
+ "value": "Australia"
31
+ },
32
+ {
33
+ "key": "JPN",
34
+ "value": "Japan"
35
+ },
36
+ {
37
+ "key": "IND",
38
+ "value": "India"
39
+ },
40
+ {
41
+ "key": "TUR",
42
+ "value": "Turkey"
43
+ }
44
+ ]
45
+ },
46
+ {
47
+ "label": "Advanced",
48
+ "format": "GROUP",
49
+ "collapsible": true,
50
+ "properties": [
51
+ {
52
+ "name": "testId",
53
+ "label": "Test ID",
54
+ "format": "TEXT",
55
+ "ignorePattern": "[^-_\\p{N}\\p{L}]",
56
+ "includeAnnotations": false
57
+ }
58
+ ]
59
+ }
60
+ ],
61
+ "defaultConfig": {
62
+ "label": "@L $this.label"
63
+ }
64
+ }
@@ -0,0 +1,91 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+
3
+ import PegaDxilMyIconButtonUrl from './index';
4
+ import { configProps } from './mock';
5
+
6
+ const meta: Meta<typeof PegaDxilMyIconButtonUrl> = {
7
+ title: 'PegaDxilMyIconButtonUrl',
8
+ component: PegaDxilMyIconButtonUrl,
9
+ excludeStories: /.*Data$/
10
+ };
11
+
12
+ export default meta;
13
+ type Story = StoryObj<typeof PegaDxilMyIconButtonUrl>;
14
+
15
+ if (!window.PCore) {
16
+ window.PCore = {} as any;
17
+ }
18
+
19
+ const statelistData = {
20
+ data: [
21
+ {
22
+ pyLabel: 'Massachusetts',
23
+ pyStateCode: 'MA'
24
+ },
25
+ {
26
+ pyLabel: 'Rhode Island',
27
+ pyStateCode: 'RI'
28
+ },
29
+ {
30
+ pyLabel: 'Connecticut',
31
+ pyStateCode: 'CT'
32
+ }
33
+ ]
34
+ };
35
+
36
+ window.PCore.getDataPageUtils = (() => {
37
+ return {
38
+ getDataAsync: () => {
39
+ return new Promise(resolve => {
40
+ resolve(statelistData);
41
+ });
42
+ }
43
+ };
44
+ }) as any;
45
+
46
+ export const BasePegaDxilMyIconButtonUrl: Story = args => {
47
+ const props = {
48
+ countryCode: configProps.countryCode,
49
+ getPConnect: () => {
50
+ return {
51
+ getValue: value => {
52
+ return value;
53
+ },
54
+ getContextName: () => {
55
+ return 'app/primary_1';
56
+ },
57
+ getLocalizedValue: value => {
58
+ return value;
59
+ },
60
+ getActionsApi: () => {
61
+ return {
62
+ updateFieldValue: () => {
63
+ /* nothing */
64
+ },
65
+ triggerFieldChange: () => {
66
+ /* nothing */
67
+ }
68
+ };
69
+ },
70
+ ignoreSuggestion: () => {
71
+ /* nothing */
72
+ },
73
+ acceptSuggestion: () => {
74
+ /* nothing */
75
+ },
76
+ setInheritedProps: () => {
77
+ /* nothing */
78
+ },
79
+ resolveConfigProps: () => {
80
+ /* nothing */
81
+ }
82
+ };
83
+ }
84
+ };
85
+
86
+ return <PegaDxilMyIconButtonUrl {...props} {...args} />;
87
+ };
88
+
89
+ BasePegaDxilMyIconButtonUrl.args = {
90
+ countryCode: configProps.countryCode
91
+ };
@@ -0,0 +1,157 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { Tooltip, IconButton, Link } from '@material-ui/core';
3
+ import Table from '@material-ui/core/Table';
4
+ import TableBody from '@material-ui/core/TableBody';
5
+ import TableCell from '@material-ui/core/TableCell';
6
+ import TableContainer from '@material-ui/core/TableContainer';
7
+ import TableHead from '@material-ui/core/TableHead';
8
+ import TableRow from '@material-ui/core/TableRow';
9
+ import Paper from '@material-ui/core/Paper';
10
+
11
+ import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
12
+ import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
13
+ import StyledPegaDxilMyIconButtonUrlWrapper from './styles';
14
+
15
+ // IMPORTANT
16
+ // import LanguageIcon from '@mui/icons-material/Language';
17
+ import ArrowForwardIcon from '@material-ui/icons/ArrowForward';
18
+ import LanguageIcon from '@material-ui/icons/Language';
19
+ import FormatListNumberedIcon from '@material-ui/icons/FormatListNumbered';
20
+
21
+ interface PegaDxilMyIconButtonUrlProps extends PConnFieldProps {
22
+ // If any, enter additional props that only exist on this componentName
23
+ countryCode: string;
24
+ }
25
+
26
+ export const textFormatter = (value: string, validUrl: string) => {
27
+ return <Link href={validUrl}>{value}</Link>;
28
+ };
29
+
30
+ // props passed in combination of props from property panel (config.json) and run time props from Constellation
31
+ export default function PegaDxilMyIconButtonUrl(props: PegaDxilMyIconButtonUrlProps) {
32
+ // Get emitted components from map (so we can get any override that may exist)
33
+ const TextContent = getComponentFromMap('TextContent');
34
+
35
+ const { value, displayMode, countryCode = 'USA', getPConnect, testId } = props;
36
+ const [stateList, setStateList] = useState<any[]>([]);
37
+ const [showTable, setShowTable] = useState(false);
38
+ const [validUrl, setValidUrl] = useState('about:blank');
39
+ const PConnect = getPConnect();
40
+
41
+ // toggle showing table and getting table data
42
+ function showHideTable() {
43
+ setShowTable(prevShowTable => !prevShowTable);
44
+ }
45
+
46
+ // check if url is valid (simple)
47
+ function validateUrl(href: string) {
48
+ return /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(
49
+ href
50
+ );
51
+ }
52
+
53
+ // Testing to see if value entered is valid url, if not can't use it.
54
+ // Reason for this code is that you can NOT pass to Link component
55
+ // a bad url, or it will error out.
56
+ // For example: Since the value is the property field,
57
+ // it could be entered from another component and thus as it is
58
+ // entered (typed in), it won't be valid until it is all entered.
59
+ // NOTE: can't have a blank value for the url as the Link element will error out
60
+ // in App studio preview
61
+ useEffect(() => {
62
+ if (validateUrl(value as string)) {
63
+ setValidUrl(value as string);
64
+ } else {
65
+ setValidUrl('about:blank');
66
+ }
67
+ }, [value]);
68
+
69
+ // going to get data for worklist to put into a table
70
+ // data comes from calling a PCore function to get
71
+ // get data from a data page and a PConnect function
72
+ // to get getContextName
73
+ useEffect(() => {
74
+ const dataViewName = 'D_pyStateList';
75
+ const context = PConnect.getContextName();
76
+ const params = { pyCountry: countryCode };
77
+
78
+ // only retrieve table data if table is shown
79
+ if (showTable) {
80
+ PCore.getDataPageUtils()
81
+ .getDataAsync(dataViewName, context, params, null, null)
82
+ // @ts-ignore
83
+ .then((response: any) => {
84
+ // table requires an index or will get setExtraStackFrame error
85
+ setStateList(
86
+ response.data.map((entry: any, index: number) => {
87
+ // mapping the data into the column names
88
+ // MUST have an id/index or will get a setExtraStackFrame error
89
+ // put a key in the table
90
+ return {
91
+ stateName: entry.pyLabel,
92
+ stateCode: entry.pyStateCode,
93
+ id: index
94
+ };
95
+ })
96
+ );
97
+ })
98
+ .catch((error: any) => {
99
+ // eslint-disable-next-line no-console
100
+ console.log(error);
101
+ });
102
+ }
103
+ }, [PConnect, countryCode, showTable]);
104
+
105
+ // when DISPLAY_ONLY, in this example we will just show the URL.
106
+ if (displayMode === 'DISPLAY_ONLY') {
107
+ const displayComp = textFormatter(validUrl, validUrl);
108
+ return <StyledPegaDxilMyIconButtonUrlWrapper> {displayComp} </StyledPegaDxilMyIconButtonUrlWrapper>;
109
+ }
110
+
111
+ const localLabel = ''
112
+ .concat(PConnect.getLocalizedValue('State list for', '', ''))
113
+ .concat(PConnect.getLocalizedValue(` ${countryCode}`, '', ''))
114
+ .concat(' ');
115
+
116
+ return (
117
+ <StyledPegaDxilMyIconButtonUrlWrapper>
118
+ <div style={{ display: 'flex' }} data-testid={testId}>
119
+ <ArrowForwardIcon />
120
+ <TextContent displayAs='body' content={localLabel} />
121
+ <Tooltip title={PConnect.getLocalizedValue('Click to show/hide state list', '', '')}>
122
+ <IconButton onClick={showHideTable} style={{ padding: '0 0.25rem' }}>
123
+ <FormatListNumberedIcon />
124
+ </IconButton>
125
+ </Tooltip>
126
+ {
127
+ // eslint-disable-next-line jsx-a11y/control-has-associated-label
128
+ <a href={validUrl} style={{ padding: '0 0.25rem' }}>
129
+ <LanguageIcon />
130
+ </a>
131
+ }
132
+ </div>
133
+ {showTable && (
134
+ <TableContainer component={Paper}>
135
+ <Table aria-label="{PConnect.getLocalizedValue('State list', '', '')}">
136
+ <TableHead>
137
+ <TableRow>
138
+ <TableCell>{PConnect.getLocalizedValue('State name', '', '')}</TableCell>
139
+ <TableCell>{PConnect.getLocalizedValue('State code', '', '')}</TableCell>
140
+ </TableRow>
141
+ </TableHead>
142
+ <TableBody>
143
+ {stateList.map(row => (
144
+ <TableRow key={row.stateName}>
145
+ <TableCell component='th' scope='row'>
146
+ {row.stateName}
147
+ </TableCell>
148
+ <TableCell>{row.stateCode}</TableCell>
149
+ </TableRow>
150
+ ))}
151
+ </TableBody>
152
+ </Table>
153
+ </TableContainer>
154
+ )}
155
+ </StyledPegaDxilMyIconButtonUrlWrapper>
156
+ );
157
+ }
@@ -0,0 +1,4 @@
1
+ // eslint-disable-next-line import/prefer-default-export
2
+ export const configProps = {
3
+ countryCode: 'USA'
4
+ };
@@ -0,0 +1,7 @@
1
+ import styled, { css } from 'styled-components';
2
+
3
+ export default styled.div(() => {
4
+ return css`
5
+ margin: 0px 0;
6
+ `;
7
+ });
@@ -10,7 +10,7 @@
10
10
  "type": "Field",
11
11
  "subtype": "Integer",
12
12
  "icon": "images/pz-integer-active.svg",
13
- "properties": [
13
+ "properties": [
14
14
  {
15
15
  "name": "label",
16
16
  "label": "Field label",
@@ -73,23 +73,22 @@ export default function PegaDxilMyInteger(props: PegaDxilMyIntegerProps) {
73
73
 
74
74
  return (
75
75
  <StyledPegaDxilMyIntegerWrapper>
76
- <TextField
77
- fullWidth
78
- variant={readOnly ? 'standard' : 'outlined'}
79
- helperText={helperTextToDisplay}
80
- placeholder={placeholder ?? ''}
81
- size='small'
82
- required={required}
83
- disabled={disabled}
84
- onChange={intOnChange}
85
- onBlur={!readOnly ? onBlur : undefined}
86
- error={status === 'error'}
87
- label={label}
88
- value={value}
89
- type='text'
90
- inputProps={{ inputMode: 'numeric', pattern: '[0-9]*', ...testProp }}
91
- />
76
+ <TextField
77
+ fullWidth
78
+ variant={readOnly ? 'standard' : 'outlined'}
79
+ helperText={helperTextToDisplay}
80
+ placeholder={placeholder ?? ''}
81
+ size='small'
82
+ required={required}
83
+ disabled={disabled}
84
+ onChange={intOnChange}
85
+ onBlur={!readOnly ? onBlur : undefined}
86
+ error={status === 'error'}
87
+ label={label}
88
+ value={value}
89
+ type='text'
90
+ inputProps={{ inputMode: 'numeric', pattern: '[0-9]*', ...testProp }}
91
+ />
92
92
  </StyledPegaDxilMyIntegerWrapper>
93
93
  );
94
94
  }
95
-
@@ -18,4 +18,4 @@ export const fieldMetadata = {
18
18
  type: 'Integer',
19
19
  displayAs: 'pxInteger',
20
20
  label: 'Integer sample'
21
- };
21
+ };
@@ -9,7 +9,6 @@ interface PegaDxilMyParagraphProps extends PConnFieldProps {
9
9
  fieldMetadata?: any;
10
10
  }
11
11
 
12
-
13
12
  // Duplicated runtime code from React SDK
14
13
 
15
14
  // props passed in combination of props from property panel (config.json) and run time props from Constellation
@@ -80,7 +79,6 @@ export default function PegaDxilMyParagraph(props: PegaDxilMyParagraphProps) {
80
79
  value={value}
81
80
  InputProps={{ ...readOnlyProp, inputProps: { maxLength, ...testProp } }}
82
81
  />
83
- </StyledPegaDxilMyParagraphWrapper>
82
+ </StyledPegaDxilMyParagraphWrapper>
84
83
  );
85
84
  }
86
-
@@ -19,4 +19,4 @@ export const fieldMetadata = {
19
19
  displayAs: 'pxTextArea',
20
20
  label: 'Paragraph sample',
21
21
  maxLength: 256
22
- };
22
+ };
@@ -10,7 +10,7 @@
10
10
  "type": "Field",
11
11
  "subtype": "Decimal-Percentage",
12
12
  "icon": "images/pz-text-input-active.svg",
13
- "properties": [
13
+ "properties": [
14
14
  {
15
15
  "name": "label",
16
16
  "label": "Field label",
@@ -1,5 +1,6 @@
1
- import CurrencyTextField from '@unicef/material-ui-currency-textfield';
2
-
1
+ import { TextField } from '@material-ui/core';
2
+ import { NumericFormat } from 'react-number-format';
3
+ import { useState } from 'react';
3
4
  import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map';
4
5
  import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps';
5
6
  import { getCurrencyCharacters, getCurrencyOptions } from '@pega/react-sdk-components/lib/components/field/Currency/currency-utils.js';
@@ -7,13 +8,15 @@ import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event
7
8
  import { format } from '@pega/react-sdk-components/lib/components/helpers/formatters';
8
9
  import StyledPegaDxilMyPercentageWrapper from './styles';
9
10
 
10
- /* Using @unicef/material-ui-currency-textfield component here, since it allows formatting decimal values,
11
+ /* Using react-number-format component here, since it allows formatting decimal values,
11
12
  as per the locale.
12
13
  */
13
14
 
14
15
  interface PegaDxilMyPercentageProps extends PConnFieldProps {
15
16
  // If any, enter additional props that only exist on this componentName
16
- currencyISOCode: string;
17
+ currencyISOCode?: string;
18
+ showGroupSeparators?: string;
19
+ decimalPrecision?: number;
17
20
  }
18
21
 
19
22
  // props passed in combination of props from property panel (config.json) and run time props from Constellation
@@ -37,9 +40,13 @@ export default function PegaDxilMyPercentage(props: PegaDxilMyPercentageProps) {
37
40
  helperText,
38
41
  displayMode,
39
42
  hideLabel,
40
- placeholder
43
+ placeholder,
44
+ showGroupSeparators,
45
+ decimalPrecision
41
46
  } = props;
42
47
 
48
+ const [values, setValues] = useState(value.toString());
49
+
43
50
  const pConn = getPConnect();
44
51
  const actions = pConn.getActionsApi();
45
52
  const propName = (pConn.getStateProps() as any).value;
@@ -48,7 +55,11 @@ export default function PegaDxilMyPercentage(props: PegaDxilMyPercentageProps) {
48
55
  const theCurrencyOptions = getCurrencyOptions(currencyISOCode);
49
56
  const formattedValue = format(value, pConn.getComponentName().toLowerCase(), theCurrencyOptions);
50
57
 
51
- // console.log(`Percentage: label: ${label} value: ${value}`);
58
+ let readOnlyProp = {}; // Note: empty if NOT ReadOnly
59
+
60
+ if (readOnly) {
61
+ readOnlyProp = { readOnly: true };
62
+ }
52
63
 
53
64
  if (displayMode === 'LABELS_LEFT') {
54
65
  return <FieldValueList name={hideLabel ? '' : label} value={formattedValue} />;
@@ -68,13 +79,18 @@ export default function PegaDxilMyPercentage(props: PegaDxilMyPercentageProps) {
68
79
  const theCurrDec = theSymbols.theDecimalIndicator;
69
80
  const theCurrSep = theSymbols.theDigitGroupSeparator;
70
81
 
71
- function PercentageOnBlur(event, inValue) {
72
- handleEvent(actions, 'changeNblur', propName, inValue !== '' ? Number(inValue) : inValue);
82
+ function PercentageOnBlur() {
83
+ handleEvent(actions, 'changeNblur', propName, values);
73
84
  }
74
85
 
86
+ const handleChange = val => {
87
+ setValues(val.value);
88
+ };
89
+
75
90
  return (
76
91
  <StyledPegaDxilMyPercentageWrapper>
77
- <CurrencyTextField
92
+ <NumericFormat
93
+ valueIsNumericString
78
94
  fullWidth
79
95
  variant={readOnly ? 'standard' : 'outlined'}
80
96
  helperText={helperTextToDisplay}
@@ -82,20 +98,19 @@ export default function PegaDxilMyPercentage(props: PegaDxilMyPercentageProps) {
82
98
  size='small'
83
99
  required={required}
84
100
  disabled={disabled}
85
- readOnly={!!readOnly}
86
101
  error={status === 'error'}
87
102
  label={label}
88
- value={value}
89
- type='text'
90
- outputFormat='number'
91
- textAlign='left'
92
- InputProps={{
93
- inputProps: { ...testProp }
103
+ value={values}
104
+ onValueChange={val => {
105
+ handleChange(val);
94
106
  }}
95
- currencySymbol=''
96
- decimalCharacter={theCurrDec}
97
- digitGroupSeparator={theCurrSep}
98
107
  onBlur={!readOnly ? PercentageOnBlur : undefined}
108
+ decimalSeparator={theCurrDec}
109
+ thousandSeparator={showGroupSeparators ? theCurrSep : ''}
110
+ decimalScale={decimalPrecision}
111
+ suffix='%'
112
+ InputProps={{ ...readOnlyProp, inputProps: { ...testProp } }}
113
+ customInput={TextField}
99
114
  />
100
115
  </StyledPegaDxilMyPercentageWrapper>
101
116
  );