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
@@ -37,4 +37,4 @@ const RejectIcon = () => {
37
37
 
38
38
  //#endregion
39
39
  export { ApprovalIcon as n, RejectIcon as t };
40
- //# sourceMappingURL=RejectIcon-CNSkW92y.js.map
40
+ //# sourceMappingURL=RejectIcon-CpF_J5Je.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RejectIcon-CNSkW92y.js","names":[],"sources":["../src/utilities/customIcons/ApprovalIcon.jsx","../src/utilities/customIcons/RejectIcon.jsx"],"sourcesContent":["import React from \"react\";\nimport { CheckMarkIcon } from '@fluentui/react-icons';\nimport { useTheme, lighten } from '@material-ui/core';\n/**\n * ApprovalIcon\n *\n * @return {*}\n */\nexport const ApprovalIcon = () => {\n const theme = useTheme();\n return (\n <CheckMarkIcon\n style={{\n background: lighten(theme.palette.success?.main, 0.5),\n borderRadius: '100%',\n width: 22,\n height: 22,\n border: `2px solid ${lighten(theme.palette.success?.main, 0.5)}`\n }}\n />\n );\n};\n","import React from \"react\";\nimport { ChromeCloseIcon } from '@fluentui/react-icons';\nimport { useTheme, lighten } from '@material-ui/core';\n\n/**\n * @returns {any}\n */\nexport const RejectIcon = () => {\n const theme = useTheme();\n return (\n <ChromeCloseIcon\n style={{\n background: lighten(theme.palette.error?.main, 0.5),\n borderRadius: '100%',\n width: 22,\n height: 22,\n border: `5px solid ${lighten(theme.palette.error?.main, 0.5)}`,\n }}\n />\n );\n};\n"],"mappings":";;;;;;;;;;AAQA,MAAa,qBAAqB;CAChC,MAAM,QAAQ,UAAU;AACxB,QACE,oCAAC,iBACC,OAAO;EACL,YAAY,QAAQ,MAAM,QAAQ,SAAS,MAAM,GAAI;EACrD,cAAc;EACd,OAAO;EACP,QAAQ;EACR,QAAQ,aAAa,QAAQ,MAAM,QAAQ,SAAS,MAAM,GAAI;EAC/D,GACD;;;;;;;;ACZN,MAAa,mBAAmB;CAC9B,MAAM,QAAQ,UAAU;AACxB,QACE,oCAAC,mBACG,OAAO;EACL,YAAY,QAAQ,MAAM,QAAQ,OAAO,MAAM,GAAI;EACnD,cAAc;EACd,OAAO;EACP,QAAQ;EACR,QAAQ,aAAa,QAAQ,MAAM,QAAQ,OAAO,MAAM,GAAI;EAC7D,GACD"}
1
+ {"version":3,"file":"RejectIcon-CpF_J5Je.js","names":[],"sources":["../src/utilities/customIcons/ApprovalIcon.jsx","../src/utilities/customIcons/RejectIcon.jsx"],"sourcesContent":["import React from \"react\";\nimport { CheckMarkIcon } from '@fluentui/react-icons';\nimport { useTheme, lighten } from '@material-ui/core';\n/**\n * ApprovalIcon\n *\n * @return {*}\n */\nexport const ApprovalIcon = () => {\n const theme = useTheme();\n return (\n <CheckMarkIcon\n style={{\n background: lighten(theme.palette.success?.main, 0.5),\n borderRadius: '100%',\n width: 22,\n height: 22,\n border: `2px solid ${lighten(theme.palette.success?.main, 0.5)}`\n }}\n />\n );\n};\n","import React from \"react\";\nimport { ChromeCloseIcon } from '@fluentui/react-icons';\nimport { useTheme, lighten } from '@material-ui/core';\n\n/**\n * @returns {any}\n */\nexport const RejectIcon = () => {\n const theme = useTheme();\n return (\n <ChromeCloseIcon\n style={{\n background: lighten(theme.palette.error?.main, 0.5),\n borderRadius: '100%',\n width: 22,\n height: 22,\n border: `5px solid ${lighten(theme.palette.error?.main, 0.5)}`,\n }}\n />\n );\n};\n"],"mappings":";;;;;;;;;;AAQA,MAAa,qBAAqB;CAChC,MAAM,QAAQ,UAAU;AACxB,QACE,oCAAC,iBACC,OAAO;EACL,YAAY,QAAQ,MAAM,QAAQ,SAAS,MAAM,GAAI;EACrD,cAAc;EACd,OAAO;EACP,QAAQ;EACR,QAAQ,aAAa,QAAQ,MAAM,QAAQ,SAAS,MAAM,GAAI;EAC/D,GACD;;;;;;;;ACZN,MAAa,mBAAmB;CAC9B,MAAM,QAAQ,UAAU;AACxB,QACE,oCAAC,mBACG,OAAO;EACL,YAAY,QAAQ,MAAM,QAAQ,OAAO,MAAM,GAAI;EACnD,cAAc;EACd,OAAO;EACP,QAAQ;EACR,QAAQ,aAAa,QAAQ,MAAM,QAAQ,OAAO,MAAM,GAAI;EAC7D,GACD"}
@@ -0,0 +1,3 @@
1
+ import { t as Reports_default } from "./Reports-v6qpOsDL.js";
2
+
3
+ export { Reports_default as default };
@@ -17,4 +17,4 @@ var Reports_default = Reports;
17
17
 
18
18
  //#endregion
19
19
  export { Reports_default as t };
20
- //# sourceMappingURL=Reports-Cz5Pl1rM.js.map
20
+ //# sourceMappingURL=Reports-v6qpOsDL.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Reports-Cz5Pl1rM.js","names":[],"sources":["../src/reports/Reports.jsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { PowerBIReport } from './PowerBIReport';\n\nconst Reports = props => {\n const { match, location } = props;\n const id = match.params?.id;\n const menuItemReportParams = useMemo(() => {\n return location?.state?.params?.ReportDefaultParameters;\n }, [location?.state?.params?.ReportDefaultParameters]);\n\n return <PowerBIReport id={id} reportParameters={menuItemReportParams} />;\n};\n\nexport default Reports;\n"],"mappings":";;;;AAGA,MAAM,WAAU,UAAS;CACvB,MAAM,EAAE,OAAO,aAAa;CAC5B,MAAM,KAAK,MAAM,QAAQ;CACzB,MAAM,uBAAuB,cAAc;AACzC,SAAO,UAAU,OAAO,QAAQ;IAC/B,CAAC,UAAU,OAAO,QAAQ,wBAAwB,CAAC;AAEtD,QAAO,oCAAC;EAAkB;EAAI,kBAAkB;GAAwB;;AAG1E,sBAAe"}
1
+ {"version":3,"file":"Reports-v6qpOsDL.js","names":[],"sources":["../src/reports/Reports.jsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { PowerBIReport } from './PowerBIReport';\n\nconst Reports = props => {\n const { match, location } = props;\n const id = match.params?.id;\n const menuItemReportParams = useMemo(() => {\n return location?.state?.params?.ReportDefaultParameters;\n }, [location?.state?.params?.ReportDefaultParameters]);\n\n return <PowerBIReport id={id} reportParameters={menuItemReportParams} />;\n};\n\nexport default Reports;\n"],"mappings":";;;;AAGA,MAAM,WAAU,UAAS;CACvB,MAAM,EAAE,OAAO,aAAa;CAC5B,MAAM,KAAK,MAAM,QAAQ;CACzB,MAAM,uBAAuB,cAAc;AACzC,SAAO,UAAU,OAAO,QAAQ;IAC/B,CAAC,UAAU,OAAO,QAAQ,wBAAwB,CAAC;AAEtD,QAAO,oCAAC;EAAkB;EAAI,kBAAkB;GAAwB;;AAG1E,sBAAe"}
@@ -7,8 +7,8 @@ import { t as UtilitySideBar } from "./UtilitySideBar-wvrocDGI.js";
7
7
  import { t as PageActionWrapper } from "./PageActionWrapper-C-irIPLE.js";
8
8
  import { t as getMenuItemsRecursively } from "./menuUtilities-B6z02FRb.js";
9
9
  import { n as useMenuContext } from "./MenuProvider-rwBliXcV.js";
10
- import { t as UdpRoutes } from "./routes-DG4NLFP9.js";
11
- import { c as NavigationSidebar_default, n as SiteHeader_default } from "./SiteHeader-DMstxPs3.js";
10
+ import { t as UdpRoutes } from "./routes-3HDtkQKa.js";
11
+ import { c as NavigationSidebar_default, n as SiteHeader_default } from "./SiteHeader-KoNZC5W5.js";
12
12
  import { t as useTenant } from "./useTenant-CGaZEBEJ.js";
13
13
  import { t as UtilityBar } from "./utilityDisplay-C6c73Efx.js";
14
14
  import { t as FUIAppSwitcher_default } from "./FUIAppSwitcher-LKwANZkK.js";
@@ -286,4 +286,4 @@ Shell.propTypes = {
286
286
 
287
287
  //#endregion
288
288
  export { Shell as t };
289
- //# sourceMappingURL=Shell-DKZFbV05.js.map
289
+ //# sourceMappingURL=Shell-N3oRzrDU.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Shell-DKZFbV05.js","names":["menus","Switch","SiteHeader","NavigationSidebar","FUIAppSwitcher"],"sources":["../src/shell/Shell.jsx"],"sourcesContent":["import React, { useState, useEffect, useMemo, useCallback, Suspense } from 'react';\nimport { makeStyles, Drawer, useMediaQuery, useTheme } from '@material-ui/core';\nimport NavigationSidebar from './ui/NavigationSidebar';\nimport SiteHeader from './ui/SiteHeader';\nimport { UtilityBar } from '../UI/utilityDisplay/UtilityBar';\nimport { useTranslation } from 'react-i18next';\nimport FUIAppSwitcher from './ui/appSwitcher/FUIAppSwitcher';\nimport { getMenuItemsRecursively } from '../utilities/menus/menuUtilities';\nimport clsx from 'clsx';\nimport { UtilitySideBar } from '../UI/utilityDisplay/UtilitySideBar';\nimport PropTypes from 'prop-types';\nimport { useUser } from '../utilities/auth/useUser';\nimport { ActionProvider } from '../utilities/provider/ActionProvider';\nimport { PageActionWrapper } from '../actions/PageActionWrapper';\nimport { useInquiryStore } from '../stores/inquiryStore';\nimport {\n useSetInitialShellVisibility,\n useShellStore\n} from '../stores/shellStore';\n\nimport { useBuildEnvironment, APP_RIBBON_SPACE } from './ui/useBuildEnvironment';\nimport { ChatBotProvider } from '../utilities/chatBot/ChatBotProvider';\nimport { UserProfileMenuWrapper } from '../shell/ui/profile';\nimport { useMenuContext } from '../utilities/menus/MenuProvider';\nimport { LoadingIndicator } from '../UI/loading/LoadingIndicator';\nimport { useTenant } from '../utilities/tenant';\nimport { BrowserRouter, Switch} from 'react-router-dom';\n//import { usePreloadPages } from '../hooks/usePreloadPages';\nimport { PageLoading } from '../UI';\nimport { UdpRoutes } from '../routes';\n// load the page container module so its loaded when we need it\nvoid import('../page/PageContainer');\nconst MenuTypeEnums = {\n Left_Menu: 1,\n Application_Menu: 2,\n Builders_Menu: 3,\n Favorites_Menu: 4\n};\n\nconst useStyles = makeStyles(\n (theme) => ({\n '@global': {\n html: {\n minHeight: '100%'\n },\n 'html, body, #root': {\n display: 'flex',\n flexDirection: 'column'\n },\n 'body, #root': {\n flex: 1\n }\n },\n root: {\n flex: 1,\n minHeight: '100vh',\n display: 'grid',\n gridTemplateAreas: ['sidebar header', 'sidebar content']\n .map((line) => `\"${line}\"`)\n .join(' '),\n gridTemplateColumns: 'auto 1fr',\n gridTemplateRows: 'auto 1fr'\n },\n header: {\n gridArea: 'header'\n },\n sidebar: {\n gridArea: 'sidebar'\n },\n content: {\n gridArea: 'content',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n height: ({ appRibbonSpace }) => `calc(100vh - ${56 + appRibbonSpace}px)`,\n overflowY: 'auto'\n },\n paper: {\n width: '100%',\n [theme.breakpoints.up('sm')]: {\n width: (props) => props.drawerWidth || 520\n }\n }\n }),\n { name: 'Layout' }\n);\n\n/**\n * Core site layout common to all pages\n */\nexport const Shell = (props) => {\n\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n ...props,\n ribbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n });\n const {\n children,\n useNewRoutes,\n userAvatar = <UserProfileMenuWrapper />,\n appContent,\n leftMenu,\n appSelectorMenus,\n siteName,\n className,\n navRoot,\n hideToggle,\n useMockData,\n mockMenus,\n user: passedInUser,\n unityUrl,\n expander,\n sidebarTitle,\n navMenuHoverOn = true,\n secondExtended,\n toggleOne,\n toggleTwo,\n closePrimary,\n closeSecondary,\n panelExpanded,\n panelExpandedSecondary,\n setPanelExpanded = false,\n setPanelExpandedSecondary = false,\n breadCrumbAltLabelList = [],\n currentLocation,\n utilitySidebarResizable,\n utilitySidebarToggleOverride,\n onUtilitySidebarToggleExpandClick,\n hideLayout = false,\n getAccessToken,\n switcherData,\n selectedItem,\n switcherWidth,\n languages,\n projectSwitcherColor,\n getWidget,\n isValidWidget,\n appSwitcherHeader,\n hamburgerMenuAccessRole,\n hideLanguageSwitcher = false,\n subheader,\n hideHelpCenter = false\n } = props;\n const contextUser = useUser();\n const user = passedInUser ?? contextUser;\n const { setGetWidget, setIsValidWidget, shellHidden } = useShellStore();\n const [appSwitcherMobile, setAppSwitcherMobile] = useState(false);\n const [appSwitcherDesktop, setAppSwitcherDesktop] = useState(false);\n const { i18n } = useTranslation();\n const inquiryTitle = useInquiryStore((state) => state.title);\n useSetInitialShellVisibility();\n const tenant = useTenant();\n const activeTenant = tenant?.activeTenant ?? null;\n\n //usePreloadPages();\n\n const menuContext = useMenuContext?.();\n const resolvedLeftMenu = leftMenu ?? menuContext?.leftMenu;\n const resolvedAppSelectorMenus =\n appSelectorMenus ?? menuContext?.appSelectorMenus;\n const providedLanguages = languages ?? menuContext?.languages;\n const resolvedLanguages = Array.isArray(providedLanguages)\n ? providedLanguages\n : [];\n useEffect(() => {\n setGetWidget(getWidget);\n return () => setGetWidget(null);\n }, [getWidget, setGetWidget]);\n\n useEffect(() => {\n setIsValidWidget(isValidWidget);\n return () => setIsValidWidget(null);\n }, [isValidWidget, setIsValidWidget]);\n\n const getMenuItems = useCallback(\n (menuTypeId, menus) => {\n if (!menus && !useMockData) {\n return [];\n }\n const menusToFilter = useMockData ? mockMenus : menus;\n\n const foundMenus = menusToFilter.filter(\n (menu) => menu.menuTypeId === menuTypeId && menu.active\n );\n\n if (foundMenus) {\n return foundMenus.reduce((menuItemInstanceStructureViews, menu) => {\n return [\n ...menuItemInstanceStructureViews,\n ...menu.menuItemInstanceStructureViews\n ];\n }, []);\n } else {\n return [];\n }\n },\n [useMockData, mockMenus]\n );\n\n const menus = useMemo(() => {\n const menuItems = getMenuItems(1, resolvedLeftMenu);\n return getMenuItemsRecursively(menuItems, true, user);\n }, [getMenuItems, user, resolvedLeftMenu]);\n\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.up('sm'));\n\n const handleAppSwitcher = (type, bool) => {\n if (type === 'mobile') {\n setAppSwitcherMobile(bool);\n } else {\n setAppSwitcherDesktop(bool);\n }\n };\n\n const builderMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Builders_Menu,\n resolvedAppSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const favoriteMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Favorites_Menu,\n resolvedAppSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const appMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Application_Menu,\n resolvedAppSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const hideAppMenu = useMemo(\n () =>\n !resolvedAppSelectorMenus ||\n (hamburgerMenuAccessRole &&\n !user?.roleNames.includes(hamburgerMenuAccessRole)),\n [user, resolvedAppSelectorMenus, hamburgerMenuAccessRole]\n );\n\n useEffect(() => {\n i18n.changeLanguage('en-US');\n }, [i18n]);\n\n const isUserInitialized = Boolean(user?.id);\n const isTenantInitialized = Boolean(activeTenant?.tenantId);\n const isThemeInitialized = Boolean(theme?.isInitialized);\n\n if (!isUserInitialized || !isTenantInitialized || !isThemeInitialized) {\n return <LoadingIndicator />;\n }\n let enrichedChildren = children;\n if(useNewRoutes)\n enrichedChildren = <Suspense fallback={<PageLoading />}>\n <Switch>{children}<UdpRoutes/></Switch></Suspense>;\n if (hideLayout) {\n return <div>{enrichedChildren}</div>;\n }\n return (\n <BrowserRouter>\n <ChatBotProvider>\n <ActionProvider>\n <div className={classes.root}>\n {!shellHidden && (\n <SiteHeader\n className={classes.header}\n siteName={siteName}\n appContent={appContent}\n userAvatar={userAvatar}\n breadCrumbRoot={navRoot}\n setAppSwitcherOpen={(type, bool) => handleAppSwitcher(type, bool)}\n breadCrumbAltLabelList={breadCrumbAltLabelList}\n currentLocation={currentLocation}\n switcherData={switcherData}\n selectedItem={selectedItem}\n switcherWidth={switcherWidth}\n hideAppLaunch={hideAppMenu}\n languages={resolvedLanguages}\n hideLanguageSwitcher={hideLanguageSwitcher}\n backgroundColor={projectSwitcherColor}\n hideHelpCenter={hideHelpCenter}\n />\n )}\n\n <div style={{ display: 'flex' }} className={classes.sidebar}>\n {!shellHidden && mobile && (\n <NavigationSidebar\n className={classes.sidebar}\n data={menus}\n navMenuHoverOn={navMenuHoverOn}\n user={user}\n useGlobalState={true}\n />\n )}\n {expander && (\n <div>\n <UtilitySideBar\n title={inquiryTitle || sidebarTitle}\n resizable={utilitySidebarResizable}\n utilitySidebarToggleOverride={utilitySidebarToggleOverride}\n onUtilitySidebarToggleExpandClick={\n onUtilitySidebarToggleExpandClick\n }\n sidebarHidden={shellHidden}\n {...props}\n />\n </div>\n )}\n </div>\n\n <div className={classes.content}>\n <UtilityBar\n className={clsx(className)}\n gutters={false}\n hideToggle={hideToggle}\n expander={expander}\n secondExtended={secondExtended}\n toggleOne={toggleOne}\n toggleTwo={toggleTwo}\n closePrimary={closePrimary}\n closeSecondary={closeSecondary}\n expanded={panelExpanded}\n expandedSecondary={panelExpandedSecondary}\n setExpanded={setPanelExpanded}\n setExpandedSecondary={setPanelExpandedSecondary}\n />\n\n <PageActionWrapper>{subheader}{enrichedChildren}</PageActionWrapper>\n </div>\n <Drawer\n variant='temporary'\n anchor='left'\n open={appSwitcherDesktop}\n classes={\n !mobile\n ? {}\n : !resolvedAppSelectorMenus\n ? {}\n : { paper: classes.paper }\n }\n onClose={() => handleAppSwitcher('desktop', false)}\n >\n {mobile && resolvedAppSelectorMenus && (\n <FUIAppSwitcher\n onClose={() => handleAppSwitcher('desktop', false)}\n favoriteMenu={favoriteMenu}\n builderMenu={builderMenu}\n appMenu={appMenu}\n unityUrl={unityUrl}\n user={user}\n header={appSwitcherHeader}\n />\n )}\n {(!mobile || (mobile && !resolvedAppSelectorMenus)) && (\n <NavigationSidebar\n toggle={false}\n className={classes.sidebar}\n data={menus}\n navMenuHoverOn={navMenuHoverOn}\n user={user}\n useGlobalState={true}\n />\n )}\n </Drawer>\n\n <Drawer\n variant='temporary'\n anchor='right'\n open={appSwitcherMobile}\n classes={{ paper: classes.paper }}\n onClose={() => handleAppSwitcher('mobile', false)}\n >\n <FUIAppSwitcher\n onClose={() => handleAppSwitcher('mobile', false)}\n favoriteMenu={favoriteMenu}\n builderMenu={builderMenu}\n appMenu={appMenu}\n unityUrl={unityUrl}\n user={user}\n header={appSwitcherHeader}\n />\n </Drawer>\n </div>\n </ActionProvider>\n </ChatBotProvider></BrowserRouter>\n );\n};\n\nShell.propTypes = {\n /**\n * The newest propTypes have been added but older ones are missing @todo: add missing propTypes for Shell.\n */\n\n /**\n * The array used to map for label and functions to list items.\n */\n switcherData: PropTypes.array,\n /**\n * The active label displayed.\n */\n selectedItem: PropTypes.string,\n /**\n * Provides a method set the selector width. Default is 100.\n */\n switcherWidth: PropTypes.number,\n /**\n * Children nodes\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]).isRequired,\n\n /**\n * Name of site\n */\n siteName: PropTypes.string,\n\n /**\n * Component to render for the user Avatar\n */\n userAvatar: PropTypes.element,\n\n appContent: PropTypes.element,\n\n leftMenu: PropTypes.array,\n\n appSelectorMenus: PropTypes.array,\n\n className: PropTypes.object,\n\n navRoot: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.node]),\n\n /**\n * Should the shell use mock data\n */\n useMockData: PropTypes.bool,\n\n mockMenus: PropTypes.array,\n\n unityUrl: PropTypes.string,\n\n expander: PropTypes.bool,\n\n sidebarTitle: PropTypes.string,\n\n navMenuHoverOn: PropTypes.bool,\n\n toggleOne: PropTypes.bool,\n\n toggleTwo: PropTypes.bool,\n\n closePrimary: PropTypes.bool,\n\n closeSecondary: PropTypes.bool,\n\n panelExpanded: PropTypes.bool,\n\n panelExpandedSecondary: PropTypes.bool,\n\n setPanelExpanded: PropTypes.func,\n\n setPanelExpandedSecondary: PropTypes.func,\n\n breadCrumbAltLabelList: PropTypes.array,\n\n currentLocation: PropTypes.object,\n\n utilitySidebarResizable: PropTypes.bool,\n\n utilitySidebarToggleOverride: PropTypes.bool,\n\n onUtilitySidebarToggleExpandClick: PropTypes.func,\n\n hideLayout: PropTypes.bool,\n\n languages: PropTypes.arrayOf(PropTypes.object),\n\n /**\n * Passes the background color on the project switcher (default: theme secondary)\n */\n projectSwitcherColor: PropTypes.string,\n getWidget: PropTypes.func,\n isValidWidget: PropTypes.func,\n currentTenant: PropTypes.object,\n hamburgerMenuAccessRole: PropTypes.string\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Shell-N3oRzrDU.js","names":["menus","Switch","SiteHeader","NavigationSidebar","FUIAppSwitcher"],"sources":["../src/shell/Shell.jsx"],"sourcesContent":["import React, { useState, useEffect, useMemo, useCallback, Suspense } from 'react';\nimport { makeStyles, Drawer, useMediaQuery, useTheme } from '@material-ui/core';\nimport NavigationSidebar from './ui/NavigationSidebar';\nimport SiteHeader from './ui/SiteHeader';\nimport { UtilityBar } from '../UI/utilityDisplay/UtilityBar';\nimport { useTranslation } from 'react-i18next';\nimport FUIAppSwitcher from './ui/appSwitcher/FUIAppSwitcher';\nimport { getMenuItemsRecursively } from '../utilities/menus/menuUtilities';\nimport clsx from 'clsx';\nimport { UtilitySideBar } from '../UI/utilityDisplay/UtilitySideBar';\nimport PropTypes from 'prop-types';\nimport { useUser } from '../utilities/auth/useUser';\nimport { ActionProvider } from '../utilities/provider/ActionProvider';\nimport { PageActionWrapper } from '../actions/PageActionWrapper';\nimport { useInquiryStore } from '../stores/inquiryStore';\nimport {\n useSetInitialShellVisibility,\n useShellStore\n} from '../stores/shellStore';\n\nimport { useBuildEnvironment, APP_RIBBON_SPACE } from './ui/useBuildEnvironment';\nimport { ChatBotProvider } from '../utilities/chatBot/ChatBotProvider';\nimport { UserProfileMenuWrapper } from '../shell/ui/profile';\nimport { useMenuContext } from '../utilities/menus/MenuProvider';\nimport { LoadingIndicator } from '../UI/loading/LoadingIndicator';\nimport { useTenant } from '../utilities/tenant';\nimport { BrowserRouter, Switch} from 'react-router-dom';\n//import { usePreloadPages } from '../hooks/usePreloadPages';\nimport { PageLoading } from '../UI';\nimport { UdpRoutes } from '../routes';\n// load the page container module so its loaded when we need it\nvoid import('../page/PageContainer');\nconst MenuTypeEnums = {\n Left_Menu: 1,\n Application_Menu: 2,\n Builders_Menu: 3,\n Favorites_Menu: 4\n};\n\nconst useStyles = makeStyles(\n (theme) => ({\n '@global': {\n html: {\n minHeight: '100%'\n },\n 'html, body, #root': {\n display: 'flex',\n flexDirection: 'column'\n },\n 'body, #root': {\n flex: 1\n }\n },\n root: {\n flex: 1,\n minHeight: '100vh',\n display: 'grid',\n gridTemplateAreas: ['sidebar header', 'sidebar content']\n .map((line) => `\"${line}\"`)\n .join(' '),\n gridTemplateColumns: 'auto 1fr',\n gridTemplateRows: 'auto 1fr'\n },\n header: {\n gridArea: 'header'\n },\n sidebar: {\n gridArea: 'sidebar'\n },\n content: {\n gridArea: 'content',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n zIndex: 1,\n height: ({ appRibbonSpace }) => `calc(100vh - ${56 + appRibbonSpace}px)`,\n overflowY: 'auto'\n },\n paper: {\n width: '100%',\n [theme.breakpoints.up('sm')]: {\n width: (props) => props.drawerWidth || 520\n }\n }\n }),\n { name: 'Layout' }\n);\n\n/**\n * Core site layout common to all pages\n */\nexport const Shell = (props) => {\n\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n ...props,\n ribbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n });\n const {\n children,\n useNewRoutes,\n userAvatar = <UserProfileMenuWrapper />,\n appContent,\n leftMenu,\n appSelectorMenus,\n siteName,\n className,\n navRoot,\n hideToggle,\n useMockData,\n mockMenus,\n user: passedInUser,\n unityUrl,\n expander,\n sidebarTitle,\n navMenuHoverOn = true,\n secondExtended,\n toggleOne,\n toggleTwo,\n closePrimary,\n closeSecondary,\n panelExpanded,\n panelExpandedSecondary,\n setPanelExpanded = false,\n setPanelExpandedSecondary = false,\n breadCrumbAltLabelList = [],\n currentLocation,\n utilitySidebarResizable,\n utilitySidebarToggleOverride,\n onUtilitySidebarToggleExpandClick,\n hideLayout = false,\n getAccessToken,\n switcherData,\n selectedItem,\n switcherWidth,\n languages,\n projectSwitcherColor,\n getWidget,\n isValidWidget,\n appSwitcherHeader,\n hamburgerMenuAccessRole,\n hideLanguageSwitcher = false,\n subheader,\n hideHelpCenter = false\n } = props;\n const contextUser = useUser();\n const user = passedInUser ?? contextUser;\n const { setGetWidget, setIsValidWidget, shellHidden } = useShellStore();\n const [appSwitcherMobile, setAppSwitcherMobile] = useState(false);\n const [appSwitcherDesktop, setAppSwitcherDesktop] = useState(false);\n const { i18n } = useTranslation();\n const inquiryTitle = useInquiryStore((state) => state.title);\n useSetInitialShellVisibility();\n const tenant = useTenant();\n const activeTenant = tenant?.activeTenant ?? null;\n\n //usePreloadPages();\n\n const menuContext = useMenuContext?.();\n const resolvedLeftMenu = leftMenu ?? menuContext?.leftMenu;\n const resolvedAppSelectorMenus =\n appSelectorMenus ?? menuContext?.appSelectorMenus;\n const providedLanguages = languages ?? menuContext?.languages;\n const resolvedLanguages = Array.isArray(providedLanguages)\n ? providedLanguages\n : [];\n useEffect(() => {\n setGetWidget(getWidget);\n return () => setGetWidget(null);\n }, [getWidget, setGetWidget]);\n\n useEffect(() => {\n setIsValidWidget(isValidWidget);\n return () => setIsValidWidget(null);\n }, [isValidWidget, setIsValidWidget]);\n\n const getMenuItems = useCallback(\n (menuTypeId, menus) => {\n if (!menus && !useMockData) {\n return [];\n }\n const menusToFilter = useMockData ? mockMenus : menus;\n\n const foundMenus = menusToFilter.filter(\n (menu) => menu.menuTypeId === menuTypeId && menu.active\n );\n\n if (foundMenus) {\n return foundMenus.reduce((menuItemInstanceStructureViews, menu) => {\n return [\n ...menuItemInstanceStructureViews,\n ...menu.menuItemInstanceStructureViews\n ];\n }, []);\n } else {\n return [];\n }\n },\n [useMockData, mockMenus]\n );\n\n const menus = useMemo(() => {\n const menuItems = getMenuItems(1, resolvedLeftMenu);\n return getMenuItemsRecursively(menuItems, true, user);\n }, [getMenuItems, user, resolvedLeftMenu]);\n\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.up('sm'));\n\n const handleAppSwitcher = (type, bool) => {\n if (type === 'mobile') {\n setAppSwitcherMobile(bool);\n } else {\n setAppSwitcherDesktop(bool);\n }\n };\n\n const builderMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Builders_Menu,\n resolvedAppSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const favoriteMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Favorites_Menu,\n resolvedAppSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const appMenu = useMemo(() => {\n const menuItems = getMenuItems(\n MenuTypeEnums.Application_Menu,\n resolvedAppSelectorMenus\n );\n return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n const hideAppMenu = useMemo(\n () =>\n !resolvedAppSelectorMenus ||\n (hamburgerMenuAccessRole &&\n !user?.roleNames.includes(hamburgerMenuAccessRole)),\n [user, resolvedAppSelectorMenus, hamburgerMenuAccessRole]\n );\n\n useEffect(() => {\n i18n.changeLanguage('en-US');\n }, [i18n]);\n\n const isUserInitialized = Boolean(user?.id);\n const isTenantInitialized = Boolean(activeTenant?.tenantId);\n const isThemeInitialized = Boolean(theme?.isInitialized);\n\n if (!isUserInitialized || !isTenantInitialized || !isThemeInitialized) {\n return <LoadingIndicator />;\n }\n let enrichedChildren = children;\n if(useNewRoutes)\n enrichedChildren = <Suspense fallback={<PageLoading />}>\n <Switch>{children}<UdpRoutes/></Switch></Suspense>;\n if (hideLayout) {\n return <div>{enrichedChildren}</div>;\n }\n return (\n <BrowserRouter>\n <ChatBotProvider>\n <ActionProvider>\n <div className={classes.root}>\n {!shellHidden && (\n <SiteHeader\n className={classes.header}\n siteName={siteName}\n appContent={appContent}\n userAvatar={userAvatar}\n breadCrumbRoot={navRoot}\n setAppSwitcherOpen={(type, bool) => handleAppSwitcher(type, bool)}\n breadCrumbAltLabelList={breadCrumbAltLabelList}\n currentLocation={currentLocation}\n switcherData={switcherData}\n selectedItem={selectedItem}\n switcherWidth={switcherWidth}\n hideAppLaunch={hideAppMenu}\n languages={resolvedLanguages}\n hideLanguageSwitcher={hideLanguageSwitcher}\n backgroundColor={projectSwitcherColor}\n hideHelpCenter={hideHelpCenter}\n />\n )}\n\n <div style={{ display: 'flex' }} className={classes.sidebar}>\n {!shellHidden && mobile && (\n <NavigationSidebar\n className={classes.sidebar}\n data={menus}\n navMenuHoverOn={navMenuHoverOn}\n user={user}\n useGlobalState={true}\n />\n )}\n {expander && (\n <div>\n <UtilitySideBar\n title={inquiryTitle || sidebarTitle}\n resizable={utilitySidebarResizable}\n utilitySidebarToggleOverride={utilitySidebarToggleOverride}\n onUtilitySidebarToggleExpandClick={\n onUtilitySidebarToggleExpandClick\n }\n sidebarHidden={shellHidden}\n {...props}\n />\n </div>\n )}\n </div>\n\n <div className={classes.content}>\n <UtilityBar\n className={clsx(className)}\n gutters={false}\n hideToggle={hideToggle}\n expander={expander}\n secondExtended={secondExtended}\n toggleOne={toggleOne}\n toggleTwo={toggleTwo}\n closePrimary={closePrimary}\n closeSecondary={closeSecondary}\n expanded={panelExpanded}\n expandedSecondary={panelExpandedSecondary}\n setExpanded={setPanelExpanded}\n setExpandedSecondary={setPanelExpandedSecondary}\n />\n\n <PageActionWrapper>{subheader}{enrichedChildren}</PageActionWrapper>\n </div>\n <Drawer\n variant='temporary'\n anchor='left'\n open={appSwitcherDesktop}\n classes={\n !mobile\n ? {}\n : !resolvedAppSelectorMenus\n ? {}\n : { paper: classes.paper }\n }\n onClose={() => handleAppSwitcher('desktop', false)}\n >\n {mobile && resolvedAppSelectorMenus && (\n <FUIAppSwitcher\n onClose={() => handleAppSwitcher('desktop', false)}\n favoriteMenu={favoriteMenu}\n builderMenu={builderMenu}\n appMenu={appMenu}\n unityUrl={unityUrl}\n user={user}\n header={appSwitcherHeader}\n />\n )}\n {(!mobile || (mobile && !resolvedAppSelectorMenus)) && (\n <NavigationSidebar\n toggle={false}\n className={classes.sidebar}\n data={menus}\n navMenuHoverOn={navMenuHoverOn}\n user={user}\n useGlobalState={true}\n />\n )}\n </Drawer>\n\n <Drawer\n variant='temporary'\n anchor='right'\n open={appSwitcherMobile}\n classes={{ paper: classes.paper }}\n onClose={() => handleAppSwitcher('mobile', false)}\n >\n <FUIAppSwitcher\n onClose={() => handleAppSwitcher('mobile', false)}\n favoriteMenu={favoriteMenu}\n builderMenu={builderMenu}\n appMenu={appMenu}\n unityUrl={unityUrl}\n user={user}\n header={appSwitcherHeader}\n />\n </Drawer>\n </div>\n </ActionProvider>\n </ChatBotProvider></BrowserRouter>\n );\n};\n\nShell.propTypes = {\n /**\n * The newest propTypes have been added but older ones are missing @todo: add missing propTypes for Shell.\n */\n\n /**\n * The array used to map for label and functions to list items.\n */\n switcherData: PropTypes.array,\n /**\n * The active label displayed.\n */\n selectedItem: PropTypes.string,\n /**\n * Provides a method set the selector width. Default is 100.\n */\n switcherWidth: PropTypes.number,\n /**\n * Children nodes\n */\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]).isRequired,\n\n /**\n * Name of site\n */\n siteName: PropTypes.string,\n\n /**\n * Component to render for the user Avatar\n */\n userAvatar: PropTypes.element,\n\n appContent: PropTypes.element,\n\n leftMenu: PropTypes.array,\n\n appSelectorMenus: PropTypes.array,\n\n className: PropTypes.object,\n\n navRoot: PropTypes.oneOfType([PropTypes.string, PropTypes.element, PropTypes.node]),\n\n /**\n * Should the shell use mock data\n */\n useMockData: PropTypes.bool,\n\n mockMenus: PropTypes.array,\n\n unityUrl: PropTypes.string,\n\n expander: PropTypes.bool,\n\n sidebarTitle: PropTypes.string,\n\n navMenuHoverOn: PropTypes.bool,\n\n toggleOne: PropTypes.bool,\n\n toggleTwo: PropTypes.bool,\n\n closePrimary: PropTypes.bool,\n\n closeSecondary: PropTypes.bool,\n\n panelExpanded: PropTypes.bool,\n\n panelExpandedSecondary: PropTypes.bool,\n\n setPanelExpanded: PropTypes.func,\n\n setPanelExpandedSecondary: PropTypes.func,\n\n breadCrumbAltLabelList: PropTypes.array,\n\n currentLocation: PropTypes.object,\n\n utilitySidebarResizable: PropTypes.bool,\n\n utilitySidebarToggleOverride: PropTypes.bool,\n\n onUtilitySidebarToggleExpandClick: PropTypes.func,\n\n hideLayout: PropTypes.bool,\n\n languages: PropTypes.arrayOf(PropTypes.object),\n\n /**\n * Passes the background color on the project switcher (default: theme secondary)\n */\n projectSwitcherColor: PropTypes.string,\n getWidget: PropTypes.func,\n isValidWidget: PropTypes.func,\n currentTenant: PropTypes.object,\n hamburgerMenuAccessRole: PropTypes.string\n};\n"],"mappings":"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"}
@@ -22,4 +22,4 @@ var SimpleTable_default = SimpleTable;
22
22
 
23
23
  //#endregion
24
24
  export { SimpleTable_default as t };
25
- //# sourceMappingURL=SimpleTable-z8tz6B0B.js.map
25
+ //# sourceMappingURL=SimpleTable-CVGolzeI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleTable-z8tz6B0B.js","names":[],"sources":["../src/UI/widgets/FluentComponents/SimpleTable.jsx"],"sourcesContent":["import React from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport Table from '@material-ui/core/Table'\nimport TableBody from '@material-ui/core/TableBody'\nimport TableCell from '@material-ui/core/TableCell'\nimport TableContainer from '@material-ui/core/TableContainer'\nimport TableHead from '@material-ui/core/TableHead'\nimport TableRow from '@material-ui/core/TableRow'\n\nconst useStyles = makeStyles({\n table: {\n minWidth: 350\n }\n})\n\nlet SimpleTable = (props) => {\n const { columns, rows } = props\n const classes = useStyles()\n\n return (\n <TableContainer>\n <Table className={classes.table} aria-label='simple table' size='small'>\n <TableHead>\n <TableRow>\n {columns.map((column) => (\n <TableCell>{column}</TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {rows.map((row) => (\n <TableRow key={row.name}>\n {row.rowValues.map((rowValue) => (\n <TableCell>{rowValue}</TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n )\n}\nexport default SimpleTable\n"],"mappings":";;;;;;;;;;AASA,MAAM,YAAY,WAAW,EAC3B,OAAO,EACL,UAAU,KACX,EACF,CAAC;AAEF,IAAI,eAAe,UAAU;CAC3B,MAAM,EAAE,SAAS,SAAS;CAC1B,MAAM,UAAU,WAAW;AAE3B,QACE,oCAAC,sBACC,oCAAC;EAAM,WAAW,QAAQ;EAAO,cAAW;EAAe,MAAK;IAC9D,oCAAC,iBACC,oCAAC,gBACE,QAAQ,KAAK,WACZ,oCAAC,iBAAW,OAAmB,CAC/B,CACO,CACD,EACZ,oCAAC,iBACE,KAAK,KAAK,QACT,oCAAC,YAAS,KAAK,IAAI,QAChB,IAAI,UAAU,KAAK,aAClB,oCAAC,iBAAW,SAAqB,CACjC,CACO,CACX,CACQ,CACN,CACO;;AAGrB,0BAAe"}
1
+ {"version":3,"file":"SimpleTable-CVGolzeI.js","names":[],"sources":["../src/UI/widgets/FluentComponents/SimpleTable.jsx"],"sourcesContent":["import React from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport Table from '@material-ui/core/Table'\nimport TableBody from '@material-ui/core/TableBody'\nimport TableCell from '@material-ui/core/TableCell'\nimport TableContainer from '@material-ui/core/TableContainer'\nimport TableHead from '@material-ui/core/TableHead'\nimport TableRow from '@material-ui/core/TableRow'\n\nconst useStyles = makeStyles({\n table: {\n minWidth: 350\n }\n})\n\nlet SimpleTable = (props) => {\n const { columns, rows } = props\n const classes = useStyles()\n\n return (\n <TableContainer>\n <Table className={classes.table} aria-label='simple table' size='small'>\n <TableHead>\n <TableRow>\n {columns.map((column) => (\n <TableCell>{column}</TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {rows.map((row) => (\n <TableRow key={row.name}>\n {row.rowValues.map((rowValue) => (\n <TableCell>{rowValue}</TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n )\n}\nexport default SimpleTable\n"],"mappings":";;;;;;;;;;AASA,MAAM,YAAY,WAAW,EAC3B,OAAO,EACL,UAAU,KACX,EACF,CAAC;AAEF,IAAI,eAAe,UAAU;CAC3B,MAAM,EAAE,SAAS,SAAS;CAC1B,MAAM,UAAU,WAAW;AAE3B,QACE,oCAAC,sBACC,oCAAC;EAAM,WAAW,QAAQ;EAAO,cAAW;EAAe,MAAK;IAC9D,oCAAC,iBACC,oCAAC,gBACE,QAAQ,KAAK,WACZ,oCAAC,iBAAW,OAAmB,CAC/B,CACO,CACD,EACZ,oCAAC,iBACE,KAAK,KAAK,QACT,oCAAC,YAAS,KAAK,IAAI,QAChB,IAAI,UAAU,KAAK,aAClB,oCAAC,iBAAW,SAAqB,CACjC,CACO,CACX,CACQ,CACN,CACO;;AAGrB,0BAAe"}
@@ -359,9 +359,9 @@ const LanguageSwitcher = (props) => {
359
359
 
360
360
  //#endregion
361
361
  //#region src/shell/ui/HelpCenter.jsx
362
- const UserFormSideSheet = lazy(() => import("./UserFormSideSheet-C1G_jBcu.js"));
362
+ const UserFormSideSheet = lazy(() => import("./UserFormSideSheet-DTPSRjGo.js"));
363
363
  const SupportCaseSideSheet = lazy(() => import("./SupportCaseSideSheet-DuvvXDWF.js"));
364
- const preloadUserFormSideSheet = () => import("./UserFormSideSheet-C1G_jBcu.js");
364
+ const preloadUserFormSideSheet = () => import("./UserFormSideSheet-DTPSRjGo.js");
365
365
  const preloadSupportCaseSideSheet = () => import("./SupportCaseSideSheet-DuvvXDWF.js");
366
366
  const useStyles$2 = makeStyles((theme) => ({
367
367
  root: { display: "flex" },
@@ -665,4 +665,4 @@ SiteHeader.propTypes = {
665
665
 
666
666
  //#endregion
667
667
  export { LanguageSwitcher as a, NavigationSidebar_default as c, HelpCenter as i, SiteHeader_default as n, ShellDropdown as o, EnvironmentRibbon as r, AmbientProjectSwitcher as s, SiteHeaderSpacer as t };
668
- //# sourceMappingURL=SiteHeader-DMstxPs3.js.map
668
+ //# sourceMappingURL=SiteHeader-KoNZC5W5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SiteHeader-DMstxPs3.js","names":["useStyles","useStyles","expanded","MiniCollapsibleSidebar","useStyles","useStyles","useStyles","prevOpen","useStyles","productId","HelpOutlineIcon","CloseIcon","ChatIcon","useStyles","Typography","ShellDropdown"],"sources":["../src/shell/ui/MiniCollapsibleSidebar.jsx","../src/shell/ui/NavigationSidebar.jsx","../src/shell/ui/AmbientProjectSwitcher.jsx","../src/shell/ui/ShellDropdown.jsx","../src/shell/ui/LanguageSwitcher.jsx","../src/shell/ui/HelpCenter.jsx","../src/shell/ui/EnvironmentRibbon.tsx","../src/shell/ui/SiteHeader.jsx"],"sourcesContent":["import { Drawer, makeStyles } from '@material-ui/core'\nimport clsx from 'clsx'\nimport React from 'react'\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n width: theme?.dimensions?.drawerWidth,\n flexShrink: 0,\n whiteSpace: 'nowrap'\n },\n expanded: {\n '&, & > $paper': {\n // width: theme.dimensions.drawerWidth,\n width: theme.spacing(32),\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen\n })\n }\n },\n collapsed: {\n '&, & > $paper': {\n overflowX: 'hidden',\n width: theme.spacing(7) + 1,\n transition: theme?.transitions?.create('width', {\n easing: theme?.transitions?.easing?.sharp,\n duration: theme?.transitions?.duration?.leavingScreen\n })\n }\n },\n paper: {}\n }),\n { name: 'MiniCollapsibleSidebar' }\n)\n\nconst MiniCollapsibleSidebar = (props) => {\n const classes = useStyles(props)\n const { expanded = true, className, children, ...other } = props\n\n return (\n <Drawer\n variant='permanent'\n open\n {...other}\n className={clsx(\n className,\n classes.root,\n expanded ? classes.expanded : classes.collapsed\n )}\n classes={{\n root: classes.root,\n paper: classes.paper\n }}\n >\n {children}\n </Drawer>\n )\n}\n\nexport default MiniCollapsibleSidebar\n","import React, { useState, useCallback } from 'react';\nimport { makeStyles, Toolbar, lighten } from '@material-ui/core';\nimport MiniCollapsibleSidebar from './MiniCollapsibleSidebar';\nimport { SidebarCollapseButton } from './SidebarCollapseButton';\nimport { AppMenu } from '../../UI/navigation/menus/AppMenu';\nimport { useShellStore } from '../../stores/shellStore';\nimport { useBuildEnvironment, APP_RIBBON_SPACE } from './useBuildEnvironment';\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n marginTop: 400\n },\n paper: {\n backgroundColor:\n theme?.getThemeData()?.mode === 'dark'\n ? ''\n : lighten(theme?.palette?.primary?.main, 0.9),\n overflowX: 'hidden'\n },\n list: {\n flex: 1,\n paddingTop: 0,\n overflowY: 'auto',\n WebkitOverflowScrolling: 'touch'\n },\n spacer: {\n flex: 1,\n minHeight: theme.spacing(2)\n },\n footer: {},\n toolbar: {\n padding: 0,\n minHeight: ({appRibbonSpace}) => theme.spacing(6) + appRibbonSpace\n }\n }),\n { name: 'NavigationSidebar' }\n);\n\nconst NavigationSidebar = (props) => {\n const buildEnv = useBuildEnvironment()\n const classes = useStyles({appRibbonSpace: buildEnv ? APP_RIBBON_SPACE : 0});\n const {\n data,\n toggleExpandClick,\n navMenuHoverOn,\n user,\n toggle = true,\n useGlobalState = false,\n ...other\n } = props;\n const [expanded, setExpanded] = useState(true);\n const { navigationExpanded, setNavigationExpanded } = useShellStore();\n\n let navExpanded = useGlobalState ? navigationExpanded : expanded;\n\n const [hoverExpand, setHoverExpand] = useState(false);\n\n // ** Remove for now to deal with programmatic toggle **\n // const wide = useMediaQuery(theme.breakpoints.up('sm'))\n // useEffect(() => {\n // // Set the bar to be expanded/collapsed depending on the breakpoint size\n // // This works on load and also when resizing crosses the breakpoint\n // setExpanded(wide)\n // }, [wide])\n\n const handleHoverToggle = () => {\n if (!navExpanded && navMenuHoverOn) {\n setHoverExpand(true);\n }\n };\n const handleHoverLeave = () => {\n if (!navExpanded && navMenuHoverOn) {\n setHoverExpand(false);\n }\n };\n\n const handleToggleClick = useCallback(() => {\n if (useGlobalState) {\n setNavigationExpanded(!navigationExpanded);\n } else {\n setExpanded((expanded) => !expanded);\n }\n }, [setNavigationExpanded, useGlobalState, navigationExpanded]);\n\n return (\n <MiniCollapsibleSidebar\n classes={{ root: classes.root, paper: classes.paper }}\n expanded={navExpanded || hoverExpand}\n onMouseEnter={handleHoverToggle}\n onMouseLeave={handleHoverLeave}\n PaperProps={{ elevation: 0, variant: 'outlined' }}\n {...other}\n >\n <Toolbar className={classes.toolbar} />\n\n {toggle && (\n <SidebarCollapseButton\n id='udpRecord-NavigationSidebar'\n udprecordid='udpRecord-NavigationSidebar'\n expanded={navExpanded}\n onClick={handleToggleClick}\n />\n )}\n {data && <AppMenu menuItems={data} sidebarExpanded={navExpanded} user={user} />}\n </MiniCollapsibleSidebar>\n );\n};\n\nexport default NavigationSidebar;\n","import React, { useState } from 'react'\nimport { makeStyles, Popover, Typography, useTheme } from '@material-ui/core'\nimport { ChevronDownIcon } from '@fluentui/react-icons'\nimport { FluentIconButton } from '../../UI/inputs/buttons/FluentIconButton'\nimport {AmbientPopoverMenuItem} from '../../UI/inputs/buttons/AmbientPopoverMenuItem'\nimport PropTypes from 'prop-types'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n // border: '1px solid white',\n background: props => props.backgroundColor ? props.backgroundColor : theme.palette.secondary.main,\n borderRadius: 50,\n padding: 6,\n paddingLeft:16\n },\n popoverRoot: {},\n icon: {\n color: theme.palette.primary.main,\n borderRadius: 50\n }, \n label: {\n display: 'block',\n width: props => props.width ? props.width : 100,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }, \n listWrapper: {\n marginRight: theme.spacing(2)\n }\n}))\n\nexport const AmbientProjectSwitcher = (props) => {\n \n const classes = useStyles(props)\n\n const theme = useTheme()\n\n const { data, selectedItem } = props\n\n const [anchorEl, setAnchorEl] = useState(null)\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget)\n }\n\n const handleClose = () => {\n setAnchorEl(null)\n }\n\n const open = Boolean(anchorEl)\n const id = open ? 'open' : undefined\n\n return (\n <div className={classes.root}>\n <div className={classes.listWrapper}>\n <Typography className={classes.label} > \n {selectedItem} \n </Typography>\n </div>\n \n <FluentIconButton\n className={classes.icon}\n icon={ChevronDownIcon}\n onClick={handleClick}\n style={{background: theme.palette.common.white}}\n />\n\n <Popover\n classes={{ root: classes.popoverRoot }}\n square\n elevation={6}\n id={id}\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <div >\n <div>\n {data && data.map((item) => {\n return (\n <AmbientPopoverMenuItem\n label={item.label}\n component={ChevronDownIcon}\n click={()=>item.click(item.label)}\n />\n )\n })}\n </div>\n </div>\n </Popover>\n </div>\n )\n}\n\nAmbientProjectSwitcher.propTypes = {\n /**\n * The array used to map for label and functions to list items. (array).\n */\n data: PropTypes.array,\n /**\n * The active label displayed.\n */\n selectedItem: PropTypes.string,\n /**\n * Change the background color on the project switcher (default: theme secondary)\n */\n backgroundColor: PropTypes.string\n}","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core';\nimport { FluentTextFieldAutoComplete } from '../../UI/inputs/textField/FluentTextFieldAutoComplete';\n\nconst useStyles = makeStyles(theme => ({\n root: { display: 'flex', alignItems: 'center' },\n field: {\n minWidth: 300,\n maxWidth: 400,\n width: '100%',\n alignSelf: 'left',\n color: '#fff',\n '& .MuiOutlinedInput-root': {\n color: '#fff',\n backgroundColor: 'transparent',\n '& fieldset': {\n borderColor: 'rgba(255,255,255,0.6)',\n },\n '&:hover fieldset': {\n borderColor: 'rgba(255,255,255,0.85)',\n },\n '&.Mui-focused fieldset': {\n borderColor: '#fff',\n },\n '& input': {\n paddingTop: 4,\n paddingBottom: 4,\n height: 20,\n boxSizing: 'border-box',\n color: '#fff',\n },\n '& .MuiAutocomplete-input': {\n color: '#fff',\n },\n },\n '& .MuiInputBase-root': {\n color: '#fff',\n },\n '& .MuiAutocomplete-popupIndicator, & .MuiAutocomplete-clearIndicator': {\n color: '#fff',\n opacity: 0.95,\n },\n '& input::placeholder': {\n color: 'rgba(255,255,255,0.7)',\n },\n },\n}));\n\nfunction getDisplayName(item) {\n if (!item && item !== 0) return '';\n if (typeof item === 'string' || typeof item === 'number') return String(item);\n if (typeof item === 'object') {\n const name = item.name ?? item.label ?? item.title ?? item.displayName;\n return name !== undefined && name !== null ? String(name) : '';\n }\n return String(item);\n}\n\nexport const ShellDropdown = (props) => {\n const classes = useStyles();\n const {\n componentName = 'Item',\n data = [],\n value = null,\n onChange,\n optionLabelDisplayFunction = getDisplayName,\n placeholder,\n className,\n classProps,\n ...other\n } = props;\n\n const placeholderText = placeholder ?? (!value ? `All ${componentName}s` : undefined);\n\n return (\n <div className={`${classes.root} ${className || ''}`}>\n <FluentTextFieldAutoComplete\n className={classes.field}\n classProps={{ autocompleteRoot: classes.field, ...classProps }}\n options={data}\n optionLabelDisplayFunction={optionLabelDisplayFunction}\n onChange={onChange}\n value={value}\n placeholder={placeholderText}\n {...other}\n />\n </div>\n );\n};\n\nShellDropdown.propTypes = {\n componentName: PropTypes.string,\n data: PropTypes.array,\n value: PropTypes.any,\n onChange: PropTypes.func,\n optionLabelDisplayFunction: PropTypes.func,\n placeholder: PropTypes.string,\n className: PropTypes.string,\n classProps: PropTypes.object,\n};\n\nexport default ShellDropdown;\n","import React, { useState, useRef, useEffect } from 'react'\nimport {\n ClickAwayListener,\n Grow,\n Paper,\n Popper,\n MenuList,\n makeStyles,\n IconButton,\n MenuItem\n} from '@material-ui/core'\nimport { TranslateIcon } from '@fluentui/react-icons'\nimport i18n from 'i18next';\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex'\n },\n paper: {\n marginRight: theme.spacing(2)\n }\n}))\n\nexport const LanguageSwitcher = (props) => {\n const classes = useStyles()\n const [open, setOpen] = useState(false)\n const anchorRef = useRef(null)\n const { languages } = props\n\n const handleToggle = () => {\n setOpen((prevOpen) => !prevOpen)\n }\n\n const handleClose = (event) => {\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\n return\n }\n setOpen(false)\n }\n\n function handleListKeyDown(event) {\n if (event.key === 'Tab') {\n event.preventDefault()\n setOpen(false)\n }\n }\n\n // return focus to the button when we transitioned from !open -> open\n const prevOpen = useRef(open)\n useEffect(() => {\n if (prevOpen.current === true && open === false) {\n anchorRef.current.focus()\n }\n prevOpen.current = open\n }, [open])\n\n const handleLanguageChange = (event) => {\n const currentLanguage = event;\n //setLangKey(currentLanguage.languageCode);\n languageSelector(currentLanguage.languageCode);\n };\n\n const languageSelector = (defaultLang) => {\n i18n.changeLanguage(defaultLang);\n }\n\n if (languages != null) {\n return (\n <div id='udpRecord-LanguageSwitcher' className={classes.root}>\n <div>\n <IconButton\n id='udpRecord-LanguageSwitcher-IconButton'\n udprecordid='udpRecord-LanguageSwitcher-IconButton'\n ref={anchorRef}\n aria-controls={open ? 'menu-list-grow' : undefined}\n aria-haspopup='true'\n onClick={handleToggle}\n >\n <TranslateIcon style={{ color: 'white', opacity: 0.8 }} />\n </IconButton>\n <Popper\n open={open}\n anchorEl={anchorRef.current}\n role={undefined}\n transition\n disablePortal\n >\n {({ TransitionProps, placement }) => (\n <Grow\n {...TransitionProps}\n style={{\n transformOrigin:\n placement === 'bottom' ? 'center top' : 'center bottom'\n }}\n >\n <Paper>\n <ClickAwayListener \n id='udpRecord-LanguageSwitcher-ClickAway' \n udprecordid='udpRecord-LanguageSwitcher-ClickAway' \n onClickAway={handleClose}\n >\n <MenuList\n autoFocusItem={open}\n id='menu-list-grow'\n udprecordid='udpRecord-LanguageSwitcher-MenuList'\n onKeyDown={handleListKeyDown}\n onClick={() => setOpen(false)}\n >\n {languages.map((data) =>\n <MenuItem\n id={'udpRecord-LanguageSwitcher-MenuItem-'+data.languageLabel}\n udprecordid={'udpRecord-LanguageSwitcher-MenuItem-'+data.languageLabel}\n onClick={() => handleLanguageChange(data)}\n value={data.languageCode}\n key={data.languageId}\n >\n {data.languageLabel}\n </MenuItem>)}\n </MenuList>\n </ClickAwayListener>\n </Paper>\n </Grow>\n )}\n </Popper>\n </div>\n </div>\n )\n } else {\n return (\n null\n )\n }\n\n}","import React, { useState, useCallback, useEffect, useRef, Suspense, lazy } from 'react';\nimport {\n makeStyles,\n IconButton,\n Popover,\n Typography,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n Dialog,\n DialogTitle,\n DialogContent\n} from '@material-ui/core';\nimport {HelpOutline as HelpOutlineIcon, Chat as ChatIcon, Close as CloseIcon} from '@material-ui/icons';\nimport { useActions } from '../../hooks/useActions';\nimport { useTranslation } from 'react-i18next';\nimport { useUser } from '../../../src/utilities/auth/useUser';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { ConfigService } from '../../configService';\n\n// Lazy-load side sheets so they aren't imported until needed. Keep\n// module-level lazy declarations so the imports are deduped and cached.\nconst UserFormSideSheet = lazy(() => import('./addUser/UserFormSideSheet'));\nconst SupportCaseSideSheet = lazy(() => import('../../UI/support/SupportCaseSideSheet'));\n\n// Preload helpers (return the dynamic import promise). Calling these\n// will start fetching the chunk in the background and populate the\n// module cache so React.lazy resolves quickly later.\nconst preloadUserFormSideSheet = () => import('./addUser/UserFormSideSheet');\nconst preloadSupportCaseSideSheet = () => import('../../UI/support/SupportCaseSideSheet');\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex'\n },\n popover: {\n padding: theme.spacing(2),\n maxWidth: 300\n },\n icon: {\n minWidth: 40\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500]\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between'\n },\n dialog: {\n minWidth: '80vw',\n minHeight: '80vh'\n }\n}));\n\nexport const HelpCenter = () => {\n const classes = useStyles();\n const { t } = useTranslation();\n const { triggerAction } = useActions();\n const user = useUser();\n const productId = Number(ConfigService.config.UNITY_PRODUCT_ID);\n\n const udpaiAPI = ConfigService.config.UDPAI_API_BASE;\n const udpaisearch = ConfigService.config.AI_SEARCH_URL;\n const udpaisearchkey = ConfigService.config.AI_SEARCH_KEY;\n const udpaisearchindex = ConfigService.config.AI_SEARCH_INDEX_NAME;\n\n const [anchorEl, setAnchorEl] = useState(null);\n const [isSupportCaseSideSheetOpen, setSupportCaseSideSheetOpen] =\n useState(false);\n const [isUserFormOpen, setUserFormOpen] = useState(false);\n const [supportCaseHealthOk, setSupportCaseHealthOk] = useState(false);\n\n const hasPreloadedRef = useRef(false);\n\n const handleOpenPopover = (event) => {\n setAnchorEl(event.currentTarget);\n\n // Preload both side sheets in the background the first time the popover opens.\n // We assume that if the user opened the popover, they might open one of the sheets.\n if (!hasPreloadedRef.current) {\n hasPreloadedRef.current = true;\n // Start background fetches but don't await them.\n try {\n preloadUserFormSideSheet();\n } catch (e) {\n // ignore preload errors\n }\n try {\n preloadSupportCaseSideSheet();\n } catch (e) {\n // ignore preload errors\n }\n }\n };\n\n const handleClosePopover = () => {\n setAnchorEl(null);\n };\n\n const handleLaunchAction = useCallback(() => {\n setAnchorEl(null);\n triggerAction('CEE75B36-01B0-4FAC-9AE7-C1AC8A2A194F');\n }, [triggerAction]);\n\n const handleOpenSupportCaseSideSheet = () => {\n setSupportCaseSideSheetOpen(true);\n setAnchorEl(null);\n };\n\n const handleCloseSupportCaseSideSheet = () => {\n setSupportCaseSideSheetOpen(false);\n };\n\n const handleOpenUserForm = () => {\n setUserFormOpen(true); // Open UserForm modal\n setAnchorEl(null);\n };\n\n const handleCloseUserForm = () => {\n setUserFormOpen(false); // Close UserForm modal\n };\n\n const open = Boolean(anchorEl);\n const id = open ? 'help-center-popover' : undefined;\n\n // Conditions for rendering buttons\n // 2 assets, 41 sandbox, 51 assets, 53 mm, 68 timesheets\n const shouldShowAddUsers = (productId) => {\n const isValidProduct = [41, 53].includes(productId);\n const isSecurityApiConfigured = !!ConfigService.securityV1ApiUrl;\n const isValidUser =\n user.can.CAN_MANAGE_ROLES_USERS &&\n user.can.CAN_MANAGE_USERS &&\n user.can.CAN_VIEW_USERS;\n return isValidProduct && isSecurityApiConfigured && isValidUser;\n };\n\n const getSupportCaseStatus = useCallback(\n async () =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `udpunitysupport/healthCheck`,\n {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }\n ),\n [user?.currentTenantId]\n );\n\n const getSupportCaseStatusUnity = useCallback(\n async () =>\n apiMutate(\n ConfigService.supportV1ApiUrl,\n `ServiceHealth/Support`,\n {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }\n ),\n [user?.currentTenantId]\n );\n\n const showAddUsers = shouldShowAddUsers(productId);\n const shouldShowChatAssistant =\n [2, 41, 51, 68].includes(productId) &&\n udpaiAPI &&\n udpaisearch &&\n udpaisearchkey &&\n udpaisearchindex;\n const shouldShowSupportTicket = productId && supportCaseHealthOk;\n\n useEffect(() => {\n const supportCaseStatus = async () => {\n try {\n if (ConfigService.config.UNITY_PRODUCT_ID === \"1\") {\n const response = await getSupportCaseStatusUnity();\n setSupportCaseHealthOk(response?.status === 200);\n } else {\n const response = await getSupportCaseStatus();\n setSupportCaseHealthOk(response?.status === 200);\n }\n } catch (error) {\n setSupportCaseHealthOk(false);\n }\n };\n supportCaseStatus();\n }, [getSupportCaseStatus, getSupportCaseStatusUnity]);\n\n // Hide the entire help center if neither button should be rendered\n if (!showAddUsers && !shouldShowChatAssistant && !shouldShowSupportTicket) {\n return <div id='udpRecord-HelpCenter' />;\n }\n\n return (\n <div id='udpRecord-HelpCenter' className={classes.root}>\n <IconButton\n id='udpRecord-HelpCenter-IconButton'\n aria-controls={id}\n aria-haspopup='true'\n onClick={handleOpenPopover}\n >\n <HelpOutlineIcon style={{ color: 'white', opacity: 0.8 }} />\n </IconButton>\n <Popover\n id={id}\n open={open}\n anchorEl={anchorEl}\n onClose={handleClosePopover}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'center'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'center'\n }}\n >\n <div className={classes.popover}>\n <div className={classes.header}>\n <Typography variant='h6'>{t('Help')}</Typography>\n <IconButton\n size='small'\n className={classes.closeButton}\n onClick={handleClosePopover}\n >\n <CloseIcon />\n </IconButton>\n </div>\n <List component='nav' aria-label='Help options'>\n {/* First Button: Add User */}\n {showAddUsers && (\n <ListItem\n button\n id='udpRecord-HelpCenter-AddUsers'\n onClick={handleOpenUserForm}\n >\n <ListItemIcon className={classes.icon}>\n <HelpOutlineIcon />\n </ListItemIcon>\n <ListItemText primary={t('Add User')} />\n </ListItem>\n )}\n\n {/* Second Button: Chat Assistant */}\n {shouldShowChatAssistant && (\n <ListItem\n button\n id='udpRecord-HelpCenter-ChatAssistant'\n onClick={handleLaunchAction}\n >\n <ListItemIcon className={classes.icon}>\n <ChatIcon />\n </ListItemIcon>\n <ListItemText primary={t('Chat Assistant')} />\n </ListItem>\n )}\n\n {/* Third Button: Submit Support Ticket */}\n {shouldShowSupportTicket && (\n <ListItem\n button\n id='udpRecord-HelpCenter-SupportTicket'\n onClick={handleOpenSupportCaseSideSheet}\n >\n <ListItemIcon className={classes.icon}>\n <HelpOutlineIcon />\n </ListItemIcon>\n <ListItemText primary={t('Submit Support Ticket')} />\n </ListItem>\n )}\n </List>\n </div>\n </Popover>\n\n {/* Modal for UserForm (lazy-loaded) */}\n <Suspense fallback={null}>\n <UserFormSideSheet open={isUserFormOpen} onClose={handleCloseUserForm} />\n </Suspense>\n\n {/* Side Sheet for Support Ticket (lazy-loaded) */}\n <Suspense fallback={null}>\n <SupportCaseSideSheet\n open={isSupportCaseSideSheetOpen}\n onClose={handleCloseSupportCaseSideSheet}\n handleCloseSupportCaseSideSheet={handleCloseSupportCaseSideSheet}\n onSubmit={(values) => {\n console.log('Form submitted', values);\n }}\n initialValues={{}}\n />\n </Suspense>\n </div>\n );\n};\n","import React, { useMemo } from 'react';\nimport { useUser } from '../../utilities/auth/useUser';\n// @ts-ignore\nimport { makeStyles } from '@material-ui/core';\nimport { useTenant } from '../../utilities/tenant/useTenant';\nimport { Typography } from '../../UI/dataDisplay/typography/Typography';\nimport { APP_RIBBON_SPACE, useBuildEnvironment } from './useBuildEnvironment';\n\n\n\nconst useStyles = makeStyles({\n root: {\n width: '100vw',\n height: APP_RIBBON_SPACE,\n backgroundColor: ({environment}: {environment: string | undefined}) => `var(--env-ribbon-${environment})`,\n color: '#ffffff', // Default white text\n display: 'flex',\n alignItems: 'center',\n position: 'relative',\n // Use CSS to handle staging text color\n '&.staging': {\n color: '#000000'\n }\n },\n\tcenterText: {\n position: 'absolute',\n left: '50%',\n transform: 'translateX(-50%)',\n fontWeight: 600\n\t},\n\trightText: {\n position: 'absolute',\n right: '10px',\n fontWeight: 500\n\t}\n});\n\nexport const EnvironmentRibbon = () => {\n\tconst tenantInfo = useTenant()\n\tconst buildEnvironment = useBuildEnvironment()\n\n const classes = useStyles({environment: buildEnvironment});\n if(!buildEnvironment) return null;\n\n return (\n <div\n className={`${classes.root} ${buildEnvironment === 'staging' ? 'staging' : ''}`}\n id='udp-environment-banner'\n >\n <Typography className={classes.centerText}>\n {buildEnvironment?.charAt(0).toUpperCase()+buildEnvironment?.slice(1) || ''}\n </Typography>\n\t\t\t<Typography className={classes.rightText}>\n {tenantInfo?.activeTenant?.tenantName}\n </Typography>\n </div>\n );\n};\n","import React from 'react';\nimport {\n AppBar,\n makeStyles,\n Toolbar,\n Typography,\n IconButton,\n useMediaQuery,\n useTheme\n} from '@material-ui/core';\nimport clsx from 'clsx';\nimport { WaffleIcon, CollapseMenuIcon } from '@fluentui/react-icons';\nimport { BreadCrumbMenu } from '../../UI/inputs/link/BreadCrumbMenu';\nimport { AmbientProjectSwitcher } from './AmbientProjectSwitcher';\nimport ShellDropdown from './ShellDropdown';\nimport { LanguageSwitcher } from './LanguageSwitcher';\nimport { HelpCenter } from './HelpCenter';\nimport { SiteHeaderRightComponentTarget } from './SiteHeaderRightComponent';\nimport PropTypes from 'prop-types';\nimport {\n useBuildEnvironment,\n APP_RIBBON_SPACE\n} from './useBuildEnvironment';\nimport { EnvironmentRibbon } from './EnvironmentRibbon';\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n color: theme?.palette?.appBar?.contrastText,\n zIndex: theme?.zIndex?.drawer + 1\n // Assume the drawer is always expanded unless the screen is too small for it and inset the left to account for it\n },\n spacer: {\n flex: 1\n },\n headerSpacer: {\n padding: 0,\n minHeight: ({ appRibbonSpace }) => 56 + appRibbonSpace\n },\n toolbar: {\n padding: 0,\n minHeight: theme.spacing(6)\n },\n appLaunch: {\n color: theme?.palette?.getContrastText(theme?.palette?.primary?.main)\n },\n avatar: {\n width: 25,\n height: 25,\n backgroundColor: theme?.palette?.secondary?.main\n },\n search: {\n marginLeft: theme.spacing(2),\n marginTop: theme.spacing(-1.35)\n },\n children: {\n flex: 1,\n minWidth: 5\n }\n }),\n { name: 'SiteHeader' }\n);\n\n/**\n * A spacing component with the same height as the SiteHeader\n */\nexport const SiteHeaderSpacer = (props) => {\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n appRibbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n });\n const { className } = props;\n\n return <div className={clsx(className, classes.headerSpacer)} />;\n};\n\n/**\n * Site header including app bar\n */\nconst SiteHeader = (props) => {\n const classes = useStyles(props);\n const {\n className,\n returnTo,\n appContent,\n userAvatar,\n siteName,\n breadCrumbRoot = 'home',\n color = 'primary',\n setAppSwitcherOpen,\n breadCrumbAltLabelList,\n currentLocation,\n switcherData,\n selectedItem,\n switcherWidth,\n hideAppLaunch,\n languages,\n backgroundColor,\n hideLanguageSwitcher =false,\n hideHelpCenter = false,\n ...other\n } = props;\n\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.up('sm'));\n\n return (\n <>\n <AppBar\n elevation={0}\n position='fixed'\n color={color}\n {...other}\n className={className}\n classes={{ root: classes.root }}\n >\n <EnvironmentRibbon />\n <Toolbar className={classes.toolbar}>\n {mobile && !hideAppLaunch && (\n <IconButton\n className={classes.appLaunch}\n aria-label='App Launcher Menu'\n onClick={() => setAppSwitcherOpen('desktop', true)}\n >\n <WaffleIcon />\n </IconButton>\n )}\n {!mobile && (\n <IconButton\n className={classes.appLaunch}\n aria-label='App Launcher Menu'\n onClick={() => setAppSwitcherOpen('desktop', true)}\n >\n <CollapseMenuIcon />\n </IconButton>\n )}\n\n <Typography\n component='h1'\n variant='h6'\n style={{ marginLeft: hideAppLaunch && 16 }}\n >\n {siteName}\n </Typography>\n\n {mobile && (\n <div style={{ marginLeft: 70 }}>\n {React.isValidElement(breadCrumbRoot) ? (\n breadCrumbRoot\n ) : breadCrumbRoot && typeof breadCrumbRoot === 'object' && (breadCrumbRoot.data || breadCrumbRoot.componentName) ? (\n <ShellDropdown\n componentName={breadCrumbRoot.componentName}\n data={breadCrumbRoot.data}\n value={breadCrumbRoot.value}\n onChange={breadCrumbRoot.onChange}\n optionLabelDisplayFunction={breadCrumbRoot.optionLabelDisplayFunction}\n placeholder={breadCrumbRoot.placeholder}\n className={breadCrumbRoot.className}\n classProps={breadCrumbRoot.classProps}\n />\n ) : (\n <BreadCrumbMenu\n color='primary'\n root={breadCrumbRoot}\n breadCrumbAltLabelList={breadCrumbAltLabelList}\n />\n )}\n </div>\n )}\n <div className={classes.children}>{appContent}</div>\n {switcherData && (\n <AmbientProjectSwitcher\n data={switcherData}\n selectedItem={selectedItem}\n width={switcherWidth}\n backgroundColor={backgroundColor}\n />\n )}\n\n {!mobile && !hideAppLaunch && (\n <IconButton\n className={classes.appLaunch}\n aria-label='App Launcher Menu'\n onClick={() => setAppSwitcherOpen('mobile', true)}\n >\n <WaffleIcon />\n </IconButton>\n )}\n <div className={classes.additionalRightComponent}>\n <SiteHeaderRightComponentTarget />\n </div>\n {!hideHelpCenter && <HelpCenter />}\n {!hideLanguageSwitcher && <LanguageSwitcher languages={languages} />}\n <div>{userAvatar}</div>\n </Toolbar>\n </AppBar>\n <SiteHeaderSpacer className={className} />\n </>\n );\n};\n\nexport default SiteHeader;\n\nSiteHeader.propTypes = {\n breadCrumbRoot: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n PropTypes.object\n ]),\n /**\n * Passes the background color on the project switcher (default: theme secondary)\n */\n backgroundColor: PropTypes.string\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"SiteHeader-KoNZC5W5.js","names":["useStyles","useStyles","expanded","MiniCollapsibleSidebar","useStyles","useStyles","useStyles","prevOpen","useStyles","productId","HelpOutlineIcon","CloseIcon","ChatIcon","useStyles","Typography","ShellDropdown"],"sources":["../src/shell/ui/MiniCollapsibleSidebar.jsx","../src/shell/ui/NavigationSidebar.jsx","../src/shell/ui/AmbientProjectSwitcher.jsx","../src/shell/ui/ShellDropdown.jsx","../src/shell/ui/LanguageSwitcher.jsx","../src/shell/ui/HelpCenter.jsx","../src/shell/ui/EnvironmentRibbon.tsx","../src/shell/ui/SiteHeader.jsx"],"sourcesContent":["import { Drawer, makeStyles } from '@material-ui/core'\nimport clsx from 'clsx'\nimport React from 'react'\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n width: theme?.dimensions?.drawerWidth,\n flexShrink: 0,\n whiteSpace: 'nowrap'\n },\n expanded: {\n '&, & > $paper': {\n // width: theme.dimensions.drawerWidth,\n width: theme.spacing(32),\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen\n })\n }\n },\n collapsed: {\n '&, & > $paper': {\n overflowX: 'hidden',\n width: theme.spacing(7) + 1,\n transition: theme?.transitions?.create('width', {\n easing: theme?.transitions?.easing?.sharp,\n duration: theme?.transitions?.duration?.leavingScreen\n })\n }\n },\n paper: {}\n }),\n { name: 'MiniCollapsibleSidebar' }\n)\n\nconst MiniCollapsibleSidebar = (props) => {\n const classes = useStyles(props)\n const { expanded = true, className, children, ...other } = props\n\n return (\n <Drawer\n variant='permanent'\n open\n {...other}\n className={clsx(\n className,\n classes.root,\n expanded ? classes.expanded : classes.collapsed\n )}\n classes={{\n root: classes.root,\n paper: classes.paper\n }}\n >\n {children}\n </Drawer>\n )\n}\n\nexport default MiniCollapsibleSidebar\n","import React, { useState, useCallback } from 'react';\nimport { makeStyles, Toolbar, lighten } from '@material-ui/core';\nimport MiniCollapsibleSidebar from './MiniCollapsibleSidebar';\nimport { SidebarCollapseButton } from './SidebarCollapseButton';\nimport { AppMenu } from '../../UI/navigation/menus/AppMenu';\nimport { useShellStore } from '../../stores/shellStore';\nimport { useBuildEnvironment, APP_RIBBON_SPACE } from './useBuildEnvironment';\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n marginTop: 400\n },\n paper: {\n backgroundColor:\n theme?.getThemeData()?.mode === 'dark'\n ? ''\n : lighten(theme?.palette?.primary?.main, 0.9),\n overflowX: 'hidden'\n },\n list: {\n flex: 1,\n paddingTop: 0,\n overflowY: 'auto',\n WebkitOverflowScrolling: 'touch'\n },\n spacer: {\n flex: 1,\n minHeight: theme.spacing(2)\n },\n footer: {},\n toolbar: {\n padding: 0,\n minHeight: ({appRibbonSpace}) => theme.spacing(6) + appRibbonSpace\n }\n }),\n { name: 'NavigationSidebar' }\n);\n\nconst NavigationSidebar = (props) => {\n const buildEnv = useBuildEnvironment()\n const classes = useStyles({appRibbonSpace: buildEnv ? APP_RIBBON_SPACE : 0});\n const {\n data,\n toggleExpandClick,\n navMenuHoverOn,\n user,\n toggle = true,\n useGlobalState = false,\n ...other\n } = props;\n const [expanded, setExpanded] = useState(true);\n const { navigationExpanded, setNavigationExpanded } = useShellStore();\n\n let navExpanded = useGlobalState ? navigationExpanded : expanded;\n\n const [hoverExpand, setHoverExpand] = useState(false);\n\n // ** Remove for now to deal with programmatic toggle **\n // const wide = useMediaQuery(theme.breakpoints.up('sm'))\n // useEffect(() => {\n // // Set the bar to be expanded/collapsed depending on the breakpoint size\n // // This works on load and also when resizing crosses the breakpoint\n // setExpanded(wide)\n // }, [wide])\n\n const handleHoverToggle = () => {\n if (!navExpanded && navMenuHoverOn) {\n setHoverExpand(true);\n }\n };\n const handleHoverLeave = () => {\n if (!navExpanded && navMenuHoverOn) {\n setHoverExpand(false);\n }\n };\n\n const handleToggleClick = useCallback(() => {\n if (useGlobalState) {\n setNavigationExpanded(!navigationExpanded);\n } else {\n setExpanded((expanded) => !expanded);\n }\n }, [setNavigationExpanded, useGlobalState, navigationExpanded]);\n\n return (\n <MiniCollapsibleSidebar\n classes={{ root: classes.root, paper: classes.paper }}\n expanded={navExpanded || hoverExpand}\n onMouseEnter={handleHoverToggle}\n onMouseLeave={handleHoverLeave}\n PaperProps={{ elevation: 0, variant: 'outlined' }}\n {...other}\n >\n <Toolbar className={classes.toolbar} />\n\n {toggle && (\n <SidebarCollapseButton\n id='udpRecord-NavigationSidebar'\n udprecordid='udpRecord-NavigationSidebar'\n expanded={navExpanded}\n onClick={handleToggleClick}\n />\n )}\n {data && <AppMenu menuItems={data} sidebarExpanded={navExpanded} user={user} />}\n </MiniCollapsibleSidebar>\n );\n};\n\nexport default NavigationSidebar;\n","import React, { useState } from 'react'\nimport { makeStyles, Popover, Typography, useTheme } from '@material-ui/core'\nimport { ChevronDownIcon } from '@fluentui/react-icons'\nimport { FluentIconButton } from '../../UI/inputs/buttons/FluentIconButton'\nimport {AmbientPopoverMenuItem} from '../../UI/inputs/buttons/AmbientPopoverMenuItem'\nimport PropTypes from 'prop-types'\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n // border: '1px solid white',\n background: props => props.backgroundColor ? props.backgroundColor : theme.palette.secondary.main,\n borderRadius: 50,\n padding: 6,\n paddingLeft:16\n },\n popoverRoot: {},\n icon: {\n color: theme.palette.primary.main,\n borderRadius: 50\n }, \n label: {\n display: 'block',\n width: props => props.width ? props.width : 100,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis'\n }, \n listWrapper: {\n marginRight: theme.spacing(2)\n }\n}))\n\nexport const AmbientProjectSwitcher = (props) => {\n \n const classes = useStyles(props)\n\n const theme = useTheme()\n\n const { data, selectedItem } = props\n\n const [anchorEl, setAnchorEl] = useState(null)\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget)\n }\n\n const handleClose = () => {\n setAnchorEl(null)\n }\n\n const open = Boolean(anchorEl)\n const id = open ? 'open' : undefined\n\n return (\n <div className={classes.root}>\n <div className={classes.listWrapper}>\n <Typography className={classes.label} > \n {selectedItem} \n </Typography>\n </div>\n \n <FluentIconButton\n className={classes.icon}\n icon={ChevronDownIcon}\n onClick={handleClick}\n style={{background: theme.palette.common.white}}\n />\n\n <Popover\n classes={{ root: classes.popoverRoot }}\n square\n elevation={6}\n id={id}\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <div >\n <div>\n {data && data.map((item) => {\n return (\n <AmbientPopoverMenuItem\n label={item.label}\n component={ChevronDownIcon}\n click={()=>item.click(item.label)}\n />\n )\n })}\n </div>\n </div>\n </Popover>\n </div>\n )\n}\n\nAmbientProjectSwitcher.propTypes = {\n /**\n * The array used to map for label and functions to list items. (array).\n */\n data: PropTypes.array,\n /**\n * The active label displayed.\n */\n selectedItem: PropTypes.string,\n /**\n * Change the background color on the project switcher (default: theme secondary)\n */\n backgroundColor: PropTypes.string\n}","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core';\nimport { FluentTextFieldAutoComplete } from '../../UI/inputs/textField/FluentTextFieldAutoComplete';\n\nconst useStyles = makeStyles(theme => ({\n root: { display: 'flex', alignItems: 'center' },\n field: {\n minWidth: 300,\n maxWidth: 400,\n width: '100%',\n alignSelf: 'left',\n color: '#fff',\n '& .MuiOutlinedInput-root': {\n color: '#fff',\n backgroundColor: 'transparent',\n '& fieldset': {\n borderColor: 'rgba(255,255,255,0.6)',\n },\n '&:hover fieldset': {\n borderColor: 'rgba(255,255,255,0.85)',\n },\n '&.Mui-focused fieldset': {\n borderColor: '#fff',\n },\n '& input': {\n paddingTop: 4,\n paddingBottom: 4,\n height: 20,\n boxSizing: 'border-box',\n color: '#fff',\n },\n '& .MuiAutocomplete-input': {\n color: '#fff',\n },\n },\n '& .MuiInputBase-root': {\n color: '#fff',\n },\n '& .MuiAutocomplete-popupIndicator, & .MuiAutocomplete-clearIndicator': {\n color: '#fff',\n opacity: 0.95,\n },\n '& input::placeholder': {\n color: 'rgba(255,255,255,0.7)',\n },\n },\n}));\n\nfunction getDisplayName(item) {\n if (!item && item !== 0) return '';\n if (typeof item === 'string' || typeof item === 'number') return String(item);\n if (typeof item === 'object') {\n const name = item.name ?? item.label ?? item.title ?? item.displayName;\n return name !== undefined && name !== null ? String(name) : '';\n }\n return String(item);\n}\n\nexport const ShellDropdown = (props) => {\n const classes = useStyles();\n const {\n componentName = 'Item',\n data = [],\n value = null,\n onChange,\n optionLabelDisplayFunction = getDisplayName,\n placeholder,\n className,\n classProps,\n ...other\n } = props;\n\n const placeholderText = placeholder ?? (!value ? `All ${componentName}s` : undefined);\n\n return (\n <div className={`${classes.root} ${className || ''}`}>\n <FluentTextFieldAutoComplete\n className={classes.field}\n classProps={{ autocompleteRoot: classes.field, ...classProps }}\n options={data}\n optionLabelDisplayFunction={optionLabelDisplayFunction}\n onChange={onChange}\n value={value}\n placeholder={placeholderText}\n {...other}\n />\n </div>\n );\n};\n\nShellDropdown.propTypes = {\n componentName: PropTypes.string,\n data: PropTypes.array,\n value: PropTypes.any,\n onChange: PropTypes.func,\n optionLabelDisplayFunction: PropTypes.func,\n placeholder: PropTypes.string,\n className: PropTypes.string,\n classProps: PropTypes.object,\n};\n\nexport default ShellDropdown;\n","import React, { useState, useRef, useEffect } from 'react'\nimport {\n ClickAwayListener,\n Grow,\n Paper,\n Popper,\n MenuList,\n makeStyles,\n IconButton,\n MenuItem\n} from '@material-ui/core'\nimport { TranslateIcon } from '@fluentui/react-icons'\nimport i18n from 'i18next';\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex'\n },\n paper: {\n marginRight: theme.spacing(2)\n }\n}))\n\nexport const LanguageSwitcher = (props) => {\n const classes = useStyles()\n const [open, setOpen] = useState(false)\n const anchorRef = useRef(null)\n const { languages } = props\n\n const handleToggle = () => {\n setOpen((prevOpen) => !prevOpen)\n }\n\n const handleClose = (event) => {\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\n return\n }\n setOpen(false)\n }\n\n function handleListKeyDown(event) {\n if (event.key === 'Tab') {\n event.preventDefault()\n setOpen(false)\n }\n }\n\n // return focus to the button when we transitioned from !open -> open\n const prevOpen = useRef(open)\n useEffect(() => {\n if (prevOpen.current === true && open === false) {\n anchorRef.current.focus()\n }\n prevOpen.current = open\n }, [open])\n\n const handleLanguageChange = (event) => {\n const currentLanguage = event;\n //setLangKey(currentLanguage.languageCode);\n languageSelector(currentLanguage.languageCode);\n };\n\n const languageSelector = (defaultLang) => {\n i18n.changeLanguage(defaultLang);\n }\n\n if (languages != null) {\n return (\n <div id='udpRecord-LanguageSwitcher' className={classes.root}>\n <div>\n <IconButton\n id='udpRecord-LanguageSwitcher-IconButton'\n udprecordid='udpRecord-LanguageSwitcher-IconButton'\n ref={anchorRef}\n aria-controls={open ? 'menu-list-grow' : undefined}\n aria-haspopup='true'\n onClick={handleToggle}\n >\n <TranslateIcon style={{ color: 'white', opacity: 0.8 }} />\n </IconButton>\n <Popper\n open={open}\n anchorEl={anchorRef.current}\n role={undefined}\n transition\n disablePortal\n >\n {({ TransitionProps, placement }) => (\n <Grow\n {...TransitionProps}\n style={{\n transformOrigin:\n placement === 'bottom' ? 'center top' : 'center bottom'\n }}\n >\n <Paper>\n <ClickAwayListener \n id='udpRecord-LanguageSwitcher-ClickAway' \n udprecordid='udpRecord-LanguageSwitcher-ClickAway' \n onClickAway={handleClose}\n >\n <MenuList\n autoFocusItem={open}\n id='menu-list-grow'\n udprecordid='udpRecord-LanguageSwitcher-MenuList'\n onKeyDown={handleListKeyDown}\n onClick={() => setOpen(false)}\n >\n {languages.map((data) =>\n <MenuItem\n id={'udpRecord-LanguageSwitcher-MenuItem-'+data.languageLabel}\n udprecordid={'udpRecord-LanguageSwitcher-MenuItem-'+data.languageLabel}\n onClick={() => handleLanguageChange(data)}\n value={data.languageCode}\n key={data.languageId}\n >\n {data.languageLabel}\n </MenuItem>)}\n </MenuList>\n </ClickAwayListener>\n </Paper>\n </Grow>\n )}\n </Popper>\n </div>\n </div>\n )\n } else {\n return (\n null\n )\n }\n\n}","import React, { useState, useCallback, useEffect, useRef, Suspense, lazy } from 'react';\nimport {\n makeStyles,\n IconButton,\n Popover,\n Typography,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n Dialog,\n DialogTitle,\n DialogContent\n} from '@material-ui/core';\nimport {HelpOutline as HelpOutlineIcon, Chat as ChatIcon, Close as CloseIcon} from '@material-ui/icons';\nimport { useActions } from '../../hooks/useActions';\nimport { useTranslation } from 'react-i18next';\nimport { useUser } from '../../../src/utilities/auth/useUser';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { ConfigService } from '../../configService';\n\n// Lazy-load side sheets so they aren't imported until needed. Keep\n// module-level lazy declarations so the imports are deduped and cached.\nconst UserFormSideSheet = lazy(() => import('./addUser/UserFormSideSheet'));\nconst SupportCaseSideSheet = lazy(() => import('../../UI/support/SupportCaseSideSheet'));\n\n// Preload helpers (return the dynamic import promise). Calling these\n// will start fetching the chunk in the background and populate the\n// module cache so React.lazy resolves quickly later.\nconst preloadUserFormSideSheet = () => import('./addUser/UserFormSideSheet');\nconst preloadSupportCaseSideSheet = () => import('../../UI/support/SupportCaseSideSheet');\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex'\n },\n popover: {\n padding: theme.spacing(2),\n maxWidth: 300\n },\n icon: {\n minWidth: 40\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500]\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between'\n },\n dialog: {\n minWidth: '80vw',\n minHeight: '80vh'\n }\n}));\n\nexport const HelpCenter = () => {\n const classes = useStyles();\n const { t } = useTranslation();\n const { triggerAction } = useActions();\n const user = useUser();\n const productId = Number(ConfigService.config.UNITY_PRODUCT_ID);\n\n const udpaiAPI = ConfigService.config.UDPAI_API_BASE;\n const udpaisearch = ConfigService.config.AI_SEARCH_URL;\n const udpaisearchkey = ConfigService.config.AI_SEARCH_KEY;\n const udpaisearchindex = ConfigService.config.AI_SEARCH_INDEX_NAME;\n\n const [anchorEl, setAnchorEl] = useState(null);\n const [isSupportCaseSideSheetOpen, setSupportCaseSideSheetOpen] =\n useState(false);\n const [isUserFormOpen, setUserFormOpen] = useState(false);\n const [supportCaseHealthOk, setSupportCaseHealthOk] = useState(false);\n\n const hasPreloadedRef = useRef(false);\n\n const handleOpenPopover = (event) => {\n setAnchorEl(event.currentTarget);\n\n // Preload both side sheets in the background the first time the popover opens.\n // We assume that if the user opened the popover, they might open one of the sheets.\n if (!hasPreloadedRef.current) {\n hasPreloadedRef.current = true;\n // Start background fetches but don't await them.\n try {\n preloadUserFormSideSheet();\n } catch (e) {\n // ignore preload errors\n }\n try {\n preloadSupportCaseSideSheet();\n } catch (e) {\n // ignore preload errors\n }\n }\n };\n\n const handleClosePopover = () => {\n setAnchorEl(null);\n };\n\n const handleLaunchAction = useCallback(() => {\n setAnchorEl(null);\n triggerAction('CEE75B36-01B0-4FAC-9AE7-C1AC8A2A194F');\n }, [triggerAction]);\n\n const handleOpenSupportCaseSideSheet = () => {\n setSupportCaseSideSheetOpen(true);\n setAnchorEl(null);\n };\n\n const handleCloseSupportCaseSideSheet = () => {\n setSupportCaseSideSheetOpen(false);\n };\n\n const handleOpenUserForm = () => {\n setUserFormOpen(true); // Open UserForm modal\n setAnchorEl(null);\n };\n\n const handleCloseUserForm = () => {\n setUserFormOpen(false); // Close UserForm modal\n };\n\n const open = Boolean(anchorEl);\n const id = open ? 'help-center-popover' : undefined;\n\n // Conditions for rendering buttons\n // 2 assets, 41 sandbox, 51 assets, 53 mm, 68 timesheets\n const shouldShowAddUsers = (productId) => {\n const isValidProduct = [41, 53].includes(productId);\n const isSecurityApiConfigured = !!ConfigService.securityV1ApiUrl;\n const isValidUser =\n user.can.CAN_MANAGE_ROLES_USERS &&\n user.can.CAN_MANAGE_USERS &&\n user.can.CAN_VIEW_USERS;\n return isValidProduct && isSecurityApiConfigured && isValidUser;\n };\n\n const getSupportCaseStatus = useCallback(\n async () =>\n apiMutate(\n ConfigService.productV1ApiUrl,\n `udpunitysupport/healthCheck`,\n {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }\n ),\n [user?.currentTenantId]\n );\n\n const getSupportCaseStatusUnity = useCallback(\n async () =>\n apiMutate(\n ConfigService.supportV1ApiUrl,\n `ServiceHealth/Support`,\n {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }\n ),\n [user?.currentTenantId]\n );\n\n const showAddUsers = shouldShowAddUsers(productId);\n const shouldShowChatAssistant =\n [2, 41, 51, 68].includes(productId) &&\n udpaiAPI &&\n udpaisearch &&\n udpaisearchkey &&\n udpaisearchindex;\n const shouldShowSupportTicket = productId && supportCaseHealthOk;\n\n useEffect(() => {\n const supportCaseStatus = async () => {\n try {\n if (ConfigService.config.UNITY_PRODUCT_ID === \"1\") {\n const response = await getSupportCaseStatusUnity();\n setSupportCaseHealthOk(response?.status === 200);\n } else {\n const response = await getSupportCaseStatus();\n setSupportCaseHealthOk(response?.status === 200);\n }\n } catch (error) {\n setSupportCaseHealthOk(false);\n }\n };\n supportCaseStatus();\n }, [getSupportCaseStatus, getSupportCaseStatusUnity]);\n\n // Hide the entire help center if neither button should be rendered\n if (!showAddUsers && !shouldShowChatAssistant && !shouldShowSupportTicket) {\n return <div id='udpRecord-HelpCenter' />;\n }\n\n return (\n <div id='udpRecord-HelpCenter' className={classes.root}>\n <IconButton\n id='udpRecord-HelpCenter-IconButton'\n aria-controls={id}\n aria-haspopup='true'\n onClick={handleOpenPopover}\n >\n <HelpOutlineIcon style={{ color: 'white', opacity: 0.8 }} />\n </IconButton>\n <Popover\n id={id}\n open={open}\n anchorEl={anchorEl}\n onClose={handleClosePopover}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'center'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'center'\n }}\n >\n <div className={classes.popover}>\n <div className={classes.header}>\n <Typography variant='h6'>{t('Help')}</Typography>\n <IconButton\n size='small'\n className={classes.closeButton}\n onClick={handleClosePopover}\n >\n <CloseIcon />\n </IconButton>\n </div>\n <List component='nav' aria-label='Help options'>\n {/* First Button: Add User */}\n {showAddUsers && (\n <ListItem\n button\n id='udpRecord-HelpCenter-AddUsers'\n onClick={handleOpenUserForm}\n >\n <ListItemIcon className={classes.icon}>\n <HelpOutlineIcon />\n </ListItemIcon>\n <ListItemText primary={t('Add User')} />\n </ListItem>\n )}\n\n {/* Second Button: Chat Assistant */}\n {shouldShowChatAssistant && (\n <ListItem\n button\n id='udpRecord-HelpCenter-ChatAssistant'\n onClick={handleLaunchAction}\n >\n <ListItemIcon className={classes.icon}>\n <ChatIcon />\n </ListItemIcon>\n <ListItemText primary={t('Chat Assistant')} />\n </ListItem>\n )}\n\n {/* Third Button: Submit Support Ticket */}\n {shouldShowSupportTicket && (\n <ListItem\n button\n id='udpRecord-HelpCenter-SupportTicket'\n onClick={handleOpenSupportCaseSideSheet}\n >\n <ListItemIcon className={classes.icon}>\n <HelpOutlineIcon />\n </ListItemIcon>\n <ListItemText primary={t('Submit Support Ticket')} />\n </ListItem>\n )}\n </List>\n </div>\n </Popover>\n\n {/* Modal for UserForm (lazy-loaded) */}\n <Suspense fallback={null}>\n <UserFormSideSheet open={isUserFormOpen} onClose={handleCloseUserForm} />\n </Suspense>\n\n {/* Side Sheet for Support Ticket (lazy-loaded) */}\n <Suspense fallback={null}>\n <SupportCaseSideSheet\n open={isSupportCaseSideSheetOpen}\n onClose={handleCloseSupportCaseSideSheet}\n handleCloseSupportCaseSideSheet={handleCloseSupportCaseSideSheet}\n onSubmit={(values) => {\n console.log('Form submitted', values);\n }}\n initialValues={{}}\n />\n </Suspense>\n </div>\n );\n};\n","import React, { useMemo } from 'react';\nimport { useUser } from '../../utilities/auth/useUser';\n// @ts-ignore\nimport { makeStyles } from '@material-ui/core';\nimport { useTenant } from '../../utilities/tenant/useTenant';\nimport { Typography } from '../../UI/dataDisplay/typography/Typography';\nimport { APP_RIBBON_SPACE, useBuildEnvironment } from './useBuildEnvironment';\n\n\n\nconst useStyles = makeStyles({\n root: {\n width: '100vw',\n height: APP_RIBBON_SPACE,\n backgroundColor: ({environment}: {environment: string | undefined}) => `var(--env-ribbon-${environment})`,\n color: '#ffffff', // Default white text\n display: 'flex',\n alignItems: 'center',\n position: 'relative',\n // Use CSS to handle staging text color\n '&.staging': {\n color: '#000000'\n }\n },\n\tcenterText: {\n position: 'absolute',\n left: '50%',\n transform: 'translateX(-50%)',\n fontWeight: 600\n\t},\n\trightText: {\n position: 'absolute',\n right: '10px',\n fontWeight: 500\n\t}\n});\n\nexport const EnvironmentRibbon = () => {\n\tconst tenantInfo = useTenant()\n\tconst buildEnvironment = useBuildEnvironment()\n\n const classes = useStyles({environment: buildEnvironment});\n if(!buildEnvironment) return null;\n\n return (\n <div\n className={`${classes.root} ${buildEnvironment === 'staging' ? 'staging' : ''}`}\n id='udp-environment-banner'\n >\n <Typography className={classes.centerText}>\n {buildEnvironment?.charAt(0).toUpperCase()+buildEnvironment?.slice(1) || ''}\n </Typography>\n\t\t\t<Typography className={classes.rightText}>\n {tenantInfo?.activeTenant?.tenantName}\n </Typography>\n </div>\n );\n};\n","import React from 'react';\nimport {\n AppBar,\n makeStyles,\n Toolbar,\n Typography,\n IconButton,\n useMediaQuery,\n useTheme\n} from '@material-ui/core';\nimport clsx from 'clsx';\nimport { WaffleIcon, CollapseMenuIcon } from '@fluentui/react-icons';\nimport { BreadCrumbMenu } from '../../UI/inputs/link/BreadCrumbMenu';\nimport { AmbientProjectSwitcher } from './AmbientProjectSwitcher';\nimport ShellDropdown from './ShellDropdown';\nimport { LanguageSwitcher } from './LanguageSwitcher';\nimport { HelpCenter } from './HelpCenter';\nimport { SiteHeaderRightComponentTarget } from './SiteHeaderRightComponent';\nimport PropTypes from 'prop-types';\nimport {\n useBuildEnvironment,\n APP_RIBBON_SPACE\n} from './useBuildEnvironment';\nimport { EnvironmentRibbon } from './EnvironmentRibbon';\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n color: theme?.palette?.appBar?.contrastText,\n zIndex: theme?.zIndex?.drawer + 1\n // Assume the drawer is always expanded unless the screen is too small for it and inset the left to account for it\n },\n spacer: {\n flex: 1\n },\n headerSpacer: {\n padding: 0,\n minHeight: ({ appRibbonSpace }) => 56 + appRibbonSpace\n },\n toolbar: {\n padding: 0,\n minHeight: theme.spacing(6)\n },\n appLaunch: {\n color: theme?.palette?.getContrastText(theme?.palette?.primary?.main)\n },\n avatar: {\n width: 25,\n height: 25,\n backgroundColor: theme?.palette?.secondary?.main\n },\n search: {\n marginLeft: theme.spacing(2),\n marginTop: theme.spacing(-1.35)\n },\n children: {\n flex: 1,\n minWidth: 5\n }\n }),\n { name: 'SiteHeader' }\n);\n\n/**\n * A spacing component with the same height as the SiteHeader\n */\nexport const SiteHeaderSpacer = (props) => {\n const buildEnv = useBuildEnvironment();\n const classes = useStyles({\n appRibbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n });\n const { className } = props;\n\n return <div className={clsx(className, classes.headerSpacer)} />;\n};\n\n/**\n * Site header including app bar\n */\nconst SiteHeader = (props) => {\n const classes = useStyles(props);\n const {\n className,\n returnTo,\n appContent,\n userAvatar,\n siteName,\n breadCrumbRoot = 'home',\n color = 'primary',\n setAppSwitcherOpen,\n breadCrumbAltLabelList,\n currentLocation,\n switcherData,\n selectedItem,\n switcherWidth,\n hideAppLaunch,\n languages,\n backgroundColor,\n hideLanguageSwitcher =false,\n hideHelpCenter = false,\n ...other\n } = props;\n\n const theme = useTheme();\n const mobile = useMediaQuery(theme.breakpoints.up('sm'));\n\n return (\n <>\n <AppBar\n elevation={0}\n position='fixed'\n color={color}\n {...other}\n className={className}\n classes={{ root: classes.root }}\n >\n <EnvironmentRibbon />\n <Toolbar className={classes.toolbar}>\n {mobile && !hideAppLaunch && (\n <IconButton\n className={classes.appLaunch}\n aria-label='App Launcher Menu'\n onClick={() => setAppSwitcherOpen('desktop', true)}\n >\n <WaffleIcon />\n </IconButton>\n )}\n {!mobile && (\n <IconButton\n className={classes.appLaunch}\n aria-label='App Launcher Menu'\n onClick={() => setAppSwitcherOpen('desktop', true)}\n >\n <CollapseMenuIcon />\n </IconButton>\n )}\n\n <Typography\n component='h1'\n variant='h6'\n style={{ marginLeft: hideAppLaunch && 16 }}\n >\n {siteName}\n </Typography>\n\n {mobile && (\n <div style={{ marginLeft: 70 }}>\n {React.isValidElement(breadCrumbRoot) ? (\n breadCrumbRoot\n ) : breadCrumbRoot && typeof breadCrumbRoot === 'object' && (breadCrumbRoot.data || breadCrumbRoot.componentName) ? (\n <ShellDropdown\n componentName={breadCrumbRoot.componentName}\n data={breadCrumbRoot.data}\n value={breadCrumbRoot.value}\n onChange={breadCrumbRoot.onChange}\n optionLabelDisplayFunction={breadCrumbRoot.optionLabelDisplayFunction}\n placeholder={breadCrumbRoot.placeholder}\n className={breadCrumbRoot.className}\n classProps={breadCrumbRoot.classProps}\n />\n ) : (\n <BreadCrumbMenu\n color='primary'\n root={breadCrumbRoot}\n breadCrumbAltLabelList={breadCrumbAltLabelList}\n />\n )}\n </div>\n )}\n <div className={classes.children}>{appContent}</div>\n {switcherData && (\n <AmbientProjectSwitcher\n data={switcherData}\n selectedItem={selectedItem}\n width={switcherWidth}\n backgroundColor={backgroundColor}\n />\n )}\n\n {!mobile && !hideAppLaunch && (\n <IconButton\n className={classes.appLaunch}\n aria-label='App Launcher Menu'\n onClick={() => setAppSwitcherOpen('mobile', true)}\n >\n <WaffleIcon />\n </IconButton>\n )}\n <div className={classes.additionalRightComponent}>\n <SiteHeaderRightComponentTarget />\n </div>\n {!hideHelpCenter && <HelpCenter />}\n {!hideLanguageSwitcher && <LanguageSwitcher languages={languages} />}\n <div>{userAvatar}</div>\n </Toolbar>\n </AppBar>\n <SiteHeaderSpacer className={className} />\n </>\n );\n};\n\nexport default SiteHeader;\n\nSiteHeader.propTypes = {\n breadCrumbRoot: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n PropTypes.object\n ]),\n /**\n * Passes the background color on the project switcher (default: theme secondary)\n */\n backgroundColor: PropTypes.string\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,MAAMA,cAAY,YACf,WAAW;CACV,MAAM;EACJ,OAAO,OAAO,YAAY;EAC1B,YAAY;EACZ,YAAY;EACb;CACD,UAAU,EACR,iBAAiB;EAEf,OAAO,MAAM,QAAQ,GAAG;EACxB,YAAY,MAAM,YAAY,OAAO,SAAS;GAC5C,QAAQ,MAAM,YAAY,OAAO;GACjC,UAAU,MAAM,YAAY,SAAS;GACtC,CAAC;EACH,EACF;CACD,WAAW,EACT,iBAAiB;EACf,WAAW;EACX,OAAO,MAAM,QAAQ,EAAE,GAAG;EAC1B,YAAY,OAAO,aAAa,OAAO,SAAS;GAC9C,QAAQ,OAAO,aAAa,QAAQ;GACpC,UAAU,OAAO,aAAa,UAAU;GACzC,CAAC;EACH,EACF;CACD,OAAO,EAAE;CACV,GACD,EAAE,MAAM,0BAA0B,CACnC;AAED,MAAM,0BAA0B,UAAU;CACxC,MAAM,UAAUA,YAAU,MAAM;CAChC,MAAM,EAAE,WAAW,MAAM,WAAW,UAAU,GAAG,UAAU;AAE3D,QACE,oCAAC;EACC,SAAQ;EACR;EACA,GAAI;EACJ,WAAW,KACT,WACA,QAAQ,MACR,WAAW,QAAQ,WAAW,QAAQ,UACvC;EACD,SAAS;GACP,MAAM,QAAQ;GACd,OAAO,QAAQ;GAChB;IAEA,SACM;;AAIb,qCAAe;;;;ACpDf,MAAMC,cAAY,YACf,WAAW;CACV,MAAM,EACJ,WAAW,KACZ;CACD,OAAO;EACL,iBACE,OAAO,cAAc,EAAE,SAAS,SAC5B,KACA,QAAQ,OAAO,SAAS,SAAS,MAAM,GAAI;EACjD,WAAW;EACZ;CACD,MAAM;EACJ,MAAM;EACN,YAAY;EACZ,WAAW;EACX,yBAAyB;EAC1B;CACD,QAAQ;EACN,MAAM;EACN,WAAW,MAAM,QAAQ,EAAE;EAC5B;CACD,QAAQ,EAAE;CACV,SAAS;EACP,SAAS;EACT,YAAY,EAAC,qBAAoB,MAAM,QAAQ,EAAE,GAAG;EACrD;CACF,GACD,EAAE,MAAM,qBAAqB,CAC9B;AAED,MAAM,qBAAqB,UAAU;CAEnC,MAAM,UAAUA,YAAU,EAAC,gBADV,qBAAqB,GACgB,mBAAmB,GAAE,CAAC;CAC5E,MAAM,EACJ,MACA,mBACA,gBACA,MACA,SAAS,MACT,iBAAiB,OACjB,GAAG,UACD;CACJ,MAAM,CAAC,UAAU,eAAe,SAAS,KAAK;CAC9C,MAAM,EAAE,oBAAoB,0BAA0B,eAAe;CAErE,IAAI,cAAc,iBAAiB,qBAAqB;CAExD,MAAM,CAAC,aAAa,kBAAkB,SAAS,MAAM;CAUrD,MAAM,0BAA0B;AAC9B,MAAI,CAAC,eAAe,eAClB,gBAAe,KAAK;;CAGxB,MAAM,yBAAyB;AAC7B,MAAI,CAAC,eAAe,eAClB,gBAAe,MAAM;;CAIzB,MAAM,oBAAoB,kBAAkB;AAC1C,MAAI,eACF,uBAAsB,CAAC,mBAAmB;MAE1C,cAAa,eAAa,CAACC,WAAS;IAErC;EAAC;EAAuB;EAAgB;EAAmB,CAAC;AAE/D,QACE,oCAACC;EACC,SAAS;GAAE,MAAM,QAAQ;GAAM,OAAO,QAAQ;GAAO;EACrD,UAAU,eAAe;EACzB,cAAc;EACd,cAAc;EACd,YAAY;GAAE,WAAW;GAAG,SAAS;GAAY;EACjD,GAAI;IAEJ,oCAAC,WAAQ,WAAW,QAAQ,UAAW,EAEtC,UACC,oCAAC;EACC,IAAG;EACH,aAAY;EACZ,UAAU;EACV,SAAS;GACT,EAEH,QAAQ,oCAAC;EAAQ,WAAW;EAAM,iBAAiB;EAAmB;GAAQ,CACxD;;AAI7B,gCAAe;;;;ACtGf,MAAMC,cAAY,YAAY,WAAW;CACvC,MAAM;EACJ,SAAS;EAET,aAAY,UAAS,MAAM,kBAAkB,MAAM,kBAAkB,MAAM,QAAQ,UAAU;EAC7F,cAAc;EACd,SAAS;EACT,aAAY;EACb;CACD,aAAa,EAAE;CACf,MAAM;EACJ,OAAO,MAAM,QAAQ,QAAQ;EAC7B,cAAc;EACf;CACD,OAAO;EACL,SAAS;EACT,QAAO,UAAS,MAAM,QAAQ,MAAM,QAAQ;EAC5C,UAAU;EACV,YAAY;EACZ,cAAc;EACf;CACD,aAAa,EACX,aAAa,MAAM,QAAQ,EAAE,EAC9B;CACF,EAAE;AAEH,MAAa,0BAA0B,UAAU;CAE/C,MAAM,UAAUA,YAAU,MAAM;CAEhC,MAAM,QAAQ,UAAU;CAExB,MAAM,EAAE,MAAM,iBAAiB;CAE/B,MAAM,CAAC,UAAU,eAAe,SAAS,KAAK;CAE9C,MAAM,eAAe,UAAU;AAC7B,cAAY,MAAM,cAAc;;CAGlC,MAAM,oBAAoB;AACxB,cAAY,KAAK;;CAGnB,MAAM,OAAO,QAAQ,SAAS;CAC9B,MAAM,KAAK,OAAO,SAAS;AAE3B,QACE,oCAAC,SAAI,WAAW,QAAQ,QACtB,oCAAC,SAAI,WAAW,QAAQ,eACtB,oCAAC,cAAW,WAAW,QAAQ,SAC5B,aACU,CACT,EAEN,oCAAC;EACC,WAAW,QAAQ;EACnB,MAAM;EACN,SAAS;EACT,OAAO,EAAC,YAAY,MAAM,QAAQ,OAAO,OAAM;GAC/C,EAEF,oCAAC;EACC,SAAS,EAAE,MAAM,QAAQ,aAAa;EACtC;EACA,WAAW;EACP;EACE;EACI;EACV,SAAS;EACT,cAAc;GACZ,UAAU;GACV,YAAY;GACb;EACD,iBAAiB;GACf,UAAU;GACV,YAAY;GACb;IAED,oCAAC,aACC,oCAAC,aACE,QAAQ,KAAK,KAAK,SAAS;AAC1B,SACE,oCAAC;GACC,OAAO,KAAK;GACZ,WAAW;GACX,aAAW,KAAK,MAAM,KAAK,MAAM;IACjC;GAEJ,CACE,CACF,CACE,CACN;;AAIV,uBAAuB,YAAY;CAIjC,MAAM,UAAU;CAIhB,cAAc,UAAU;CAIxB,iBAAiB,UAAU;;;;;AC/G7B,MAAMC,cAAY,YAAW,WAAU;CACrC,MAAM;EAAE,SAAS;EAAQ,YAAY;EAAU;CAC/C,OAAO;EACL,UAAU;EACV,UAAU;EACV,OAAO;EACP,WAAW;EACX,OAAO;EACP,4BAA4B;GAC1B,OAAO;GACP,iBAAiB;GACjB,cAAc,EACZ,aAAa,yBACd;GACD,oBAAoB,EAClB,aAAa,0BACd;GACD,0BAA0B,EACxB,aAAa,QACd;GACD,WAAW;IACT,YAAY;IACZ,eAAe;IACf,QAAQ;IACR,WAAW;IACX,OAAO;IACR;GACD,4BAA4B,EAC1B,OAAO,QACR;GACF;EACD,wBAAwB,EACtB,OAAO,QACR;EACD,wEAAwE;GACtE,OAAO;GACP,SAAS;GACV;EACD,wBAAwB,EACtB,OAAO,yBACR;EACF;CACF,EAAE;AAEH,SAAS,eAAe,MAAM;AAC5B,KAAI,CAAC,QAAQ,SAAS,EAAG,QAAO;AAChC,KAAI,OAAO,SAAS,YAAY,OAAO,SAAS,SAAU,QAAO,OAAO,KAAK;AAC7E,KAAI,OAAO,SAAS,UAAU;EAC5B,MAAM,OAAO,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK;AAC3D,SAAO,SAAS,UAAa,SAAS,OAAO,OAAO,KAAK,GAAG;;AAE9D,QAAO,OAAO,KAAK;;AAGrB,MAAa,iBAAiB,UAAU;CACtC,MAAM,UAAUA,aAAW;CAC3B,MAAM,EACJ,gBAAgB,QAChB,OAAO,EAAE,EACT,QAAQ,MACR,UACA,6BAA6B,gBAC7B,aACA,WACA,YACA,GAAG,UACD;CAEJ,MAAM,kBAAkB,gBAAgB,CAAC,QAAQ,OAAO,cAAc,KAAK;AAE3E,QACE,oCAAC,SAAI,WAAW,GAAG,QAAQ,KAAK,GAAG,aAAa,QAC9C,oCAAC;EACC,WAAW,QAAQ;EACnB,YAAY;GAAE,kBAAkB,QAAQ;GAAO,GAAG;GAAY;EAC9D,SAAS;EACmB;EAClB;EACH;EACP,aAAa;EACb,GAAI;GACJ,CACE;;AAIV,cAAc,YAAY;CACxB,eAAe,UAAU;CACzB,MAAM,UAAU;CAChB,OAAO,UAAU;CACjB,UAAU,UAAU;CACpB,4BAA4B,UAAU;CACtC,aAAa,UAAU;CACvB,WAAW,UAAU;CACrB,YAAY,UAAU;CACvB;AAED,4BAAe;;;;ACvFf,MAAMC,cAAY,YAAY,WAAW;CACvC,MAAM,EACJ,SAAS,QACV;CACD,OAAO,EACL,aAAa,MAAM,QAAQ,EAAE,EAC9B;CACF,EAAE;AAEH,MAAa,oBAAoB,UAAU;CACzC,MAAM,UAAUA,aAAW;CAC3B,MAAM,CAAC,MAAM,WAAW,SAAS,MAAM;CACvC,MAAM,YAAY,OAAO,KAAK;CAC9B,MAAM,EAAE,cAAc;CAEtB,MAAM,qBAAqB;AACzB,WAAS,eAAa,CAACC,WAAS;;CAGlC,MAAM,eAAe,UAAU;AAC7B,MAAI,UAAU,WAAW,UAAU,QAAQ,SAAS,MAAM,OAAO,CAC/D;AAEF,UAAQ,MAAM;;CAGhB,SAAS,kBAAkB,OAAO;AAChC,MAAI,MAAM,QAAQ,OAAO;AACvB,SAAM,gBAAgB;AACtB,WAAQ,MAAM;;;CAKlB,MAAM,WAAW,OAAO,KAAK;AAC7B,iBAAgB;AACd,MAAI,SAAS,YAAY,QAAQ,SAAS,MACxC,WAAU,QAAQ,OAAO;AAE3B,WAAS,UAAU;IAClB,CAAC,KAAK,CAAC;CAEV,MAAM,wBAAwB,UAAU;AAGtC,mBAFwB,MAES,aAAa;;CAGhD,MAAM,oBAAoB,gBAAgB;AACxC,OAAK,eAAe,YAAY;;AAGlC,KAAI,aAAa,KACf,QACE,oCAAC;EAAI,IAAG;EAA6B,WAAW,QAAQ;IACtD,oCAAC,aACC,oCAAC;EACC,IAAG;EACH,aAAY;EACZ,KAAK;EACL,iBAAe,OAAO,mBAAmB;EACzC,iBAAc;EACd,SAAS;IAET,oCAAC,iBAAc,OAAO;EAAE,OAAO;EAAS,SAAS;EAAK,GAAI,CAC/C,EACb,oCAAC;EACO;EACN,UAAU,UAAU;EACpB,MAAM;EACN;EACA;KAEE,EAAE,iBAAiB,gBACnB,oCAAC;EACC,GAAI;EACJ,OAAO,EACL,iBACE,cAAc,WAAW,eAAe,iBAC3C;IAED,oCAAC,aACC,oCAAC;EACC,IAAG;EACH,aAAY;EACZ,aAAa;IAEb,oCAAC;EACC,eAAe;EACf,IAAG;EACH,aAAY;EACZ,WAAW;EACX,eAAe,QAAQ,MAAM;IAE5B,UAAU,KAAK,SACd,oCAAC;EACC,IAAI,yCAAuC,KAAK;EAChD,aAAa,yCAAuC,KAAK;EACzD,eAAe,qBAAqB,KAAK;EACzC,OAAO,KAAK;EACZ,KAAK,KAAK;IAET,KAAK,cACG,CAAC,CACL,CACO,CACd,CACH,CAEF,CACL,CACF;KAGR,QACE;;;;;AC3GN,MAAM,oBAAoB,WAAW,OAAO,mCAA+B;AAC3E,MAAM,uBAAuB,WAAW,OAAO,sCAAyC;AAKxF,MAAM,iCAAiC,OAAO;AAC9C,MAAM,oCAAoC,OAAO;AAEjD,MAAMC,cAAY,YAAY,WAAW;CACvC,MAAM,EACJ,SAAS,QACV;CACD,SAAS;EACP,SAAS,MAAM,QAAQ,EAAE;EACzB,UAAU;EACX;CACD,MAAM,EACJ,UAAU,IACX;CACD,aAAa;EACX,UAAU;EACV,OAAO,MAAM,QAAQ,EAAE;EACvB,KAAK,MAAM,QAAQ,EAAE;EACrB,OAAO,MAAM,QAAQ,KAAK;EAC3B;CACD,QAAQ;EACN,SAAS;EACT,YAAY;EACZ,gBAAgB;EACjB;CACD,QAAQ;EACN,UAAU;EACV,WAAW;EACZ;CACF,EAAE;AAEH,MAAa,mBAAmB;CAC9B,MAAM,UAAUA,aAAW;CAC3B,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,EAAE,kBAAkB,YAAY;CACtC,MAAM,OAAO,SAAS;CACtB,MAAM,YAAY,OAAO,cAAc,OAAO,iBAAiB;CAE/D,MAAM,WAAW,cAAc,OAAO;CACtC,MAAM,cAAc,cAAc,OAAO;CACzC,MAAM,iBAAiB,cAAc,OAAO;CAC5C,MAAM,mBAAmB,cAAc,OAAO;CAE9C,MAAM,CAAC,UAAU,eAAe,SAAS,KAAK;CAC9C,MAAM,CAAC,4BAA4B,+BACjC,SAAS,MAAM;CACjB,MAAM,CAAC,gBAAgB,mBAAmB,SAAS,MAAM;CACzD,MAAM,CAAC,qBAAqB,0BAA0B,SAAS,MAAM;CAErE,MAAM,kBAAkB,OAAO,MAAM;CAErC,MAAM,qBAAqB,UAAU;AACnC,cAAY,MAAM,cAAc;AAIhC,MAAI,CAAC,gBAAgB,SAAS;AAC5B,mBAAgB,UAAU;AAE1B,OAAI;AACF,8BAA0B;YACnB,GAAG;AAGZ,OAAI;AACF,iCAA6B;YACtB,GAAG;;;CAMhB,MAAM,2BAA2B;AAC/B,cAAY,KAAK;;CAGnB,MAAM,qBAAqB,kBAAkB;AAC3C,cAAY,KAAK;AACjB,gBAAc,uCAAuC;IACpD,CAAC,cAAc,CAAC;CAEnB,MAAM,uCAAuC;AAC3C,8BAA4B,KAAK;AACjC,cAAY,KAAK;;CAGnB,MAAM,wCAAwC;AAC5C,8BAA4B,MAAM;;CAGpC,MAAM,2BAA2B;AAC/B,kBAAgB,KAAK;AACrB,cAAY,KAAK;;CAGnB,MAAM,4BAA4B;AAChC,kBAAgB,MAAM;;CAGxB,MAAM,OAAO,QAAQ,SAAS;CAC9B,MAAM,KAAK,OAAO,wBAAwB;CAI1C,MAAM,sBAAsB,gBAAc;EACxC,MAAM,iBAAiB,CAAC,IAAI,GAAG,CAAC,SAASC,YAAU;EACnD,MAAM,0BAA0B,CAAC,CAAC,cAAc;EAChD,MAAM,cACJ,KAAK,IAAI,0BACT,KAAK,IAAI,oBACT,KAAK,IAAI;AACX,SAAO,kBAAkB,2BAA2B;;CAGtD,MAAM,uBAAuB,YAC3B,YACE,UACE,cAAc,iBACd,+BACA;EACE,QAAQ;EACR,SAAS,EACP,iBAAiB,MAAM,iBACxB;EACF,CACF,EACH,CAAC,MAAM,gBAAgB,CACxB;CAED,MAAM,4BAA4B,YAChC,YACE,UACE,cAAc,iBACd,yBACA;EACE,QAAQ;EACR,SAAS,EACP,iBAAiB,MAAM,iBACxB;EACF,CACF,EACH,CAAC,MAAM,gBAAgB,CACxB;CAED,MAAM,eAAe,mBAAmB,UAAU;CAClD,MAAM,0BACJ;EAAC;EAAG;EAAI;EAAI;EAAG,CAAC,SAAS,UAAU,IACnC,YACA,eACA,kBACA;CACF,MAAM,0BAA0B,aAAa;AAE7C,iBAAgB;EACd,MAAM,oBAAoB,YAAY;AACpC,OAAI;AACF,QAAI,cAAc,OAAO,qBAAqB,IAE5C,yBADiB,MAAM,2BAA2B,GACjB,WAAW,IAAI;QAGhD,yBADiB,MAAM,sBAAsB,GACZ,WAAW,IAAI;YAE3C,OAAO;AACd,2BAAuB,MAAM;;;AAGjC,qBAAmB;IAClB,CAAC,sBAAsB,0BAA0B,CAAC;AAGrD,KAAI,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,wBAChD,QAAO,oCAAC,SAAI,IAAG,yBAAyB;AAG1C,QACE,oCAAC;EAAI,IAAG;EAAuB,WAAW,QAAQ;IAChD,oCAAC;EACC,IAAG;EACH,iBAAe;EACf,iBAAc;EACd,SAAS;IAET,oCAACC,eAAgB,OAAO;EAAE,OAAO;EAAS,SAAS;EAAK,GAAI,CACjD,EACb,oCAAC;EACK;EACE;EACI;EACV,SAAS;EACT,cAAc;GACZ,UAAU;GACV,YAAY;GACb;EACD,iBAAiB;GACf,UAAU;GACV,YAAY;GACb;IAED,oCAAC,SAAI,WAAW,QAAQ,WACtB,oCAAC,SAAI,WAAW,QAAQ,UACtB,oCAAC,cAAW,SAAQ,QAAM,EAAE,OAAO,CAAc,EACjD,oCAAC;EACC,MAAK;EACL,WAAW,QAAQ;EACnB,SAAS;IAET,oCAACC,YAAY,CACF,CACT,EACN,oCAAC;EAAK,WAAU;EAAM,cAAW;IAE9B,gBACC,oCAAC;EACC;EACA,IAAG;EACH,SAAS;IAET,oCAAC,gBAAa,WAAW,QAAQ,QAC/B,oCAACD,kBAAkB,CACN,EACf,oCAAC,gBAAa,SAAS,EAAE,WAAW,GAAI,CAC/B,EAIZ,2BACC,oCAAC;EACC;EACA,IAAG;EACH,SAAS;IAET,oCAAC,gBAAa,WAAW,QAAQ,QAC/B,oCAACE,WAAW,CACC,EACf,oCAAC,gBAAa,SAAS,EAAE,iBAAiB,GAAI,CACrC,EAIZ,2BACC,oCAAC;EACC;EACA,IAAG;EACH,SAAS;IAET,oCAAC,gBAAa,WAAW,QAAQ,QAC/B,oCAACF,kBAAkB,CACN,EACf,oCAAC,gBAAa,SAAS,EAAE,wBAAwB,GAAI,CAC5C,CAER,CACH,CACE,EAGV,oCAAC,YAAS,UAAU,QAClB,oCAAC;EAAkB,MAAM;EAAgB,SAAS;GAAuB,CAChE,EAGX,oCAAC,YAAS,UAAU,QAClB,oCAAC;EACC,MAAM;EACN,SAAS;EACwB;EACjC,WAAW,WAAW;AACpB,WAAQ,IAAI,kBAAkB,OAAO;;EAEvC,eAAe,EAAE;GACjB,CACO,CACP;;;;;ACpSV,MAAMG,cAAY,WAAW;CAC3B,MAAM;EACJ,OAAO;EACP,QAAQ;EACR,kBAAkB,EAAC,kBAAoD,oBAAoB,YAAY;EACvG,OAAO;EACP,SAAS;EACT,YAAY;EACZ,UAAU;EAEV,aAAa,EACX,OAAO,WACR;EACF;CACF,YAAY;EACT,UAAU;EACV,MAAM;EACN,WAAW;EACX,YAAY;EACd;CACD,WAAW;EACR,UAAU;EACV,OAAO;EACP,YAAY;EACd;CACD,CAAC;AAEF,MAAa,0BAA0B;CACtC,MAAM,aAAa,WAAW;CAC9B,MAAM,mBAAmB,qBAAqB;CAE7C,MAAM,UAAUA,YAAU,EAAC,aAAa,kBAAiB,CAAC;AAC1D,KAAG,CAAC,iBAAmB,QAAO;AAE9B,QACE,oCAAC;EACC,WAAW,GAAG,QAAQ,KAAK,GAAG,qBAAqB,YAAY,YAAY;EAC3E,IAAG;IAEH,oCAACC,gBAAW,WAAW,QAAQ,cAC5B,kBAAkB,OAAO,EAAE,CAAC,aAAa,GAAC,kBAAkB,MAAM,EAAE,IAAI,GAC9D,EAChB,oCAACA,gBAAW,WAAW,QAAQ,aACzB,YAAY,cAAc,WAChB,CACT;;;;;AC/BV,MAAM,YAAY,YACf,WAAW;CACV,MAAM;EACJ,OAAO,OAAO,SAAS,QAAQ;EAC/B,QAAQ,OAAO,QAAQ,SAAS;EAEjC;CACD,QAAQ,EACN,MAAM,GACP;CACD,cAAc;EACZ,SAAS;EACT,YAAY,EAAE,qBAAqB,KAAK;EACzC;CACD,SAAS;EACP,SAAS;EACT,WAAW,MAAM,QAAQ,EAAE;EAC5B;CACD,WAAW,EACT,OAAO,OAAO,SAAS,gBAAgB,OAAO,SAAS,SAAS,KAAK,EACtE;CACD,QAAQ;EACN,OAAO;EACP,QAAQ;EACR,iBAAiB,OAAO,SAAS,WAAW;EAC7C;CACD,QAAQ;EACN,YAAY,MAAM,QAAQ,EAAE;EAC5B,WAAW,MAAM,QAAQ,MAAM;EAChC;CACD,UAAU;EACR,MAAM;EACN,UAAU;EACX;CACF,GACD,EAAE,MAAM,cAAc,CACvB;;;;AAKD,MAAa,oBAAoB,UAAU;CAEzC,MAAM,UAAU,UAAU,EACxB,gBAFe,qBAAqB,GAET,mBAAmB,GAC/C,CAAC;CACF,MAAM,EAAE,cAAc;AAEtB,QAAO,oCAAC,SAAI,WAAW,KAAK,WAAW,QAAQ,aAAa,GAAI;;;;;AAMlE,MAAM,cAAc,UAAU;CAC5B,MAAM,UAAU,UAAU,MAAM;CAChC,MAAM,EACJ,WACA,UACA,YACA,YACA,UACA,iBAAiB,QACjB,QAAQ,WACR,oBACA,wBACA,iBACA,cACA,cACA,eACA,eACA,WACA,iBACA,uBAAsB,OACtB,iBAAiB,OACjB,GAAG,UACD;CAGJ,MAAM,SAAS,cADD,UAAU,CACW,YAAY,GAAG,KAAK,CAAC;AAExD,QACE,0DACE,oCAAC;EACC,WAAW;EACX,UAAS;EACF;EACP,GAAI;EACO;EACX,SAAS,EAAE,MAAM,QAAQ,MAAM;IAE/B,oCAAC,wBAAoB,EACrB,oCAAC,WAAQ,WAAW,QAAQ,WACzB,UAAU,CAAC,iBACV,oCAAC;EACC,WAAW,QAAQ;EACnB,cAAW;EACX,eAAe,mBAAmB,WAAW,KAAK;IAElD,oCAAC,iBAAa,CACH,EAEd,CAAC,UACA,oCAAC;EACC,WAAW,QAAQ;EACnB,cAAW;EACX,eAAe,mBAAmB,WAAW,KAAK;IAElD,oCAAC,uBAAmB,CACT,EAGf,oCAAC;EACC,WAAU;EACV,SAAQ;EACR,OAAO,EAAE,YAAY,iBAAiB,IAAI;IAEzC,SACU,EAEZ,UACC,oCAAC,SAAI,OAAO,EAAE,YAAY,IAAI,IAC3B,MAAM,eAAe,eAAe,GACnC,iBACE,kBAAkB,OAAO,mBAAmB,aAAa,eAAe,QAAQ,eAAe,iBACjG,oCAACC;EACC,eAAe,eAAe;EAC9B,MAAM,eAAe;EACrB,OAAO,eAAe;EACtB,UAAU,eAAe;EACzB,4BAA4B,eAAe;EAC3C,aAAa,eAAe;EAC5B,WAAW,eAAe;EAC1B,YAAY,eAAe;GAC3B,GAEF,oCAAC;EACC,OAAM;EACN,MAAM;EACkB;GACxB,CAEA,EAER,oCAAC,SAAI,WAAW,QAAQ,YAAW,WAAiB,EACnD,gBACC,oCAAC;EACC,MAAM;EACQ;EACd,OAAO;EACU;GACjB,EAGH,CAAC,UAAU,CAAC,iBACX,oCAAC;EACC,WAAW,QAAQ;EACnB,cAAW;EACX,eAAe,mBAAmB,UAAU,KAAK;IAEjD,oCAAC,iBAAa,CACH,EAEf,oCAAC,SAAI,WAAW,QAAQ,4BACtB,oCAAC,qCAAiC,CAC9B,EACL,CAAC,kBAAkB,oCAAC,iBAAa,EACjC,CAAC,wBAAwB,oCAAC,oBAA4B,YAAa,EACpE,oCAAC,aAAK,WAAiB,CACf,CACH,EACT,oCAAC,oBAA4B,YAAa,CACzC;;AAIP,yBAAe;AAEf,WAAW,YAAY;CACrB,gBAAgB,UAAU,UAAU;EAClC,UAAU;EACV,UAAU;EACV,UAAU;EACV,UAAU;EACX,CAAC;CAIF,iBAAiB,UAAU;CAC5B"}
@@ -79,4 +79,4 @@ var SparsePlotWidget_exports = /* @__PURE__ */ __export({
79
79
 
80
80
  //#endregion
81
81
  export { params as i, SparsePlotWidget_default as n, layout as r, SparsePlotWidget_exports as t };
82
- //# sourceMappingURL=SparsePlotWidget-B3wtNHo2.js.map
82
+ //# sourceMappingURL=SparsePlotWidget-ZYP6TKB6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SparsePlotWidget-B3wtNHo2.js","names":["params","WidgetCard","FluentStatsSnippet"],"sources":["../src/UI/widgets/library/SparsePlotWidget/SparsePlotWidget.jsx","../src/UI/widgets/library/SparsePlotWidget/index.ts"],"sourcesContent":["import React, { forwardRef } from 'react'\nimport { Grid, Box } from '@material-ui/core'\nimport { MuiVegaLite } from '@material-vega/material-ui'\nimport WidgetCard from '../../WidgetCard'\nimport FluentStatsSnippet from '../../FluentComponents/atoms/FluentStatsSnippet'\n\nexport const layout = {\n w: { default: 2, min: 0, max: 4 },\n h: { default: 2, min: 0, max: 4 }\n}\n\nexport const params = {\n mode: {\n defaultValue: 'chart'\n }\n}\n\nconst SparsePlotWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props\n const { mockData, apiUrl, theme } = params\n\n return (\n <WidgetCard ref={ref} {...other} title={mockData?.title} theme={theme}>\n <Grid container>\n {mockData?.stats.map((stat) => (\n <Grid item xs={3} key={stat.label}>\n <FluentStatsSnippet\n label={stat.label}\n amount={stat.currentValue}\n prevAmount={stat.previousValue}\n />\n </Grid>\n ))}\n </Grid>\n <Box clone flex={1} mt={1} overflow='hidden'>\n <MuiVegaLite\n spec={{\n $schema: 'https://vega.github.io/schema/vega-lite/v4.json',\n width: 'container',\n height: 'container',\n data: mockData?.data,\n mark: { type: 'point', line: true, point: true },\n encoding: {\n x: { field: 'xAxis', type: mockData?.xAxisType },\n y: { field: 'yAxis', type: mockData?.yAxisType }\n }\n }}\n variant='scatterplotChart'\n autoResize\n actions={false}\n />\n </Box>\n {children}\n </WidgetCard>\n )\n}\n\nexport default forwardRef(SparsePlotWidget)\n","export * from './SparsePlotWidget';\nexport {default} from './SparsePlotWidget';\n"],"mappings":";;;;;;;;AAMA,MAAa,SAAS;CACpB,GAAG;EAAE,SAAS;EAAG,KAAK;EAAG,KAAK;EAAG;CACjC,GAAG;EAAE,SAAS;EAAG,KAAK;EAAG,KAAK;EAAG;CAClC;AAED,MAAa,SAAS,EACpB,MAAM,EACJ,cAAc,SACf,EACF;AAED,MAAM,oBAAoB,OAAO,QAAQ;CACvC,MAAM,EAAE,UAAU,kBAAQ,UAAU,GAAG,UAAU;CACjD,MAAM,EAAE,UAAU,QAAQ,UAAUA;AAEpC,QACE,oCAACC;EAAgB;EAAK,GAAI;EAAO,OAAO,UAAU;EAAc;IAC9D,oCAAC,QAAK,mBACH,UAAU,MAAM,KAAK,SACpB,oCAAC;EAAK;EAAK,IAAI;EAAG,KAAK,KAAK;IAC1B,oCAACC;EACC,OAAO,KAAK;EACZ,QAAQ,KAAK;EACb,YAAY,KAAK;GACjB,CACG,CACP,CACG,EACP,oCAAC;EAAI;EAAM,MAAM;EAAG,IAAI;EAAG,UAAS;IAClC,oCAAC;EACC,MAAM;GACJ,SAAS;GACT,OAAO;GACP,QAAQ;GACR,MAAM,UAAU;GAChB,MAAM;IAAE,MAAM;IAAS,MAAM;IAAM,OAAO;IAAM;GAChD,UAAU;IACR,GAAG;KAAE,OAAO;KAAS,MAAM,UAAU;KAAW;IAChD,GAAG;KAAE,OAAO;KAAS,MAAM,UAAU;KAAW;IACjD;GACF;EACD,SAAQ;EACR;EACA,SAAS;GACT,CACE,EACL,SACU;;AAIjB,+BAAe,WAAW,iBAAiB"}
1
+ {"version":3,"file":"SparsePlotWidget-ZYP6TKB6.js","names":["params","WidgetCard","FluentStatsSnippet"],"sources":["../src/UI/widgets/library/SparsePlotWidget/SparsePlotWidget.jsx","../src/UI/widgets/library/SparsePlotWidget/index.ts"],"sourcesContent":["import React, { forwardRef } from 'react'\nimport { Grid, Box } from '@material-ui/core'\nimport { MuiVegaLite } from '@material-vega/material-ui'\nimport WidgetCard from '../../WidgetCard'\nimport FluentStatsSnippet from '../../FluentComponents/atoms/FluentStatsSnippet'\n\nexport const layout = {\n w: { default: 2, min: 0, max: 4 },\n h: { default: 2, min: 0, max: 4 }\n}\n\nexport const params = {\n mode: {\n defaultValue: 'chart'\n }\n}\n\nconst SparsePlotWidget = (props, ref) => {\n const { children, params, setParam, ...other } = props\n const { mockData, apiUrl, theme } = params\n\n return (\n <WidgetCard ref={ref} {...other} title={mockData?.title} theme={theme}>\n <Grid container>\n {mockData?.stats.map((stat) => (\n <Grid item xs={3} key={stat.label}>\n <FluentStatsSnippet\n label={stat.label}\n amount={stat.currentValue}\n prevAmount={stat.previousValue}\n />\n </Grid>\n ))}\n </Grid>\n <Box clone flex={1} mt={1} overflow='hidden'>\n <MuiVegaLite\n spec={{\n $schema: 'https://vega.github.io/schema/vega-lite/v4.json',\n width: 'container',\n height: 'container',\n data: mockData?.data,\n mark: { type: 'point', line: true, point: true },\n encoding: {\n x: { field: 'xAxis', type: mockData?.xAxisType },\n y: { field: 'yAxis', type: mockData?.yAxisType }\n }\n }}\n variant='scatterplotChart'\n autoResize\n actions={false}\n />\n </Box>\n {children}\n </WidgetCard>\n )\n}\n\nexport default forwardRef(SparsePlotWidget)\n","export * from './SparsePlotWidget';\nexport {default} from './SparsePlotWidget';\n"],"mappings":";;;;;;;;AAMA,MAAa,SAAS;CACpB,GAAG;EAAE,SAAS;EAAG,KAAK;EAAG,KAAK;EAAG;CACjC,GAAG;EAAE,SAAS;EAAG,KAAK;EAAG,KAAK;EAAG;CAClC;AAED,MAAa,SAAS,EACpB,MAAM,EACJ,cAAc,SACf,EACF;AAED,MAAM,oBAAoB,OAAO,QAAQ;CACvC,MAAM,EAAE,UAAU,kBAAQ,UAAU,GAAG,UAAU;CACjD,MAAM,EAAE,UAAU,QAAQ,UAAUA;AAEpC,QACE,oCAACC;EAAgB;EAAK,GAAI;EAAO,OAAO,UAAU;EAAc;IAC9D,oCAAC,QAAK,mBACH,UAAU,MAAM,KAAK,SACpB,oCAAC;EAAK;EAAK,IAAI;EAAG,KAAK,KAAK;IAC1B,oCAACC;EACC,OAAO,KAAK;EACZ,QAAQ,KAAK;EACb,YAAY,KAAK;GACjB,CACG,CACP,CACG,EACP,oCAAC;EAAI;EAAM,MAAM;EAAG,IAAI;EAAG,UAAS;IAClC,oCAAC;EACC,MAAM;GACJ,SAAS;GACT,OAAO;GACP,QAAQ;GACR,MAAM,UAAU;GAChB,MAAM;IAAE,MAAM;IAAS,MAAM;IAAM,OAAO;IAAM;GAChD,UAAU;IACR,GAAG;KAAE,OAAO;KAAS,MAAM,UAAU;KAAW;IAChD,GAAG;KAAE,OAAO;KAAS,MAAM,UAAU;KAAW;IACjD;GACF;EACD,SAAQ;EACR;EACA,SAAS;GACT,CACE,EACL,SACU;;AAIjB,+BAAe,WAAW,iBAAiB"}
@@ -320,4 +320,4 @@ const Statistic = (props) => {
320
320
 
321
321
  //#endregion
322
322
  export { CheckboxGroup as i, PopoverCard as n, CheckboxList as r, Statistic as t };
323
- //# sourceMappingURL=Statistic-IWynWCev.js.map
323
+ //# sourceMappingURL=Statistic-ChTR_kas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Statistic-IWynWCev.js","names":["useStyles","useStyles"],"sources":["../src/UI/mapLayout/ui/CheckboxGroup.jsx","../src/UI/mapLayout/ui/CheckboxList.jsx","../src/UI/mapLayout/ui/PopoverCard.jsx","../src/UI/mapLayout/ui/Statistic.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport clsx from 'clsx';\nimport { ChevronDownIcon } from '@fluentui/react-icons';\nimport { FormControlLabel, FormGroup, makeStyles } from '@material-ui/core';\nimport { isEmpty } from 'lodash';\nimport { FluentCheckbox } from '../../inputs/checkbox/FluentCheckbox';\nimport { FluentIconButton } from '../../inputs/buttons/FluentIconButton';\nimport { getChildrenObjectsWithNoChildren } from '../utilities/MapUtilities';\n\nconst useStyles = makeStyles((theme) => ({\n expand: {\n transform: 'rotate(0deg)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shortest\n })\n },\n expandOpen: {\n transform: 'rotate(180deg)'\n },\n iconButtonWrapper: {\n borderRadius: 2,\n margin: 'auto 0px'\n },\n expandedList: {\n marginLeft: theme.spacing(4),\n display: 'flex',\n flexDirection: 'column'\n },\n checkboxGroup: {\n display: 'flex',\n justifyContent: 'space-between'\n }\n}));\n\nexport const CheckboxGroup = (props) => {\n const {\n title,\n options,\n onChange,\n defaultExpandedListState = true,\n values,\n valueKey\n } = props;\n const [checkedItems, setCheckedItems] = useState({});\n const [checkedParent, setCheckedParent] = useState(false);\n const [expanded, setExpanded] = useState(defaultExpandedListState);\n const [parentIndeterminate, setParentIndeterminate] = useState(false);\n const classes = useStyles();\n\n useEffect(() => {\n let preCheckedItems = {};\n options?.forEach((option) => {\n if(!!!option?.options || option?.options?.length === 0) {\n preCheckedItems[option.value] = values?.includes(option.value);\n }\n });\n setCheckedItems(preCheckedItems);\n }, [options, values]);\n\n //get a list of child values\n const childrenValues = useMemo(() => {\n return getChildrenObjectsWithNoChildren(options ?? [], 'value');\n }, [options]);\n\n useEffect(() => {\n const checkedAll = isEmpty(checkedItems)\n ? (childrenValues?.length > 0 &&\n childrenValues?.every((val) => values.includes(val))) ??\n false\n : Object.values(checkedItems)?.every((checked) => checked);\n\n setCheckedParent(checkedAll);\n\n setParentIndeterminate(\n !checkedAll &&\n (isEmpty(checkedItems)\n ? childrenValues?.some((val) => values.includes(val))\n : Object.values(checkedItems)?.some((checked) => checked))\n );\n }, [checkedItems, childrenValues, title, values]);\n\n const handleOnClickChildCheckboxOnChange = useCallback(\n (event) => {\n setCheckedItems((preVal) => ({\n ...preVal,\n [event?.target?.name]: event?.target?.checked\n }));\n\n if (!event?.target?.checked) {\n onChange(values?.filter((val) => val !== event?.target?.name));\n } else {\n onChange([...values, event?.target?.name]);\n }\n },\n [onChange, values]\n );\n\n const handleParentCheckboxOnChange = useCallback(\n (event) => {\n setCheckedParent(event?.target?.checked);\n if (!event?.target?.checked) {\n setCheckedItems({});\n\n onChange(\n values?.filter((val) => {\n return !childrenValues?.includes(val);\n })\n );\n }\n\n let newItemToAdd = [];\n childrenValues.forEach((option) => {\n if (event?.target?.checked && option && !values?.includes(option)) {\n newItemToAdd.push(option);\n }\n });\n\n if (newItemToAdd.length > 0) {\n onChange([...values, ...newItemToAdd]);\n }\n setExpanded(true);\n setParentIndeterminate(false);\n },\n [childrenValues, onChange, values]\n );\n\n const childrenList = useMemo(() => {\n if (options?.length > 0) {\n return options?.map((option) => {\n if (option?.options?.length > 0) {\n return (\n <CheckboxGroup\n key={option?.value}\n title={option?.title}\n options={option?.options}\n values={values}\n valueKey={option?.value}\n onChange={onChange}\n />\n );\n }\n\n return (\n <FormControlLabel\n label={option?.title}\n control={\n <FluentCheckbox\n checked={checkedItems[option?.value] || false}\n onChange={handleOnClickChildCheckboxOnChange}\n />\n }\n name={option?.value}\n />\n );\n });\n }\n return [];\n }, [\n checkedItems,\n handleOnClickChildCheckboxOnChange,\n onChange,\n options,\n values\n ]);\n\n return (\n <FormGroup>\n {options?.length > 0 ? (\n <div className={classes.checkboxGroup}>\n <FormControlLabel\n label={title}\n control={\n <FluentCheckbox\n checked={checkedParent}\n indeterminate={parentIndeterminate}\n onChange={handleParentCheckboxOnChange}\n />\n }\n />\n\n <FluentIconButton\n className={clsx(\n classes.expand,\n {\n [classes.expandOpen]: expanded\n },\n classes.iconButtonWrapper\n )}\n onClick={() => setExpanded(!expanded)}\n icon={ChevronDownIcon}\n />\n </div>\n ) : (\n <div>\n <FormControlLabel\n label={title}\n control={\n <FluentCheckbox\n checked={checkedItems[valueKey] || false}\n onChange={handleOnClickChildCheckboxOnChange}\n name={valueKey}\n />\n }\n />\n </div>\n )}\n {expanded && options?.length > 0 && (\n <div className={classes.expandedList}>{childrenList}</div>\n )}\n </FormGroup>\n );\n};\n","import React from 'react';\nimport { CheckboxGroup } from './CheckboxGroup';\n\nexport const CheckboxList = (props) => {\n const { itemGroups, values, onChange } = props;\n\n return (\n <div>\n {itemGroups?.length > 0 &&\n itemGroups?.map((item) => (\n <CheckboxGroup\n title={item?.title}\n options={item?.options}\n values={values}\n onChange={onChange}\n />\n ))}\n </div>\n );\n};\n","import React, { useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n CaretDownSolid8Icon,\n ChromeCloseIcon,\n CompletedIcon,\n ErrorIcon,\n InfoIcon,\n MoreVerticalIcon,\n ViewIcon,\n WarningIcon\n} from '@fluentui/react-icons';\nimport {\n Card,\n CardContent,\n darken,\n IconButton,\n lighten,\n ListItemIcon,\n makeStyles,\n Menu,\n MenuItem,\n Tooltip,\n Typography,\n useTheme\n} from '@material-ui/core';\nimport { Adornment } from '../../components/feedback/Adornment';\nimport { FluentButton } from '../../inputs/buttons/FluentButton';\nimport { FluentIcon } from '../../../utilities/iconLibrary/FluentIcon';\nimport { FluentIconButton } from '../../inputs/buttons/FluentIconButton';\nimport { CompactDataList } from '../../dataDisplay/CompactDataList';\nimport { CompactDataListItem } from '../../dataDisplay/CompactDataListItem';\n\nconst useStyles = makeStyles((theme) => ({\n contentWrapper: {\n display: 'flex',\n height: '100%',\n width: (props) => props?.width ?? '100%'\n },\n titleWrapper: {\n display: 'flex',\n gap: theme.spacing(1),\n alignItems: 'center'\n },\n iconButtonWrapper: {\n borderRadius: 2\n },\n avatar: {\n width: '80px',\n height: '80px'\n },\n iconButtonsWrapper: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center'\n },\n primaryButtonContainer: {\n display: 'flex',\n justifyContent: 'flex-end',\n gap: theme.spacing(1)\n },\n actionButton: {\n color: '#FFFFFF'\n },\n fullHeight: {\n height: '100%'\n },\n fullWidth: {\n width: '100%'\n },\n messageWrapper: {\n display: 'flex',\n gap: theme.spacing(1),\n alignItems: 'center',\n padding: theme.spacing(1),\n backgroundColor: (props) =>\n props?.status\n ? lighten(theme.palette[props.status]?.main, 0.9)\n : lighten(theme.palette.info.main, 0.9)\n },\n iconMessage: {\n color: (props) => (props?.status ? theme.palette[props.status]?.main : null)\n },\n message: {\n color: (props) =>\n props?.status ? darken(theme.palette[props.status]?.main, 0.6) : null\n },\n}));\n\nexport const PopoverCard = (props) => {\n const {\n data,\n title,\n listData,\n showAdornment = true,\n status = 'info',\n detailsEvent,\n primaryActions,\n moreIconActions,\n message,\n messageIcon,\n hideMessageIcon = false,\n onClose,\n width\n } = props;\n const [moreIconAnchor, setMoreIconAnchor] = useState(null);\n const [primaryActionAnchor, setPrimaryActionAnchor] = useState(null);\n const { t } = useTranslation();\n const classes = useStyles({ width, status });\n const theme = useTheme();\n\n const handleOnClickMoreIcon = (event) => {\n setMoreIconAnchor(event?.currentTarget);\n };\n\n const handleOnClickPrimaryAction = (event) => {\n setPrimaryActionAnchor(event?.currentTarget);\n };\n\n const headerBackgroundColor = useMemo(() => {\n switch (status) {\n case 'success':\n return lighten(theme.palette.success.main, 0.7);\n case 'error':\n return lighten(theme.palette.error.main, 0.7);\n case 'warning':\n return lighten(theme.palette.warning.main, 0.7);\n default:\n return lighten(theme.palette.info.main, 0.7);\n }\n }, [status, theme]);\n\n const defaultMessageIcon = useMemo(() => {\n switch (status) {\n case 'success':\n return CompletedIcon;\n case 'error':\n return ErrorIcon;\n case 'warning':\n return WarningIcon;\n default:\n return InfoIcon;\n }\n }, [status]);\n\n return (\n <div>\n <div className={classes.contentWrapper}>\n {showAdornment && status && (\n <div>\n <Adornment color={status} />\n </div>\n )}\n <Card className={classes.fullWidth}>\n <CardContent style={{ backgroundColor: headerBackgroundColor }}>\n <div className={classes.iconButtonsWrapper}>\n <div className={classes.titleWrapper}>\n <FluentIconButton onClick={onClose} icon={ChromeCloseIcon} />\n <Typography variant='h6'>{title}</Typography>\n </div>\n <div>\n {moreIconActions?.length > 0 && (\n <>\n <Tooltip title={t('More') ?? ''}>\n <IconButton\n className={classes.iconButtonWrapper}\n onClick={handleOnClickMoreIcon}\n size='small'\n >\n <MoreVerticalIcon />\n </IconButton>\n </Tooltip>\n <Menu\n open={moreIconAnchor ? true : false}\n onClose={() => {\n setMoreIconAnchor(null);\n }}\n anchorEl={moreIconAnchor}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n >\n {moreIconActions?.map((action) => (\n <MenuItem onClick={() => {action.onClick(data)}}>\n {action?.icon && (\n <ListItemIcon>{action.icon}</ListItemIcon>\n )}\n {action?.name}\n </MenuItem>\n ))}\n </Menu>\n </>\n )}\n </div>\n </div>\n </CardContent>\n {message && (\n <div className={classes.messageWrapper}>\n {!hideMessageIcon && (\n <div className={classes.iconMessage}>\n <FluentIcon component={messageIcon ?? defaultMessageIcon} />\n </div>\n )}\n <div className={classes.message}>{message}</div>\n </div>\n )}\n <CardContent style={{ flex: 1 }}>\n <CompactDataList disableSeparator={false}>\n {listData?.map(({ subject, value }) => {\n return <CompactDataListItem label={subject} value={value} />;\n })}\n </CompactDataList>\n </CardContent>\n <CardContent style={{ flex: 1, paddingTop: 0, paddingBottom: 16 }}>\n <div className={classes.primaryButtonContainer}>\n {detailsEvent && (\n <FluentButton\n variant='outlined'\n endIcon={<ViewIcon />}\n onClick={detailsEvent}\n >\n {t('Details')}\n </FluentButton>\n )}\n\n <div>\n {primaryActions?.length > 0 && (\n <FluentButton\n variant='contained'\n color='secondary'\n endIcon={<CaretDownSolid8Icon />}\n onClick={handleOnClickPrimaryAction}\n className={classes.actionButton}\n >\n {t('Actions')}\n </FluentButton>\n )}\n <Menu\n open={primaryActionAnchor ? true : false}\n onClose={() => {\n setPrimaryActionAnchor(null);\n }}\n anchorEl={primaryActionAnchor}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n >\n {primaryActions?.map((action) => (\n <MenuItem onClick={() => {action.onClick(data)}}>\n {action?.icon && (\n <ListItemIcon>{action.icon}</ListItemIcon>\n )}\n {action?.name}\n </MenuItem>\n ))}\n </Menu>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport {\n Divider,\n Grid,\n lighten,\n makeStyles,\n Typography,\n} from '@material-ui/core';\nimport { FluentIconButton } from '../../inputs/buttons/FluentIconButton';\nimport { getIconFromName } from '../../../utilities/tree/TreeUtilities';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n margin: 'auto 5px auto 0',\n padding: theme.spacing(1),\n backgroundColor: (props) =>\n lighten(props?.color ? props.color : theme.palette.info.main, 0.9),\n borderRadius: theme.spacing(3),\n },\n valueContainer: {\n marginRight: theme.spacing(1),\n },\n iconColor: {\n color: (props) => props?.color,\n borderRadius: theme.spacing(3),\n },\n}));\n\nexport const Statistic = (props) => {\n const { icon, value, title, color, onClick, hideDivider = false } = props;\n const classes = useStyles({ color: color });\n\n return (\n <div>\n <Grid container>\n {!hideDivider && (\n <Grid item>\n <Divider orientation=\"vertical\" variant=\"middle\" />\n </Grid>\n )}\n {icon && (\n <Grid item className={classes.icon}>\n <FluentIconButton\n icon={getIconFromName(icon)}\n className={classes.iconColor}\n onClick={onClick}\n />\n </Grid>\n )}\n <Grid item className={classes.valueContainer}>\n <Typography variant=\"h5\">{value}</Typography>\n <Typography variant=\"caption\">{title}</Typography>\n </Grid>\n </Grid>\n </div>\n );\n};"],"mappings":"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"}
1
+ {"version":3,"file":"Statistic-ChTR_kas.js","names":["useStyles","useStyles"],"sources":["../src/UI/mapLayout/ui/CheckboxGroup.jsx","../src/UI/mapLayout/ui/CheckboxList.jsx","../src/UI/mapLayout/ui/PopoverCard.jsx","../src/UI/mapLayout/ui/Statistic.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport clsx from 'clsx';\nimport { ChevronDownIcon } from '@fluentui/react-icons';\nimport { FormControlLabel, FormGroup, makeStyles } from '@material-ui/core';\nimport { isEmpty } from 'lodash';\nimport { FluentCheckbox } from '../../inputs/checkbox/FluentCheckbox';\nimport { FluentIconButton } from '../../inputs/buttons/FluentIconButton';\nimport { getChildrenObjectsWithNoChildren } from '../utilities/MapUtilities';\n\nconst useStyles = makeStyles((theme) => ({\n expand: {\n transform: 'rotate(0deg)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shortest\n })\n },\n expandOpen: {\n transform: 'rotate(180deg)'\n },\n iconButtonWrapper: {\n borderRadius: 2,\n margin: 'auto 0px'\n },\n expandedList: {\n marginLeft: theme.spacing(4),\n display: 'flex',\n flexDirection: 'column'\n },\n checkboxGroup: {\n display: 'flex',\n justifyContent: 'space-between'\n }\n}));\n\nexport const CheckboxGroup = (props) => {\n const {\n title,\n options,\n onChange,\n defaultExpandedListState = true,\n values,\n valueKey\n } = props;\n const [checkedItems, setCheckedItems] = useState({});\n const [checkedParent, setCheckedParent] = useState(false);\n const [expanded, setExpanded] = useState(defaultExpandedListState);\n const [parentIndeterminate, setParentIndeterminate] = useState(false);\n const classes = useStyles();\n\n useEffect(() => {\n let preCheckedItems = {};\n options?.forEach((option) => {\n if(!!!option?.options || option?.options?.length === 0) {\n preCheckedItems[option.value] = values?.includes(option.value);\n }\n });\n setCheckedItems(preCheckedItems);\n }, [options, values]);\n\n //get a list of child values\n const childrenValues = useMemo(() => {\n return getChildrenObjectsWithNoChildren(options ?? [], 'value');\n }, [options]);\n\n useEffect(() => {\n const checkedAll = isEmpty(checkedItems)\n ? (childrenValues?.length > 0 &&\n childrenValues?.every((val) => values.includes(val))) ??\n false\n : Object.values(checkedItems)?.every((checked) => checked);\n\n setCheckedParent(checkedAll);\n\n setParentIndeterminate(\n !checkedAll &&\n (isEmpty(checkedItems)\n ? childrenValues?.some((val) => values.includes(val))\n : Object.values(checkedItems)?.some((checked) => checked))\n );\n }, [checkedItems, childrenValues, title, values]);\n\n const handleOnClickChildCheckboxOnChange = useCallback(\n (event) => {\n setCheckedItems((preVal) => ({\n ...preVal,\n [event?.target?.name]: event?.target?.checked\n }));\n\n if (!event?.target?.checked) {\n onChange(values?.filter((val) => val !== event?.target?.name));\n } else {\n onChange([...values, event?.target?.name]);\n }\n },\n [onChange, values]\n );\n\n const handleParentCheckboxOnChange = useCallback(\n (event) => {\n setCheckedParent(event?.target?.checked);\n if (!event?.target?.checked) {\n setCheckedItems({});\n\n onChange(\n values?.filter((val) => {\n return !childrenValues?.includes(val);\n })\n );\n }\n\n let newItemToAdd = [];\n childrenValues.forEach((option) => {\n if (event?.target?.checked && option && !values?.includes(option)) {\n newItemToAdd.push(option);\n }\n });\n\n if (newItemToAdd.length > 0) {\n onChange([...values, ...newItemToAdd]);\n }\n setExpanded(true);\n setParentIndeterminate(false);\n },\n [childrenValues, onChange, values]\n );\n\n const childrenList = useMemo(() => {\n if (options?.length > 0) {\n return options?.map((option) => {\n if (option?.options?.length > 0) {\n return (\n <CheckboxGroup\n key={option?.value}\n title={option?.title}\n options={option?.options}\n values={values}\n valueKey={option?.value}\n onChange={onChange}\n />\n );\n }\n\n return (\n <FormControlLabel\n label={option?.title}\n control={\n <FluentCheckbox\n checked={checkedItems[option?.value] || false}\n onChange={handleOnClickChildCheckboxOnChange}\n />\n }\n name={option?.value}\n />\n );\n });\n }\n return [];\n }, [\n checkedItems,\n handleOnClickChildCheckboxOnChange,\n onChange,\n options,\n values\n ]);\n\n return (\n <FormGroup>\n {options?.length > 0 ? (\n <div className={classes.checkboxGroup}>\n <FormControlLabel\n label={title}\n control={\n <FluentCheckbox\n checked={checkedParent}\n indeterminate={parentIndeterminate}\n onChange={handleParentCheckboxOnChange}\n />\n }\n />\n\n <FluentIconButton\n className={clsx(\n classes.expand,\n {\n [classes.expandOpen]: expanded\n },\n classes.iconButtonWrapper\n )}\n onClick={() => setExpanded(!expanded)}\n icon={ChevronDownIcon}\n />\n </div>\n ) : (\n <div>\n <FormControlLabel\n label={title}\n control={\n <FluentCheckbox\n checked={checkedItems[valueKey] || false}\n onChange={handleOnClickChildCheckboxOnChange}\n name={valueKey}\n />\n }\n />\n </div>\n )}\n {expanded && options?.length > 0 && (\n <div className={classes.expandedList}>{childrenList}</div>\n )}\n </FormGroup>\n );\n};\n","import React from 'react';\nimport { CheckboxGroup } from './CheckboxGroup';\n\nexport const CheckboxList = (props) => {\n const { itemGroups, values, onChange } = props;\n\n return (\n <div>\n {itemGroups?.length > 0 &&\n itemGroups?.map((item) => (\n <CheckboxGroup\n title={item?.title}\n options={item?.options}\n values={values}\n onChange={onChange}\n />\n ))}\n </div>\n );\n};\n","import React, { useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n CaretDownSolid8Icon,\n ChromeCloseIcon,\n CompletedIcon,\n ErrorIcon,\n InfoIcon,\n MoreVerticalIcon,\n ViewIcon,\n WarningIcon\n} from '@fluentui/react-icons';\nimport {\n Card,\n CardContent,\n darken,\n IconButton,\n lighten,\n ListItemIcon,\n makeStyles,\n Menu,\n MenuItem,\n Tooltip,\n Typography,\n useTheme\n} from '@material-ui/core';\nimport { Adornment } from '../../components/feedback/Adornment';\nimport { FluentButton } from '../../inputs/buttons/FluentButton';\nimport { FluentIcon } from '../../../utilities/iconLibrary/FluentIcon';\nimport { FluentIconButton } from '../../inputs/buttons/FluentIconButton';\nimport { CompactDataList } from '../../dataDisplay/CompactDataList';\nimport { CompactDataListItem } from '../../dataDisplay/CompactDataListItem';\n\nconst useStyles = makeStyles((theme) => ({\n contentWrapper: {\n display: 'flex',\n height: '100%',\n width: (props) => props?.width ?? '100%'\n },\n titleWrapper: {\n display: 'flex',\n gap: theme.spacing(1),\n alignItems: 'center'\n },\n iconButtonWrapper: {\n borderRadius: 2\n },\n avatar: {\n width: '80px',\n height: '80px'\n },\n iconButtonsWrapper: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center'\n },\n primaryButtonContainer: {\n display: 'flex',\n justifyContent: 'flex-end',\n gap: theme.spacing(1)\n },\n actionButton: {\n color: '#FFFFFF'\n },\n fullHeight: {\n height: '100%'\n },\n fullWidth: {\n width: '100%'\n },\n messageWrapper: {\n display: 'flex',\n gap: theme.spacing(1),\n alignItems: 'center',\n padding: theme.spacing(1),\n backgroundColor: (props) =>\n props?.status\n ? lighten(theme.palette[props.status]?.main, 0.9)\n : lighten(theme.palette.info.main, 0.9)\n },\n iconMessage: {\n color: (props) => (props?.status ? theme.palette[props.status]?.main : null)\n },\n message: {\n color: (props) =>\n props?.status ? darken(theme.palette[props.status]?.main, 0.6) : null\n },\n}));\n\nexport const PopoverCard = (props) => {\n const {\n data,\n title,\n listData,\n showAdornment = true,\n status = 'info',\n detailsEvent,\n primaryActions,\n moreIconActions,\n message,\n messageIcon,\n hideMessageIcon = false,\n onClose,\n width\n } = props;\n const [moreIconAnchor, setMoreIconAnchor] = useState(null);\n const [primaryActionAnchor, setPrimaryActionAnchor] = useState(null);\n const { t } = useTranslation();\n const classes = useStyles({ width, status });\n const theme = useTheme();\n\n const handleOnClickMoreIcon = (event) => {\n setMoreIconAnchor(event?.currentTarget);\n };\n\n const handleOnClickPrimaryAction = (event) => {\n setPrimaryActionAnchor(event?.currentTarget);\n };\n\n const headerBackgroundColor = useMemo(() => {\n switch (status) {\n case 'success':\n return lighten(theme.palette.success.main, 0.7);\n case 'error':\n return lighten(theme.palette.error.main, 0.7);\n case 'warning':\n return lighten(theme.palette.warning.main, 0.7);\n default:\n return lighten(theme.palette.info.main, 0.7);\n }\n }, [status, theme]);\n\n const defaultMessageIcon = useMemo(() => {\n switch (status) {\n case 'success':\n return CompletedIcon;\n case 'error':\n return ErrorIcon;\n case 'warning':\n return WarningIcon;\n default:\n return InfoIcon;\n }\n }, [status]);\n\n return (\n <div>\n <div className={classes.contentWrapper}>\n {showAdornment && status && (\n <div>\n <Adornment color={status} />\n </div>\n )}\n <Card className={classes.fullWidth}>\n <CardContent style={{ backgroundColor: headerBackgroundColor }}>\n <div className={classes.iconButtonsWrapper}>\n <div className={classes.titleWrapper}>\n <FluentIconButton onClick={onClose} icon={ChromeCloseIcon} />\n <Typography variant='h6'>{title}</Typography>\n </div>\n <div>\n {moreIconActions?.length > 0 && (\n <>\n <Tooltip title={t('More') ?? ''}>\n <IconButton\n className={classes.iconButtonWrapper}\n onClick={handleOnClickMoreIcon}\n size='small'\n >\n <MoreVerticalIcon />\n </IconButton>\n </Tooltip>\n <Menu\n open={moreIconAnchor ? true : false}\n onClose={() => {\n setMoreIconAnchor(null);\n }}\n anchorEl={moreIconAnchor}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n >\n {moreIconActions?.map((action) => (\n <MenuItem onClick={() => {action.onClick(data)}}>\n {action?.icon && (\n <ListItemIcon>{action.icon}</ListItemIcon>\n )}\n {action?.name}\n </MenuItem>\n ))}\n </Menu>\n </>\n )}\n </div>\n </div>\n </CardContent>\n {message && (\n <div className={classes.messageWrapper}>\n {!hideMessageIcon && (\n <div className={classes.iconMessage}>\n <FluentIcon component={messageIcon ?? defaultMessageIcon} />\n </div>\n )}\n <div className={classes.message}>{message}</div>\n </div>\n )}\n <CardContent style={{ flex: 1 }}>\n <CompactDataList disableSeparator={false}>\n {listData?.map(({ subject, value }) => {\n return <CompactDataListItem label={subject} value={value} />;\n })}\n </CompactDataList>\n </CardContent>\n <CardContent style={{ flex: 1, paddingTop: 0, paddingBottom: 16 }}>\n <div className={classes.primaryButtonContainer}>\n {detailsEvent && (\n <FluentButton\n variant='outlined'\n endIcon={<ViewIcon />}\n onClick={detailsEvent}\n >\n {t('Details')}\n </FluentButton>\n )}\n\n <div>\n {primaryActions?.length > 0 && (\n <FluentButton\n variant='contained'\n color='secondary'\n endIcon={<CaretDownSolid8Icon />}\n onClick={handleOnClickPrimaryAction}\n className={classes.actionButton}\n >\n {t('Actions')}\n </FluentButton>\n )}\n <Menu\n open={primaryActionAnchor ? true : false}\n onClose={() => {\n setPrimaryActionAnchor(null);\n }}\n anchorEl={primaryActionAnchor}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n >\n {primaryActions?.map((action) => (\n <MenuItem onClick={() => {action.onClick(data)}}>\n {action?.icon && (\n <ListItemIcon>{action.icon}</ListItemIcon>\n )}\n {action?.name}\n </MenuItem>\n ))}\n </Menu>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport {\n Divider,\n Grid,\n lighten,\n makeStyles,\n Typography,\n} from '@material-ui/core';\nimport { FluentIconButton } from '../../inputs/buttons/FluentIconButton';\nimport { getIconFromName } from '../../../utilities/tree/TreeUtilities';\n\nconst useStyles = makeStyles(theme => ({\n icon: {\n margin: 'auto 5px auto 0',\n padding: theme.spacing(1),\n backgroundColor: (props) =>\n lighten(props?.color ? props.color : theme.palette.info.main, 0.9),\n borderRadius: theme.spacing(3),\n },\n valueContainer: {\n marginRight: theme.spacing(1),\n },\n iconColor: {\n color: (props) => props?.color,\n borderRadius: theme.spacing(3),\n },\n}));\n\nexport const Statistic = (props) => {\n const { icon, value, title, color, onClick, hideDivider = false } = props;\n const classes = useStyles({ color: color });\n\n return (\n <div>\n <Grid container>\n {!hideDivider && (\n <Grid item>\n <Divider orientation=\"vertical\" variant=\"middle\" />\n </Grid>\n )}\n {icon && (\n <Grid item className={classes.icon}>\n <FluentIconButton\n icon={getIconFromName(icon)}\n className={classes.iconColor}\n onClick={onClick}\n />\n </Grid>\n )}\n <Grid item className={classes.valueContainer}>\n <Typography variant=\"h5\">{value}</Typography>\n <Typography variant=\"caption\">{title}</Typography>\n </Grid>\n </Grid>\n </div>\n );\n};"],"mappings":"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"}