udp-react-enterprise-component-library 25.18.1-beta.44 → 25.18.1-beta.45

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 (226) hide show
  1. package/dist/{AadCallback-DI_SnmOU.js → AadCallback-Bor16_h3.js} +1 -1
  2. package/dist/{AadCallback-DI_SnmOU.js.map → AadCallback-Bor16_h3.js.map} +1 -1
  3. package/dist/{AmChart-WvmHsOdz.js → AmChart-CTixft8X.js} +1 -1
  4. package/dist/{AmChart-WvmHsOdz.js.map → AmChart-CTixft8X.js.map} +1 -1
  5. package/dist/{AmbientSingleDateSelector-8uylQ-tc.js → AmbientSingleDateSelector-D3xyjMky.js} +1 -1
  6. package/dist/{AmbientSingleDateSelector-8uylQ-tc.js.map → AmbientSingleDateSelector-D3xyjMky.js.map} +1 -1
  7. package/dist/{AmbientVisualizationCard-Cov8RODG.js → AmbientVisualizationCard-Dig-Mh_G.js} +3 -3
  8. package/dist/{AmbientVisualizationCard-Cov8RODG.js.map → AmbientVisualizationCard-Dig-Mh_G.js.map} +1 -1
  9. package/dist/{AmbientVisualizer-Bo7NLGfw.js → AmbientVisualizer-B1Xwwe0J.js} +1 -1
  10. package/dist/{AmbientVisualizer-Bo7NLGfw.js.map → AmbientVisualizer-B1Xwwe0J.js.map} +1 -1
  11. package/dist/{BarChartWidget-D-_ZVpMh.js → BarChartWidget-Dwav8_8e.js} +1 -1
  12. package/dist/{BarChartWidget-D-_ZVpMh.js.map → BarChartWidget-Dwav8_8e.js.map} +1 -1
  13. package/dist/{BaseTreeMenu-nKjw3cil.js → BaseTreeMenu-CBFIl0VF.js} +1 -1
  14. package/dist/{BaseTreeMenu-nKjw3cil.js.map → BaseTreeMenu-CBFIl0VF.js.map} +1 -1
  15. package/dist/{BubbleWidget-SplMEBJm.js → BubbleWidget-CsIheJTW.js} +2 -2
  16. package/dist/{BubbleWidget-SplMEBJm.js.map → BubbleWidget-CsIheJTW.js.map} +1 -1
  17. package/dist/{CardList-B_F1Qgqh.js → CardList-BPNGTxsh.js} +1 -1
  18. package/dist/{CardList-B_F1Qgqh.js.map → CardList-BPNGTxsh.js.map} +1 -1
  19. package/dist/{ContentContainer-DuDrf5lL.js → ContentContainer-C2CcA6oX.js} +1 -1
  20. package/dist/{ContentContainer-DuDrf5lL.js.map → ContentContainer-C2CcA6oX.js.map} +1 -1
  21. package/dist/{DateTrendWidget-F6hBnYej.js → DateTrendWidget-cdExY12Q.js} +1 -1
  22. package/dist/{DateTrendWidget-F6hBnYej.js.map → DateTrendWidget-cdExY12Q.js.map} +1 -1
  23. package/dist/{DensePlotWidget-BEhHNh53.js → DensePlotWidget-DHRKyeck.js} +1 -1
  24. package/dist/{DensePlotWidget-BEhHNh53.js.map → DensePlotWidget-DHRKyeck.js.map} +1 -1
  25. package/dist/{Directory-CFTCLxWZ.js → Directory-CoEKdRkU.js} +1 -1
  26. package/dist/{Directory-CFTCLxWZ.js.map → Directory-CoEKdRkU.js.map} +1 -1
  27. package/dist/{EntityHeader-D_gYzj76.js → EntityHeader-DiOEw-za.js} +1 -1
  28. package/dist/{EntityHeader-D_gYzj76.js.map → EntityHeader-DiOEw-za.js.map} +1 -1
  29. package/dist/{FieldArrayCard-Bv9h9akG.js → FieldArrayCard-BbCCfs6l.js} +2 -2
  30. package/dist/{FieldArrayCard-Bv9h9akG.js.map → FieldArrayCard-BbCCfs6l.js.map} +1 -1
  31. package/dist/{FileUpload-BCxrOds_.js → FileUpload-BpMG2Efl.js} +1 -1
  32. package/dist/{FileUpload-BCxrOds_.js.map → FileUpload-BpMG2Efl.js.map} +1 -1
  33. package/dist/{FluentCardHeader-BdMB2qzK.js → FluentCardHeader-CRJaqkV3.js} +1 -1
  34. package/dist/{FluentCardHeader-BdMB2qzK.js.map → FluentCardHeader-CRJaqkV3.js.map} +1 -1
  35. package/dist/{FluentLink-DP2eDAH2.js → FluentLink-D-gKioCQ.js} +1 -1
  36. package/dist/{FluentLink-DP2eDAH2.js.map → FluentLink-D-gKioCQ.js.map} +1 -1
  37. package/dist/{FluentRadioGroup-CCKelZVk.js → FluentRadioGroup-DWOMSBGp.js} +1 -1
  38. package/dist/{FluentRadioGroup-CCKelZVk.js.map → FluentRadioGroup-DWOMSBGp.js.map} +1 -1
  39. package/dist/{FluentSelectMenu-yQMFZWEg.js → FluentSelectMenu-BEREJbe-.js} +1 -1
  40. package/dist/{FluentSelectMenu-yQMFZWEg.js.map → FluentSelectMenu-BEREJbe-.js.map} +1 -1
  41. package/dist/{FluentSimpleSelect-DxxbQV37.js → FluentSimpleSelect-Djff-up8.js} +2 -2
  42. package/dist/{FluentSimpleSelect-DxxbQV37.js.map → FluentSimpleSelect-Djff-up8.js.map} +1 -1
  43. package/dist/{FluentTimePicker-LUfZzJJZ.js → FluentTimePicker-hNcocKsd.js} +1 -1
  44. package/dist/{FluentTimePicker-LUfZzJJZ.js.map → FluentTimePicker-hNcocKsd.js.map} +1 -1
  45. package/dist/{FluentTimeline-BEPJHsgi.js → FluentTimeline-D8sfgLj1.js} +1 -1
  46. package/dist/{FluentTimeline-BEPJHsgi.js.map → FluentTimeline-D8sfgLj1.js.map} +1 -1
  47. package/dist/{GraphCard-CcXwOERk.js → GraphCard-Dv4a99wo.js} +1 -1
  48. package/dist/{GraphCard-CcXwOERk.js.map → GraphCard-Dv4a99wo.js.map} +1 -1
  49. package/dist/{IconKey-CbK8_rol.js → IconKey-D7fZ_U4O.js} +1 -1
  50. package/dist/{IconKey-CbK8_rol.js.map → IconKey-D7fZ_U4O.js.map} +1 -1
  51. package/dist/{LineAndSparklinesWidget-KVAnvpKl.js → LineAndSparklinesWidget-CUq3QxmN.js} +1 -1
  52. package/dist/{LineAndSparklinesWidget-KVAnvpKl.js.map → LineAndSparklinesWidget-CUq3QxmN.js.map} +1 -1
  53. package/dist/{LineGraphWidget-CYjLiV5B.js → LineGraphWidget-DOwAVdTR.js} +1 -1
  54. package/dist/{LineGraphWidget-CYjLiV5B.js.map → LineGraphWidget-DOwAVdTR.js.map} +1 -1
  55. package/dist/MenuPage-DP1ATpru.js +3 -0
  56. package/dist/{MenuPage-BS8ti9lx.js → MenuPage-fqEs3MSY.js} +2 -2
  57. package/dist/{MenuPage-BS8ti9lx.js.map → MenuPage-fqEs3MSY.js.map} +1 -1
  58. package/dist/{MyExportsPage-BwcVZASe.js → MyExportsPage-DMcJRz8T.js} +2 -2
  59. package/dist/{MyExportsPage-BwcVZASe.js.map → MyExportsPage-DMcJRz8T.js.map} +1 -1
  60. package/dist/MyExportsPage-zF3FjtDl.js +3 -0
  61. package/dist/{NewsCard-Y-exMCuK.js → NewsCard-C3y9a_OJ.js} +1 -1
  62. package/dist/{NewsCard-Y-exMCuK.js.map → NewsCard-C3y9a_OJ.js.map} +1 -1
  63. package/dist/{Notes-i2G6Ugsq.js → Notes-UkwV2z4D.js} +1 -1
  64. package/dist/{Notes-i2G6Ugsq.js.map → Notes-UkwV2z4D.js.map} +1 -1
  65. package/dist/{OutlookCallback-teOtztm6.js → OutlookCallback-D3no-Urx.js} +1 -1
  66. package/dist/{OutlookCallback-teOtztm6.js.map → OutlookCallback-D3no-Urx.js.map} +1 -1
  67. package/dist/{PageNotFoundRoute-i_Tf23jB.js → PageNotFoundRoute-0WmBAAdO.js} +1 -1
  68. package/dist/{PageNotFoundRoute-i_Tf23jB.js.map → PageNotFoundRoute-0WmBAAdO.js.map} +1 -1
  69. package/dist/{PageNotFoundRoute-B_mbfK8s.js → PageNotFoundRoute-DKg6oVCt.js} +1 -1
  70. package/dist/{PaymentForm-BTLh5bXJ.js → PaymentForm-CRlhsB2F.js} +2 -2
  71. package/dist/{PaymentForm-BTLh5bXJ.js.map → PaymentForm-CRlhsB2F.js.map} +1 -1
  72. package/dist/{RejectIcon-CNSkW92y.js → RejectIcon-CpF_J5Je.js} +1 -1
  73. package/dist/{RejectIcon-CNSkW92y.js.map → RejectIcon-CpF_J5Je.js.map} +1 -1
  74. package/dist/Reports-C596PoM-.js +3 -0
  75. package/dist/{Reports-Cz5Pl1rM.js → Reports-v6qpOsDL.js} +1 -1
  76. package/dist/{Reports-Cz5Pl1rM.js.map → Reports-v6qpOsDL.js.map} +1 -1
  77. package/dist/{Shell-DKZFbV05.js → Shell-N3oRzrDU.js} +3 -3
  78. package/dist/{Shell-DKZFbV05.js.map → Shell-N3oRzrDU.js.map} +1 -1
  79. package/dist/{SimpleTable-z8tz6B0B.js → SimpleTable-CVGolzeI.js} +1 -1
  80. package/dist/{SimpleTable-z8tz6B0B.js.map → SimpleTable-CVGolzeI.js.map} +1 -1
  81. package/dist/{SiteHeader-DMstxPs3.js → SiteHeader-KoNZC5W5.js} +3 -3
  82. package/dist/{SiteHeader-DMstxPs3.js.map → SiteHeader-KoNZC5W5.js.map} +1 -1
  83. package/dist/{SparsePlotWidget-B3wtNHo2.js → SparsePlotWidget-ZYP6TKB6.js} +1 -1
  84. package/dist/{SparsePlotWidget-B3wtNHo2.js.map → SparsePlotWidget-ZYP6TKB6.js.map} +1 -1
  85. package/dist/{Statistic-IWynWCev.js → Statistic-ChTR_kas.js} +1 -1
  86. package/dist/{Statistic-IWynWCev.js.map → Statistic-ChTR_kas.js.map} +1 -1
  87. package/dist/{StatusCellRenderer-BuPuvngw.js → StatusCellRenderer-E7SYy9Qk.js} +1 -1
  88. package/dist/{StatusCellRenderer-BuPuvngw.js.map → StatusCellRenderer-E7SYy9Qk.js.map} +1 -1
  89. package/dist/{TicketCard-D-FtADsb.js → TicketCard-IqCCKSc0.js} +1 -1
  90. package/dist/{TicketCard-D-FtADsb.js.map → TicketCard-IqCCKSc0.js.map} +1 -1
  91. package/dist/{TimelineCalendar-Mi4baqsg.js → TimelineCalendar-CZ5vmO43.js} +1 -1
  92. package/dist/{TimelineCalendar-Mi4baqsg.js.map → TimelineCalendar-CZ5vmO43.js.map} +1 -1
  93. package/dist/{TokenGroupItem-DKbm__Kc.js → TokenGroupItem-BK0dx4cD.js} +1 -1
  94. package/dist/{TokenGroupItem-DKbm__Kc.js.map → TokenGroupItem-BK0dx4cD.js.map} +1 -1
  95. package/dist/UI/dataDisplay/GraphCard/index.js +1 -1
  96. package/dist/UI/dataDisplay/calendar/index.js +1 -1
  97. package/dist/UI/dataDisplay/cardList/index.js +1 -1
  98. package/dist/UI/dataDisplay/directory/index.js +1 -1
  99. package/dist/UI/dataDisplay/entityHeader/index.js +1 -1
  100. package/dist/UI/dataDisplay/map/index.js +1 -1
  101. package/dist/UI/dataDisplay/notes/index.js +1 -1
  102. package/dist/UI/dataDisplay/status/index.js +1 -1
  103. package/dist/UI/dataDisplay/ticketCard/index.js +1 -1
  104. package/dist/UI/dataDisplay/typography/index.js +1 -1
  105. package/dist/UI/dataDisplay/visualization/amCharts/index.js +1 -1
  106. package/dist/UI/dataDisplay/visualization/index.js +1 -1
  107. package/dist/UI/inputs/calendar/index.js +1 -1
  108. package/dist/UI/inputs/dateRangeSelector/index.js +1 -1
  109. package/dist/UI/inputs/fieldArrayCard/index.js +1 -1
  110. package/dist/UI/inputs/link/index.js +1 -1
  111. package/dist/UI/inputs/menus/index.js +2 -2
  112. package/dist/UI/inputs/pickers/index.js +2 -2
  113. package/dist/UI/inputs/radio/index.js +1 -1
  114. package/dist/UI/mapLayout/ui/index.js +1 -1
  115. package/dist/UI/surfaces/cards/chartDisplayCards/index.js +1 -1
  116. package/dist/UI/surfaces/cards/fluentCards/index.js +1 -1
  117. package/dist/UI/surfaces/cards/newsCard/index.js +1 -1
  118. package/dist/UI/surfaces/cards/workOrderCard/index.js +1 -1
  119. package/dist/UI/templates/calendar/index.js +1 -1
  120. package/dist/UI/templates/deprecated/UdpGridTemplate/index.js +1 -1
  121. package/dist/UI/templates/ui/index.js +1 -1
  122. package/dist/UI/templates/ui/renderers/index.js +1 -1
  123. package/dist/UI/widgets/library/BarChartWidget/index.js +1 -1
  124. package/dist/UI/widgets/library/BubbleWidget/index.js +1 -1
  125. package/dist/UI/widgets/library/DateTrendWidget/index.js +1 -1
  126. package/dist/UI/widgets/library/DensePlotWidget/index.js +1 -1
  127. package/dist/UI/widgets/library/LineAndSparklinesWidget/index.js +1 -1
  128. package/dist/UI/widgets/library/LineGraphWidget/index.js +1 -1
  129. package/dist/UI/widgets/library/SparsePlotWidget/index.js +1 -1
  130. package/dist/UI/widgets/library/TableWidget/index.js +1 -1
  131. package/dist/{UdpAppProvider-BRyRY8zN.js → UdpAppProvider-C0VlxSna.js} +2 -2
  132. package/dist/{UdpAppProvider-BRyRY8zN.js.map → UdpAppProvider-C0VlxSna.js.map} +1 -1
  133. package/dist/{UdpCalendarYearView-BSR8CGHt.js → UdpCalendarYearView-BEdW-myL.js} +1 -1
  134. package/dist/{UdpCalendarYearView-BSR8CGHt.js.map → UdpCalendarYearView-BEdW-myL.js.map} +1 -1
  135. package/dist/{UdpDateRangeSelector-C_gpkHul.js → UdpDateRangeSelector-BivfBlPa.js} +1 -1
  136. package/dist/{UdpDateRangeSelector-C_gpkHul.js.map → UdpDateRangeSelector-BivfBlPa.js.map} +1 -1
  137. package/dist/{UdpFormsSubmissionGrid-PWsnFyYB.js → UdpFormsSubmissionGrid-BJ0rj-Tr.js} +2 -2
  138. package/dist/{UdpFormsSubmissionGrid-PWsnFyYB.js.map → UdpFormsSubmissionGrid-BJ0rj-Tr.js.map} +1 -1
  139. package/dist/{UdpGridTemplate-U9YcYLUf.js → UdpGridTemplate-OsS_O6jR.js} +1 -1
  140. package/dist/{UdpGridTemplate-U9YcYLUf.js.map → UdpGridTemplate-OsS_O6jR.js.map} +1 -1
  141. package/dist/{UdpTransactionTypesPage-CUpHKA6y.js → UdpTransactionTypesPage-DxUsXnV7.js} +89 -13
  142. package/dist/UdpTransactionTypesPage-DxUsXnV7.js.map +1 -0
  143. package/dist/{UdpTransactionsPage-B5uhMoFg.js → UdpTransactionsPage-BZ0Idg5s.js} +38 -14
  144. package/dist/UdpTransactionsPage-BZ0Idg5s.js.map +1 -0
  145. package/dist/{UserFormSideSheet-B6Mn3bZ0.js → UserFormSideSheet-CSScPvy3.js} +1 -1
  146. package/dist/{UserFormSideSheet-B6Mn3bZ0.js.map → UserFormSideSheet-CSScPvy3.js.map} +1 -1
  147. package/dist/UserFormSideSheet-DTPSRjGo.js +3 -0
  148. package/dist/{VirtualBrowser-C2oPh3YY.js → VirtualBrowser-BeHqBuGi.js} +1 -1
  149. package/dist/{VirtualBrowser-C2oPh3YY.js.map → VirtualBrowser-BeHqBuGi.js.map} +1 -1
  150. package/dist/VirtualBrowser-CjHGq92s.js +3 -0
  151. package/dist/{WorkOrderCard-Ce5WrpnX.js → WorkOrderCard-s-6QK3Re.js} +1 -1
  152. package/dist/{WorkOrderCard-Ce5WrpnX.js.map → WorkOrderCard-s-6QK3Re.js.map} +1 -1
  153. package/dist/{WorkflowContainer-Cd5H4mpf.js → WorkflowContainer-BheQPhXt.js} +1 -1
  154. package/dist/{WorkflowContainer-Cd5H4mpf.js.map → WorkflowContainer-BheQPhXt.js.map} +1 -1
  155. package/dist/{WorkflowContainer-Iq8fmnGR.js → WorkflowContainer-CHmVR99E.js} +1 -1
  156. package/dist/{aggridHelpers-BeUZvPIv.js → aggridHelpers-RYO7tWY9.js} +1 -1
  157. package/dist/{aggridHelpers-BeUZvPIv.js.map → aggridHelpers-RYO7tWY9.js.map} +1 -1
  158. package/dist/{gridVisualizationFunctions-jnvPACJD.js → gridVisualizationFunctions-Cmh4EUIL.js} +1 -1
  159. package/dist/{gridVisualizationFunctions-jnvPACJD.js.map → gridVisualizationFunctions-Cmh4EUIL.js.map} +1 -1
  160. package/dist/index.js +56 -56
  161. package/dist/maintenanceEngine/index.js +1 -1
  162. package/dist/maintenanceEngine/virtualBrowser/index.js +1 -1
  163. package/dist/menuPage/index.js +1 -1
  164. package/dist/{menuPage-B9NwQJVt.js → menuPage-PIJOkANO.js} +2 -2
  165. package/dist/{menuPage-B9NwQJVt.js.map → menuPage-PIJOkANO.js.map} +1 -1
  166. package/dist/{pickers-CkwI49Ju.js → pickers-B-bB40GS.js} +1 -1
  167. package/dist/{pickers-CkwI49Ju.js.map → pickers-B-bB40GS.js.map} +1 -1
  168. package/dist/providers/index.js +1 -1
  169. package/dist/routes/components/index.js +1 -1
  170. package/dist/routes/index.js +1 -1
  171. package/dist/{routes-DG4NLFP9.js → routes-3HDtkQKa.js} +8 -8
  172. package/dist/{routes-DG4NLFP9.js.map → routes-3HDtkQKa.js.map} +1 -1
  173. package/dist/shell/index.js +2 -2
  174. package/dist/shell/ui/index.js +1 -1
  175. package/dist/{status-Bmaija4B.js → status-moefSFBs.js} +1 -1
  176. package/dist/{status-Bmaija4B.js.map → status-moefSFBs.js.map} +1 -1
  177. package/dist/{theme-IKiRfNgl.js → theme-Bb8h8tjE.js} +1 -1
  178. package/dist/{theme-IKiRfNgl.js.map → theme-Bb8h8tjE.js.map} +1 -1
  179. package/dist/tree-CFbEBH8N.js +1 -0
  180. package/dist/treeMenu/index.js +1 -1
  181. package/dist/types/src/maintenanceEngine/tableBrowser/TableColumnDefs.d.ts +1 -1
  182. package/dist/types/src/maintenanceEngine/tableBrowser/TableColumnDefs.d.ts.map +1 -1
  183. package/dist/types/src/udp/pages/UdpTransactionTypesPage/UdpTransactionTypesPage.d.ts.map +1 -1
  184. package/dist/types/src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionTypeConfigurationForm.d.ts.map +1 -1
  185. package/dist/types/src/udp/pages/UdpTransactionTypesPage/forms/UdpTransactionTypeForm.d.ts.map +1 -1
  186. package/dist/types/src/udp/pages/UdpTransactionTypesPage/sidesheets/UdpTransactionTypeStatusSidesheet.d.ts.map +1 -1
  187. package/dist/types/src/udp/pages/UdpTransactionsPage/UdpTransactionGrid.d.ts.map +1 -1
  188. package/dist/types/src/udp/pages/UdpTransactionsPage/UdpTransactionSidesheet.d.ts.map +1 -1
  189. package/dist/types/src/udp/utilities/transactionConstants.d.ts +4 -0
  190. package/dist/types/src/udp/utilities/transactionConstants.d.ts.map +1 -1
  191. package/dist/types/tsconfig.tsbuildinfo +1 -1
  192. package/dist/{typography-IJpS01q9.js → typography-CvW7cAl8.js} +1 -1
  193. package/dist/{typography-IJpS01q9.js.map → typography-CvW7cAl8.js.map} +1 -1
  194. package/dist/udp/export/index.js +1 -1
  195. package/dist/udp/pages/UdpFormsSubmissionGrid/index.js +1 -1
  196. package/dist/udp/pages/UdpPages/index.js +2 -2
  197. package/dist/udp/pages/UdpTransactionTypesPage/index.js +1 -1
  198. package/dist/udp/pages/UdpTransactionsPage/index.js +1 -1
  199. package/dist/uploader/index.js +1 -1
  200. package/dist/{uploader-CPU1l-ss.js → uploader-Dvf2cDh8.js} +1 -1
  201. package/dist/{uploader-CPU1l-ss.js.map → uploader-Dvf2cDh8.js.map} +1 -1
  202. package/dist/utilities/aggrid/index.js +1 -1
  203. package/dist/utilities/customIcons/index.js +1 -1
  204. package/dist/utilities/floorplanFunctions/index.js +1 -1
  205. package/dist/utilities/form/paymentForm/index.js +1 -1
  206. package/dist/utilities/redirect/pages/index.js +1 -1
  207. package/dist/utilities/style/index.js +1 -1
  208. package/dist/utilities/theme/index.js +1 -1
  209. package/dist/utilities/uploader/index.js +1 -1
  210. package/dist/workflow/index.js +1 -1
  211. package/export-map.json +1 -1
  212. package/package.json +1 -1
  213. package/dist/MenuPage-DV20TjmL.js +0 -3
  214. package/dist/MyExportsPage-B3A6lwaV.js +0 -3
  215. package/dist/Reports-CLowSLq9.js +0 -3
  216. package/dist/UdpTransactionTypesPage-CUpHKA6y.js.map +0 -1
  217. package/dist/UdpTransactionsPage-B5uhMoFg.js.map +0 -1
  218. package/dist/UserFormSideSheet-C1G_jBcu.js +0 -3
  219. package/dist/VirtualBrowser-BoHR4EBJ.js +0 -3
  220. /package/dist/{addUser-B8dGyltZ.js → addUser-3C9adhp4.js} +0 -0
  221. /package/dist/{appSwitcher-Bcd4Cwcx.js → appSwitcher-qrbuBiQq.js} +0 -0
  222. /package/dist/{modified-BZxg92lm.js → entities-EYifmulZ.js} +0 -0
  223. /package/dist/{redirect-dbCS_8ib.js → modified-BHJzuqPC.js} +0 -0
  224. /package/dist/{renderers-DTo5-0ZY.js → redirect-DWQJKU5S.js} +0 -0
  225. /package/dist/{storage-C9onsVtI.js → renderers-Akwy6J9H.js} +0 -0
  226. /package/dist/{tree-CDeJs_2Q.js → storage-CdtCFv8N.js} +0 -0
@@ -34,7 +34,7 @@ import { n as UdpTimeline } from "./timeline-CdeAJqvB.js";
34
34
  import { t as SearchMethodUdpGrid } from "./SearchMethodUdpGrid-CWYZUOx-.js";
35
35
  import { i as getLocalizedDateTimeString, t as formatDate } from "./dateUtils-COj9Xpy9.js";
36
36
  import { t as UdpActionCard } from "./UdpActionCard-D-YAYE-C.js";
37
- import { t as Attachments } from "./uploader-CPU1l-ss.js";
37
+ import { t as Attachments } from "./uploader-Dvf2cDh8.js";
38
38
  import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
39
39
  import { CircularProgress, FormControlLabel, LinearProgress, Switch, makeStyles } from "@material-ui/core";
40
40
  import { useSnackbar } from "notistack";
@@ -175,6 +175,7 @@ const UdpTransactionGrid = (props) => {
175
175
  const { hasRevisions, transactionTypeGridColumns, getUiActionRenderPageId, transactionTypeStatusColorsMap, getTransactionTypeLabel } = useTransactionEngine(transactionTypeId);
176
176
  const { handleErrorSnackbar, handleSuccessSnackbar } = useHandleAxiosSnackbar();
177
177
  const [{ data, loading: deleteLoading, error: deleteError }, deleteTransaction] = useAxiosMutate(`${ConfigService$1.productV1ApiUrl}`, `udptransaction/${selectedTransaction?.transactionId}`, { method: "delete" }, {});
178
+ const { currentApiCatalogId, catalogsMap } = useCatalogStore();
178
179
  const handleDialogClose = () => {
179
180
  setSelectedTransaction(null);
180
181
  setDialogOpen(false);
@@ -197,12 +198,31 @@ const UdpTransactionGrid = (props) => {
197
198
  handleSuccessSnackbar,
198
199
  t
199
200
  ]);
201
+ const removeTimeFromDate = (date) => {
202
+ const parsedDate = new Date(date);
203
+ if (parsedDate.getTime()) {
204
+ const year = parsedDate.getFullYear();
205
+ const month = parsedDate.getMonth() + 1;
206
+ const day = parsedDate.getDate().toString();
207
+ return `${year}-${month.toString()}-${day}`;
208
+ }
209
+ return parsedDate;
210
+ };
211
+ const addSpacingInHeaderName = (headerName) => {
212
+ let formattedHeaderName = "";
213
+ for (var i = 0; i < headerName.length; i++) if (i !== 0 && headerName[i].match(/[A-Z]/)) formattedHeaderName += " " + headerName[i];
214
+ else formattedHeaderName += headerName[i];
215
+ return formattedHeaderName;
216
+ };
200
217
  const transactionLabel = useMemo(() => {
201
218
  return getTransactionTypeLabel(selectedTransaction) ?? selectedTransaction?.entityBusinessKey;
202
219
  }, [getTransactionTypeLabel, selectedTransaction]);
203
220
  const pdfViewPageId = useMemo(() => {
204
221
  return getUiActionRenderPageId(TransactionUiActionTypeEnums.Render_View_Pdf_Page);
205
222
  }, [getUiActionRenderPageId]);
223
+ const catalogObjectList = useMemo(() => {
224
+ if (catalogsMap && currentApiCatalogId && catalogsMap[currentApiCatalogId]) return catalogsMap[currentApiCatalogId]?.ctlg?.catalogObjectList;
225
+ }, [catalogsMap, currentApiCatalogId]);
206
226
  const columnDefs = useMemo(() => {
207
227
  const initialColumnDefs = [
208
228
  {
@@ -215,13 +235,7 @@ const UdpTransactionGrid = (props) => {
215
235
  field: "createdOn",
216
236
  cellDataType: "dateString",
217
237
  valueFormatter: (params) => {
218
- const parsedDate = new Date(params?.data.createdOn);
219
- if (parsedDate.getTime()) {
220
- const year = parsedDate.getFullYear();
221
- const month = parsedDate.getMonth() + 1;
222
- const day = parsedDate.getDate().toString();
223
- return `${year}-${month.toString()}-${day}`;
224
- }
238
+ return removeTimeFromDate(params?.data.createdOn);
225
239
  }
226
240
  },
227
241
  {
@@ -302,7 +316,13 @@ const UdpTransactionGrid = (props) => {
302
316
  ];
303
317
  transactionTypeGridColumns.forEach((column) => {
304
318
  let formatedHeaderName = column.slice(0, 1).toUpperCase() + column.slice(1);
319
+ if (formatedHeaderName.match(/[A-Z]/g).length > 1) formatedHeaderName = addSpacingInHeaderName(formatedHeaderName);
305
320
  let valueFormatter = (params) => {
321
+ if (catalogObjectList) {
322
+ if (((catalogObjectList?.find((catalogObject) => getSanitizedName(catalogObject.catalogObjectName) == domainName))?.properties?.find((objectProperty) => {
323
+ return objectProperty.name.slice(0, 1).toLowerCase() + objectProperty.name.slice(1) == column;
324
+ }))?.type.toLowerCase() == "datetime" && params?.data?.entityBusinessObject[column]) return removeTimeFromDate(params?.data?.entityBusinessObject[column]);
325
+ }
306
326
  return params?.data ? params?.data?.entityBusinessObject[column] : "";
307
327
  };
308
328
  if (domainColumnFormatters[column]) valueFormatter = domainColumnFormatters[column].formatter;
@@ -339,7 +359,8 @@ const UdpTransactionGrid = (props) => {
339
359
  openCreateRevision,
340
360
  hasRevisions,
341
361
  pdfViewPageId,
342
- transactionTypeStatusColorsMap
362
+ transactionTypeStatusColorsMap,
363
+ catalogObjectList
343
364
  ]);
344
365
  const headerConfig = {
345
366
  title: domainName,
@@ -392,9 +413,9 @@ const UdpTransactionGrid = (props) => {
392
413
  };
393
414
  }, [transactionTypeId, searchMethodObject]);
394
415
  useEffect(() => {
395
- if (gridApiRef && initialFilterModel) {
396
- gridApiRef.setFilterModel(initialFilterModel);
397
- gridApiRef.onFilterChanged();
416
+ if (gridApiRef?.current && initialFilterModel) {
417
+ gridApiRef.current.setFilterModel(initialFilterModel);
418
+ gridApiRef.current.onFilterChanged();
398
419
  }
399
420
  }, [gridApiRef, initialFilterModel]);
400
421
  return /* @__PURE__ */ React.createElement(React.Fragment, null, transactionTypeLoading && /* @__PURE__ */ React.createElement(LinearProgress$1, null), /* @__PURE__ */ React.createElement(SearchMethodUdpGrid, {
@@ -1695,7 +1716,10 @@ const UdpTransactionSidesheet = (props) => {
1695
1716
  return getUiActionRenderPageId(TransactionUiActionTypeEnums.Render_View_Pdf_Page);
1696
1717
  }, [getUiActionRenderPageId]);
1697
1718
  const viewTransactionPage = useMemo(() => {
1698
- if (pdfViewPageId) return /* @__PURE__ */ React.createElement(PageContainer, { pageId: pdfViewPageId });
1719
+ if (pdfViewPageId) return /* @__PURE__ */ React.createElement(PageContainer, {
1720
+ pageId: pdfViewPageId,
1721
+ widgetParams: { transaction }
1722
+ });
1699
1723
  else return /* @__PURE__ */ React.createElement(ViewTransaction_default, { transaction });
1700
1724
  }, [transaction, pdfViewPageId]);
1701
1725
  const transactionIsClosed = useMemo(() => {
@@ -2021,4 +2045,4 @@ var UdpTransactionsPage_exports = /* @__PURE__ */ __export({ default: () => UdpT
2021
2045
 
2022
2046
  //#endregion
2023
2047
  export { UdpTransactionsPage_default as n, UdpTransactionsPage_exports as t };
2024
- //# sourceMappingURL=UdpTransactionsPage-B5uhMoFg.js.map
2048
+ //# sourceMappingURL=UdpTransactionsPage-BZ0Idg5s.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UdpTransactionsPage-BZ0Idg5s.js","names":["useTransactionStore: () => TransactionState","ConfigService","LinearProgress","ConfigService","Divider","AttachmentTransactionAttachmentList","LinearProgress","ConfigService","UdpTransactionCustomPage","Typography","ConfigService","useStyles","Typography","useStyles","ConfigService","LinearProgress","Typography","ConfigService","LinearProgress","transaction","DetailsFormFields","ConfigService","WorkflowActions","EditTransactionHeaderItem","Divider","UdpTransactionCustomPage","EditTransactionDetailsForm","EditTransactionDetailsFooterItem","ConfigService","ViewTransaction","UdpTransactionCustomPage","AttachmentTransaction","WorkflowActions","EditTransaction","LinearProgress","ConfigService","UdpTransactionGrid","UdpTransactionSidesheet"],"sources":["../src/stores/transactionStore.ts","../src/utilities/transactions/useTransactionEngine.js","../src/udp/pages/UdpTransactionsPage/UdpTransactionGrid.jsx","../src/udp/pages/UdpTransactionsPage/sidesheets/ViewTransaction.jsx","../src/udp/pages/UdpTransactionsPage/components/AttachmentTransactionAttachmentList.jsx","../src/udp/pages/UdpTransactionsPage/sidesheets/AttachmentTransaction.jsx","../src/udp/pages/UdpTransactionsPage/components/UdpTransactionCustomPage.jsx","../src/udp/pages/UdpTransactionsPage/sidesheets/WorkflowActions.jsx","../src/uploader/utils/allowedFileProperties.js","../src/udp/pages/UdpTransactionsPage/sidesheets/EditTransactionHeaderItem.jsx","../src/udp/pages/UdpTransactionsPage/components/transactionHistory/TransactionTimelineItem.jsx","../src/udp/pages/UdpTransactionsPage/components/transactionHistory/TransactionTimeline.jsx","../src/udp/pages/UdpTransactionsPage/components/transactionAttachment/TransactionAttachment.jsx","../src/udp/pages/UdpTransactionsPage/components/transactionAttachment/TransactionAttachments.jsx","../src/udp/pages/UdpTransactionsPage/components/transactionNote/TransactionNote.jsx","../src/udp/pages/UdpTransactionsPage/components/transactionNote/TransactionNoteForm.jsx","../src/udp/pages/UdpTransactionsPage/components/transactionNote/TransactionNotes.jsx","../src/udp/pages/UdpTransactionsPage/sidesheets/enum.ts","../src/udp/pages/UdpTransactionsPage/components/EditTransactionDetailsFooterItem.jsx","../src/udp/pages/UdpTransactionsPage/components/EditTransactionDetailsFormFields.jsx","../src/udp/pages/UdpTransactionsPage/components/EditTransactionDetailsForm.jsx","../src/udp/pages/UdpTransactionsPage/sidesheets/EditTransaction.jsx","../src/udp/pages/UdpTransactionsPage/UdpTransactionSidesheet.jsx","../src/hooks/useTransactionType.js","../src/udp/pages/UdpTransactionsPage/UdpTransactionsPage.jsx","../src/udp/pages/UdpTransactionsPage/index.ts"],"sourcesContent":["import { create } from 'zustand';\nimport { devtools } from 'zustand/middleware';\n\ninterface TransactionState {\n transactionTypesMap: object | null | undefined;\n setTransactionTypesMap: (transactionTypes: object) => void;\n}\n\nexport const useTransactionStore: () => TransactionState =\n create<TransactionState>()(\n devtools((set) => ({\n transactionTypesMap: {},\n setTransactionTypesMap: (transactionTypesMap) =>\n set((state) => ({\n transactionTypesMap: {\n ...state.transactionTypesMap,\n ...transactionTypesMap\n }\n }))\n }))\n );\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport jsonLogic from 'json-logic-js';\nimport { useTransactionStore } from '../../stores/transactionStore';\nimport { useUser } from '../auth';\nimport { useCatalogStore } from '../../stores';\nimport {\n TransactionActionTypeEnums,\n TransactionEventTypeEnums\n} from '../../enums';\n\nexport const useTransactionEngine = (transactionTypeId) => {\n const user = useUser();\n const [transactionTypeFields, setTransactionTypeFields] = useState([]);\n\n const currentApiCatalogId = useCatalogStore(\n (state) => state.currentApiCatalogId\n );\n const catalogsMap = useCatalogStore((state) => state.catalogsMap);\n\n const transactionTypesMap = useTransactionStore(\n (state) => state.transactionTypesMap\n );\n const transactionType = transactionTypesMap\n ? transactionTypesMap[transactionTypeId]\n : null;\n\n const evaluateRule = useCallback(\n (rule, udpTransaction) => {\n let udpTransactionEvaluationData = {\n currentStatusId: udpTransaction?.currentStatusId,\n currentDomainValue: udpTransaction?.entityBusinessObject,\n tenantUserRoleIds: user?.roleIds || []\n };\n\n return jsonLogic.apply(rule, udpTransactionEvaluationData);\n },\n [user?.roleIds]\n );\n\n const getTransactionTypeTransactionActions = useCallback(\n (udpTransaction, ruleTypeId = null) => {\n const transactionActions =\n transactionType?.udpTransactionTypeUdpTransactionTypeConfiguration?.reduce(\n (actions, config) => {\n const ruleLogic = config?.expressionLogic;\n if (!ruleTypeId) {\n return actions;\n }\n if (\n config.transactionRuleTypeId === ruleTypeId &&\n config.enabled &&\n ruleLogic\n ) {\n const result = evaluateRule(ruleLogic, udpTransaction);\n if (result) {\n const configActions =\n config?.udpTransactionTypeConfigurationUdpTransactionTypeConfigurationTransactionAction ||\n [];\n\n const nestedActions = configActions\n .map(\n (action) =>\n action.udpTransactionTypeConfigurationTransactionActionUdpTransactionTypeTransactionAction\n )\n .filter((action) => action);\n\n if (nestedActions.length > 0) {\n actions = actions.concat(nestedActions);\n }\n }\n return actions;\n }\n return actions;\n },\n []\n );\n\n return transactionActions;\n },\n [transactionType, evaluateRule]\n );\n\n const hasRevisions = useMemo(() => {\n return transactionType?.hasRevision;\n }, [transactionType]);\n\n const hasClosedStatus = useMemo(() => {\n return transactionType?.udpTransactionTypeUdpTransactionTypeStatus?.some(\n (status) => status.isClosedStatus\n );\n }, [transactionType]);\n\n const transactionTypeGridColumns = useMemo(() => {\n return transactionType?.domainFields || [];\n }, [transactionType]);\n\n const transactionTypeStatusColorsMap = useMemo(() => {\n const statusColorsMap = {};\n transactionType?.udpTransactionTypeUdpTransactionTypeStatus?.forEach(\n (status) => {\n statusColorsMap[status.name] = status.color || 'default';\n }\n );\n return statusColorsMap;\n }, [transactionType]);\n\n const getHiddenFields = useCallback(\n (udpTransaction) => {\n const transactionActions = getTransactionTypeTransactionActions(\n udpTransaction,\n TransactionEventTypeEnums.Form\n );\n if (!transactionActions) return [];\n let hiddenFields = [];\n transactionActions\n .filter(\n (action) =>\n action.transactionActionId ===\n TransactionActionTypeEnums.Set_Fields_Hidden\n )\n .forEach((action) => {\n if (action.parameters?.hiddenFields) {\n hiddenFields = hiddenFields.concat(action.parameters.hiddenFields);\n }\n });\n return hiddenFields;\n },\n [getTransactionTypeTransactionActions]\n );\n\n const getRequiredFields = useCallback(\n (udpTransaction) => {\n const transactionActions = getTransactionTypeTransactionActions(\n udpTransaction,\n TransactionEventTypeEnums.Form\n );\n if (!transactionActions) return [];\n let requiredFields = [];\n transactionActions\n .filter(\n (action) =>\n action.transactionActionId ===\n TransactionActionTypeEnums.Set_Mandatory_Fields\n )\n .forEach((action) => {\n if (action.parameters?.mandatoryFields) {\n requiredFields = requiredFields.concat(\n action.parameters.mandatoryFields\n );\n }\n });\n return requiredFields;\n },\n [getTransactionTypeTransactionActions]\n );\n\n const getUiActionRenderPageId = useCallback(\n (uiActionType) => {\n const uiAction =\n transactionType?.udpTransactionTypeUdpTransactionUiAction?.find(\n (action) => action.transactionUiActionTypeId === uiActionType\n );\n return uiAction?.parameters?.pageId || null;\n },\n [transactionType]\n );\n\n const getTransactionTypeLabel = useCallback(\n (udpTransaction) => {\n if (!transactionType?.domainFieldLabel) return null;\n return udpTransaction?.entityBusinessObject\n ? udpTransaction.entityBusinessObject[transactionType.domainFieldLabel]\n : null;\n },\n [transactionType]\n );\n\n const checkIfTransactionIsClosed = useCallback(\n (udpTransaction) => {\n if (!hasClosedStatus) return false;\n const closedStatus =\n transactionType?.udpTransactionTypeUdpTransactionTypeStatus?.find(\n (status) => status.isClosedStatus\n );\n if (!closedStatus) return false;\n return (\n closedStatus.transactionTypeStatusId === udpTransaction?.currentStatusId\n );\n },\n [hasClosedStatus, transactionType]\n );\n\n useEffect(() => {\n if (catalogsMap && currentApiCatalogId && transactionType) {\n const apiCatalog = catalogsMap[currentApiCatalogId];\n if (apiCatalog) {\n const catalogObjects = apiCatalog.ctlg.catalogObjectList;\n const transactionTypeObject = catalogObjects.find(\n (obj) =>\n obj.catalogObjectName.toLowerCase() ===\n transactionType?.domainName?.toLowerCase()\n );\n if (transactionTypeObject) {\n setTransactionTypeFields(transactionTypeObject.properties || []);\n }\n }\n }\n }, [catalogsMap, currentApiCatalogId, transactionType]);\n\n return {\n currentTransactionType: transactionType,\n evaluateRule,\n getTransactionTypeTransactionActions,\n hasRevisions,\n getHiddenFields,\n getRequiredFields,\n hasClosedStatus,\n transactionTypeGridColumns,\n getUiActionRenderPageId,\n checkIfTransactionIsClosed,\n getTransactionTypeLabel,\n transactionTypeStatusColorsMap\n };\n};\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { SearchMethodUdpGrid } from '../../../UI/templates/newGrid';\nimport { FluentDialog, LinearProgress } from '../../../UI';\nimport { useTransactionEngine } from '../../../utilities/transactions/useTransactionEngine';\nimport { useAxiosMutate } from '../../../utilities';\nimport { ConfigService } from '../../../configService';\nimport { useHandleAxiosSnackbar } from '../../../utilities';\nimport { TransactionUiActionTypeEnums, UdpSearchEnums } from '../../../enums';\nimport { useCatalogStore } from '../../../../src/stores/catalogStore';\nimport { getSanitizedName } from '../../../utilities/entities';\n\nconst UdpTransactionGrid = (props) => {\n const {\n transactionTypeId,\n domainName,\n transactionTypeLoading,\n handleGridApiCallback,\n openAddTransaction,\n openViewTransaction,\n openEditTransaction,\n openAttachmentTransaction,\n openWorkflowActionTransaction,\n openCreateRevision,\n searchMethodObject,\n domainColumnFormatters = {},\n refreshGridData,\n gridApiRef,\n initialFilterModel\n } = props;\n const [dialogOpen, setDialogOpen] = useState(false);\n const [selectedTransaction, setSelectedTransaction] = useState(null);\n\n const { t } = useTranslation();\n\n const {\n hasRevisions,\n transactionTypeGridColumns,\n getUiActionRenderPageId,\n transactionTypeStatusColorsMap,\n getTransactionTypeLabel\n } = useTransactionEngine(transactionTypeId);\n\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n\n const [\n { data, loading: deleteLoading, error: deleteError },\n deleteTransaction\n ] = useAxiosMutate(\n `${ConfigService.productV1ApiUrl}`,\n `udptransaction/${selectedTransaction?.transactionId}`,\n {\n method: 'delete'\n },\n {}\n );\n\n const { currentApiCatalogId, catalogsMap } = useCatalogStore();\n\n const handleDialogClose = () => {\n setSelectedTransaction(null);\n setDialogOpen(false);\n };\n\n const handleConfirmActionDialog = useCallback(async () => {\n try {\n const response = await deleteTransaction();\n if (response?.status === 204) {\n refreshGridData();\n handleSuccessSnackbar(t(`Transaction has been cancelled successfully`));\n } else {\n handleErrorSnackbar(\n new Error(t(`Error cancelling Transaction. Please try again later.`))\n );\n }\n } catch (error) {\n handleErrorSnackbar(error);\n } finally {\n handleDialogClose();\n }\n }, [\n deleteTransaction,\n refreshGridData,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n t\n ]);\n\n const removeTimeFromDate = (date) => {\n const parsedDate = new Date(date);\n if (parsedDate.getTime()) {\n const year = parsedDate.getFullYear();\n //Month is zero based 0 = Jan so need to add 1\n const month = parsedDate.getMonth() + 1;\n const day = parsedDate.getDate().toString();\n return `${year}-${month.toString()}-${day}`;\n }\n return parsedDate;\n };\n\n const addSpacingInHeaderName = (headerName) => {\n let formattedHeaderName = '';\n for (var i = 0; i < headerName.length; i++) {\n if (i !== 0 && headerName[i].match(/[A-Z]/)) {\n formattedHeaderName += ' ' + headerName[i];\n } else {\n formattedHeaderName += headerName[i];\n }\n }\n return formattedHeaderName;\n };\n\n const transactionLabel = useMemo(() => {\n return (\n getTransactionTypeLabel(selectedTransaction) ??\n selectedTransaction?.entityBusinessKey\n );\n }, [getTransactionTypeLabel, selectedTransaction]);\n\n const pdfViewPageId = useMemo(() => {\n return getUiActionRenderPageId(\n TransactionUiActionTypeEnums.Render_View_Pdf_Page\n );\n }, [getUiActionRenderPageId]);\n\n const catalogObjectList = useMemo(() => {\n if (\n catalogsMap &&\n currentApiCatalogId &&\n catalogsMap[currentApiCatalogId]\n ) {\n return catalogsMap[currentApiCatalogId]?.ctlg?.catalogObjectList;\n }\n }, [catalogsMap, currentApiCatalogId]);\n\n const columnDefs = useMemo(() => {\n const initialColumnDefs = [\n {\n headerName: t('Transaction Id'),\n field: 'transactionId',\n hide: true\n },\n {\n headerName: t('Created On'),\n field: 'createdOn',\n cellDataType: 'dateString',\n valueFormatter: (params) => {\n return removeTimeFromDate(params?.data.createdOn);\n }\n },\n {\n headerName: t('Current Status'),\n field: 'currentStatusId',\n cellRenderer: 'statusRenderer',\n cellRendererParams: {\n statusMappingConfig: transactionTypeStatusColorsMap,\n getStatusValue: (params) =>\n params?.data.udpTransactionUdpTransactionTypeStatus.name\n },\n valueFormatter: (params) =>\n params?.data.udpTransactionUdpTransactionTypeStatus.name\n },\n {\n headerName: t('Last Event Type'),\n field: 'lastEventTypeId',\n valueFormatter: (params) =>\n params?.data.udpTransactionUdpTransactionEventType.name\n },\n {\n headerName: t('Attachments'),\n field: 'attachments',\n pinned: 'right',\n onCellClicked: (event) => {\n openAttachmentTransaction(event.data);\n },\n valueFormatter: (params) => {\n return params?.data.udpTransactionUdpTransactionAttachment.length;\n }\n },\n {\n field: 'actions',\n cellRenderer: 'actionsRenderer',\n cellRendererParams: {\n actionList: [\n {\n id: 0,\n title: t('Next Steps'),\n iconName: 'migrateAlt',\n handleOnClick: (e, params) => {\n openWorkflowActionTransaction(params?.data);\n }\n },\n {\n id: 1,\n title: t('View'),\n iconName: 'view',\n handleOnClick: (e, params) => {\n openViewTransaction(params?.data);\n },\n disabled: !pdfViewPageId\n },\n {\n id: 2,\n title: t('Edit'),\n iconName: 'edit',\n handleOnClick: (e, params) => {\n openEditTransaction(params?.data);\n }\n },\n {\n id: 3,\n title: t('Create Revision'),\n iconName: 'add',\n handleOnClick: (e, params) => {\n openCreateRevision(params?.data);\n },\n disabled: !hasRevisions\n },\n {\n id: 4,\n title: t('Cancel'),\n iconName: 'close16',\n handleOnClick: (e, params) => {\n setSelectedTransaction(params?.data);\n setDialogOpen(true);\n }\n }\n ]\n }\n }\n ];\n transactionTypeGridColumns.forEach((column) => {\n let formatedHeaderName =\n column.slice(0, 1).toUpperCase() + column.slice(1);\n const contains_more_than_one_uppercase_char =\n formatedHeaderName.match(/[A-Z]/g || []).length > 1;\n if (contains_more_than_one_uppercase_char) {\n formatedHeaderName = addSpacingInHeaderName(formatedHeaderName);\n }\n\n let valueFormatter = (params) => {\n if (catalogObjectList) {\n let catalogObject = catalogObjectList?.find(\n (catalogObject) =>\n getSanitizedName(catalogObject.catalogObjectName) == domainName\n );\n const matchingFieldInfo = catalogObject?.properties?.find(\n (objectProperty) => {\n let formatted_column_name =\n objectProperty.name.slice(0, 1).toLowerCase() +\n objectProperty.name.slice(1);\n return formatted_column_name == column;\n }\n );\n if (\n matchingFieldInfo?.type.toLowerCase() == 'datetime' &&\n params?.data?.entityBusinessObject[column]\n ) {\n return removeTimeFromDate(\n params?.data?.entityBusinessObject[column]\n );\n }\n }\n return params?.data ? params?.data?.entityBusinessObject[column] : '';\n };\n\n if (domainColumnFormatters[column]) {\n valueFormatter = domainColumnFormatters[column].formatter;\n }\n\n initialColumnDefs.push({\n headerName: formatedHeaderName,\n field: `${UdpSearchEnums.UdpBusinessDomainPrefix}.${domainName}.${column}`,\n valueFormatter: valueFormatter\n });\n });\n\n Object.keys(domainColumnFormatters).forEach((columnKey) => {\n if (!transactionTypeGridColumns.includes(columnKey)) {\n let formatedHeaderName =\n columnKey.slice(0, 1).toUpperCase() + columnKey.slice(1);\n initialColumnDefs.push({\n headerName: formatedHeaderName,\n field: `${UdpSearchEnums.UdpBusinessDomainPrefix}.${domainName}.${columnKey}`,\n valueFormatter: domainColumnFormatters[columnKey].formatter\n });\n }\n });\n\n if (hasRevisions) {\n initialColumnDefs.splice(3, 0, {\n headerName: t('Revision No'),\n field: 'currentRevisionNo'\n });\n }\n\n return initialColumnDefs;\n }, [\n domainName,\n t,\n openViewTransaction,\n openEditTransaction,\n openAttachmentTransaction,\n openWorkflowActionTransaction,\n domainColumnFormatters,\n transactionTypeGridColumns,\n openCreateRevision,\n hasRevisions,\n pdfViewPageId,\n transactionTypeStatusColorsMap,\n catalogObjectList\n ]);\n\n const headerConfig = {\n title: domainName,\n primaryActionButton: {\n label: domainName + ' Entry',\n iconName: 'add',\n onClick: () => {\n openAddTransaction();\n }\n }\n // secondaryActionButtons: secondaryActionButtons\n };\n\n const gridFunctions = [\n { name: 'agGridExport' },\n { name: 'agGridHideShowColumns' },\n { name: 'agGridSizeColumnsToFit' }\n ];\n\n const gridOptions = useMemo(() => {\n return {\n pagination: true,\n rowSelection: 'none'\n };\n }, []);\n\n const searchMethodConfig = useMemo(() => {\n let combinedSearchObject = {\n eagerLoad: true,\n filterElements: [\n {\n searchField: 'transactionTypeId',\n searchOperator: '=',\n searchValue: transactionTypeId\n },\n {\n searchField: 'isDeleted',\n searchOperator: '=',\n searchValue: false\n }\n ]\n };\n\n if (searchMethodObject) {\n let combinedFilterElems = combinedSearchObject.filterElements.concat(\n searchMethodObject?.filterElements || []\n );\n\n combinedSearchObject = {\n ...combinedSearchObject,\n ...searchMethodObject\n };\n\n combinedSearchObject = {\n ...combinedSearchObject,\n filterElements: combinedFilterElems\n };\n }\n\n return {\n requestUrl: `${ConfigService.productV1ApiUrl}/UdpTransaction/search`,\n customSearchObject: combinedSearchObject\n };\n }, [transactionTypeId, searchMethodObject]);\n\n // eslint-disable-next-line react-you-might-not-need-an-effect/no-manage-parent\n useEffect(() => {\n if (gridApiRef?.current && initialFilterModel) {\n // 1. Set the filter model\n gridApiRef.current.setFilterModel(initialFilterModel);\n\n // 2. Inform the grid that filters have changed, which re-runs the data fetch (Server-Side)\n gridApiRef.current.onFilterChanged();\n }\n }, [gridApiRef, initialFilterModel]);\n\n return (\n <>\n {transactionTypeLoading && <LinearProgress />}\n <SearchMethodUdpGrid\n gridHeaderConfig={headerConfig}\n gridFunctions={gridFunctions}\n gridOptions={gridOptions}\n columnDefs={columnDefs}\n searchMethodConfig={searchMethodConfig}\n gridApiCallback={handleGridApiCallback}\n />\n <FluentDialog\n title={t(`Cancel Transaction`)}\n message={`Are you sure you want to cancel the transaction for ${domainName} - ${\n transactionLabel || ''\n }?`}\n labelOne={t('Confirm')}\n actionOne={handleConfirmActionDialog}\n labelTwo={t('Cancel')}\n actionTwo={handleDialogClose}\n open={dialogOpen}\n handleClose={handleDialogClose}\n loading={deleteLoading}\n />\n </>\n );\n};\n\nexport default UdpTransactionGrid;\n","import React from 'react';\nimport { FileViewer } from '../../../../UI';\n\nconst ViewTransaction = (props) => {\n // Currently don't have the cover file so no pdf file passed need to change once we know where it is from by cahnging filePath\n const { transaction } = props;\n\n return (\n <>\n <FileViewer\n data={{\n filePath: '',\n fileExtension: 'pdf'\n }}\n acceptedFileExtensions='pdf'\n />\n </>\n );\n};\n\nexport default ViewTransaction;\n","import React, { useMemo } from 'react';\nimport { AmbientList } from '../../../../UI';\nimport {\n PDFIcon,\n WordDocumentIcon,\n FileImageIcon\n} from '@fluentui/react-icons';\n\nconst AttachmentTransactionAttachmentList = (props) => {\n const { attachments, setSelectedAttachment } = props;\n\n const formattedAttachments = useMemo(() => {\n return attachments.map((attachment) => ({\n attachmentName: attachment.fileName,\n extension: attachment.extension,\n transactionAttachmentId: attachment.transactionAttachmentId\n }));\n }, [attachments]);\n\n const getFileIcon = (item) => {\n if (item.attachmentName.includes('.pdf')) {\n return PDFIcon;\n } else if (item.attachmentName.includes('.docx')) {\n return WordDocumentIcon;\n } else if (item.attachmentName.includes('.')) {\n return FileImageIcon;\n }\n };\n\n return (\n <>\n <AmbientList\n data={formattedAttachments}\n useAvatar={false}\n fieldConfig={{\n primaryText: 'attachmentName',\n secondaryText: 'description'\n }}\n onItemClick={(item) => {\n setSelectedAttachment(item);\n }}\n getItemIcon={(item) => {\n return getFileIcon(item);\n }}\n listHeight={800}\n maxHeight={900}\n />\n </>\n );\n};\n\nexport default AttachmentTransactionAttachmentList;\n","import React, { useState, useEffect, useImperativeHandle } from 'react';\nimport {\n Divider,\n EmptyStateDisplay,\n FileViewer,\n LinearProgress\n} from '../../../../UI';\nimport AttachmentTransactionAttachmentList from '../components/AttachmentTransactionAttachmentList';\nimport { apiMutate } from '../../../../utilities';\nimport { ViewIcon } from '@fluentui/react-icons';\nimport { makeStyles } from '@material-ui/core';\nimport { useAxiosGet } from '../../../../utilities';\nimport { ConfigService } from '../../../../configService/index';\n\nconst AttachmentTransaction = (props) => {\n const { transaction, attachmentRef } = props;\n const [selectedAttachment, setSelectedAttachment] = useState('');\n\n const attachments = transaction?.udpTransactionUdpTransactionAttachment;\n\n const [{ data: attachmentFileInfo }, refetchattachmentFileInfo] = useAxiosGet(\n `${process.env.REACT_APP_PRODUCT_API_BASE}`,\n `UdpTransactionAttachment/${selectedAttachment?.transactionAttachmentId}/udpDriveFile/download`,\n {},\n true\n );\n\n useEffect(() => {\n if (selectedAttachment) {\n refetchattachmentFileInfo();\n }\n }, [selectedAttachment, refetchattachmentFileInfo]);\n\n let fileDataObj = {\n filePath: attachmentFileInfo?.link,\n fileExtension: attachmentFileInfo?.extension\n };\n\n const useStyles = makeStyles((theme) => ({\n sidesheet: { display: 'flex', flexDirection: 'row', flex: 1 },\n attachmentListContainer: {\n textAlign: 'left',\n width: '35%'\n },\n attachmentListHeader: {\n backgroundColor: 'white',\n marginTop: '-7%',\n marginBottom: '-5%',\n justifyItems: 'left',\n paddingLeft: '5%'\n },\n attachmentListHeaderPrimaryText: {\n fontSize: 'var(--h6-font-size)',\n fontWeight: 'var(--body1-font-weight)',\n marginBottom: '-5%',\n color: 'var(--text-main)'\n },\n attachmentListHeaderSecondaryText: {\n fontSize: 'var(--body2-font-size)',\n color: 'var(--text-secondary)',\n paddingBottom: '2%'\n },\n attachemntFileInfoCol: {\n width: '50%',\n display: 'flex',\n flexDirection: 'column',\n flex: 1\n },\n attachmentFileNameHeader: {\n backgroundColor: 'white'\n },\n attachmentFileName: {\n color: 'var(--text-main)',\n fontSize: 'var(--h6-font-size)',\n fontWeight: 'var(--body1-font-weight)',\n marginTop: '1%',\n marginBottom: '1%',\n justifySelf: 'center'\n },\n fileViewer: {\n marginLeft: 'var(--spacing-02)',\n marginRight: 'var(--spacing-02)'\n },\n divider: {\n '& MuiDivider-root': {\n backgroundColor: 'var(--gray-02)'\n }\n }\n }));\n\n const classStyles = useStyles();\n\n useImperativeHandle(attachmentRef, () => ({\n downloadSelectedFile: async () => {\n if (!selectedAttachment) return;\n\n try {\n const response = await apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpTransactionAttachment/${selectedAttachment.transactionAttachmentId}/udpDriveFile/download`,\n {}\n );\n const url = response.data.link;\n const link = document.createElement('a');\n link.href = url;\n link.download = selectedAttachment.fileName ?? selectedAttachment.name;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } catch (e) {\n console.error('Download failed', e);\n }\n }\n }));\n\n return (\n <>\n <div className={classStyles.sidesheet}>\n <div className={classStyles.attachmentListContainer}>\n <div className={classStyles.attachmentListHeader}>\n <p className={classStyles.attachmentListHeaderPrimaryText}>\n Attachments\n </p>\n <p className={classStyles.attachmentListHeaderSecondaryText}>\n {attachments.length + ' file(s) attached'}\n </p>\n </div>\n <div className={classStyles.divider}>\n <Divider />\n </div>\n <AttachmentTransactionAttachmentList\n transaction={transaction}\n attachments={attachments}\n setSelectedAttachment={setSelectedAttachment}\n />\n </div>\n\n <div className={classStyles.attachemntFileInfoCol}>\n <div className={classStyles.attachmentFileNameHeader}>\n {selectedAttachment && (\n <p className={classStyles.attachmentFileName}>\n {selectedAttachment.attachmentName}\n </p>\n )}\n <div className={classStyles.divider}>\n <Divider />\n </div>\n </div>\n {selectedAttachment?.attachmentName != attachmentFileInfo?.name ? (\n <LinearProgress />\n ) : selectedAttachment && attachmentFileInfo ? (\n <div className={classStyles.fileViewer}>\n <FileViewer\n data={\n attachmentFileInfo?.extension == 'pdf'\n ? fileDataObj\n : [fileDataObj]\n }\n />\n </div>\n ) : (\n <EmptyStateDisplay\n icon={ViewIcon}\n primaryText={'Select an attachment to preview'}\n secondaryText={\n 'Choose a file from the attachments list to view its contents'\n }\n />\n )}\n </div>\n </div>\n </>\n );\n};\nexport default AttachmentTransaction;\n","import React, { useCallback, useEffect, useMemo } from 'react';\nimport { PageContainer } from '../../../../page/PageContainer';\nimport { useTransactionEngine } from '../../../../utilities/transactions/useTransactionEngine';\nimport { TransactionUiActionTypeEnums } from '../../../../enums';\nimport { Form } from '../../../../utilities/form';\nimport { ConfigService } from 'udp-react-stencil-component-library';\nimport { apiMutate } from '../../../../utilities';\nimport { useHandleAxiosSnackbar } from '../../../../utilities/apiHelpers';\nimport { useTranslation } from 'react-i18next';\n\nconst UdpTransactionCustomPage = (props) => {\n const {\n pageId,\n transactionTypeId,\n transactionUiActionType,\n formRef,\n transaction,\n transactionTypeTransactionActionId\n } = props;\n\n const { getUiActionRenderPageId, getHiddenFields, getRequiredFields } =\n useTransactionEngine(transactionTypeId);\n\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n const { t } = useTranslation();\n\n const executeCreateTransactionAction = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `udpTransaction/transactionType/${transactionTypeId}/create`,\n {\n method: 'post'\n },\n data\n ),\n [transactionTypeId]\n );\n\n const executeSaveChanges = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `udpTransaction/${transaction?.transactionId}/saveChanges`,\n {\n method: 'put'\n },\n data\n ),\n [transaction?.transactionId]\n );\n\n const executeCreateRevision = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `udpTransaction/${transaction?.transactionId}/createRevision`,\n {\n method: 'post'\n },\n data\n ),\n [transaction?.transactionId]\n );\n\n const executeSubmitCustomAction = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `udptransactiontypeTransactionAction/${transactionTypeTransactionActionId}/transaction/${transaction.transactionId}/submit`,\n {\n method: 'post'\n },\n data\n ),\n [transactionTypeTransactionActionId, transaction?.transactionId]\n );\n\n const onSubmit = useCallback(\n async (values) => {\n try {\n const request = { data: values };\n let response = null;\n let message = '';\n let errorMessagePart = '';\n if (\n transactionUiActionType ===\n TransactionUiActionTypeEnums.Render_Create_Transaction_Page\n ) {\n response = await executeCreateTransactionAction(request);\n message = 'Transaction has been created successfully';\n errorMessagePart = 'creating';\n } else if (\n transactionUiActionType ===\n TransactionUiActionTypeEnums.Render_Transaction_Details_Page\n ) {\n response = await executeSaveChanges(request);\n message = 'Transaction has been saved successfully';\n errorMessagePart = 'saving';\n } else if (\n transactionUiActionType ===\n TransactionUiActionTypeEnums.Render_Create_Revision_Page\n ) {\n response = await executeCreateRevision(request);\n message = 'Revision has been created successfully';\n errorMessagePart = 'creating revision for';\n } else if (!!transactionTypeTransactionActionId) {\n response = await executeSubmitCustomAction(request);\n message = 'Action has been submitted successfully';\n errorMessagePart = 'submitting action for';\n }\n\n if (response?.status === 200) {\n handleSuccessSnackbar(t(`${message} `));\n } else {\n handleErrorSnackbar(\n new Error(\n t(\n `Error ${errorMessagePart} Transaction. Please try again later.`\n )\n )\n );\n }\n } catch (error) {\n handleErrorSnackbar(error);\n } finally {\n }\n },\n [\n executeCreateTransactionAction,\n executeSaveChanges,\n executeCreateRevision,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n transactionUiActionType,\n executeSubmitCustomAction,\n t,\n transactionTypeTransactionActionId\n ]\n );\n\n const isFieldRequired = useCallback(\n (fieldName) => {\n const requiredFields = getRequiredFields(transaction);\n return requiredFields?.includes(fieldName);\n },\n [getRequiredFields, transaction]\n );\n\n const isFieldHidden = useCallback(\n (fieldName) => {\n const hiddenFields = getHiddenFields(transaction);\n return hiddenFields?.includes(fieldName);\n },\n [getHiddenFields, transaction]\n );\n\n const transactionPageId = useMemo(() => {\n if (pageId) {\n return pageId;\n }\n return getUiActionRenderPageId(transactionUiActionType);\n }, [getUiActionRenderPageId, transactionUiActionType, pageId]);\n\n if (!transactionPageId) {\n return null;\n }\n\n return (\n <Form onSubmit={onSubmit} ref={formRef}>\n <PageContainer\n pageId={transactionPageId}\n updateLocationState={false}\n widgetParams={{ transaction, isFieldRequired, isFieldHidden }}\n />\n </Form>\n );\n};\n\nexport default UdpTransactionCustomPage;\n","import React, { useState, useCallback, useMemo, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSnackbar } from 'notistack';\nimport { DocumentIcon } from '@fluentui/react-icons';\nimport { FluentDialog, SideSheet } from '../../../../UI';\nimport { useAxiosMutate } from '../../../../utilities';\nimport { ConfigService } from '../../../../configService';\nimport { UdpActionCard } from '../../../../UI/inputs/buttons/UdpActionCard/UdpActionCard';\nimport { getIconFromName } from '../../../../utilities/tree';\nimport './WorkflowActions.css';\nimport { TransactionEventTypeEnums } from '../../../../enums/unitySystemEnums';\nimport { useTransactionEngine } from '../../../../utilities/transactions/useTransactionEngine';\nimport UdpTransactionCustomPage from '../components/UdpTransactionCustomPage';\n\nconst TransactionActionButton = ({\n icon,\n primaryText,\n secondaryText,\n onClick,\n action\n}) => {\n const actionCardIcon = useMemo(() => getIconFromName(icon), [icon]);\n\n return (\n <UdpActionCard\n icon={actionCardIcon ? actionCardIcon : DocumentIcon}\n primaryText={primaryText}\n secondaryText={secondaryText}\n onClick={() => {\n onClick(action);\n }}\n />\n );\n};\n\nconst WorkflowActions = ({ transaction, closeSideSheet, refreshGridData }) => {\n const [dialogOpen, setDialogOpen] = useState(true);\n const [dialogUserStrings, setDialogUserStrings] = useState(null);\n const [selectedAction, setSelectedAction] = useState(null);\n const [sideSheetOpen, setSideSheetOpen] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const formRef = useRef(null);\n\n const { getTransactionTypeTransactionActions } = useTransactionEngine(\n transaction.transactionTypeId\n );\n\n const handleOnCloseSideSheet = useCallback(() => {\n setSideSheetOpen(false);\n }, []);\n\n const handleSubmitWorkflowAction = useCallback(async () => {\n setLoading(true);\n await formRef.current?.form?.submit();\n setLoading(false);\n handleOnCloseSideSheet();\n closeSideSheet();\n refreshGridData();\n }, [handleOnCloseSideSheet, refreshGridData, closeSideSheet, formRef]);\n\n const transactionTypeTransactionActions = useMemo(() => {\n return (\n getTransactionTypeTransactionActions(\n transaction,\n TransactionEventTypeEnums.Sidesheet\n ) || []\n );\n }, [getTransactionTypeTransactionActions, transaction]);\n\n // Base URL and url get overwritten in postTransactionData function call in handleConfirmActionDialog()\n const [{ data: transactionData }, postTransactionData] = useAxiosMutate(\n `${ConfigService.productV1ApiUrl}`,\n 'udptransactiontypeTransactionAction',\n {\n method: 'post'\n },\n {}\n );\n\n const i18n = useTranslation().t;\n const { enqueueSnackbar } = useSnackbar();\n\n const handleDialogOpen = useCallback((title, message) => {\n setDialogUserStrings({ title, message });\n setDialogOpen(true);\n }, []);\n\n const handleDialogClose = useCallback(() => {\n setDialogOpen(false);\n }, []);\n\n const handleConfirmActionDialog = useCallback(async () => {\n setDialogOpen(true);\n handleDialogClose();\n setLoading(true);\n try {\n const data = await postTransactionData({\n // Change URL to config\n url:\n `${ConfigService.productV1ApiUrl}` +\n `/udptransactiontypeTransactionAction/${selectedAction.transactionTypeTransactionActionId}/transaction/${transaction.transactionId}/submit`,\n data: {}\n });\n enqueueSnackbar(i18n('Successfully submitted!'), {\n variant: 'success',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n closeSideSheet();\n refreshGridData();\n } catch (event) {\n enqueueSnackbar(i18n(event.message), {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n }\n setLoading(false);\n }, [\n postTransactionData,\n handleDialogClose,\n transaction,\n selectedAction,\n enqueueSnackbar,\n i18n,\n closeSideSheet,\n refreshGridData\n ]);\n const handleOnActionClick = useCallback(\n (action) => {\n const pageId = action.parameters.pageId;\n setSelectedAction(action);\n if (pageId) {\n setSideSheetOpen(true);\n } else {\n handleDialogOpen(action.name, action.description);\n }\n },\n [handleDialogOpen]\n );\n\n const TransactionActionButtons = useMemo(() => {\n if (!transactionTypeTransactionActions.length) {\n return null;\n }\n return transactionTypeTransactionActions?.map((action) => (\n <TransactionActionButton\n key={action.transactionTypeTransactionActionId}\n primaryText={action.name}\n secondaryText={action.description}\n icon={action.icon}\n onClick={handleOnActionClick}\n action={action}\n />\n ));\n }, [transactionTypeTransactionActions, handleOnActionClick]);\n\n return (\n <>\n <div className='transaction-action-buttons-container'>\n {TransactionActionButtons}\n </div>\n\n {dialogUserStrings && (\n <FluentDialog\n title={i18n(\n `Are you sure you want to proceed with \\\"${dialogUserStrings.title}\\\"?`\n )}\n message={dialogUserStrings.message}\n labelOne={i18n('Confirm')}\n actionOne={handleConfirmActionDialog}\n labelTwo={i18n('Cancel')}\n actionTwo={handleDialogClose}\n open={dialogOpen}\n handleClose={handleDialogClose}\n />\n )}\n\n <SideSheet\n open={sideSheetOpen}\n title={selectedAction?.name} // To Change\n onClose={handleOnCloseSideSheet}\n width={600}\n buttonLabel={i18n('Submit')}\n onSubmit={handleSubmitWorkflowAction}\n progress={loading}\n variant='indeterminate'\n >\n {selectedAction && selectedAction.parameters?.pageId && (\n <UdpTransactionCustomPage\n pageId={selectedAction.parameters.pageId}\n transaction={transaction}\n formRef={formRef}\n transactionTypeTransactionActionId={\n selectedAction.transactionTypeTransactionActionId\n }\n />\n )}\n </SideSheet>\n </>\n );\n};\n\nexport default WorkflowActions;\n","export const MAX_FILE_SIZE_MB = 30;\n\nexport const allowedExtensions = [\n \"pdf\",\n \"xlsx\",\n \"xls\",\n \"xlsm\",\n \"csv\",\n \"jpg\",\n \"jpeg\",\n \"png\",\n \"tif\",\n \"tiff\",\n \"doc\",\n \"docx\",\n \"docm\",\n \"ppt\",\n \"pptm\",\n \"rtf\"\n];\n","import React from 'react';\nimport { StatusChip } from '../../../../UI/dataDisplay/status';\nimport { Typography } from '../../../../UI/dataDisplay/typography';\nimport './EditTransaction.css';\n\nconst EditTransactionHeaderItem = (props) => {\n const { label, value, statusChip } = props;\n return (\n <div className='transaction-sidesheet-header-item'>\n <Typography variant='caption'>{label}</Typography>\n {statusChip ? (\n <div className='transaction-sidesheet-header-item-status'>\n <StatusChip {...statusChip} />\n </div>\n ) : (\n <Typography variant='body1'>{value}</Typography>\n )}\n </div>\n );\n};\n\nexport default EditTransactionHeaderItem;\n","import React from 'react';\nimport {\n UdpTimelineItem,\n UdpTimelineConnector,\n UdpTimelineDot,\n UdpTimelineSeparator\n} from 'udp-react-stencil-component-library';\n\nexport const TransactionTimelineItem = (props) => {\n const {\n title,\n description,\n date,\n status,\n onClick\n } = props;\n\n return (\n <UdpTimelineItem\n dotShape='default'\n onItemClick={onClick}\n clickable\n statusLabel={status}\n >\n <UdpTimelineSeparator slot='separator'>\n <UdpTimelineConnector />\n <UdpTimelineDot color='primary' shape='default' size='medium'>\n </UdpTimelineDot>\n </UdpTimelineSeparator>\n <span slot='title'>{title}</span>\n <span slot='content'>{date}</span>\n <span slot='caption'>{description}</span>\n </UdpTimelineItem>\n );\n};\n","import React, { useEffect, useMemo } from 'react';\nimport { LinearProgress } from '@material-ui/core';\nimport { useAxiosMutate } from '../../../../../utilities/useAxiosMutate';\nimport { UdpTimeline } from '../../../../../UI/timeline/UdpTimeline';\nimport { EmptyStateDisplay } from '../../../../../UI';\nimport { useTranslation } from 'react-i18next';\nimport { TransactionTimelineItem } from './TransactionTimelineItem';\nimport { ConfigService } from '../../../../../configService';\nimport { formatDate } from '../../../../../UI/widgets/utils/dateUtils';\n\nexport const TransactionTimeline = (props) => {\n const { transactionId } = props;\n const { t } = useTranslation();\n\n const searchObj = useMemo(() => {\n return {\n eagerLoad: true,\n pageNumber: 0,\n pageSize: 100,\n filterElements: [\n {\n searchField: 'transactionId',\n searchValue: transactionId,\n searchOperator: '='\n }\n ],\n orderElements: [\n {\n sortColumn: 'createdOn',\n sortDirection: 'desc'\n }\n ],\n getAll: true\n };\n }, [transactionId]);\n\n const [\n { data: transactionHistory, loading: isLoading },\n fetchTransactionHistory\n ] = useAxiosMutate(\n ConfigService.productV1ApiUrl,\n `UdpTransactionHistory/search`,\n {\n method: 'post',\n data: searchObj\n }\n );\n\n useEffect(() => {\n fetchTransactionHistory();\n }, [fetchTransactionHistory]);\n\n return (\n <div>\n {isLoading ? (\n <div>\n <LinearProgress />\n </div>\n ) : transactionHistory?.pageList?.length > 0 ? (\n <UdpTimeline>\n {transactionHistory?.pageList?.map((item, index) => (\n <TransactionTimelineItem\n key={index}\n title={\n item?.udpTransactionHistoryUdpTransactionTypeTransactionAction\n ?.name ??\n item?.udpTransactionHistoryUdpTransactionEventType?.name\n }\n description={\n item?.changedByName ? `By ${item?.changedByName}` : null\n }\n date={\n item?.createdOn\n ? formatDate(item?.createdOn, 'dd/mm/yyyy')\n : null\n }\n status={item?.udpTransactionHistoryUdpTransactionTypeStatus?.name}\n />\n ))}\n </UdpTimeline>\n ) : (\n <div>\n <EmptyStateDisplay primaryText={t('No History')} />\n </div>\n )}\n </div>\n );\n};\n\nexport default TransactionTimeline;\n","import React from 'react';\nimport { ConfigService, UdpAttachmentItem } from 'udp-react-stencil-component-library';\nimport { useAxiosGet } from '../../../../../utilities';\n\nexport const TransactionAttachment = (props) => {\n const { attachment, isLastItem } = props;\n\n const [{ data: attachmentWithDownloadLink, loading: isLoading }] =\n useAxiosGet(\n ConfigService.productV1ApiUrl,\n `UdpTransactionAttachment/${attachment?.transactionAttachmentId}/udpDriveFile/download`,\n {},\n !!!attachment?.transactionAttachmentId\n );\n\n return (\n <UdpAttachmentItem\n loading={isLoading}\n fileName={attachment?.fileName}\n fileSize={attachment?.fileSize}\n fileExtension={attachment?.extension}\n uploadedBy={attachment?.updatedByName}\n uploadedDate={attachment?.lastUpdated}\n isLastItem={isLastItem}\n downloadUrl={attachmentWithDownloadLink?.link}\n />\n );\n};\n","import React from 'react';\nimport { AmbientCard } from '../../../../../UI/surfaces/cards/AmbientCard';\nimport { EmptyStateDisplay } from '../../../../../UI';\nimport { useTranslation } from 'react-i18next';\nimport { TransactionAttachment } from './TransactionAttachment';\nimport { LinearProgress } from '@material-ui/core';\n\nexport const TransactionAttachments = (props) => {\n const { transactionAttachments, isLoading } = props;\n const { t } = useTranslation();\n\n return (\n <div>\n {isLoading ? (\n <LinearProgress />\n ) : transactionAttachments?.pageList?.length > 0 ? (\n <AmbientCard fullWidth>\n {transactionAttachments.pageList.map((attachment, index) => (\n <TransactionAttachment\n key={index}\n attachment={attachment}\n isLastItem={index === transactionAttachments.pageList.length - 1}\n />\n ))}\n </AmbientCard>\n ) : (\n <div>\n <EmptyStateDisplay primaryText={t('No Attachments')} />\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { AmbientCard } from '../../../../../UI/surfaces/cards/AmbientCard';\nimport { Typography } from '../../../../../UI/dataDisplay/typography';\nimport { StatusChip } from '../../../../../UI/dataDisplay/status';\nimport { makeStyles } from '@material-ui/core';\nimport { Adornment } from '../../../../../UI';\nimport { getLocalizedDateTimeString } from '../../../../../UI/widgets/utils/dateUtils';\nimport { ContactIcon } from '@fluentui/react-icons';\n\nconst useStyles = makeStyles((theme) => ({\n titleContainer: {\n display: 'flex',\n gap: '8px',\n justifyContent: 'space-between',\n alignItems: 'center'\n },\n chipContainer: {\n display: 'flex',\n gap: theme.spacing(1),\n alignItems: 'center',\n marginTop: theme.spacing(1)\n },\n card: {\n width: '100%',\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: 'rgba(0, 0, 0, 0.04)'\n },\n padding: '8px 12px',\n border: '1px solid rgba(0, 0, 0, 0.08)'\n },\n captionText: {\n color: theme.palette.text.hint\n }\n}));\n\nexport const TransactionNote = (props) => {\n const { onClick, note } = props;\n const classes = useStyles();\n\n return (\n <div>\n <AmbientCard\n fullWidth\n adornment='info'\n noAdornment={false}\n customAdornment={<Adornment color={'info'} />}\n removeTopLayoutUnit\n removePadding\n lastChildBottomPadding={'0px'}\n cardContentHeight={'100%'}\n >\n <div className={classes.card} onClick={onClick}>\n <div className={classes.titleContainer}>\n <Typography variant='h6'>\n {note?.subject ?? 'Transaction Note'}\n </Typography>\n <Typography variant='caption' className={classes.captionText}>\n {getLocalizedDateTimeString(note?.createdOn)}\n </Typography>\n </div>\n <Typography variant='body1'>\n {note?.content ??\n 'This is a placeholder for the transaction note component.'}\n </Typography>\n\n <div className={classes.chipContainer}>\n <StatusChip\n label={note?.userDisplayName}\n color='default'\n variant='outline'\n icon={<ContactIcon />}\n />\n </div>\n </div>\n </AmbientCard>\n </div>\n );\n};\n","import React, { forwardRef, useCallback, useState } from 'react';\nimport { LinearProgress } from '../../../../../UI';\nimport { Form, Field } from '../../../../../utilities/form';\nimport { FluentTextField } from '../../../../../UI/inputs/textField/FluentTextField';\nimport { FluentTextFieldAutoComplete } from '../../../../../UI/inputs/textField/FluentTextFieldAutoComplete';\nimport { Typography } from '../../../../../UI/dataDisplay/typography';\nimport { apiMutate } from '../../../../../utilities/useAxiosMutate';\nimport { ConfigService } from '../../../../../configService';\nimport { useAuthedUser } from '../../../../../utilities/auth';\nimport { useHandleAxiosSnackbar } from '../../../../../utilities';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme) => ({\n loading: {\n marginBottom: theme.spacing(1)\n }\n}));\n\nconst TransactionNoteFormComponent = (props, ref) => {\n const {\n initialValues,\n viewOnly,\n businessObjectKey,\n closeSideSheet,\n noteTypes,\n fetchNoteTypesLoading\n } = props;\n const [isLoading, setIsLoading] = useState(false);\n const user = useAuthedUser();\n const { handleSuccessSnackbar, handleErrorSnackbar } =\n useHandleAxiosSnackbar();\n const { t } = useTranslation();\n const classes = useStyles();\n\n // TODO: create a new api to include both\n const addTransactionNote = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpNote`,\n {\n method: 'post'\n },\n data\n ),\n []\n );\n\n const addNoteFiledFor = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpNoteFiledFor`,\n {\n method: 'post'\n },\n data\n ),\n []\n );\n\n const handleSubmitForm = useCallback(\n async (values) => {\n setIsLoading(true);\n const formattedValues = {\n typeCode: values?.noteType?.code,\n subject: values?.subject,\n content: values?.content,\n unityUserID: user?.id,\n userDisplayName: user?.name ?? ''\n };\n\n await addTransactionNote({\n data: formattedValues\n })\n .then(async (res) => {\n console.log('Transaction Note response: ', { res });\n if (res?.data?.id) {\n await addNoteFiledFor({\n data: {\n entityBusinessKey: businessObjectKey,\n noteId: res?.data?.id\n }\n }).then(() => {\n handleSuccessSnackbar(\n t('Transaction note has been added successfully.')\n );\n if (closeSideSheet) {\n closeSideSheet();\n }\n });\n }\n })\n .catch((res) => {\n handleErrorSnackbar(res, t('Unable to add transaction note.'));\n });\n setIsLoading(false);\n },\n [\n addNoteFiledFor,\n addTransactionNote,\n businessObjectKey,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n t,\n user,\n closeSideSheet\n ]\n );\n\n return (\n <div>\n {fetchNoteTypesLoading ? (\n <div>\n <LinearProgress />\n </div>\n ) : (\n <div>\n {isLoading && (\n <div className={classes.loading}>\n <LinearProgress />\n </div>\n )}\n <Form\n ref={ref}\n onSubmit={handleSubmitForm}\n initialValues={initialValues}\n id={`transactionNoteForm-${businessObjectKey}`}\n render={({ submitting }) => (\n <>\n <Field\n component={FluentTextFieldAutoComplete}\n id='noteType'\n name='noteType'\n optionKey='name'\n disableClearable\n label={t('Type')}\n options={noteTypes ?? []}\n disabled={viewOnly || submitting}\n onChange={() => {}}\n required\n />\n\n <Field\n component={FluentTextField}\n id='subject'\n name='subject'\n label={t('Subject')}\n disabled={viewOnly || submitting}\n onChange={() => {}}\n required\n />\n <Field\n component={FluentTextField}\n id='content'\n name='content'\n label={t('Details')}\n onChange={() => {}}\n multiline\n rows={5}\n maxRows={10}\n disabled={viewOnly || submitting}\n required\n />\n {viewOnly && (\n <Typography variant='caption'>\n {t(\n 'Viewing note details. Use the Add Note action to create a new entry.'\n )}\n </Typography>\n )}\n </>\n )}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport const TransactionNoteForm = forwardRef(TransactionNoteFormComponent);\n","import React, { useCallback, useState, useMemo, useEffect } from 'react';\nimport { ConfigService } from '../../../../../configService';\nimport {\n EmptyStateDisplay,\n LinearProgress,\n SideSheet\n} from '../../../../../UI';\nimport { TransactionNote } from './TransactionNote';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core';\nimport {\n apiMutate,\n useAxiosMutate\n} from '../../../../../utilities/useAxiosMutate';\nimport { TransactionNoteForm } from './TransactionNoteForm';\n\nconst useStyles = makeStyles((theme) => ({\n notes: {\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1)\n }\n}));\n\nexport const TransactionNotes = (props) => {\n const {\n businessObjectKey,\n refreshNotes,\n setRefreshNotes,\n noteTypes,\n fetchNoteTypesLoading\n } = props;\n const [openSideSheet, setOpenSideSheet] = useState(false);\n const [selectedNote, setSelectedNote] = useState(null);\n const [noteList, setNoteList] = useState([]);\n const classes = useStyles();\n const { t } = useTranslation();\n const [isLoading, setIsLoading] = useState(false);\n\n const noteFileForSearchObj = useMemo(() => {\n return {\n eagerLoad: true,\n pageNumber: 0,\n pageSize: 100,\n filterElements: [\n {\n searchField: 'entityBusinessKey',\n searchValue: businessObjectKey,\n searchOperator: '='\n }\n ],\n getAll: true\n };\n }, [businessObjectKey]);\n\n const [\n { data: noteFiledFor, loading: fetchNoteFiledForLoading },\n fetchNoteFiledFor\n ] = useAxiosMutate(ConfigService.productV1ApiUrl, `UdpNoteFiledFor/search`, {\n method: 'post',\n data: noteFileForSearchObj\n });\n\n const handleViewNote = useCallback((note) => {\n setSelectedNote(note);\n setOpenSideSheet(true);\n }, []);\n\n const handleCloseSideSheet = useCallback(() => {\n setOpenSideSheet(false);\n setSelectedNote(null);\n }, []);\n\n useEffect(() => {\n fetchNoteFiledFor();\n }, [fetchNoteFiledFor]);\n\n useEffect(() => {\n if (refreshNotes) {\n fetchNoteFiledFor();\n // eslint-disable-next-line react-you-might-not-need-an-effect/no-pass-data-to-parent\n setRefreshNotes(false);\n }\n }, [fetchNoteFiledFor, refreshNotes, setRefreshNotes]);\n\n useEffect(() => {\n if (!fetchNoteFiledForLoading && noteFiledFor?.pageList?.length > 0) {\n // eslint-disable-next-line react-you-might-not-need-an-effect/no-pass-data-to-parent\n const noteIds = noteFiledFor?.pageList\n ?.map((obj) => obj?.noteID)\n .join(',');\n\n const searchObj = {\n eagerLoad: true,\n pageNumber: 0,\n pageSize: 100,\n filterElements: [\n {\n searchField: 'iD',\n searchValue: noteIds,\n searchOperator: 'IN'\n }\n ],\n getAll: true\n };\n\n setIsLoading(true);\n apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpNote/search`,\n {\n method: 'post',\n data: searchObj\n },\n {}\n )\n .then((resp) => {\n if (resp && resp.data) {\n setNoteList(resp.data?.pageList);\n } else {\n setNoteList([]);\n }\n })\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n setNoteList([]);\n }\n }, [fetchNoteFiledForLoading, noteFiledFor, setIsLoading]);\n\n return (\n <div>\n <div className={classes.notes}>\n {isLoading || fetchNoteFiledForLoading ? (\n <div>\n <LinearProgress />\n </div>\n ) : noteList?.length > 0 ? (\n noteList.map((note, index) => (\n <TransactionNote\n key={index}\n note={note}\n onClick={() => handleViewNote(note)}\n />\n ))\n ) : (\n <div>\n <EmptyStateDisplay primaryText='No Notes' />\n </div>\n )}\n </div>\n\n <SideSheet\n title={t('View Note')}\n width={600}\n open={openSideSheet}\n onClose={handleCloseSideSheet}\n >\n <div>\n <TransactionNoteForm\n initialValues={selectedNote}\n businessObjectKey={businessObjectKey}\n viewOnly\n noteTypes={noteTypes}\n fetchNoteTypeLoading={fetchNoteTypesLoading}\n />\n </div>\n </SideSheet>\n </div>\n );\n};\n","export enum TRANSACTION_TAB {\n DETAILS = 0,\n HISTORY,\n ATTACHMENTS,\n NOTES\n}\n","import React from 'react';\nimport { FluentButton } from '../../../../UI/inputs/buttons';\nimport { useTranslation } from 'react-i18next';\nimport './EditTransactionDetailsFooterItem.css';\nimport { useTransactionEngine } from '../../../../utilities/transactions/useTransactionEngine';\n\nconst EditTransactionDetailsFooterItem = (props) => {\n const {\n transactionTypeId,\n transactionIsClosed,\n handleOnCancel,\n handleOnSaveChanges\n } = props;\n const { hasRevisions } = useTransactionEngine(transactionTypeId);\n const { t } = useTranslation();\n return (\n <div className='transaction-details-footer-item'>\n <FluentButton color='primary' onClick={handleOnCancel}>\n {t('Cancel')}\n </FluentButton>\n {!transactionIsClosed && (\n <FluentButton\n variant='contained'\n color='primary'\n onClick={handleOnSaveChanges}\n >\n {t('Save Changes')}\n </FluentButton>\n )}\n </div>\n );\n};\n\nexport default EditTransactionDetailsFooterItem;\n","import React, { useEffect, useState } from 'react';\nimport { Field } from '../../../../utilities/form';\nimport {\n FluentTextField,\n FluentTextFieldAutoComplete\n} from '../../../../UI/inputs/textField';\nimport { FluentDatePicker } from '../../../../UI/inputs/pickers';\nimport { FormControlLabel, Switch } from '@material-ui/core';\nimport { useTranslation } from 'react-i18next';\n\nconst EditTransactionDetailsFormFields = (props) => {\n const { transaction, fieldAttributes } = props;\n const { t } = useTranslation();\n\n const fieldComponentMap = {\n string: FluentTextField,\n datetime: FluentDatePicker,\n number: FluentTextField,\n bool: Switch,\n array: FluentTextFieldAutoComplete\n };\n\n const getEntityName = (optionValuesArr, entityId) => {\n const matchingEntity = optionValuesArr?.find(\n (entity) => entity.id == entityId\n );\n return matchingEntity?.name;\n };\n const numberDataTypes = ['int', 'short', 'long'];\n const dataTypeComponentMap = (transaction, attribute) => {\n let formattedSanitizedName =\n attribute.sanitizedName.slice(0, 1).toLowerCase() +\n attribute.sanitizedName.slice(1);\n let formattedDataType = attribute.dataType.includes('?')\n ? attribute.dataType.split('?')[0].toLowerCase()\n : attribute.dataType.toLowerCase();\n formattedDataType = numberDataTypes.includes(formattedDataType)\n ? 'number'\n : formattedDataType;\n if (attribute.sanitizedName.toLowerCase() == 'id') {\n formattedSanitizedName = formattedSanitizedName.toLowerCase();\n }\n const isAsscoiationLabel =\n attribute.properties.maintainenceConfig.associationLabel;\n let fieldComponentProps = null;\n switch (formattedDataType) {\n case 'number':\n fieldComponentProps = {\n initialValue:\n transaction.entityBusinessObject[formattedSanitizedName],\n type: 'number',\n InputProps: { inputProps: { min: 0 } }\n };\n break;\n case 'datetime':\n fieldComponentProps = {\n initialValue: transaction.entityBusinessObject[formattedSanitizedName]\n };\n break;\n case 'array':\n fieldComponentProps = {\n options: attribute?.options.map((option) => option.id),\n optionLabelDisplayFunction: (option) =>\n getEntityName(attribute?.options, option),\n initialValue: transaction.entityBusinessObject[formattedSanitizedName]\n };\n\n break;\n case 'bool':\n fieldComponentProps = {\n type: 'checkbox',\n initialValue: false\n };\n break;\n default:\n fieldComponentProps = {\n initialValue: transaction.entityBusinessObject[formattedSanitizedName]\n };\n }\n let formLabel = isAsscoiationLabel\n ? attribute.domainName + ' Name'\n : attribute.sanitizedName;\n let fieldComponent = (\n <Field\n component={fieldComponentMap[formattedDataType] ?? FluentTextField}\n label={t(formLabel)}\n name={formattedSanitizedName}\n fullWidth\n variant='outlined'\n margin='normal'\n disabled={attribute.properties.isReadOnly}\n required={\n !attribute.dataType.includes('?') && formattedDataType != 'bool'\n }\n {...fieldComponentProps}\n />\n );\n return (\n <>\n {attribute.dataType == 'bool' ? (\n <FormControlLabel control={fieldComponent} label={formLabel} />\n ) : (\n fieldComponent\n )}\n </>\n );\n };\n\n return (\n <>\n {fieldAttributes.map((attribute) => {\n return <>{dataTypeComponentMap(transaction, attribute)}</>;\n })}\n </>\n );\n};\n\nexport default EditTransactionDetailsFormFields;\n","import React, { useEffect, useState, useCallback, useMemo } from 'react';\nimport { apiMutate, useAxiosMutate } from '../../../../utilities';\nimport { getSanitizedName } from '../../../../utilities/entities/entityUtilities';\nimport { Form } from '../../../../utilities/form';\nimport { CardinalityTypeEnums } from '../../../../enums';\nimport DetailsFormFields from './EditTransactionDetailsFormFields';\nimport { AmbientCard } from '../../../../UI/surfaces/cards/AmbientCard';\nimport { ConfigService } from 'udp-react-stencil-component-library';\nimport { LinearProgress } from '@material-ui/core';\nimport { useHandleAxiosSnackbar } from '../../../../utilities/apiHelpers';\nimport { useTranslation } from 'react-i18next';\n\nconst EditTransactionDetailsForm = (props) => {\n const { transaction, formRef } = props;\n const [entityAttributes, setEntityAttributes] = useState(null);\n\n const fullyQualifiedName = transaction.entityBusinessKey?.split('|')[0];\n\n const { handleErrorSnackbar, handleSuccessSnackbar } =\n useHandleAxiosSnackbar();\n const { t } = useTranslation();\n\n const [{ data: udpObjectInfo }, fetchUdpObjectInfo] = useAxiosMutate(\n `${process.env.REACT_APP_PRODUCT_API_BASE}`,\n `UdpObjectInfo/search`,\n {\n method: 'post',\n data: {\n eagerLoad: true,\n pageNumber: 1,\n pageSize: 50,\n filterElements: [\n {\n searchField: 'sanitizedName',\n searchOperator: '=',\n searchValue: getSanitizedName(fullyQualifiedName)\n }\n ]\n }\n }\n );\n\n const updateFieldInfo = (\n tableEntries,\n filteredEntityFieldInfo,\n fkFieldInfo,\n fkDomainName\n ) => {\n let updatedFields = {\n dataType: 'array',\n options: tableEntries,\n domainName: fkDomainName\n };\n const updatedFieldInfo = { ...fkFieldInfo, ...updatedFields };\n const index = filteredEntityFieldInfo.findIndex(\n (f) => f.id === fkFieldInfo.id\n );\n if (index != -1) {\n filteredEntityFieldInfo[index] = updatedFieldInfo;\n }\n };\n\n const filterAdjustEntityAttributes = async (entityObjectInfo) => {\n const entityFieldInfo = entityObjectInfo.objectFieldInfo;\n let filteredEntityFieldInfo = entityFieldInfo.filter(\n (fieldInfo) => fieldInfo.properties.isDefaultVisible\n );\n\n await Promise.all(\n entityObjectInfo.childObjectAssociations.map(async (coa) => {\n let fkFieldInfo = filteredEntityFieldInfo.find(\n (fieldInfo) => fieldInfo.id == coa.sourceFieldInfoID\n );\n if (\n fkFieldInfo?.id == coa.sourceFieldInfoID &&\n coa.cardinality != CardinalityTypeEnums.Many_To_Many\n ) {\n const fkInfoResp = await apiMutate(\n `${process.env.REACT_APP_PRODUCT_API_BASE}`,\n `UdpObjectInfo/${coa.targetObjectID}`,\n { method: 'get' }\n );\n let fkDomainName = fkInfoResp.data.sanitizedName;\n const getTableEntriesResp = await apiMutate(\n `${process.env.REACT_APP_PRODUCT_API_BASE}`,\n `${fkDomainName}`,\n { method: 'get' }\n );\n if (getTableEntriesResp.data.length > 0) {\n updateFieldInfo(\n getTableEntriesResp.data,\n filteredEntityFieldInfo,\n fkFieldInfo,\n fkDomainName\n );\n }\n }\n })\n );\n return filteredEntityFieldInfo;\n };\n\n useEffect(() => {\n fetchUdpObjectInfo().then((udpObjectInfoResp) => {\n filterAdjustEntityAttributes(udpObjectInfoResp.data.pageList[0]).then(\n (filteredResp) => {\n setEntityAttributes(filteredResp);\n }\n );\n });\n }, []);\n\n const executeSaveChanges = useCallback(\n async (data) =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `udpTransaction/${transaction?.transactionId}/saveChanges`,\n {\n method: 'put'\n },\n data\n ),\n [transaction.transactionId]\n );\n\n const onSubmit = useCallback(\n async (values) => {\n const saveChangesResponse = await executeSaveChanges({ data: values });\n if (saveChangesResponse?.status === 200) {\n handleSuccessSnackbar(t('Transaction has been saved successfully'));\n } else {\n handleErrorSnackbar(\n new Error(t(`Error saving Transaction. Please try again later.`))\n );\n }\n },\n [executeSaveChanges, handleSuccessSnackbar, handleErrorSnackbar, t]\n );\n\n const fieldAttributes = useMemo(() => {\n if (!entityAttributes) {\n return [];\n }\n return entityAttributes;\n }, [entityAttributes]);\n\n return fieldAttributes.length == 0 ? (\n <LinearProgress />\n ) : (\n <AmbientCard>\n <Form onSubmit={onSubmit} ref={formRef}>\n <DetailsFormFields\n transaction={transaction}\n fieldAttributes={fieldAttributes}\n />\n </Form>\n </AmbientCard>\n );\n};\n\nexport default EditTransactionDetailsForm;\n","import React, {\n useState,\n useRef,\n useCallback,\n useMemo,\n useEffect\n} from 'react';\n\nimport { Divider, SideSheet, UdpTabPanel } from '../../../../UI';\nimport { UdpTabs } from '../../../../UI/navigation/tabs/UdpTabs';\nimport { useTranslation } from 'react-i18next';\nimport {\n allowedExtensions,\n MAX_FILE_SIZE_MB\n} from '../../../../uploader/utils/allowedFileProperties';\n\nimport './EditTransaction.css';\nimport EditTransactionHeaderItem from './EditTransactionHeaderItem';\nimport { FluentButton } from '../../../../UI/inputs/buttons';\nimport WorkflowActions from './WorkflowActions';\nimport { TransactionTimeline } from '../components/transactionHistory/TransactionTimeline';\nimport { TransactionAttachments } from '../components/transactionAttachment/TransactionAttachments';\nimport { TransactionNotes } from '../components/transactionNote/TransactionNotes';\nimport { TRANSACTION_TAB } from './enum';\nimport { TransactionUiActionTypeEnums } from '../../../../enums';\nimport UdpTransactionCustomPage from '../components/UdpTransactionCustomPage';\nimport EditTransactionDetailsFooterItem from '../components/EditTransactionDetailsFooterItem';\nimport { ConfigService } from '../../../../configService';\nimport { useTransactionEngine } from '../../../../utilities/transactions/useTransactionEngine';\nimport EditTransactionDetailsForm from '../components/EditTransactionDetailsForm';\nimport { Attachments } from '../../../../uploader';\nimport { apiMutate, useAxiosGet, useAxiosMutate } from '../../../../utilities';\nimport { useSnackbar } from 'notistack';\nimport { TransactionNoteForm } from '../components/transactionNote/TransactionNoteForm';\nimport { FluentIcon } from '../../../../utilities/iconLibrary';\nimport { AddIcon } from '@fluentui/react-icons';\n\nconst EditTransaction = (props) => {\n const {\n transaction: initialTransaction,\n transactionTypeId,\n transactionIsClosed,\n openInnerSidesheetState,\n setOpenInnerSidesheetState,\n refreshGridData,\n closeSideSheet,\n setSidesheetLoading\n } = props;\n const { t } = useTranslation();\n\n const [selectedTab, setSelectedTab] = useState(0);\n const [transaction, setTransaction] = useState(initialTransaction);\n const [transactionAttachments, setTransactionAttachments] = useState([]);\n const [filePreview, setFilePreview] = useState(false);\n const [currentAttachments, setCurrentAttachments] = useState([]);\n const [attachmentType, setAttachmentType] = useState(null);\n const [attachmentProgress, setAttachmentProgress] = useState(false);\n const [refreshNotes, setRefreshNotes] = useState(false);\n\n const [{ data: noteTypes, loading: fetchNoteTypesLoading }] = useAxiosGet(\n ConfigService.productV1ApiUrl,\n `UdpNoteType`,\n {}\n );\n\n const { getUiActionRenderPageId, transactionTypeStatusColorsMap } =\n useTransactionEngine(transactionTypeId);\n\n const refetchTransaction = useCallback(async () => {\n setSidesheetLoading(true);\n const response = await apiMutate(\n ConfigService.productV1ApiUrl,\n `udpTransaction/${initialTransaction.transactionId}/full`,\n {\n method: 'get'\n }\n );\n if (response?.status === 200) {\n setTransaction(response.data);\n }\n setSidesheetLoading(false);\n }, [initialTransaction.transactionId, setSidesheetLoading]);\n\n const formRef = useRef(null);\n const transactionNoteFormRef = useRef(null);\n\n const handleNoteFormSubmit = useCallback(() => {\n transactionNoteFormRef.current?.handleSubmit?.();\n }, []);\n\n const handleNoteFormReset = useCallback(() => {\n transactionNoteFormRef.current?.form?.reset?.();\n }, []);\n\n const handleSaveChanges = useCallback(async () => {\n setSidesheetLoading(true);\n await formRef.current?.form?.submit();\n setSidesheetLoading(false);\n refreshGridData();\n }, [refreshGridData, setSidesheetLoading, formRef]);\n\n const [\n {\n data: transactionAttachmentsData,\n loading: fetchTransactionAttachmentsLoading\n },\n fetchTransactionAttachments\n ] = useAxiosMutate(\n ConfigService.productV1ApiUrl,\n `UdpTransactionAttachment/search`,\n {\n method: 'post',\n data: {\n pageSize: 50,\n filterElements: [\n {\n searchField: 'TransactionId',\n searchValue: transaction.transactionId,\n searchOperator: '='\n },\n {\n searchField: 'IsDeleted',\n searchValue: 0,\n searchOperator: '='\n }\n ]\n }\n }\n );\n\n const [{ data: transactionAttachmentTypes }, fetchTransactionAttachmentType] =\n useAxiosMutate(\n process.env.REACT_APP_PRODUCT_API_BASE,\n `UdpTransactionAttachmentType/search`,\n {\n method: 'post',\n data: {\n pageSize: 50,\n filterElements: [\n {\n searchField: 'TransactionTypeId',\n searchValue: transaction.transactionTypeId,\n searchOperator: '='\n }\n ]\n }\n }\n );\n\n const { enqueueSnackbar } = useSnackbar();\n\n const getAttachments = useCallback(async () => {\n try {\n const response = await fetchTransactionAttachments();\n setTransactionAttachments(response.data.pageList);\n } catch (error) {\n console.error('Failed to fetch attachments:', error);\n enqueueSnackbar(\n 'Attachment fetch failed: We encountered a system error. Please try again or contact support if the issue persists.',\n {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' }\n }\n );\n }\n }, [fetchTransactionAttachments, enqueueSnackbar]);\n\n const tabNames = [t('Details'), t('History'), t('Attachments'), t('Notes')];\n\n const headerItemInfo = useMemo(() => {\n const items = [\n {\n label: 'Status',\n statusChip: {\n label: transaction.udpTransactionUdpTransactionTypeStatus?.name,\n status:\n transactionTypeStatusColorsMap[\n transaction.udpTransactionUdpTransactionTypeStatus?.name\n ] || 'default'\n }\n }\n ];\n if (transaction?.currentRevisionNo) {\n items.push({\n label: 'Revision',\n value: `${transaction.currentRevisionNo}`\n });\n }\n return items;\n }, [transaction, transactionTypeStatusColorsMap]);\n\n const handleUploadFiles = useCallback(async () => {\n if (!currentAttachments.length) {\n throw new Error('No files added for upload');\n }\n const formData = new FormData();\n currentAttachments.forEach((file) => formData.append('files', file));\n formData.append(\n 'attachmentTypeId',\n attachmentType.transactionAttachmentTypeId\n );\n\n try {\n setAttachmentProgress(true);\n await apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpTransactionAttachment/transaction/${transaction.transactionId}/upload`,\n {\n method: 'post',\n headers: {\n transactionId: transaction.transactionId,\n attachmentTypeId: attachmentType.transactionAttachmentTypeId\n },\n data: formData\n }\n );\n\n await getAttachments();\n setCurrentAttachments([]);\n setOpenInnerSidesheetState({ attachments: false });\n\n enqueueSnackbar('Files uploaded successfully', {\n variant: 'success',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n });\n } catch (error) {\n enqueueSnackbar(\n `File upload failed: We encountered a system error. Please try again or contact support if the issue persists.`,\n {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }\n );\n throw error;\n } finally {\n setAttachmentProgress(false);\n }\n }, [\n attachmentType,\n currentAttachments,\n enqueueSnackbar,\n getAttachments,\n setOpenInnerSidesheetState,\n transaction.transactionId\n ]);\n\n const innerSidesheetList = useMemo(\n () => [\n {\n open: openInnerSidesheetState.workflowAction,\n closeSheet: () =>\n setOpenInnerSidesheetState({ workflowActions: false }),\n title: 'Available Workflow Actions',\n children: (\n <WorkflowActions\n transaction={transaction}\n closeSideSheet={() => {\n setOpenInnerSidesheetState({\n workflowActions: false\n });\n refetchTransaction();\n }}\n refreshGridData={refreshGridData}\n />\n )\n },\n {\n open: openInnerSidesheetState.attachments,\n closeSheet: () => setOpenInnerSidesheetState({ attachments: false }),\n title: 'Add Attachment',\n buttonLabel: 'Save',\n buttonOneDisabled: !attachmentType || currentAttachments.length <= 0,\n onSubmit: () => {\n handleUploadFiles()\n .then(() => refreshGridData())\n .catch((error) => console.error(error));\n },\n children: (\n <Attachments\n attachmentTypes={transactionAttachmentTypes}\n attachmentType={attachmentType}\n setAttachmentType={setAttachmentType}\n attachmentProgress={attachmentProgress}\n setAttachmentProgress={setAttachmentProgress}\n currentAttachments={currentAttachments}\n setCurrentAttachments={setCurrentAttachments}\n transaction={transaction}\n previousAttachments={transactionAttachments}\n setPreviousAttachments={setTransactionAttachments}\n MAX_FILE_SIZE_MB={MAX_FILE_SIZE_MB}\n allowedExtensions={allowedExtensions}\n filePreview={filePreview}\n setFilePreview={setFilePreview}\n />\n )\n },\n {\n open: openInnerSidesheetState.notes,\n closeSheet: () => setOpenInnerSidesheetState({ notes: false }),\n title: 'Add Note',\n buttonLabel: 'Save note',\n buttonTwoLabel: 'Clear',\n buttonTwoAction: handleNoteFormReset,\n onSubmit: handleNoteFormSubmit,\n children: (\n <TransactionNoteForm\n ref={transactionNoteFormRef}\n businessObjectKey={transaction?.businessObjectKey}\n closeSideSheet={() => {\n setOpenInnerSidesheetState({ notes: false });\n setRefreshNotes(true);\n }}\n noteTypes={noteTypes}\n fetchNoteTypesLoading={fetchNoteTypesLoading}\n />\n )\n }\n ],\n [\n openInnerSidesheetState.workflowAction,\n openInnerSidesheetState.attachments,\n openInnerSidesheetState.notes,\n transaction,\n refreshGridData,\n attachmentType,\n currentAttachments,\n transactionAttachmentTypes,\n attachmentProgress,\n transactionAttachments,\n filePreview,\n handleNoteFormReset,\n handleNoteFormSubmit,\n noteTypes,\n fetchNoteTypesLoading,\n setOpenInnerSidesheetState,\n refetchTransaction,\n handleUploadFiles\n ]\n );\n\n const transactionDetailPageId = useMemo(() => {\n return getUiActionRenderPageId(\n TransactionUiActionTypeEnums.Render_Transaction_Details_Page\n );\n }, [getUiActionRenderPageId]);\n\n useEffect(() => {\n (async () => {\n if (!transactionAttachmentsData) {\n getAttachments();\n }\n })();\n }, [transactionAttachmentsData, getAttachments]);\n\n useEffect(() => {\n if (!transactionAttachmentTypes) {\n setAttachmentProgress(true);\n fetchTransactionAttachmentType().then(() => {\n setAttachmentProgress(false);\n });\n }\n }, [fetchTransactionAttachmentType, transactionAttachmentTypes]);\n\n return (\n <>\n <div className='edit-transaction-sidesheet'>\n <div className={`edit-transaction-sidesheet-header 'is-sticky'`}>\n <div className='edit-transaction-sidesheet-header-title'></div>\n <div className='edit-transaction-sidesheet-header-content'>\n <div className='edit-transaction-sidesheet-header-items'>\n {headerItemInfo.map((headerItem) => {\n return (\n <EditTransactionHeaderItem\n key={headerItem.label}\n label={headerItem.label}\n statusChip={headerItem.statusChip}\n value={headerItem.value}\n />\n );\n })}\n </div>\n <div className='edit-transaction-sidesheet-header-buttons'>\n <FluentButton\n color='primary'\n onClick={() => {\n setOpenInnerSidesheetState({ attachments: true });\n }}\n >\n <FluentIcon\n component={AddIcon}\n className='edit-transaction-header-button-icon'\n size='small'\n />\n {'Attachment'}\n </FluentButton>\n <FluentButton\n color='primary'\n onClick={() => {\n setOpenInnerSidesheetState({ notes: true });\n }}\n >\n <FluentIcon\n component={AddIcon}\n className='edit-transaction-header-button-icon'\n size='small'\n />\n {'Note'}\n </FluentButton>\n </div>\n <div className='divider'>\n <Divider />\n </div>\n <div className='edit-transaction-sidesheet-tabs'>\n <UdpTabs\n value={selectedTab}\n onChange={(value, tabIndex) => {\n setSelectedTab(tabIndex);\n }}\n tabList={tabNames.map((tabName) => ({ label: tabName }))}\n buttonWidth={'100%'}\n />\n </div>\n </div>\n <div className='divider'>\n <Divider />\n </div>\n </div>\n\n <div className='edit-transaction-sidesheet-body'>\n <div>\n <UdpTabPanel value={selectedTab} index={TRANSACTION_TAB.DETAILS}>\n {transactionDetailPageId ? (\n <UdpTransactionCustomPage\n transactionTypeId={transactionTypeId}\n transactionUiActionType={\n TransactionUiActionTypeEnums.Render_Transaction_Details_Page\n }\n formRef={formRef}\n transaction={transaction}\n />\n ) : (\n <EditTransactionDetailsForm\n transaction={transaction}\n formRef={formRef}\n />\n )}\n </UdpTabPanel>\n\n <UdpTabPanel value={selectedTab} index={TRANSACTION_TAB.HISTORY}>\n <TransactionTimeline transactionId={transaction?.transactionId} />\n </UdpTabPanel>\n <UdpTabPanel\n value={selectedTab}\n index={TRANSACTION_TAB.ATTACHMENTS}\n >\n <TransactionAttachments\n transactionAttachments={transactionAttachmentsData}\n isLoading={fetchTransactionAttachmentsLoading}\n />\n </UdpTabPanel>\n <UdpTabPanel value={selectedTab} index={TRANSACTION_TAB.NOTES}>\n <TransactionNotes\n businessObjectKey={transaction?.businessObjectKey}\n refreshNotes={refreshNotes}\n setRefreshNotes={setRefreshNotes}\n noteTypes={noteTypes}\n fetchNoteTypeLoading={fetchNoteTypesLoading}\n />\n </UdpTabPanel>\n </div>\n </div>\n {selectedTab == TRANSACTION_TAB.DETAILS && (\n <div className='edit-transaction-sidesheet-footer'>\n <EditTransactionDetailsFooterItem\n transactionTypeId={transactionTypeId}\n transactionIsClosed={transactionIsClosed}\n handleOnCancel={closeSideSheet}\n handleOnSaveChanges={handleSaveChanges}\n />\n </div>\n )}\n </div>\n\n {openInnerSidesheetState &&\n // eslint-disable-next-line react-hooks/refs\n innerSidesheetList.map((item) => {\n return (\n <SideSheet\n key={item.title}\n open={item.open}\n width={600}\n title={item.title}\n onClose={item.closeSheet}\n buttonLabel={item?.buttonLabel}\n buttonOneDisabled={item?.buttonOneDisabled}\n buttonTwoLabel={item?.buttonTwoLabel}\n buttonTwoAction={item?.buttonTwoAction}\n onSubmit={item?.onSubmit}\n color='primary'\n >\n {item.children}\n </SideSheet>\n );\n })}\n </>\n );\n};\n\nexport default EditTransaction;\n","import React, { useState, useMemo, useRef, useCallback } from 'react';\nimport ViewTransaction from './sidesheets/ViewTransaction';\nimport AttachmentTransaction from './sidesheets/AttachmentTransaction';\nimport { LinearProgress, SideSheet } from '../../../UI';\nimport WorkflowActions from './sidesheets/WorkflowActions';\nimport EditTransaction from './sidesheets/EditTransaction';\nimport { useTransactionEngine } from '../../../utilities/transactions/useTransactionEngine';\nimport { TransactionUiActionTypeEnums } from '../../../enums';\nimport UdpTransactionCustomPage from './components/UdpTransactionCustomPage';\nimport { apiMutate } from '../../../utilities';\nimport { ConfigService } from '../../../configService';\nimport { useHandleAxiosSnackbar } from '../../../utilities';\nimport { useTranslation } from 'react-i18next';\nimport { FluentDialog } from '../../../UI';\nimport { PageContainer } from '../../../page/PageContainer';\n\nconst UdpTransactionSidesheet = (props) => {\n const {\n openStates,\n handleSidesheet,\n handleAttachmentTransaction,\n transaction,\n transactionTypeId,\n domainName,\n refreshGridData\n } = props;\n\n const [sidesheetLoading, setSidesheetLoading] = useState(false);\n const [closingTransactionLoading, setClosingTransactionLoading] =\n useState(false);\n const [\n editTransactionopenInnerSidesheetState,\n setEditTransactionOpenInnerSidesheetState\n ] = useState({\n attachments: false,\n workflowActions: false,\n notes: false\n });\n const [dialogOpen, setDialogOpen] = useState(false);\n\n const { handleSuccessSnackbar, handleErrorSnackbar } =\n useHandleAxiosSnackbar();\n\n const {\n hasClosedStatus,\n checkIfTransactionIsClosed,\n getTransactionTypeLabel,\n getUiActionRenderPageId\n } = useTransactionEngine(transactionTypeId);\n\n const { t } = useTranslation();\n const formRef = useRef(null);\n const attachmentRef = useRef();\n const sidesheetWidth = openStates?.width ?? 800;\n const transactionTypeEntry = transaction?.entityBusinessObject;\n\n const handleDialogClose = () => {\n setDialogOpen(false);\n };\n\n const executeCloseTransaction = useCallback(async () => {\n // setSidesheetLoading(true);\n const response = await apiMutate(\n ConfigService.productV1ApiUrl,\n `udpTransaction/${transaction?.transactionId}/closeTransaction`,\n {\n method: 'post'\n }\n );\n // setSidesheetLoading(false);\n if (response?.status === 200) {\n handleSidesheet('edit', false);\n refreshGridData();\n handleSuccessSnackbar(t(`Transaction has been closed successfully`));\n } else {\n handleErrorSnackbar(\n new Error(t(`Error closing Transaction. Please try again later.`))\n );\n }\n }, [\n transaction,\n refreshGridData,\n handleSidesheet,\n handleSuccessSnackbar,\n handleErrorSnackbar,\n t\n ]);\n\n const handleConfirmCloseTransactionDialog = useCallback(async () => {\n try {\n setClosingTransactionLoading(true);\n await executeCloseTransaction();\n } catch (error) {\n handleErrorSnackbar(error);\n } finally {\n setClosingTransactionLoading(false);\n handleDialogClose();\n }\n }, [executeCloseTransaction, handleErrorSnackbar]);\n\n const formattedBusinesskey = transactionTypeEntry?.businessObjectKey\n ?.split('|')\n ?.pop();\n\n const handleTransactionCreation = useCallback(async () => {\n setSidesheetLoading(true);\n await formRef.current?.form?.submit();\n setSidesheetLoading(false);\n handleSidesheet('add', false);\n refreshGridData();\n }, [handleSidesheet, refreshGridData, formRef]);\n\n const handleCreateRevision = useCallback(async () => {\n setSidesheetLoading(true);\n formRef.current?.form?.submit();\n setSidesheetLoading(false);\n handleSidesheet('createRevision', false);\n refreshGridData();\n }, [handleSidesheet, refreshGridData, formRef]);\n\n const pdfViewPageId = useMemo(() => {\n return getUiActionRenderPageId(\n TransactionUiActionTypeEnums.Render_View_Pdf_Page\n );\n }, [getUiActionRenderPageId]);\n\n const viewTransactionPage = useMemo(() => {\n if (pdfViewPageId) {\n return (\n <PageContainer pageId={pdfViewPageId} widgetParams={{ transaction }} />\n );\n } else {\n return <ViewTransaction transaction={transaction} />;\n }\n }, [transaction, pdfViewPageId]);\n\n const transactionIsClosed = useMemo(() => {\n return checkIfTransactionIsClosed(transaction);\n }, [checkIfTransactionIsClosed, transaction]);\n\n const transactionLabel = useMemo(() => {\n return getTransactionTypeLabel(transaction) ?? formattedBusinesskey;\n }, [getTransactionTypeLabel, transaction, formattedBusinesskey]);\n\n const sidesheetList = useMemo(() => {\n const list = [\n {\n open: openStates.addTransaction,\n closeSheet: () => handleSidesheet('add', false),\n title: domainName,\n width: sidesheetWidth,\n onSubmit: handleTransactionCreation,\n children: (\n <UdpTransactionCustomPage\n transactionTypeId={transactionTypeId}\n transactionUiActionType={\n TransactionUiActionTypeEnums.Render_Create_Transaction_Page\n }\n formRef={formRef}\n />\n ),\n buttonLabel: 'Add'\n },\n {\n open: openStates.viewTransaction,\n closeSheet: () => handleSidesheet('view', false),\n title: domainName + ' ' + transactionLabel + ' - Preview',\n width: sidesheetWidth,\n children: viewTransactionPage,\n buttonLabel: !pdfViewPageId ? 'Download' : null\n },\n {\n open: openStates.attachmentTransaction,\n closeSheet: () => handleSidesheet('view', false),\n title: 'Attachment for ' + domainName + ' ' + transactionLabel,\n width: sidesheetWidth,\n buttonLabel: 'Download',\n onSubmit: () => {\n if (attachmentRef.current) {\n attachmentRef.current.downloadSelectedFile();\n }\n },\n children: (\n <AttachmentTransaction\n handleAttachmentTransaction={handleAttachmentTransaction}\n attachmentRef={attachmentRef}\n transaction={transaction}\n domainName={domainName}\n setSidesheetLoading={setSidesheetLoading}\n />\n )\n },\n {\n open: openStates.workflowAction,\n closeSheet: () => handleSidesheet('action', false),\n title: `Workflow Actions - ${domainName} ${transactionLabel}`,\n width: sidesheetWidth,\n children: (\n <WorkflowActions\n transaction={transaction}\n closeSideSheet={() => {\n handleSidesheet('action', false);\n }}\n refreshGridData={refreshGridData}\n />\n )\n },\n {\n open: openStates.editTransaction,\n closeSheet: () => handleSidesheet('edit', false),\n title: `Edit ${domainName} ${transactionLabel}`,\n width: sidesheetWidth,\n buttonLabel: 'Next Steps',\n buttonOneDisabled: transactionIsClosed,\n onSubmit: () =>\n setEditTransactionOpenInnerSidesheetState({ workflowAction: true }),\n buttonTwoLabel: 'Close ' + domainName,\n buttonTwoDisabled: transactionIsClosed || !hasClosedStatus,\n buttonTwoAction: () => setDialogOpen(true),\n children: (\n <EditTransaction\n transaction={transaction}\n transactionTypeId={transactionTypeId}\n transactionIsClosed={transactionIsClosed}\n openInnerSidesheetState={editTransactionopenInnerSidesheetState}\n setOpenInnerSidesheetState={\n setEditTransactionOpenInnerSidesheetState\n }\n refreshGridData={refreshGridData}\n closeSideSheet={() => handleSidesheet('edit', false)}\n setSidesheetLoading={setSidesheetLoading}\n />\n )\n },\n {\n open: openStates.createRevision,\n closeSheet: () => handleSidesheet('createRevision', false),\n title: `Create Revision for ${domainName}`,\n width: sidesheetWidth,\n onSubmit: handleCreateRevision,\n children: (\n <UdpTransactionCustomPage\n transactionTypeId={transactionTypeId}\n transactionUiActionType={\n TransactionUiActionTypeEnums.Render_Create_Revision_Page\n }\n formRef={formRef}\n transaction={transaction}\n />\n ),\n buttonLabel: 'Create Revision'\n }\n ];\n return list;\n }, [\n openStates,\n handleSidesheet,\n handleAttachmentTransaction,\n transaction,\n domainName,\n editTransactionopenInnerSidesheetState,\n setEditTransactionOpenInnerSidesheetState,\n transactionLabel,\n refreshGridData,\n transactionTypeId,\n handleTransactionCreation,\n hasClosedStatus,\n handleCreateRevision,\n transactionIsClosed,\n viewTransactionPage,\n pdfViewPageId,\n sidesheetWidth\n ]);\n\n return (\n <>\n {openStates &&\n sidesheetList.map((item) => {\n return (\n <SideSheet\n key={item.title}\n open={item.open}\n width={sidesheetWidth}\n title={item.title}\n onClose={item.closeSheet}\n noPadding={\n openStates.attachmentTransaction || openStates.editTransaction\n }\n buttonLabel={item?.buttonLabel}\n onSubmit={item?.onSubmit}\n color='primary'\n buttonTwoLabel={item?.buttonTwoLabel}\n buttonTwoAction={item?.buttonTwoAction}\n buttonOneDisabled={item?.buttonOneDisabled}\n buttonTwoDisabled={item?.buttonTwoDisabled}\n progress={sidesheetLoading}\n variant='indeterminate'\n >\n {sidesheetLoading && <LinearProgress />}\n <div>{item.children}</div>\n </SideSheet>\n );\n })}\n <FluentDialog\n title={t(`Close Transaction`)}\n message={`Are you sure you want to close transaction for ${\n transaction?.entityBusinessKey || ''\n }?`}\n labelOne={t('Confirm')}\n actionOne={handleConfirmCloseTransactionDialog}\n labelTwo={t('Cancel')}\n actionTwo={handleDialogClose}\n open={dialogOpen}\n handleClose={handleDialogClose}\n loading={closingTransactionLoading}\n />\n </>\n );\n};\n\nexport default UdpTransactionSidesheet;\n","import { useState, useEffect, useCallback } from 'react';\nimport { apiMutate } from '../utilities/useAxiosMutate';\nimport { ConfigService } from '../configService';\nimport { useTransactionStore } from '../stores/transactionStore';\n\nexport const useTransactionType = (options = {}) => {\n const { transactionTypeId, domainName, domainFieldType, domainFieldValue } =\n options;\n\n const [resolvedId, setResolvedId] = useState(transactionTypeId || null);\n const [data, setData] = useState(undefined);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(undefined);\n const [promise, setPromise] = useState(undefined);\n\n const { transactionTypesMap, setTransactionTypesMap } = useTransactionStore();\n\n const setSuccessState = useCallback((response) => {\n setError(undefined);\n setLoading(false);\n setData(response);\n }, []);\n\n // ---------------------------------------------------------\n // EFFECT 1:\n // Resolve transactionTypeId if using domainName\n // ---------------------------------------------------------\n useEffect(() => {\n if (transactionTypeId) {\n setResolvedId(transactionTypeId);\n return;\n }\n\n if (!domainName) return;\n\n setLoading(true);\n\n const domainPromise = apiMutate(\n ConfigService.productV1ApiUrl,\n `udpTransactionType/domain/${domainName}${\n domainFieldType && domainFieldValue\n ? `?domainFieldType=${domainFieldType}&domainFieldValue=${domainFieldValue}`\n : ''\n }`,\n {}\n );\n\n domainPromise\n .then((res) => {\n const newId = res.data?.transactionTypeId;\n\n if (newId) {\n setResolvedId(newId);\n setTransactionTypesMap({ [newId]: res.data });\n setSuccessState(res.data);\n } else {\n setError('Transaction type not found for domain.');\n }\n })\n .catch(setError)\n .finally(() => setPromise(domainPromise));\n }, [transactionTypeId, domainName, domainFieldType, domainFieldValue]);\n\n // ---------------------------------------------------------\n // EFFECT 2:\n // Fetch transaction type once resolvedId is known\n // ---------------------------------------------------------\n useEffect(() => {\n if (!resolvedId) return;\n\n // Check cache first\n if (transactionTypesMap[resolvedId]) {\n setSuccessState(transactionTypesMap[resolvedId]);\n return;\n }\n\n setLoading(true);\n\n const fetchPromise = apiMutate(\n ConfigService.productV1ApiUrl,\n `udpTransactionType/${resolvedId}?withAssociationData=true`,\n {}\n );\n\n fetchPromise\n .then((res) => {\n const transactionType = res.data;\n setTransactionTypesMap({ [resolvedId]: transactionType });\n setSuccessState(transactionType);\n })\n .catch(setError)\n .finally(() => setPromise(fetchPromise));\n }, [\n resolvedId,\n transactionTypesMap,\n setTransactionTypesMap,\n setSuccessState\n ]);\n\n return { data, loading, error, promise };\n};\n","import UdpTransactionGrid from './UdpTransactionGrid';\nimport React, { useState, useRef, useEffect } from 'react';\nimport UdpTransactionSidesheet from './UdpTransactionSidesheet';\nimport { useTransactionType } from '../../../hooks/useTransactionType';\nimport { useTransactionEngine } from '../../../utilities/transactions/useTransactionEngine';\nimport { CircularProgress } from '@material-ui/core';\nimport './UdpTransactionsPage.css';\n\n// const domainColumnFormattersExample = {\n// submittedBy: {\n// formatter: (params) => {\n// return params?.data\n// ? params?.data?.entityBusinessObject['submittedBy']\n// : '';\n// }\n// },\n// submittedTo: {\n// formatter: (params) => {\n// return params?.data\n// ? params?.data?.entityBusinessObject['submittedTo']\n// : '';\n// }\n// },\n// test: {\n// formatter: (params) => {\n// return 'test';\n// }\n// }\n// };\n\nconst UdpTransactionsPage = (props) => {\n const {\n transactionTypeId = '',\n domainName: initialDomainName = '',\n domainFieldType,\n domainFieldValue,\n searchMethodObject,\n domainColumnFormatters,\n initialFilterModel\n } = props;\n\n const [sidesheetState, setSidesheetState] = useState({\n workflowAction: false,\n addTransaction: false,\n editTransaction: false,\n viewTransaction: false,\n attachmentTransaction: false,\n createRevision: false\n });\n const [selectedTransaction, setSelectedTransaction] = useState(null);\n const [domainName, setDomainName] = useState(initialDomainName);\n\n const {\n data: transactionType,\n loading: transactionTypeLoading,\n error: transactionTypeError\n } = useTransactionType({\n transactionTypeId: transactionTypeId,\n domainName: initialDomainName,\n domainFieldType: domainFieldType,\n domainFieldValue: domainFieldValue\n });\n\n useTransactionEngine(transactionType?.transactionTypeId);\n\n const gridApiRef = useRef(null);\n const handleSidesheet = (\n actionType,\n openStatus,\n transaction,\n width = 800\n ) => {\n if (actionType == 'add') {\n setSidesheetState({ addTransaction: openStatus, width: width });\n } else if (actionType == 'edit') {\n setSidesheetState({ editTransaction: openStatus, width: width });\n } else if (actionType == 'view') {\n setSidesheetState({ viewTransaction: openStatus, width: width });\n } else if (actionType == 'attachment') {\n setSidesheetState({ attachmentTransaction: openStatus, width: width });\n } else if (actionType == 'action') {\n setSidesheetState({ workflowAction: openStatus, width: width });\n } else if (actionType == 'createRevision') {\n setSidesheetState({ createRevision: openStatus, width: width });\n }\n setSelectedTransaction(transaction);\n };\n\n const handleAttachmentTransaction = () => {};\n\n const handleGridApiCallback = (api) => {\n return (gridApiRef.current = api);\n };\n\n useEffect(() => {\n if (transactionType) {\n const splitDomainNameArr = transactionType.domainName.split('.');\n setDomainName(splitDomainNameArr.pop());\n }\n }, [transactionType]);\n\n if (!transactionType) {\n return (\n <div className='udp-transaction-page-loading'>\n <CircularProgress size={64} />\n </div>\n );\n }\n\n return (\n <>\n <UdpTransactionGrid\n transactionTypeId={transactionType?.transactionTypeId}\n transactionType={transactionType}\n domainName={domainName}\n transactionTypeLoading={transactionTypeLoading}\n searchMethodObject={searchMethodObject}\n domainColumnFormatters={domainColumnFormatters}\n openAddTransaction={() => {\n handleSidesheet('add', true);\n }}\n openViewTransaction={(transaction) => {\n handleSidesheet('view', true, transaction);\n }}\n openEditTransaction={(transaction) => {\n handleSidesheet('edit', true, transaction);\n }}\n openAttachmentTransaction={(transaction) => {\n handleSidesheet('attachment', true, transaction, 1000);\n }}\n openWorkflowActionTransaction={(transaction) => {\n handleSidesheet('action', true, transaction);\n }}\n openCreateRevision={(transaction) => {\n handleSidesheet('createRevision', true, transaction);\n }}\n handleGridApiCallback={handleGridApiCallback}\n refreshGridData={() => {\n gridApiRef?.current?.refreshServerSide();\n }}\n gridApiRef={gridApiRef}\n initialFilterModel={initialFilterModel}\n />\n\n <UdpTransactionSidesheet\n openStates={sidesheetState}\n handleSidesheet={handleSidesheet}\n handleAttachmentTransaction={handleAttachmentTransaction}\n transaction={selectedTransaction}\n transactionTypeId={transactionType?.transactionTypeId}\n domainName={domainName}\n refreshGridData={() => {\n gridApiRef?.current?.refreshServerSide();\n }}\n />\n </>\n );\n};\n\nexport default UdpTransactionsPage;\n","export * from './UdpTransactionsPage';\nexport { default } from './UdpTransactionsPage';\n"],"mappings":"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"}
@@ -98,4 +98,4 @@ var UserFormSideSheet_default = UserFormSideSheet;
98
98
 
99
99
  //#endregion
100
100
  export { UserFormSideSheet_default as t };
101
- //# sourceMappingURL=UserFormSideSheet-B6Mn3bZ0.js.map
101
+ //# sourceMappingURL=UserFormSideSheet-CSScPvy3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserFormSideSheet-B6Mn3bZ0.js","names":["UserForm"],"sources":["../src/shell/ui/addUser/UserFormSideSheet.jsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { SideSheet } from '../../../UI/surfaces/SideSheet';\nimport UserForm from './UserForm';\nimport { useSnackbar } from 'notistack';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { useTenant } from '../../../utilities/tenant/useTenant';\nimport { useHandleAxiosSnackbar } from '../../../utilities/apiHelpers';\nimport { cloneDeep } from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { ConfigService } from '../../../configService';\n\n\nconst UserFormSideSheet = ({\n open,\n onClose,\n}) => {\n const [loading, setLoading] = useState(false);\n const tenant = useTenant();\n const { t } = useTranslation();\n const { handleErrorSnackbar, handleSuccessSnackbar } = useHandleAxiosSnackbar();\n\n // Helper functions\n const getUserByEmail = useCallback(\n async email => {\n return await apiMutate(\n ConfigService.securityV1ApiUrl,\n `users/email/${email}`,\n { method: 'get' }\n );\n },\n []\n );\n\n const createUser = useCallback(\n async data => {\n return await apiMutate(\n ConfigService.securityV1ApiUrl,\n `users/${tenant?.activeTenant?.tenantId ?? ''}`,\n { method: 'post' },\n data\n );\n },\n [tenant]\n );\n\n const inviteUser = useCallback(\n async data => {\n return await apiMutate(\n ConfigService.securityV1ApiUrl,\n `users/${tenant?.activeTenant?.tenantId ?? ''}/invite`,\n { method: 'post' },\n data\n );\n },\n [tenant]\n );\n\n const addUserToTenant = useCallback(\n async email => {\n return await apiMutate(\n ConfigService.tenantV1ApiUrl,\n `tenants/${tenant?.activeTenant?.tenantId ?? ''}/${email}`,\n { method: 'post' }\n );\n },\n [tenant]\n );\n\n const updateExistingUser = useCallback(\n async data => {\n return await apiMutate(\n ConfigService.securityV1ApiUrl,\n `users/aad/${data.id}`,\n { method: 'patch' },\n data\n );\n },\n []\n );\n\n const fillInValues = (oldValues, newValues) => {\n const invalidFields = [\n 'id', 'displayName', 'mail', 'userType', 'email',\n 'accountEnabled', 'mailNickname', 'identities',\n 'password', 'passwordProfile', 'unityId',\n 'unityDefaultTenantId'\n ];\n for (let field in oldValues) {\n if (!invalidFields.includes(field)) {\n if (!oldValues[field]) {\n oldValues[field] = newValues[field];\n }\n }\n }\n return oldValues;\n };\n\n const handleSubmit = useCallback(\n async values => {\n setLoading(true);\n try {\n if (values.email) {\n values.email = values.email.toLowerCase().trim();\n }\n\n const userExistsResponse = await getUserByEmail(values.email);\n const userExists = userExistsResponse.data;\n\n if (userExists) {\n const existingUser = cloneDeep(userExists);\n const updatedValues = fillInValues(existingUser, values);\n\n // Update existing user and add to tenant\n await updateExistingUser({ data: updatedValues });\n await addUserToTenant(values.email);\n handleSuccessSnackbar(t('User has been updated and added to the tenant'))\n } else {\n // Check if this is an invite flow or standard create\n if (values.isInvite) {\n await inviteUser({ data: values });\n handleSuccessSnackbar(t('User invitation sent successfully'));\n } else {\n // Create a new user\n await createUser({ data: values });\n handleSuccessSnackbar(t('User has been created successfully'));\n }\n }\n\n onClose(); // Close the SideSheet after successful submission\n } catch (error) {\n handleErrorSnackbar(error.message || t('An error occurred, please ensure you are creating a new user'))\n } finally {\n setLoading(false);\n }\n },\n [\n getUserByEmail,\n createUser,\n inviteUser,\n addUserToTenant,\n updateExistingUser,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n onClose,\n t\n ]\n );\n\n return (\n <SideSheet\n open={open}\n onClose={onClose}\n title={t(\"Add User\")}\n width={600} // Adjust the width as needed\n >\n <UserForm\n submitUser={handleSubmit}\n creatingUser={loading}\n tenant={tenant?.activeTenant}\n />\n </SideSheet>\n );\n};\n\nexport default UserFormSideSheet;\n"],"mappings":";;;;;;;;;;;;AAYA,MAAM,qBAAqB,EACzB,MACA,cACI;CACJ,MAAM,CAAC,SAAS,cAAc,SAAS,MAAM;CAC7C,MAAM,SAAS,WAAW;CAC1B,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,EAAE,qBAAqB,0BAA0B,wBAAwB;CAG/E,MAAM,iBAAiB,YACrB,OAAM,UAAS;AACb,SAAO,MAAM,UACX,cAAc,kBACd,eAAe,SACf,EAAE,QAAQ,OAAO,CAClB;IAEH,EAAE,CACH;CAED,MAAM,aAAa,YACjB,OAAM,SAAQ;AACZ,SAAO,MAAM,UACX,cAAc,kBACd,SAAS,QAAQ,cAAc,YAAY,MAC3C,EAAE,QAAQ,QAAQ,EAClB,KACD;IAEH,CAAC,OAAO,CACT;CAED,MAAM,aAAa,YACjB,OAAM,SAAQ;AACZ,SAAO,MAAM,UACX,cAAc,kBACd,SAAS,QAAQ,cAAc,YAAY,GAAG,UAC9C,EAAE,QAAQ,QAAQ,EAClB,KACD;IAEH,CAAC,OAAO,CACT;CAED,MAAM,kBAAkB,YACtB,OAAM,UAAS;AACb,SAAO,MAAM,UACX,cAAc,gBACd,WAAW,QAAQ,cAAc,YAAY,GAAG,GAAG,SACnD,EAAE,QAAQ,QAAQ,CACnB;IAEH,CAAC,OAAO,CACT;CAED,MAAM,qBAAqB,YACzB,OAAM,SAAQ;AACZ,SAAO,MAAM,UACX,cAAc,kBACd,aAAa,KAAK,MAClB,EAAE,QAAQ,SAAS,EACnB,KACD;IAEH,EAAE,CACH;CAED,MAAM,gBAAgB,WAAW,cAAc;EAC7C,MAAM,gBAAgB;GACpB;GAAM;GAAe;GAAQ;GAAY;GACzC;GAAkB;GAAgB;GAClC;GAAY;GAAmB;GAC/B;GACD;AACD,OAAK,IAAI,SAAS,UAChB,KAAI,CAAC,cAAc,SAAS,MAAM,EAChC;OAAI,CAAC,UAAU,OACb,WAAU,SAAS,UAAU;;AAInC,SAAO;;CAGT,MAAM,eAAe,YACnB,OAAM,WAAU;AACd,aAAW,KAAK;AAChB,MAAI;AACF,OAAI,OAAO,MACT,QAAO,QAAQ,OAAO,MAAM,aAAa,CAAC,MAAM;GAIlD,MAAM,cADqB,MAAM,eAAe,OAAO,MAAM,EACvB;AAEtC,OAAI,YAAY;AAKd,UAAM,mBAAmB,EAAE,MAHL,aADD,UAAU,WAAW,EACO,OAAO,EAGR,CAAC;AACjD,UAAM,gBAAgB,OAAO,MAAM;AACnC,0BAAsB,EAAE,gDAAgD,CAAC;cAGrE,OAAO,UAAU;AACnB,UAAM,WAAW,EAAE,MAAM,QAAQ,CAAC;AAClC,0BAAsB,EAAE,oCAAoC,CAAC;UACxD;AAEL,UAAM,WAAW,EAAE,MAAM,QAAQ,CAAC;AAClC,0BAAsB,EAAE,qCAAqC,CAAC;;AAIlE,YAAS;WACF,OAAO;AACd,uBAAoB,MAAM,WAAW,EAAE,+DAA+D,CAAC;YAC/F;AACR,cAAW,MAAM;;IAGrB;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AAED,QACE,oCAAC;EACO;EACG;EACT,OAAO,EAAE,WAAW;EACpB,OAAO;IAEP,oCAACA;EACC,YAAY;EACZ,cAAc;EACd,QAAQ,QAAQ;GAChB,CACQ;;AAIhB,gCAAe"}
1
+ {"version":3,"file":"UserFormSideSheet-CSScPvy3.js","names":["UserForm"],"sources":["../src/shell/ui/addUser/UserFormSideSheet.jsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { SideSheet } from '../../../UI/surfaces/SideSheet';\nimport UserForm from './UserForm';\nimport { useSnackbar } from 'notistack';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { useTenant } from '../../../utilities/tenant/useTenant';\nimport { useHandleAxiosSnackbar } from '../../../utilities/apiHelpers';\nimport { cloneDeep } from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { ConfigService } from '../../../configService';\n\n\nconst UserFormSideSheet = ({\n open,\n onClose,\n}) => {\n const [loading, setLoading] = useState(false);\n const tenant = useTenant();\n const { t } = useTranslation();\n const { handleErrorSnackbar, handleSuccessSnackbar } = useHandleAxiosSnackbar();\n\n // Helper functions\n const getUserByEmail = useCallback(\n async email => {\n return await apiMutate(\n ConfigService.securityV1ApiUrl,\n `users/email/${email}`,\n { method: 'get' }\n );\n },\n []\n );\n\n const createUser = useCallback(\n async data => {\n return await apiMutate(\n ConfigService.securityV1ApiUrl,\n `users/${tenant?.activeTenant?.tenantId ?? ''}`,\n { method: 'post' },\n data\n );\n },\n [tenant]\n );\n\n const inviteUser = useCallback(\n async data => {\n return await apiMutate(\n ConfigService.securityV1ApiUrl,\n `users/${tenant?.activeTenant?.tenantId ?? ''}/invite`,\n { method: 'post' },\n data\n );\n },\n [tenant]\n );\n\n const addUserToTenant = useCallback(\n async email => {\n return await apiMutate(\n ConfigService.tenantV1ApiUrl,\n `tenants/${tenant?.activeTenant?.tenantId ?? ''}/${email}`,\n { method: 'post' }\n );\n },\n [tenant]\n );\n\n const updateExistingUser = useCallback(\n async data => {\n return await apiMutate(\n ConfigService.securityV1ApiUrl,\n `users/aad/${data.id}`,\n { method: 'patch' },\n data\n );\n },\n []\n );\n\n const fillInValues = (oldValues, newValues) => {\n const invalidFields = [\n 'id', 'displayName', 'mail', 'userType', 'email',\n 'accountEnabled', 'mailNickname', 'identities',\n 'password', 'passwordProfile', 'unityId',\n 'unityDefaultTenantId'\n ];\n for (let field in oldValues) {\n if (!invalidFields.includes(field)) {\n if (!oldValues[field]) {\n oldValues[field] = newValues[field];\n }\n }\n }\n return oldValues;\n };\n\n const handleSubmit = useCallback(\n async values => {\n setLoading(true);\n try {\n if (values.email) {\n values.email = values.email.toLowerCase().trim();\n }\n\n const userExistsResponse = await getUserByEmail(values.email);\n const userExists = userExistsResponse.data;\n\n if (userExists) {\n const existingUser = cloneDeep(userExists);\n const updatedValues = fillInValues(existingUser, values);\n\n // Update existing user and add to tenant\n await updateExistingUser({ data: updatedValues });\n await addUserToTenant(values.email);\n handleSuccessSnackbar(t('User has been updated and added to the tenant'))\n } else {\n // Check if this is an invite flow or standard create\n if (values.isInvite) {\n await inviteUser({ data: values });\n handleSuccessSnackbar(t('User invitation sent successfully'));\n } else {\n // Create a new user\n await createUser({ data: values });\n handleSuccessSnackbar(t('User has been created successfully'));\n }\n }\n\n onClose(); // Close the SideSheet after successful submission\n } catch (error) {\n handleErrorSnackbar(error.message || t('An error occurred, please ensure you are creating a new user'))\n } finally {\n setLoading(false);\n }\n },\n [\n getUserByEmail,\n createUser,\n inviteUser,\n addUserToTenant,\n updateExistingUser,\n handleErrorSnackbar,\n handleSuccessSnackbar,\n onClose,\n t\n ]\n );\n\n return (\n <SideSheet\n open={open}\n onClose={onClose}\n title={t(\"Add User\")}\n width={600} // Adjust the width as needed\n >\n <UserForm\n submitUser={handleSubmit}\n creatingUser={loading}\n tenant={tenant?.activeTenant}\n />\n </SideSheet>\n );\n};\n\nexport default UserFormSideSheet;\n"],"mappings":";;;;;;;;;;;;AAYA,MAAM,qBAAqB,EACzB,MACA,cACI;CACJ,MAAM,CAAC,SAAS,cAAc,SAAS,MAAM;CAC7C,MAAM,SAAS,WAAW;CAC1B,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,EAAE,qBAAqB,0BAA0B,wBAAwB;CAG/E,MAAM,iBAAiB,YACrB,OAAM,UAAS;AACb,SAAO,MAAM,UACX,cAAc,kBACd,eAAe,SACf,EAAE,QAAQ,OAAO,CAClB;IAEH,EAAE,CACH;CAED,MAAM,aAAa,YACjB,OAAM,SAAQ;AACZ,SAAO,MAAM,UACX,cAAc,kBACd,SAAS,QAAQ,cAAc,YAAY,MAC3C,EAAE,QAAQ,QAAQ,EAClB,KACD;IAEH,CAAC,OAAO,CACT;CAED,MAAM,aAAa,YACjB,OAAM,SAAQ;AACZ,SAAO,MAAM,UACX,cAAc,kBACd,SAAS,QAAQ,cAAc,YAAY,GAAG,UAC9C,EAAE,QAAQ,QAAQ,EAClB,KACD;IAEH,CAAC,OAAO,CACT;CAED,MAAM,kBAAkB,YACtB,OAAM,UAAS;AACb,SAAO,MAAM,UACX,cAAc,gBACd,WAAW,QAAQ,cAAc,YAAY,GAAG,GAAG,SACnD,EAAE,QAAQ,QAAQ,CACnB;IAEH,CAAC,OAAO,CACT;CAED,MAAM,qBAAqB,YACzB,OAAM,SAAQ;AACZ,SAAO,MAAM,UACX,cAAc,kBACd,aAAa,KAAK,MAClB,EAAE,QAAQ,SAAS,EACnB,KACD;IAEH,EAAE,CACH;CAED,MAAM,gBAAgB,WAAW,cAAc;EAC7C,MAAM,gBAAgB;GACpB;GAAM;GAAe;GAAQ;GAAY;GACzC;GAAkB;GAAgB;GAClC;GAAY;GAAmB;GAC/B;GACD;AACD,OAAK,IAAI,SAAS,UAChB,KAAI,CAAC,cAAc,SAAS,MAAM,EAChC;OAAI,CAAC,UAAU,OACb,WAAU,SAAS,UAAU;;AAInC,SAAO;;CAGT,MAAM,eAAe,YACnB,OAAM,WAAU;AACd,aAAW,KAAK;AAChB,MAAI;AACF,OAAI,OAAO,MACT,QAAO,QAAQ,OAAO,MAAM,aAAa,CAAC,MAAM;GAIlD,MAAM,cADqB,MAAM,eAAe,OAAO,MAAM,EACvB;AAEtC,OAAI,YAAY;AAKd,UAAM,mBAAmB,EAAE,MAHL,aADD,UAAU,WAAW,EACO,OAAO,EAGR,CAAC;AACjD,UAAM,gBAAgB,OAAO,MAAM;AACnC,0BAAsB,EAAE,gDAAgD,CAAC;cAGrE,OAAO,UAAU;AACnB,UAAM,WAAW,EAAE,MAAM,QAAQ,CAAC;AAClC,0BAAsB,EAAE,oCAAoC,CAAC;UACxD;AAEL,UAAM,WAAW,EAAE,MAAM,QAAQ,CAAC;AAClC,0BAAsB,EAAE,qCAAqC,CAAC;;AAIlE,YAAS;WACF,OAAO;AACd,uBAAoB,MAAM,WAAW,EAAE,+DAA+D,CAAC;YAC/F;AACR,cAAW,MAAM;;IAGrB;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;AAED,QACE,oCAAC;EACO;EACG;EACT,OAAO,EAAE,WAAW;EACpB,OAAO;IAEP,oCAACA;EACC,YAAY;EACZ,cAAc;EACd,QAAQ,QAAQ;GAChB,CACQ;;AAIhB,gCAAe"}
@@ -0,0 +1,3 @@
1
+ import { t as UserFormSideSheet_default } from "./UserFormSideSheet-CSScPvy3.js";
2
+
3
+ export { UserFormSideSheet_default as default };
@@ -424,4 +424,4 @@ var VirtualBrowser_default = VirtualBrowser;
424
424
 
425
425
  //#endregion
426
426
  export { defaultColActionsDef as a, VirtualTableColumnDefs as i, VirtualBrowser_default as n, VirtualTableSidePanel as r, VirtualBrowser as t };
427
- //# sourceMappingURL=VirtualBrowser-C2oPh3YY.js.map
427
+ //# sourceMappingURL=VirtualBrowser-BeHqBuGi.js.map