udp-react-enterprise-component-library 25.18.3-beta.1 → 25.18.3-beta.2
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.
- package/dist/{ActionProvider-BGugOmjV.js → ActionProvider-B1-CUDQT.js} +7 -7
- package/dist/{ActionProvider-BGugOmjV.js.map → ActionProvider-B1-CUDQT.js.map} +1 -1
- package/dist/{ActionSplitScreen-D6_7PlK-.js → ActionSplitScreen-DjSUjE6M.js} +8 -8
- package/dist/{ActionSplitScreen-D6_7PlK-.js.map → ActionSplitScreen-DjSUjE6M.js.map} +1 -1
- package/dist/{ActionWrapper-DnP7lGDq.js → ActionWrapper-BwnB_Qw4.js} +14 -14
- package/dist/{ActionWrapper-DnP7lGDq.js.map → ActionWrapper-BwnB_Qw4.js.map} +1 -1
- package/dist/{ActionsRenderer-DbrPKZ1o.js → ActionsRenderer-DbMlilVW.js} +2 -2
- package/dist/{ActionsRenderer-DbrPKZ1o.js.map → ActionsRenderer-DbMlilVW.js.map} +1 -1
- package/dist/{AggregateChip-BF7S3x_K.js → AggregateChip-Dm3js2LK.js} +5 -5
- package/dist/{AggregateChip-BF7S3x_K.js.map → AggregateChip-Dm3js2LK.js.map} +1 -1
- package/dist/{AmbientChipButton-DYAYXuKp.js → AmbientChipButton-XFBUrwCb.js} +2 -2
- package/dist/AmbientChipButton-XFBUrwCb.js.map +1 -0
- package/dist/{AmbientGridTemplate-D1TMpzxb.js → AmbientGridTemplate-UXA3KgIL.js} +7 -7
- package/dist/{AmbientGridTemplate-D1TMpzxb.js.map → AmbientGridTemplate-UXA3KgIL.js.map} +1 -1
- package/dist/{AmbientTokenButton-B53E25r2.js → AmbientTokenButton-F3Wg-88V.js} +2 -2
- package/dist/AmbientTokenButton-F3Wg-88V.js.map +1 -0
- package/dist/{AppMenu-oGJtO6Vp.js → AppMenu-5JJDLddA.js} +3 -3
- package/dist/{AppMenu-oGJtO6Vp.js.map → AppMenu-5JJDLddA.js.map} +1 -1
- package/dist/{AuthProvider-J79EBNDc.js → AuthProvider-DtiKAaWb.js} +5 -5
- package/dist/{AuthProvider-J79EBNDc.js.map → AuthProvider-DtiKAaWb.js.map} +1 -1
- package/dist/{BarChartWidget-u-8fxMn5.js → BarChartWidget-DDsXC3pz.js} +3 -3
- package/dist/BarChartWidget-DDsXC3pz.js.map +1 -0
- package/dist/{BaseTreeMenu-Dg8MW4TD.js → BaseTreeMenu-CHRy-g7V.js} +4 -4
- package/dist/{BaseTreeMenu-Dg8MW4TD.js.map → BaseTreeMenu-CHRy-g7V.js.map} +1 -1
- package/dist/{BioCardWrapper-D1ZOHyA4.js → BioCardWrapper-CUuubD2U.js} +3 -3
- package/dist/{BioCardWrapper-D1ZOHyA4.js.map → BioCardWrapper-CUuubD2U.js.map} +1 -1
- package/dist/{BubbleWidget-CMJYN-7J.js → BubbleWidget-Bx4c0P2X.js} +3 -3
- package/dist/BubbleWidget-Bx4c0P2X.js.map +1 -0
- package/dist/{BulkActionsGridButton-JYgIABWU.js → BulkActionsGridButton-zrOoVMFg.js} +8 -8
- package/dist/{BulkActionsGridButton-JYgIABWU.js.map → BulkActionsGridButton-zrOoVMFg.js.map} +1 -1
- package/dist/{CardList-B8nTYXo7.js → CardList-mxsKMn2s.js} +6 -6
- package/dist/{CardList-B8nTYXo7.js.map → CardList-mxsKMn2s.js.map} +1 -1
- package/dist/{ChatBotProvider-CmrKYl2I.js → ChatBotProvider-BgWP6rfO.js} +6 -6
- package/dist/{ChatBotProvider-CmrKYl2I.js.map → ChatBotProvider-BgWP6rfO.js.map} +1 -1
- package/dist/{ChatContainer-CXzPIP9R.js → ChatContainer-C5pau9eF.js} +2 -2
- package/dist/{ChatContainer-CXzPIP9R.js.map → ChatContainer-C5pau9eF.js.map} +1 -1
- package/dist/{ChatUDP-DYAsqqXk.js → ChatUDP-rGP1IC_e.js} +2 -2
- package/dist/{ChatUDP-DYAsqqXk.js.map → ChatUDP-rGP1IC_e.js.map} +1 -1
- package/dist/{CircleButton-CrvnPHDw.js → CircleButton-CwA9EAmx.js} +2 -2
- package/dist/{CircleButton-CrvnPHDw.js.map → CircleButton-CwA9EAmx.js.map} +1 -1
- package/dist/{CrudBrowserContainer-UJvAMHYL.js → CrudBrowserContainer-4xalY8qW.js} +2 -2
- package/dist/{CrudBrowserContainer-UJvAMHYL.js.map → CrudBrowserContainer-4xalY8qW.js.map} +1 -1
- package/dist/{CrudForm-C9xMnPoA.js → CrudForm-B9K31dMq.js} +8 -8
- package/dist/{CrudForm-C9xMnPoA.js.map → CrudForm-B9K31dMq.js.map} +1 -1
- package/dist/{CrudTableSidePanel-D8UYaXhS.js → CrudTableSidePanel-DmC2bKKS.js} +5 -5
- package/dist/{CrudTableSidePanel-D8UYaXhS.js.map → CrudTableSidePanel-DmC2bKKS.js.map} +1 -1
- package/dist/{DataBrowserContainer-DGEL52Un.js → DataBrowserContainer-zVg6Htb9.js} +10 -10
- package/dist/{DataBrowserContainer-DGEL52Un.js.map → DataBrowserContainer-zVg6Htb9.js.map} +1 -1
- package/dist/{DensePlotWidget-lJW-uzdQ.js → DensePlotWidget-C3hgu_PW.js} +3 -3
- package/dist/DensePlotWidget-C3hgu_PW.js.map +1 -0
- package/dist/{DynamicContainerWithMenu-lYZyNyb_.js → DynamicContainerWithMenu-DB27WYKY.js} +2 -2
- package/dist/{DynamicContainerWithMenu-lYZyNyb_.js.map → DynamicContainerWithMenu-DB27WYKY.js.map} +1 -1
- package/dist/{EntityHeader-CPvUEp7i.js → EntityHeader-CuQJ8F5K.js} +4 -4
- package/dist/{EntityHeader-CPvUEp7i.js.map → EntityHeader-CuQJ8F5K.js.map} +1 -1
- package/dist/{EntitySideBarContent-Bl_8gI69.js → EntitySideBarContent-DfmL6BdB.js} +2 -2
- package/dist/{EntitySideBarContent-Bl_8gI69.js.map → EntitySideBarContent-DfmL6BdB.js.map} +1 -1
- package/dist/{ExportSidesheet-eHGdT42e.js → ExportSidesheet-CM6A7I6E.js} +3 -3
- package/dist/{ExportSidesheet-eHGdT42e.js.map → ExportSidesheet-CM6A7I6E.js.map} +1 -1
- package/dist/{FieldArrayCard-CkVvDF-N.js → FieldArrayCard-vX6wT9RN.js} +13 -13
- package/dist/{FieldArrayCard-CkVvDF-N.js.map → FieldArrayCard-vX6wT9RN.js.map} +1 -1
- package/dist/{FluentCell-CuJJAwCD.js → FluentCell-BxgROwUy.js} +2 -2
- package/dist/{FluentCell-CuJJAwCD.js.map → FluentCell-BxgROwUy.js.map} +1 -1
- package/dist/{FluentDataTable-CYNp3-qT.js → FluentDataTable-BLAHPWUk.js} +2 -2
- package/dist/{FluentDataTable-CYNp3-qT.js.map → FluentDataTable-BLAHPWUk.js.map} +1 -1
- package/dist/{FluentSimpleSelect-BfoxBQj4.js → FluentSimpleSelect-BnXJTE2z.js} +2 -2
- package/dist/{FluentSimpleSelect-BfoxBQj4.js.map → FluentSimpleSelect-BnXJTE2z.js.map} +1 -1
- package/dist/{GridFunctions-D76ygiH2.js → GridFunctions-quS_QhSZ.js} +4 -4
- package/dist/GridFunctions-quS_QhSZ.js.map +1 -0
- package/dist/{GridGroupingSidebar-D-ozXbff.js → GridGroupingSidebar-CfXk_nd_.js} +2 -2
- package/dist/{GridGroupingSidebar-D-ozXbff.js.map → GridGroupingSidebar-CfXk_nd_.js.map} +1 -1
- package/dist/{GroupNode-CZX--ble.js → GroupNode-BVz5rDVG.js} +2 -2
- package/dist/{GroupNode-CZX--ble.js.map → GroupNode-BVz5rDVG.js.map} +1 -1
- package/dist/{IconRenderer-BEezfZ3N.js → IconRenderer-BKy2VlFt.js} +2 -2
- package/dist/{IconRenderer-BEezfZ3N.js.map → IconRenderer-BKy2VlFt.js.map} +1 -1
- package/dist/{ImportDataFromFileMapping-Dy1iJMkI.js → ImportDataFromFileMapping-ByNxnvjo.js} +6 -6
- package/dist/{ImportDataFromFileMapping-Dy1iJMkI.js.map → ImportDataFromFileMapping-ByNxnvjo.js.map} +1 -1
- package/dist/InputFieldTypeEnums-CtR8GR5A.js +14 -0
- package/dist/{InputFieldTypeEnums-Mg684vvi.js.map → InputFieldTypeEnums-CtR8GR5A.js.map} +1 -1
- package/dist/{Inquiry-D6nWpzu2.js → Inquiry-CsHgJgaV.js} +19 -19
- package/dist/{Inquiry-D6nWpzu2.js.map → Inquiry-CsHgJgaV.js.map} +1 -1
- package/dist/Inquiry-DjeqfXvY.js +3 -0
- package/dist/{InquiryNodeControls-DeK_hTzo.js → InquiryNodeControls-ivQYYK6C.js} +2 -2
- package/dist/{InquiryNodeControls-DeK_hTzo.js.map → InquiryNodeControls-ivQYYK6C.js.map} +1 -1
- package/dist/{InquirySearchContainer-zxbukV51.js → InquirySearchContainer-Di8nXQP_.js} +6 -6
- package/dist/{InquirySearchContainer-zxbukV51.js.map → InquirySearchContainer-Di8nXQP_.js.map} +1 -1
- package/dist/{LineGraphWidget-Ly1fmTyr.js → LineGraphWidget-CrPDR99w.js} +3 -3
- package/dist/LineGraphWidget-CrPDR99w.js.map +1 -0
- package/dist/{MenuPage-KiNfnc7P.js → MenuPage-DiNO7jTV.js} +6 -6
- package/dist/{MenuPage-KiNfnc7P.js.map → MenuPage-DiNO7jTV.js.map} +1 -1
- package/dist/MenuPage-DiuaPlMe.js +3 -0
- package/dist/{MenuProvider-BqEZve2y.js → MenuProvider-CqV76ZaL.js} +3 -3
- package/dist/{MenuProvider-BqEZve2y.js.map → MenuProvider-CqV76ZaL.js.map} +1 -1
- package/dist/{MttMainTimeline-DbaaXXQv.js → MttMainTimeline-CinommZ-.js} +3 -3
- package/dist/{MttMainTimeline-DbaaXXQv.js.map → MttMainTimeline-CinommZ-.js.map} +1 -1
- package/dist/{MttSummary-DNc71fHh.js → MttSummary-C9BFDiPS.js} +4 -4
- package/dist/{MttSummary-DNc71fHh.js.map → MttSummary-C9BFDiPS.js.map} +1 -1
- package/dist/{MyExportsPage-C-pr-R0K.js → MyExportsPage-CvYXdQux.js} +6 -6
- package/dist/{MyExportsPage-C-pr-R0K.js.map → MyExportsPage-CvYXdQux.js.map} +1 -1
- package/dist/MyExportsPage-zDOtLpTr.js +3 -0
- package/dist/{NestedGrid-DAqsZ216.js → NestedGrid-BYfgg6bn.js} +3 -3
- package/dist/NestedGrid-BYfgg6bn.js.map +1 -0
- package/dist/{NotesScreen-D8-QnWaB.js → NotesScreen-B1Kf1FUL.js} +8 -8
- package/dist/{NotesScreen-D8-QnWaB.js.map → NotesScreen-B1Kf1FUL.js.map} +1 -1
- package/dist/{NumberOperator-p4HsHHx3.js → NumberOperator-BhGfG6ZY.js} +10 -10
- package/dist/{NumberOperator-p4HsHHx3.js.map → NumberOperator-BhGfG6ZY.js.map} +1 -1
- package/dist/{OutlookCallback-D3no-Urx.js → OutlookCallback-ChCk_gx1.js} +2 -2
- package/dist/{OutlookCallback-D3no-Urx.js.map → OutlookCallback-ChCk_gx1.js.map} +1 -1
- package/dist/{PageActionWrapper-Bm6J0thr.js → PageActionWrapper-B2NHh8V9.js} +4 -4
- package/dist/{PageActionWrapper-Bm6J0thr.js.map → PageActionWrapper-B2NHh8V9.js.map} +1 -1
- package/dist/{PageContainer-ButX_XVS.js → PageContainer-B6aRZIrC.js} +2 -2
- package/dist/{PageContainer-ButX_XVS.js.map → PageContainer-B6aRZIrC.js.map} +1 -1
- package/dist/{PageRenderer-hxobUKe_.js → PageRenderer-BaE_3AVi.js} +2 -2
- package/dist/{PageRenderer-hxobUKe_.js.map → PageRenderer-BaE_3AVi.js.map} +1 -1
- package/dist/{PaymentForm-C4IXoROF.js → PaymentForm-u1QxkAwH.js} +5 -5
- package/dist/{PaymentForm-C4IXoROF.js.map → PaymentForm-u1QxkAwH.js.map} +1 -1
- package/dist/{PowerBIReport-CMrcDCCK.js → PowerBIReport-D4IhLgYA.js} +2 -2
- package/dist/{PowerBIReport-CMrcDCCK.js.map → PowerBIReport-D4IhLgYA.js.map} +1 -1
- package/dist/{RecentlyLoadedNodesTable-BzvR0L0h.js → RecentlyLoadedNodesTable-Bih97GZe.js} +2 -2
- package/dist/{RecentlyLoadedNodesTable-BzvR0L0h.js.map → RecentlyLoadedNodesTable-Bih97GZe.js.map} +1 -1
- package/dist/{RecentlyLoadedNodesWidget-7c9IngMR.js → RecentlyLoadedNodesWidget-C_SvOidH.js} +2 -2
- package/dist/{RecentlyLoadedNodesWidget-7c9IngMR.js.map → RecentlyLoadedNodesWidget-C_SvOidH.js.map} +1 -1
- package/dist/{RemindersCard-C1_GeqUW.js → RemindersCard-DtILCRPZ.js} +4 -4
- package/dist/{RemindersCard-C1_GeqUW.js.map → RemindersCard-DtILCRPZ.js.map} +1 -1
- package/dist/{RemindersScreen-BDgMIUaq.js → RemindersScreen-CR_7sXWV.js} +8 -8
- package/dist/{RemindersScreen-BDgMIUaq.js.map → RemindersScreen-CR_7sXWV.js.map} +1 -1
- package/dist/{RemindersWidget-u_d6RoVv.js → RemindersWidget-VugVy-04.js} +7 -7
- package/dist/{RemindersWidget-u_d6RoVv.js.map → RemindersWidget-VugVy-04.js.map} +1 -1
- package/dist/Reports-ChMzlAeX.js +3 -0
- package/dist/{Reports-D6LOvcOA.js → Reports-XnOyqOdW.js} +2 -2
- package/dist/{Reports-D6LOvcOA.js.map → Reports-XnOyqOdW.js.map} +1 -1
- package/dist/{RequiredFieldsMappingForm-rstcZ1W0.js → RequiredFieldsMappingForm-_Faww_eR.js} +2 -2
- package/dist/{RequiredFieldsMappingForm-rstcZ1W0.js.map → RequiredFieldsMappingForm-_Faww_eR.js.map} +1 -1
- package/dist/{SearchServiceDatasource-D8egrLwe.js → SearchServiceDatasource-DxoCnnUT.js} +3 -3
- package/dist/{SearchServiceDatasource-D8egrLwe.js.map → SearchServiceDatasource-DxoCnnUT.js.map} +1 -1
- package/dist/{SearchUtilities-DUW0kaw_.js → SearchUtilities-4D3aArPk.js} +45 -45
- package/dist/SearchUtilities-4D3aArPk.js.map +1 -0
- package/dist/{Shell-n8SMDgV0.js → Shell-CiVs1HZp.js} +10 -10
- package/dist/{Shell-n8SMDgV0.js.map → Shell-CiVs1HZp.js.map} +1 -1
- package/dist/{ShortcutContentFinder-BR-Gd55o.js → ShortcutContentFinder-DJveYwAo.js} +6 -6
- package/dist/{ShortcutContentFinder-BR-Gd55o.js.map → ShortcutContentFinder-DJveYwAo.js.map} +1 -1
- package/dist/{SiteHeader-DaL_Dy45.js → SiteHeader-CwTZVROQ.js} +8 -8
- package/dist/{SiteHeader-DaL_Dy45.js.map → SiteHeader-CwTZVROQ.js.map} +1 -1
- package/dist/{SparsePlotWidget-DuHbmEom.js → SparsePlotWidget-ZYrmPIXJ.js} +3 -3
- package/dist/SparsePlotWidget-ZYrmPIXJ.js.map +1 -0
- package/dist/{Statistic-DWW8GxYI.js → Statistic-D_p5eqdf.js} +2 -2
- package/dist/{Statistic-DWW8GxYI.js.map → Statistic-D_p5eqdf.js.map} +1 -1
- package/dist/{SupportCaseSideSheet-6P8CVloZ.js → SupportCaseSideSheet-B9BxUCym.js} +2 -2
- package/dist/{SupportCaseSideSheet-6P8CVloZ.js.map → SupportCaseSideSheet-B9BxUCym.js.map} +1 -1
- package/dist/{SupportCaseSideSheet-BKAsjpN1.js → SupportCaseSideSheet-D9IjAIwL.js} +1 -1
- package/dist/{TableContainer-B0IAjIA3.js → TableContainer-mo1phK4j.js} +5 -5
- package/dist/{TableContainer-B0IAjIA3.js.map → TableContainer-mo1phK4j.js.map} +1 -1
- package/dist/{TenantProvider-BeFMHYP8.js → TenantProvider-CBiqIIsu.js} +5 -5
- package/dist/{TenantProvider-BeFMHYP8.js.map → TenantProvider-CBiqIIsu.js.map} +1 -1
- package/dist/{TreeUtilities-jEhtZNg5.js → TreeUtilities-Iv9nOf-6.js} +4 -4
- package/dist/{TreeUtilities-jEhtZNg5.js.map → TreeUtilities-Iv9nOf-6.js.map} +1 -1
- package/dist/UI/accordion/index.js +1 -1
- package/dist/UI/charts/index.js +1 -1
- package/dist/UI/containers/index.js +1 -1
- package/dist/UI/dataDisplay/FluentDataTable/FluentCell/index.js +1 -1
- package/dist/UI/dataDisplay/FluentDataTable/index.js +1 -1
- package/dist/UI/dataDisplay/cardList/index.js +1 -1
- package/dist/UI/dataDisplay/entityHeader/index.js +1 -1
- package/dist/UI/dataDisplay/index.js +1 -1
- package/dist/UI/fileViewer/index.js +1 -1
- package/dist/UI/floorplans/index.js +1 -1
- package/dist/UI/forms/index.js +3 -3
- package/dist/UI/index.js +20 -20
- package/dist/UI/inputs/buttons/index.js +2 -2
- package/dist/UI/inputs/fieldArrayCard/index.js +1 -1
- package/dist/UI/inputs/menus/index.js +1 -1
- package/dist/UI/mapLayout/index.js +1 -1
- package/dist/UI/mapLayout/ui/index.js +1 -1
- package/dist/UI/navigation/index.js +1 -1
- package/dist/UI/navigation/menus/index.js +1 -1
- package/dist/UI/support/index.js +1 -1
- package/dist/UI/surfaces/NestedGrid/index.js +1 -1
- package/dist/UI/surfaces/index.js +1 -1
- package/dist/UI/templates/deprecated/AmbientGridTemplate/index.js +1 -1
- package/dist/UI/templates/deprecated/UdpGridTemplate/index.js +1 -1
- package/dist/UI/templates/newGrid/index.js +1 -1
- package/dist/UI/templates/ui/index.js +1 -1
- package/dist/UI/templates/ui/renderers/index.js +2 -2
- package/dist/UI/timeline/fluentTimeline/index.js +1 -1
- package/dist/UI/timeline/index.js +1 -1
- package/dist/UI/utilityDisplay/alerts/index.js +1 -1
- package/dist/UI/utilityDisplay/index.js +5 -5
- package/dist/UI/utilityDisplay/utilities/index.js +1 -1
- package/dist/UI/widgets/library/BarChartWidget/index.js +1 -1
- package/dist/UI/widgets/library/BubbleWidget/index.js +1 -1
- package/dist/UI/widgets/library/DensePlotWidget/index.js +1 -1
- package/dist/UI/widgets/library/LineGraphWidget/index.js +1 -1
- package/dist/UI/widgets/library/RecentlyLoadedNodesWidget/index.js +1 -1
- package/dist/UI/widgets/library/RemindersWidget/index.js +1 -1
- package/dist/UI/widgets/library/SparsePlotWidget/index.js +1 -1
- package/dist/{UdpAlertsContainer-CbiqX1P0.js → UdpAlertsContainer-C9r41A58.js} +5 -5
- package/dist/{UdpAlertsContainer-CbiqX1P0.js.map → UdpAlertsContainer-C9r41A58.js.map} +1 -1
- package/dist/{UdpAppProvider-DXgzyeHZ.js → UdpAppProvider-DaFJNNnP.js} +4 -4
- package/dist/{UdpAppProvider-DXgzyeHZ.js.map → UdpAppProvider-DaFJNNnP.js.map} +1 -1
- package/dist/{UdpAuditEvents-CoD2y2CV.js → UdpAuditEvents-SVdK01j4.js} +2 -2
- package/dist/{UdpAuditEvents-CoD2y2CV.js.map → UdpAuditEvents-SVdK01j4.js.map} +1 -1
- package/dist/{UdpAuditEventsPage-B0yZyLfH.js → UdpAuditEventsPage-B8wDHsxq.js} +9 -9
- package/dist/{UdpAuditEventsPage-B0yZyLfH.js.map → UdpAuditEventsPage-B8wDHsxq.js.map} +1 -1
- package/dist/UdpAuditEventsPage-bigxgoZ7.js +3 -0
- package/dist/{UdpDataBrowserPage-Br0DJTMq.js → UdpDataBrowserPage-DO-d-rsj.js} +14 -14
- package/dist/{UdpDataBrowserPage-Br0DJTMq.js.map → UdpDataBrowserPage-DO-d-rsj.js.map} +1 -1
- package/dist/{UdpFormsPrivateForm-ip2aj9xl.js → UdpFormsPrivateForm-_yiSaFcM.js} +2 -2
- package/dist/{UdpFormsPrivateForm-ip2aj9xl.js.map → UdpFormsPrivateForm-_yiSaFcM.js.map} +1 -1
- package/dist/{UdpFormsPublicForm-YjrVSCGi.js → UdpFormsPublicForm-3J1HBXQU.js} +2 -2
- package/dist/{UdpFormsPublicForm-YjrVSCGi.js.map → UdpFormsPublicForm-3J1HBXQU.js.map} +1 -1
- package/dist/{UdpFormsSubmissionGrid-fhcfXjlD.js → UdpFormsSubmissionGrid-BRJpRv4S.js} +5 -5
- package/dist/{UdpFormsSubmissionGrid-fhcfXjlD.js.map → UdpFormsSubmissionGrid-BRJpRv4S.js.map} +1 -1
- package/dist/{UdpGridPanelManagementPage-CkeP9nO-.js → UdpGridPanelManagementPage-DrQKKAKQ.js} +5 -5
- package/dist/{UdpGridPanelManagementPage-CkeP9nO-.js.map → UdpGridPanelManagementPage-DrQKKAKQ.js.map} +1 -1
- package/dist/{UdpGridTemplate-BjsxZFOQ.js → UdpGridTemplate-DDsHQyJt.js} +2 -2
- package/dist/{UdpGridTemplate-BjsxZFOQ.js.map → UdpGridTemplate-DDsHQyJt.js.map} +1 -1
- package/dist/{UdpImportFromFileMappingPage-xfq_3nOx.js → UdpImportFromFileMappingPage-DxGrLgP4.js} +2 -2
- package/dist/{UdpImportFromFileMappingPage-xfq_3nOx.js.map → UdpImportFromFileMappingPage-DxGrLgP4.js.map} +1 -1
- package/dist/{UdpInquiryMaintenanceEnginePage-WRu7l1i_.js → UdpInquiryMaintenanceEnginePage-eKMlKemV.js} +3 -3
- package/dist/{UdpInquiryMaintenanceEnginePage-WRu7l1i_.js.map → UdpInquiryMaintenanceEnginePage-eKMlKemV.js.map} +1 -1
- package/dist/{UdpMaintenanceEnginePage-D5pCaMao.js → UdpMaintenanceEnginePage-g4EGoMtb.js} +12 -12
- package/dist/{UdpMaintenanceEnginePage-D5pCaMao.js.map → UdpMaintenanceEnginePage-g4EGoMtb.js.map} +1 -1
- package/dist/{UdpNotesPage-Bc1J9jHc.js → UdpNotesPage-D0p12dX2.js} +9 -9
- package/dist/{UdpNotesPage-Bc1J9jHc.js.map → UdpNotesPage-D0p12dX2.js.map} +1 -1
- package/dist/{UdpRemindersPage-BmNTjbO_.js → UdpRemindersPage-kPco6gzY.js} +9 -9
- package/dist/{UdpRemindersPage-BmNTjbO_.js.map → UdpRemindersPage-kPco6gzY.js.map} +1 -1
- package/dist/{UdpReportsPage-ljtdb45L.js → UdpReportsPage-n1ymR1VK.js} +2 -2
- package/dist/{UdpReportsPage-ljtdb45L.js.map → UdpReportsPage-n1ymR1VK.js.map} +1 -1
- package/dist/{UdpTransactionTypesPage-Uk2cRhpd.js → UdpTransactionTypesPage-BD8K_tZp.js} +6 -6
- package/dist/{UdpTransactionTypesPage-Uk2cRhpd.js.map → UdpTransactionTypesPage-BD8K_tZp.js.map} +1 -1
- package/dist/{UdpTransactionsPage-BfJvIOG4.js → UdpTransactionsPage-D3LYIRnP.js} +34 -34
- package/dist/UdpTransactionsPage-D3LYIRnP.js.map +1 -0
- package/dist/{UdpVerticalManagementPage-DQAI1xe3.js → UdpVerticalManagementPage-Dl3ub3z_.js} +6 -6
- package/dist/{UdpVerticalManagementPage-DQAI1xe3.js.map → UdpVerticalManagementPage-Dl3ub3z_.js.map} +1 -1
- package/dist/{UdpVerticalManagementSidesheet-heFj83jt.js → UdpVerticalManagementSidesheet-UA0aBt8U.js} +7 -7
- package/dist/{UdpVerticalManagementSidesheet-heFj83jt.js.map → UdpVerticalManagementSidesheet-UA0aBt8U.js.map} +1 -1
- package/dist/{UserForm-DhBINx6I.js → UserForm-CkInKaUZ.js} +3 -3
- package/dist/{UserForm-DhBINx6I.js.map → UserForm-CkInKaUZ.js.map} +1 -1
- package/dist/UserFormSideSheet-ClbFBL2A.js +3 -0
- package/dist/{UserFormSideSheet-Cj7IyfX1.js → UserFormSideSheet-CwC3BnSQ.js} +4 -4
- package/dist/{UserFormSideSheet-Cj7IyfX1.js.map → UserFormSideSheet-CwC3BnSQ.js.map} +1 -1
- package/dist/{VirtualBrowser-qF1k097T.js → VirtualBrowser-B8-wmiLh.js} +10 -10
- package/dist/{VirtualBrowser-qF1k097T.js.map → VirtualBrowser-B8-wmiLh.js.map} +1 -1
- package/dist/VirtualBrowser-C5uqdpHU.js +3 -0
- package/dist/{VirtualForm-Cw3gjug-.js → VirtualForm-tukfZj85.js} +2 -2
- package/dist/{VirtualForm-Cw3gjug-.js.map → VirtualForm-tukfZj85.js.map} +1 -1
- package/dist/{WorkflowContainer-Cec3FFwP.js → WorkflowContainer-BouRffwp.js} +6 -6
- package/dist/{WorkflowContainer-Cec3FFwP.js.map → WorkflowContainer-BouRffwp.js.map} +1 -1
- package/dist/{WorkflowContainer-DecC3Yux.js → WorkflowContainer-DugpUjjf.js} +1 -1
- package/dist/{WorkflowContent-HlBHhWl8.js → WorkflowContent-C_1mXaJA.js} +5 -5
- package/dist/{WorkflowContent-HlBHhWl8.js.map → WorkflowContent-C_1mXaJA.js.map} +1 -1
- package/dist/{WorkflowTreeMenu-HHtwkDzu.js → WorkflowTreeMenu-BfKb88w4.js} +4 -4
- package/dist/{WorkflowTreeMenu-HHtwkDzu.js.map → WorkflowTreeMenu-BfKb88w4.js.map} +1 -1
- package/dist/{accordion-CQ1AqRla.js → accordion-M9f7ltSo.js} +2 -2
- package/dist/{accordion-CQ1AqRla.js.map → accordion-M9f7ltSo.js.map} +1 -1
- package/dist/{actionSummary-DwSHY1Tt.js → actionSummary-4uornpGM.js} +2 -2
- package/dist/{actionSummary-DwSHY1Tt.js.map → actionSummary-4uornpGM.js.map} +1 -1
- package/dist/{actionUtils-CPmiSAig.js → actionUtils-BU2Z1V_c.js} +3 -3
- package/dist/{actionUtils-CPmiSAig.js.map → actionUtils-BU2Z1V_c.js.map} +1 -1
- package/dist/actions/actionSummary/index.js +1 -1
- package/dist/actions/index.js +6 -6
- package/dist/actions/sidebar/index.js +1 -1
- package/dist/actions/utils/index.js +1 -1
- package/dist/{aggregateUtils-UcpEjFnf.js → aggregateUtils-BQEbw0_E.js} +3 -3
- package/dist/{aggregateUtils-UcpEjFnf.js.map → aggregateUtils-BQEbw0_E.js.map} +1 -1
- package/dist/{aggridHelpers-BvrSzjdD.js → aggridHelpers-DVAyzpUF.js} +3 -3
- package/dist/{aggridHelpers-BvrSzjdD.js.map → aggridHelpers-DVAyzpUF.js.map} +1 -1
- package/dist/{apiHelpers-WIR8pqy0.js → apiHelpers-CMlmFUix.js} +2 -2
- package/dist/{apiHelpers-WIR8pqy0.js.map → apiHelpers-CMlmFUix.js.map} +1 -1
- package/dist/{auth-BWJ4-JF-.js → auth-09twu9dt.js} +3 -3
- package/dist/{auth-BWJ4-JF-.js.map → auth-09twu9dt.js.map} +1 -1
- package/dist/{axiosInterceptors-MZ6xeLRS.js → axiosInterceptors-C27H4uT-.js} +2 -2
- package/dist/{axiosInterceptors-MZ6xeLRS.js.map → axiosInterceptors-C27H4uT-.js.map} +1 -1
- package/dist/{charts--rJXTRtu.js → charts-CPeB-__9.js} +2 -2
- package/dist/{charts--rJXTRtu.js.map → charts-CPeB-__9.js.map} +1 -1
- package/dist/chatBot/index.js +1 -1
- package/dist/componentSystems/multiThreadTimeline/index.js +3 -3
- package/dist/componentSystems/multiThreadTimeline/mttMainTimeline/index.js +1 -1
- package/dist/componentSystems/multiThreadTimeline/mttSummary/index.js +1 -1
- package/dist/componentSystems/multiThreadTimeline/ui/index.js +1 -1
- package/dist/componentSystems/pageRenderer/hocs/index.js +1 -1
- package/dist/componentSystems/pageRenderer/index.js +3 -3
- package/dist/componentSystems/pageRenderer/wrappers/index.js +1 -1
- package/dist/{crudActions-C1Ur7cS5.js → crudActions-BNDjc56_.js} +4 -4
- package/dist/{crudActions-C1Ur7cS5.js.map → crudActions-BNDjc56_.js.map} +1 -1
- package/dist/dataBrowser/forms/index.js +1 -1
- package/dist/dataBrowser/index.js +2 -2
- package/dist/enums/index.js +8 -8
- package/dist/{fileViewer-CtY7cOmL.js → fileViewer-CJmEQUZM.js} +2 -2
- package/dist/{fileViewer-CtY7cOmL.js.map → fileViewer-CJmEQUZM.js.map} +1 -1
- package/dist/{floorplans-9voWXvF2.js → floorplans-ClCj18Qu.js} +2 -2
- package/dist/{floorplans-9voWXvF2.js.map → floorplans-ClCj18Qu.js.map} +1 -1
- package/dist/{fluentTimeline-CiONGsTd.js → fluentTimeline-WyxEgKFr.js} +2 -2
- package/dist/{fluentTimeline-CiONGsTd.js.map → fluentTimeline-WyxEgKFr.js.map} +1 -1
- package/dist/{forms-DsdldFST.js → forms-HlBYZESz.js} +3 -3
- package/dist/{forms-DsdldFST.js.map → forms-HlBYZESz.js.map} +1 -1
- package/dist/hooks/index.js +9 -9
- package/dist/{hooks-BNndjGer.js → hooks-B_0PVsdp.js} +3 -3
- package/dist/{hooks-BNndjGer.js.map → hooks-B_0PVsdp.js.map} +1 -1
- package/dist/index.js +101 -101
- package/dist/inquiry/dashboard/index.js +1 -1
- package/dist/inquiry/index.js +4 -4
- package/dist/inquiry/inquiryBar/index.js +1 -1
- package/dist/inquiry/search/index.js +1 -1
- package/dist/maintenanceEngine/crudBrowser/index.js +2 -2
- package/dist/maintenanceEngine/index.js +4 -4
- package/dist/maintenanceEngine/tableBrowser/index.js +1 -1
- package/dist/maintenanceEngine/virtualBrowser/index.js +1 -1
- package/dist/{mapLayout-DNtsBpcK.js → mapLayout-BaAcodmS.js} +2 -2
- package/dist/{mapLayout-DNtsBpcK.js.map → mapLayout-BaAcodmS.js.map} +1 -1
- package/dist/menuPage/index.js +1 -1
- package/dist/{menuPage-BHXchSeD.js → menuPage-BCcvcFa5.js} +2 -2
- package/dist/{menuPage-BHXchSeD.js.map → menuPage-BCcvcFa5.js.map} +1 -1
- package/dist/{menuUtilities-BOnqojY6.js → menuUtilities-CkZ_pe8p.js} +4 -4
- package/dist/{menuUtilities-BOnqojY6.js.map → menuUtilities-CkZ_pe8p.js.map} +1 -1
- package/dist/{methodUtils-CDx9usdO.js → methodUtils-BmW5r7qU.js} +2 -2
- package/dist/{methodUtils-CDx9usdO.js.map → methodUtils-BmW5r7qU.js.map} +1 -1
- package/dist/models/index.js +1 -1
- package/dist/{newGrid-B6oyV5FZ.js → newGrid-tFtQU1l7.js} +2 -2
- package/dist/{newGrid-B6oyV5FZ.js.map → newGrid-tFtQU1l7.js.map} +1 -1
- package/dist/notes/index.js +1 -1
- package/dist/page/PageContainer/index.js +1 -1
- package/dist/pageEnums-Bw4Yfa6D.js +22 -0
- package/dist/{pageEnums-DHCYa0ey.js.map → pageEnums-Bw4Yfa6D.js.map} +1 -1
- package/dist/paymentVendorFactoryEnum-Mq0LPnfG.js +38 -0
- package/dist/{paymentVendorFactoryEnum-CwnzkF9A.js.map → paymentVendorFactoryEnum-Mq0LPnfG.js.map} +1 -1
- package/dist/{profile-7BieC5qc.js → profile-DGLuxYkB.js} +3 -3
- package/dist/{profile-7BieC5qc.js.map → profile-DGLuxYkB.js.map} +1 -1
- package/dist/propertyTypeEnums-kRCZNBn6.js +15 -0
- package/dist/{propertyTypeEnums-Dys-84NL.js.map → propertyTypeEnums-kRCZNBn6.js.map} +1 -1
- package/dist/providers/index.js +1 -1
- package/dist/reminders/index.js +2 -2
- package/dist/reports/index.js +1 -1
- package/dist/routes/index.js +1 -1
- package/dist/{routes-BC24z6ls.js → routes-JTWJvNY3.js} +9 -9
- package/dist/{routes-BC24z6ls.js.map → routes-JTWJvNY3.js.map} +1 -1
- package/dist/searchEnums-DruwPmGC.js +11 -0
- package/dist/{searchEnums-BTFUwf6v.js.map → searchEnums-DruwPmGC.js.map} +1 -1
- package/dist/shell/index.js +3 -3
- package/dist/shell/ui/addUser/index.js +1 -1
- package/dist/shell/ui/index.js +2 -2
- package/dist/shell/ui/profile/index.js +1 -1
- package/dist/stores/index.js +1 -1
- package/dist/tagEnums-pSvvqkV3.js +11 -0
- package/dist/{tagEnums-Bc9xOKJw.js.map → tagEnums-pSvvqkV3.js.map} +1 -1
- package/dist/{tenantStore-CFYu7ndZ.js → tenantStore-BUT7oepr.js} +2 -2
- package/dist/{tenantStore-CFYu7ndZ.js.map → tenantStore-BUT7oepr.js.map} +1 -1
- package/dist/{theme-_CEHumbt.js → theme-ubmTDmGy.js} +2 -2
- package/dist/{theme-_CEHumbt.js.map → theme-ubmTDmGy.js.map} +1 -1
- package/dist/treeMenu/index.js +1 -1
- package/dist/types/src/enums/unitySystemEnums.d.ts +2 -1
- package/dist/types/src/enums/unitySystemEnums.d.ts.map +1 -1
- package/dist/types/src/hooks/useUdpGridFilterModel.d.ts.map +1 -1
- package/dist/types/src/maintenanceEngine/tableBrowser/TableColumnDefs.d.ts +1 -1
- package/dist/types/src/maintenanceEngine/tableBrowser/TableColumnDefs.d.ts.map +1 -1
- package/dist/types/src/udp/utilities/useDateStringColumnDef.d.ts +1 -1
- package/dist/types/src/utilities/search/SearchUtilities.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/udp/ShortcutContent/index.js +1 -1
- package/dist/udp/export/index.js +2 -2
- package/dist/udp/fileImportMapping/index.js +8 -8
- package/dist/udp/fileImportMapping/index.js.map +1 -1
- package/dist/udp/pages/ChatUDP/index.js +1 -1
- package/dist/udp/pages/UdpAuditEvents/index.js +1 -1
- package/dist/udp/pages/UdpDataBrowserPage/index.js +1 -1
- package/dist/udp/pages/UdpFormsPrivateForm/index.js +1 -1
- package/dist/udp/pages/UdpFormsPublicForm/index.js +1 -1
- package/dist/udp/pages/UdpFormsSubmissionGrid/index.js +1 -1
- package/dist/udp/pages/UdpGridPanelManagementPage/index.js +1 -1
- package/dist/udp/pages/UdpImportFromFileMappingPage/index.js +1 -1
- package/dist/udp/pages/UdpInquiryMaintenanceEnginePage/index.js +1 -1
- package/dist/udp/pages/UdpMaintenanceConfigPage/index.js +2 -2
- package/dist/udp/pages/UdpMaintenanceEnginePage/index.js +1 -1
- package/dist/udp/pages/UdpNotesPage/index.js +1 -1
- package/dist/udp/pages/UdpPages/index.js +17 -17
- package/dist/udp/pages/UdpPagesLazy/index.js +1 -1
- package/dist/udp/pages/UdpRemindersPage/index.js +1 -1
- package/dist/udp/pages/UdpReportsPage/index.js +1 -1
- package/dist/udp/pages/UdpTransactionTypesPage/index.js +1 -1
- package/dist/udp/pages/UdpTransactionsPage/index.js +1 -1
- package/dist/udp/pages/UdpVerticalManagementPage/index.js +1 -1
- package/dist/udp/pages/UdpVerticalManagementSidesheet/index.js +1 -1
- package/dist/udp/utilities/index.js +1 -1
- package/dist/unitySystemEnums-BhRg17du.js +344 -0
- package/dist/{unitySystemEnums-CZDCsD5t.js.map → unitySystemEnums-BhRg17du.js.map} +1 -1
- package/dist/uploader/index.js +1 -1
- package/dist/{uploader-D_e-kKhB.js → uploader-D8ZrNmfQ.js} +8 -8
- package/dist/{uploader-D_e-kKhB.js.map → uploader-D8ZrNmfQ.js.map} +1 -1
- package/dist/{useActions-DZe6YlEm.js → useActions-Ct3UAtTb.js} +4 -4
- package/dist/{useActions-DZe6YlEm.js.map → useActions-Ct3UAtTb.js.map} +1 -1
- package/dist/{useApiCatalog-cpchDfC1.js → useApiCatalog-CFnv-X8K.js} +2 -2
- package/dist/{useApiCatalog-cpchDfC1.js.map → useApiCatalog-CFnv-X8K.js.map} +1 -1
- package/dist/{useAxiosGet-CYnt6Hd0.js → useAxiosGet-B3uusywz.js} +3 -3
- package/dist/{useAxiosGet-CYnt6Hd0.js.map → useAxiosGet-B3uusywz.js.map} +1 -1
- package/dist/{useAxiosMutate-DeqKSi5z.js → useAxiosMutate-CChDJc0L.js} +3 -3
- package/dist/{useAxiosMutate-DeqKSi5z.js.map → useAxiosMutate-CChDJc0L.js.map} +1 -1
- package/dist/{usePromotedMethodEntities-D-GoZJZB.js → usePromotedMethodEntities-CKfXJwBP.js} +3 -3
- package/dist/{usePromotedMethodEntities-D-GoZJZB.js.map → usePromotedMethodEntities-CKfXJwBP.js.map} +1 -1
- package/dist/{usePromotedMethodEntity-B4rk75tH.js → usePromotedMethodEntity-Fr6JxDuh.js} +2 -2
- package/dist/{usePromotedMethodEntity-B4rk75tH.js.map → usePromotedMethodEntity-Fr6JxDuh.js.map} +1 -1
- package/dist/{useQueryExecutors-DuuHrj2M.js → useQueryExecutors-6dxzYiaQ.js} +3 -3
- package/dist/{useQueryExecutors-DuuHrj2M.js.map → useQueryExecutors-6dxzYiaQ.js.map} +1 -1
- package/dist/{useSearchFilterParamsMap-hAHx2Rav.js → useSearchFilterParamsMap-BR31_fpl.js} +3 -3
- package/dist/{useSearchFilterParamsMap-hAHx2Rav.js.map → useSearchFilterParamsMap-BR31_fpl.js.map} +1 -1
- package/dist/utilities/aggrid/datasources/index.js +1 -1
- package/dist/utilities/aggrid/index.js +2 -2
- package/dist/utilities/auth/index.js +4 -4
- package/dist/utilities/chatBot/index.js +1 -1
- package/dist/utilities/form/paymentForm/index.js +1 -1
- package/dist/utilities/index.js +3 -3
- package/dist/utilities/menus/index.js +1 -1
- package/dist/utilities/provider/index.js +1 -1
- package/dist/utilities/redirect/pages/index.js +1 -1
- package/dist/utilities/search/index.js +1 -1
- package/dist/utilities/tenant/index.js +1 -1
- package/dist/utilities/theme/index.js +1 -1
- package/dist/utilities/tree/index.js +1 -1
- package/dist/utilities/workflow/index.js +1 -1
- package/dist/{utilityDisplay-DtdjV7V1.js → utilityDisplay-lia_3vnq.js} +2 -2
- package/dist/{utilityDisplay-DtdjV7V1.js.map → utilityDisplay-lia_3vnq.js.map} +1 -1
- package/dist/{virtualActions-B788CBd7.js → virtualActions-DGiVDudB.js} +2 -2
- package/dist/{virtualActions-B788CBd7.js.map → virtualActions-DGiVDudB.js.map} +1 -1
- package/dist/{withEngineComponent-Bcnxug3h.js → withEngineComponent-CoMj91Ad.js} +2 -2
- package/dist/{withEngineComponent-Bcnxug3h.js.map → withEngineComponent-CoMj91Ad.js.map} +1 -1
- package/dist/workflow/index.js +3 -3
- package/dist/workflow/menus/index.js +1 -1
- package/dist/workflowEnums-ztRFwx_L.js +48 -0
- package/dist/{workflowEnums-BJmSE_P8.js.map → workflowEnums-ztRFwx_L.js.map} +1 -1
- package/dist/{workflowUtilities-Brby0vts.js → workflowUtilities-DBcBJOKf.js} +2 -2
- package/dist/{workflowUtilities-Brby0vts.js.map → workflowUtilities-DBcBJOKf.js.map} +1 -1
- package/export-map.json +1 -1
- package/package.json +1 -1
- package/dist/AmbientChipButton-DYAYXuKp.js.map +0 -1
- package/dist/AmbientTokenButton-B53E25r2.js.map +0 -1
- package/dist/BarChartWidget-u-8fxMn5.js.map +0 -1
- package/dist/BubbleWidget-CMJYN-7J.js.map +0 -1
- package/dist/DensePlotWidget-lJW-uzdQ.js.map +0 -1
- package/dist/GridFunctions-D76ygiH2.js.map +0 -1
- package/dist/InputFieldTypeEnums-Mg684vvi.js +0 -14
- package/dist/Inquiry-C6fDp46v.js +0 -3
- package/dist/LineGraphWidget-Ly1fmTyr.js.map +0 -1
- package/dist/MenuPage-CdzHSWBt.js +0 -3
- package/dist/MyExportsPage-DNvL1_1X.js +0 -3
- package/dist/NestedGrid-DAqsZ216.js.map +0 -1
- package/dist/Reports-B5vRQpl0.js +0 -3
- package/dist/SearchUtilities-DUW0kaw_.js.map +0 -1
- package/dist/SparsePlotWidget-DuHbmEom.js.map +0 -1
- package/dist/UdpAuditEventsPage-u7pIg9Z9.js +0 -3
- package/dist/UdpTransactionsPage-BfJvIOG4.js.map +0 -1
- package/dist/UserFormSideSheet-LAR4fJpW.js +0 -3
- package/dist/VirtualBrowser-CbL5X-W-.js +0 -3
- package/dist/pageEnums-DHCYa0ey.js +0 -22
- package/dist/paymentVendorFactoryEnum-CwnzkF9A.js +0 -38
- package/dist/propertyTypeEnums-Dys-84NL.js +0 -15
- package/dist/searchEnums-BTFUwf6v.js +0 -11
- package/dist/tagEnums-Bc9xOKJw.js +0 -11
- package/dist/unitySystemEnums-CZDCsD5t.js +0 -343
- package/dist/workflowEnums-BJmSE_P8.js +0 -48
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SiteHeader-DaL_Dy45.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-CwTZVROQ.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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"}
|
|
@@ -20,8 +20,8 @@ const layout = {
|
|
|
20
20
|
};
|
|
21
21
|
const params = { mode: { defaultValue: "chart" } };
|
|
22
22
|
const SparsePlotWidget = (props, ref) => {
|
|
23
|
-
const { children, params
|
|
24
|
-
const { mockData, apiUrl, theme } = params
|
|
23
|
+
const { children, params, setParam, ...other } = props;
|
|
24
|
+
const { mockData, apiUrl, theme } = params;
|
|
25
25
|
return /* @__PURE__ */ React.createElement(WidgetCard_default, {
|
|
26
26
|
ref,
|
|
27
27
|
...other,
|
|
@@ -79,4 +79,4 @@ var SparsePlotWidget_exports = /* @__PURE__ */ __exportAll({
|
|
|
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-
|
|
82
|
+
//# sourceMappingURL=SparsePlotWidget-ZYrmPIXJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SparsePlotWidget-ZYrmPIXJ.js","names":["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,QAAQ,UAAU,GAAG,UAAU;CACjD,MAAM,EAAE,UAAU,QAAQ,UAAU;AAEpC,QACE,oCAACA;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,7 +1,7 @@
|
|
|
1
1
|
import { t as FluentButton } from "./FluentButton-BexKrnAp.js";
|
|
2
2
|
import { t as FluentIcon } from "./FluentIcon-DQ6nSDJg.js";
|
|
3
3
|
import { t as FluentIconButton } from "./FluentIconButton-Dc95mE3v.js";
|
|
4
|
-
import { S as getIconFromName } from "./TreeUtilities-
|
|
4
|
+
import { S as getIconFromName } from "./TreeUtilities-Iv9nOf-6.js";
|
|
5
5
|
import { t as Adornment } from "./Adornment-Ciq1X7he.js";
|
|
6
6
|
import { t as FluentCheckbox } from "./FluentCheckbox-CX7XgoFz.js";
|
|
7
7
|
import { t as CompactDataList } from "./CompactDataList-CFI63cvg.js";
|
|
@@ -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-
|
|
323
|
+
//# sourceMappingURL=Statistic-D_p5eqdf.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Statistic-DWW8GxYI.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-D_p5eqdf.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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"}
|
|
@@ -3,7 +3,7 @@ import { t as Field } from "./Field-Cda5rJe2.js";
|
|
|
3
3
|
import { n as SubmitButton, t as FormButtons } from "./FormButtons-BTCO-pzW.js";
|
|
4
4
|
import { t as ConfigService } from "./configService-C4uoG3wj.js";
|
|
5
5
|
import { t as useUser } from "./useUser-wpHGo6jU.js";
|
|
6
|
-
import { t as apiMutate } from "./useAxiosMutate-
|
|
6
|
+
import { t as apiMutate } from "./useAxiosMutate-CChDJc0L.js";
|
|
7
7
|
import { t as FluentTextFieldAutoComplete } from "./FluentTextFieldAutoComplete-5Hp3qpk6.js";
|
|
8
8
|
import { t as LayoutUnit } from "./LayoutUnit-D4jJvonh.js";
|
|
9
9
|
import { n as SideSheet } from "./SideSheet-CDXVa_Kr.js";
|
|
@@ -373,4 +373,4 @@ var SupportCaseSideSheet_default = SupportCaseSideSheet;
|
|
|
373
373
|
|
|
374
374
|
//#endregion
|
|
375
375
|
export { SupportCaseSideSheet_default as n, SupportCaseSideSheet as t };
|
|
376
|
-
//# sourceMappingURL=SupportCaseSideSheet-
|
|
376
|
+
//# sourceMappingURL=SupportCaseSideSheet-B9BxUCym.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupportCaseSideSheet-6P8CVloZ.js","names":["LinearProgress","SupportCaseForm"],"sources":["../src/UI/support/SupportCaseForm.jsx","../src/UI/support/SupportCaseSideSheet.jsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from 'react';\nimport { FluentTextField } from '../inputs/textField/FluentTextField';\nimport { FluentTextFieldAutoComplete } from '../inputs/textField/FluentTextFieldAutoComplete';\nimport { LayoutUnit } from '../../layout/LayoutUnit';\nimport { DragDropFileUpload } from '../../uploader/DragDropFileUpload';\nimport { Form, FormButtons, SubmitButton, Field } from '../../utilities/form';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { useTranslation } from 'react-i18next';\nimport { useSnackbar } from 'notistack';\nimport { Button } from '@material-ui/core';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { AmbientCard } from '../surfaces/cards/AmbientCard';\nimport { LinearProgress } from '../../UI/loading/LinearProgress';\nimport { useHistory } from 'react-router-dom';\nimport { ConfigService } from '../../configService';\n\nconst SupportCaseForm = ({\n onSubmit,\n initialValues = {},\n handleCloseSupportCaseSideSheet\n}) => {\n const { t } = useTranslation();\n const user = useUser();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const [severityOptions, setSeverityOptions] = useState([]);\n const [environmentOptions, setEnvironmentOptions] = useState([]);\n const [brandOptions, setBrandOptions] = useState([]);\n const [uploadedFiles, setUploadedFiles] = useState([]);\n const [unityState, setUnityState] = useState();\n const [loadingState, setLoadingState] = useState(false);\n const baseUrl = ConfigService.productV1ApiUrl; // backend base url\n const unityUrl = ConfigService.supportV1ApiUrl; // unity support bypass\n const unityEnv = ConfigService.config.UNITY_ENVIRONMENT; // unity environment\n const [uploadKey, setUploadKey] = useState(0);\n const [restrictedFiles, setRestrictedFiles] = useState({});\n const history = useHistory();\n\n const getFileRestrictions = useCallback(\n async () =>\n apiMutate(baseUrl, `udpunitysupport/supportFileUploadRestrictions`, {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }),\n [baseUrl, user?.currentTenantId]\n );\n\n const getFileRestrictionsUnity = useCallback(\n async () =>\n apiMutate(unityUrl, `evergrncaseattachment/get-attachment-restrictions`, {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }),\n [unityUrl, user?.currentTenantId]\n );\n\n const getSeverityUnity = useCallback(\n async () =>\n apiMutate(unityUrl, `caseseverity/get-case-severity`, {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }),\n [unityUrl, user?.currentTenantId]\n );\n\n const getEnvironmentUnity = useCallback(\n async () =>\n apiMutate(unityUrl, `evergrncaseenvironment/get-case-environments`, {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }),\n [unityUrl, user?.currentTenantId]\n );\n\n const getSeverity = useCallback(\n async () =>\n apiMutate(baseUrl, `udpunitysupport/severities`, {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }),\n [baseUrl, user?.currentTenantId]\n );\n\n const getEnvironment = useCallback(\n async () =>\n apiMutate(baseUrl, `udpunitysupport/environments`, {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }),\n [baseUrl, user?.currentTenantId]\n );\n\n // externalUuid will be needed part of the post request to submit ticket\n const getTenantCaseAccount = useCallback(\n async () =>\n apiMutate(\n baseUrl,\n `udpunitysupport/tenantCaseAccount/` + user?.currentTenantId,\n {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }\n ),\n [baseUrl, user?.currentTenantId]\n );\n\n // list of products to choose from when in Support Portal, if cooresponsding externalUuid is null, default to devops support GUID\n const getTenantCaseBrand = useCallback(\n async () =>\n apiMutate(ConfigService.tenantV2ApiUrl, `tenant/products`, {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }),\n [user?.currentTenantId]\n );\n\n const getTenantSubscribedProducts = useCallback(\n async () =>\n apiMutate(\n ConfigService.tenantV1ApiUrl,\n `tenantProducts?tenantId=${user?.currentTenantId}`,\n {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }\n ),\n [user?.currentTenantId]\n );\n\n // TODO: this data should come from Unity table -> Unity UEM -> Unity Support\n const getCasesEnv = {\n Development: '100000003',\n Build: '100000003',\n Staging: '100000001',\n Production: '100000000'\n };\n\n function getCaseEnvironment() {\n return getCasesEnv[unityEnv] || '100000003'; // default to dev\n }\n\n let brandId = '416b0ca8-e679-ef11-ac20-6045bdcd3d86'; // Default to devops support ID, should come from API\n\n const postCaseAttachment = useCallback(\n (values) => {\n const data = new FormData();\n uploadedFiles.forEach((file) => {\n data.append('files', file);\n });\n data.append('EvergrnCaseName', values.title);\n data.append('EvergrnDescription', values.description);\n data.append('EvergrnCaseEnvironment', getCaseEnvironment());\n data.append('EvergrnSeverity', values.severity.value);\n // Find the corresponding brand ID using environment variable's product ID\n const matchingProduct = brandOptions.find(\n (product) => product.productId == ConfigService.config.UNITY_PRODUCT_ID\n );\n if (matchingProduct && matchingProduct.value) {\n brandId = matchingProduct.value;\n }\n data.append('EvergrnBrandId', brandId);\n data.append(\n 'UDPDriveUnityProductId',\n ConfigService.config.UNITY_PRODUCT_ID\n );\n\n return apiMutate(\n baseUrl,\n `udpunitysupport/case`,\n {\n method: 'post',\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n },\n { data: data }\n );\n },\n [baseUrl, uploadedFiles, getCaseEnvironment, brandOptions, brandId]\n );\n\n const postCaseAttachmentUnity = useCallback(\n (values) => {\n const data = new FormData();\n uploadedFiles.forEach((file) => {\n data.append('files', file);\n });\n data.append('EvergrnCaseName', values.title);\n data.append('EvergrnDescription', values.description);\n data.append('EvergrnCaseEnvironment', getCaseEnvironment());\n data.append('EvergrnSeverity', values.severity.value);\n data.append('EvergrnBrandId', values.product?.value || brandId);\n data.append(\n 'UDPDriveUnityProductId',\n ConfigService.config.UNITY_PRODUCT_ID\n );\n\n return apiMutate(\n unityUrl,\n `evergrncase/post-case`,\n {\n method: 'post',\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n },\n { data: data }\n );\n },\n [unityUrl, uploadedFiles, getCaseEnvironment, brandId]\n );\n\n useEffect(() => {\n const fetchData = async () => {\n try {\n if (ConfigService.config.UNITY_PRODUCT_ID === '1') {\n setUnityState(true);\n } else {\n setUnityState(false);\n }\n\n let getFileRestrictionsResponse = unityState\n ? await getFileRestrictionsUnity()\n : await getFileRestrictions();\n\n let severityResponse = unityState\n ? await getSeverityUnity()\n : await getSeverity();\n\n let environmentResponse = unityState\n ? await getEnvironmentUnity()\n : await getEnvironment();\n\n if (getFileRestrictionsResponse) {\n const fileRestrictionsData = getFileRestrictionsResponse.data;\n setRestrictedFiles(fileRestrictionsData);\n }\n\n if (severityResponse) {\n const severityOptions = severityResponse.data.map((item) => ({\n value: item.externalUUID.toString(),\n label: item.name\n }));\n setSeverityOptions(severityOptions);\n }\n\n if (environmentResponse) {\n const environmentOptions = environmentResponse.data.map((item) => ({\n value: item.evergrnCaseEnvironmentValue.toString(),\n label: item.evergrnCaseEnvironmentLabel\n }));\n setEnvironmentOptions(environmentOptions);\n }\n\n // fetch brand data\n const brandResponse = await getTenantCaseBrand();\n const tenantSubscribedProductsResponse =\n await getTenantSubscribedProducts();\n\n if (brandResponse && tenantSubscribedProductsResponse) {\n const brandArray = brandResponse.data.filter(\n (brandItem) => brandItem.externalUuid != null\n );\n const subscribedArray = tenantSubscribedProductsResponse.data;\n\n const brandOptions = subscribedArray\n .map((subscribedProduct) => {\n const foundProduct = brandArray.find(\n (brandItem) =>\n brandItem.productId === subscribedProduct.productId\n );\n\n if (!foundProduct) {\n return null;\n }\n\n return {\n ...subscribedProduct,\n value: foundProduct.externalUuid?.toString(), // Cases Brand ID\n label: foundProduct.name.toString()\n };\n })\n .filter(Boolean);\n\n setBrandOptions(brandOptions);\n }\n } catch (error) {\n console.error('Error fetching data:', error);\n }\n };\n\n fetchData();\n }, [\n unityState,\n getSeverityUnity,\n getEnvironmentUnity,\n getFileRestrictionsUnity,\n getFileRestrictions,\n getSeverity,\n getEnvironment,\n getTenantCaseBrand,\n getTenantSubscribedProducts\n ]);\n\n const handleUploadFile = (files) => {\n const identifiedRestrictedExtensions = [];\n const identifiedRestrictedFileSizes = [];\n\n files.forEach((file) => {\n const fileExtension = file.name.includes('.')\n ? '.' + file.name.split('.').pop().toLowerCase()\n : '';\n\n if (restrictedFiles.restrictedExtensions.includes(fileExtension)) {\n identifiedRestrictedExtensions.push(fileExtension);\n }\n\n if (file.size > restrictedFiles.maxFileSize) {\n identifiedRestrictedFileSizes.push(file.name);\n }\n });\n\n const isAcceptableExtensions = identifiedRestrictedExtensions.length === 0;\n const isAcceptableSizes = identifiedRestrictedFileSizes.length === 0;\n\n if (!(isAcceptableExtensions && isAcceptableSizes)) {\n if (!isAcceptableExtensions) {\n const uniqueExtensions = [...new Set(identifiedRestrictedExtensions)];\n const errorText = `Restricted file type(s). ${uniqueExtensions.join(\n ', '\n )}`;\n enqueueSnackbar(t(errorText), {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' }\n });\n }\n\n if (!isAcceptableSizes) {\n const errorText = `File(s) are too large (5MB limit). ${identifiedRestrictedFileSizes.join(\n ', '\n )}`;\n enqueueSnackbar(t(errorText), {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' }\n });\n }\n\n setUploadKey((prevKey) => prevKey + 1);\n return;\n }\n\n setUploadedFiles(files);\n };\n\n const handleSubmit = async (values) => {\n setLoadingState(true);\n\n let response;\n try {\n response = unityState\n ? await postCaseAttachmentUnity(values)\n : await postCaseAttachment(values);\n } catch (apiError) {\n console.error('post Case API call failed:', apiError);\n enqueueSnackbar(t('Submission failed'), {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: (key) => (\n <Button\n color='primary'\n size='small'\n id='udpRecord-SupportCaseForm-close'\n onClick={() => {\n closeSnackbar(key);\n }}\n >\n close\n </Button>\n )\n });\n setLoadingState(false);\n return { submitError: apiError.message };\n }\n\n // Check for valid response\n if (!response?.data?.evergrnCaseId) {\n console.error('API call succeeded but no case ID returned');\n enqueueSnackbar(t('Submission failed - No case ID returned'), {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: (key) => (\n <Button\n color='primary'\n size='small'\n id='udpRecord-SupportCaseForm-close'\n onClick={() => {\n closeSnackbar(key);\n }}\n >\n close\n </Button>\n )\n });\n setLoadingState(false);\n return { submitError: 'No case ID was returned from the server' };\n }\n\n window.dispatchEvent(new CustomEvent('support-case-created'));\n\n try {\n handleCloseSupportCaseSideSheet();\n } catch (closeError) {\n console.error('Error closing sheet:', closeError);\n }\n\n enqueueSnackbar(t(`Support Case Created. View your cases`), {\n variant: 'success',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: (key) => (\n <Button\n color='primary'\n size='small'\n id='udpRecord-SupportCaseForm-here'\n onClick={() => {\n try {\n const caseId = response.data.evergrnCaseId;\n let url;\n if (unityState) {\n url = `/support/cases/${caseId}`;\n history.push(url);\n } else {\n url = `${ConfigService.config.UNITY_URL}/support/cases/${caseId}`;\n window.location.href = url;\n }\n closeSnackbar(key);\n } catch (navError) {\n console.error('Navigation error:', navError);\n closeSnackbar(key);\n }\n }}\n >\n here\n </Button>\n )\n });\n\n try {\n await onSubmit(values);\n } catch (onSubmitError) {\n console.error('Error in onSubmit:', onSubmitError);\n }\n setLoadingState(false);\n };\n\n return (\n <>\n {loadingState && <LinearProgress />}\n <Form onSubmit={handleSubmit}>\n <AmbientCard fullWidth>\n <Field\n component={FluentTextField}\n name='title'\n label={t('Title')}\n placeholder={t('Enter a brief title for your issue')}\n variant='outlined'\n fullWidth\n autoFocus\n required={true}\n />\n {unityState && (\n <Field\n component={FluentTextFieldAutoComplete}\n name='product'\n label={t('Product')}\n variant='outlined'\n margin='normal'\n size='small'\n options={brandOptions}\n optionKey='label'\n style={{ width: '100%' }}\n disableClearable\n id='udpRecord-CreateSupportCaseForm-product'\n udprecordid='udpRecord-CreateSupportCaseForm-product'\n />\n )}\n <Field\n component={FluentTextFieldAutoComplete}\n name='severity'\n label={t('Severity')}\n variant='outlined'\n margin='normal'\n size='small'\n options={severityOptions}\n optionKey='label'\n style={{ width: '100%' }}\n disableClearable\n id='udpRecord-CreateSupportCaseForm-severity'\n udprecordid='udpRecord-CreateSupportCaseForm-severity'\n required={true}\n />\n </AmbientCard>\n\n <LayoutUnit unit='xxs' />\n\n <AmbientCard fullWidth>\n <Field\n name='description'\n component={FluentTextField}\n multiline={true}\n rows={10}\n minRows={3}\n maxRows={20}\n required={true}\n label='Description'\n placeholder='Please describe your issue in detail'\n />\n </AmbientCard>\n\n <LayoutUnit unit='xxs' />\n\n <AmbientCard fullWidth>\n <DragDropFileUpload\n key={uploadKey}\n title='Attachments'\n multiple={true}\n minHeight='100px'\n maxHeight='400px'\n acceptedFiles='.pdf,.doc,.docx,.png,.jpg,.jpeg'\n handleUploadFile={handleUploadFile}\n />\n </AmbientCard>\n\n <LayoutUnit unit='xxs' />\n\n <FormButtons>\n <SubmitButton\n color='primary'\n variant='contained'\n disablePristine={false}\n >\n Submit Ticket\n </SubmitButton>\n </FormButtons>\n </Form>\n </>\n );\n};\n\nexport default SupportCaseForm;\n","import React from 'react';\nimport { SideSheet } from '../surfaces/SideSheet';\nimport SupportCaseForm from './SupportCaseForm';\n\nexport const SupportCaseSideSheet = ({\n open,\n onClose,\n onSubmit,\n initialValues,\n handleCloseSupportCaseSideSheet,\n loading\n}) => {\n return (\n <SideSheet\n open={open}\n onClose={onClose}\n title=\"Submit Support Ticket\"\n width={600} // You can adjust the width as needed\n >\n <SupportCaseForm\n onSubmit={onSubmit}\n initialValues={initialValues}\n handleCloseSupportCaseSideSheet={handleCloseSupportCaseSideSheet}\n loading={loading}\n />\n </SideSheet>\n );\n};\n\nexport default SupportCaseSideSheet;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SupportCaseSideSheet-B9BxUCym.js","names":["LinearProgress","SupportCaseForm"],"sources":["../src/UI/support/SupportCaseForm.jsx","../src/UI/support/SupportCaseSideSheet.jsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from 'react';\nimport { FluentTextField } from '../inputs/textField/FluentTextField';\nimport { FluentTextFieldAutoComplete } from '../inputs/textField/FluentTextFieldAutoComplete';\nimport { LayoutUnit } from '../../layout/LayoutUnit';\nimport { DragDropFileUpload } from '../../uploader/DragDropFileUpload';\nimport { Form, FormButtons, SubmitButton, Field } from '../../utilities/form';\nimport { useUser } from '../../utilities/auth/useUser';\nimport { useTranslation } from 'react-i18next';\nimport { useSnackbar } from 'notistack';\nimport { Button } from '@material-ui/core';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { AmbientCard } from '../surfaces/cards/AmbientCard';\nimport { LinearProgress } from '../../UI/loading/LinearProgress';\nimport { useHistory } from 'react-router-dom';\nimport { ConfigService } from '../../configService';\n\nconst SupportCaseForm = ({\n onSubmit,\n initialValues = {},\n handleCloseSupportCaseSideSheet\n}) => {\n const { t } = useTranslation();\n const user = useUser();\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const [severityOptions, setSeverityOptions] = useState([]);\n const [environmentOptions, setEnvironmentOptions] = useState([]);\n const [brandOptions, setBrandOptions] = useState([]);\n const [uploadedFiles, setUploadedFiles] = useState([]);\n const [unityState, setUnityState] = useState();\n const [loadingState, setLoadingState] = useState(false);\n const baseUrl = ConfigService.productV1ApiUrl; // backend base url\n const unityUrl = ConfigService.supportV1ApiUrl; // unity support bypass\n const unityEnv = ConfigService.config.UNITY_ENVIRONMENT; // unity environment\n const [uploadKey, setUploadKey] = useState(0);\n const [restrictedFiles, setRestrictedFiles] = useState({});\n const history = useHistory();\n\n const getFileRestrictions = useCallback(\n async () =>\n apiMutate(baseUrl, `udpunitysupport/supportFileUploadRestrictions`, {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }),\n [baseUrl, user?.currentTenantId]\n );\n\n const getFileRestrictionsUnity = useCallback(\n async () =>\n apiMutate(unityUrl, `evergrncaseattachment/get-attachment-restrictions`, {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }),\n [unityUrl, user?.currentTenantId]\n );\n\n const getSeverityUnity = useCallback(\n async () =>\n apiMutate(unityUrl, `caseseverity/get-case-severity`, {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }),\n [unityUrl, user?.currentTenantId]\n );\n\n const getEnvironmentUnity = useCallback(\n async () =>\n apiMutate(unityUrl, `evergrncaseenvironment/get-case-environments`, {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }),\n [unityUrl, user?.currentTenantId]\n );\n\n const getSeverity = useCallback(\n async () =>\n apiMutate(baseUrl, `udpunitysupport/severities`, {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }),\n [baseUrl, user?.currentTenantId]\n );\n\n const getEnvironment = useCallback(\n async () =>\n apiMutate(baseUrl, `udpunitysupport/environments`, {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }),\n [baseUrl, user?.currentTenantId]\n );\n\n // externalUuid will be needed part of the post request to submit ticket\n const getTenantCaseAccount = useCallback(\n async () =>\n apiMutate(\n baseUrl,\n `udpunitysupport/tenantCaseAccount/` + user?.currentTenantId,\n {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }\n ),\n [baseUrl, user?.currentTenantId]\n );\n\n // list of products to choose from when in Support Portal, if cooresponsding externalUuid is null, default to devops support GUID\n const getTenantCaseBrand = useCallback(\n async () =>\n apiMutate(ConfigService.tenantV2ApiUrl, `tenant/products`, {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }),\n [user?.currentTenantId]\n );\n\n const getTenantSubscribedProducts = useCallback(\n async () =>\n apiMutate(\n ConfigService.tenantV1ApiUrl,\n `tenantProducts?tenantId=${user?.currentTenantId}`,\n {\n method: 'get',\n headers: {\n currentTenantId: user?.currentTenantId\n }\n }\n ),\n [user?.currentTenantId]\n );\n\n // TODO: this data should come from Unity table -> Unity UEM -> Unity Support\n const getCasesEnv = {\n Development: '100000003',\n Build: '100000003',\n Staging: '100000001',\n Production: '100000000'\n };\n\n function getCaseEnvironment() {\n return getCasesEnv[unityEnv] || '100000003'; // default to dev\n }\n\n let brandId = '416b0ca8-e679-ef11-ac20-6045bdcd3d86'; // Default to devops support ID, should come from API\n\n const postCaseAttachment = useCallback(\n (values) => {\n const data = new FormData();\n uploadedFiles.forEach((file) => {\n data.append('files', file);\n });\n data.append('EvergrnCaseName', values.title);\n data.append('EvergrnDescription', values.description);\n data.append('EvergrnCaseEnvironment', getCaseEnvironment());\n data.append('EvergrnSeverity', values.severity.value);\n // Find the corresponding brand ID using environment variable's product ID\n const matchingProduct = brandOptions.find(\n (product) => product.productId == ConfigService.config.UNITY_PRODUCT_ID\n );\n if (matchingProduct && matchingProduct.value) {\n brandId = matchingProduct.value;\n }\n data.append('EvergrnBrandId', brandId);\n data.append(\n 'UDPDriveUnityProductId',\n ConfigService.config.UNITY_PRODUCT_ID\n );\n\n return apiMutate(\n baseUrl,\n `udpunitysupport/case`,\n {\n method: 'post',\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n },\n { data: data }\n );\n },\n [baseUrl, uploadedFiles, getCaseEnvironment, brandOptions, brandId]\n );\n\n const postCaseAttachmentUnity = useCallback(\n (values) => {\n const data = new FormData();\n uploadedFiles.forEach((file) => {\n data.append('files', file);\n });\n data.append('EvergrnCaseName', values.title);\n data.append('EvergrnDescription', values.description);\n data.append('EvergrnCaseEnvironment', getCaseEnvironment());\n data.append('EvergrnSeverity', values.severity.value);\n data.append('EvergrnBrandId', values.product?.value || brandId);\n data.append(\n 'UDPDriveUnityProductId',\n ConfigService.config.UNITY_PRODUCT_ID\n );\n\n return apiMutate(\n unityUrl,\n `evergrncase/post-case`,\n {\n method: 'post',\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n },\n { data: data }\n );\n },\n [unityUrl, uploadedFiles, getCaseEnvironment, brandId]\n );\n\n useEffect(() => {\n const fetchData = async () => {\n try {\n if (ConfigService.config.UNITY_PRODUCT_ID === '1') {\n setUnityState(true);\n } else {\n setUnityState(false);\n }\n\n let getFileRestrictionsResponse = unityState\n ? await getFileRestrictionsUnity()\n : await getFileRestrictions();\n\n let severityResponse = unityState\n ? await getSeverityUnity()\n : await getSeverity();\n\n let environmentResponse = unityState\n ? await getEnvironmentUnity()\n : await getEnvironment();\n\n if (getFileRestrictionsResponse) {\n const fileRestrictionsData = getFileRestrictionsResponse.data;\n setRestrictedFiles(fileRestrictionsData);\n }\n\n if (severityResponse) {\n const severityOptions = severityResponse.data.map((item) => ({\n value: item.externalUUID.toString(),\n label: item.name\n }));\n setSeverityOptions(severityOptions);\n }\n\n if (environmentResponse) {\n const environmentOptions = environmentResponse.data.map((item) => ({\n value: item.evergrnCaseEnvironmentValue.toString(),\n label: item.evergrnCaseEnvironmentLabel\n }));\n setEnvironmentOptions(environmentOptions);\n }\n\n // fetch brand data\n const brandResponse = await getTenantCaseBrand();\n const tenantSubscribedProductsResponse =\n await getTenantSubscribedProducts();\n\n if (brandResponse && tenantSubscribedProductsResponse) {\n const brandArray = brandResponse.data.filter(\n (brandItem) => brandItem.externalUuid != null\n );\n const subscribedArray = tenantSubscribedProductsResponse.data;\n\n const brandOptions = subscribedArray\n .map((subscribedProduct) => {\n const foundProduct = brandArray.find(\n (brandItem) =>\n brandItem.productId === subscribedProduct.productId\n );\n\n if (!foundProduct) {\n return null;\n }\n\n return {\n ...subscribedProduct,\n value: foundProduct.externalUuid?.toString(), // Cases Brand ID\n label: foundProduct.name.toString()\n };\n })\n .filter(Boolean);\n\n setBrandOptions(brandOptions);\n }\n } catch (error) {\n console.error('Error fetching data:', error);\n }\n };\n\n fetchData();\n }, [\n unityState,\n getSeverityUnity,\n getEnvironmentUnity,\n getFileRestrictionsUnity,\n getFileRestrictions,\n getSeverity,\n getEnvironment,\n getTenantCaseBrand,\n getTenantSubscribedProducts\n ]);\n\n const handleUploadFile = (files) => {\n const identifiedRestrictedExtensions = [];\n const identifiedRestrictedFileSizes = [];\n\n files.forEach((file) => {\n const fileExtension = file.name.includes('.')\n ? '.' + file.name.split('.').pop().toLowerCase()\n : '';\n\n if (restrictedFiles.restrictedExtensions.includes(fileExtension)) {\n identifiedRestrictedExtensions.push(fileExtension);\n }\n\n if (file.size > restrictedFiles.maxFileSize) {\n identifiedRestrictedFileSizes.push(file.name);\n }\n });\n\n const isAcceptableExtensions = identifiedRestrictedExtensions.length === 0;\n const isAcceptableSizes = identifiedRestrictedFileSizes.length === 0;\n\n if (!(isAcceptableExtensions && isAcceptableSizes)) {\n if (!isAcceptableExtensions) {\n const uniqueExtensions = [...new Set(identifiedRestrictedExtensions)];\n const errorText = `Restricted file type(s). ${uniqueExtensions.join(\n ', '\n )}`;\n enqueueSnackbar(t(errorText), {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' }\n });\n }\n\n if (!isAcceptableSizes) {\n const errorText = `File(s) are too large (5MB limit). ${identifiedRestrictedFileSizes.join(\n ', '\n )}`;\n enqueueSnackbar(t(errorText), {\n variant: 'error',\n anchorOrigin: { vertical: 'top', horizontal: 'center' }\n });\n }\n\n setUploadKey((prevKey) => prevKey + 1);\n return;\n }\n\n setUploadedFiles(files);\n };\n\n const handleSubmit = async (values) => {\n setLoadingState(true);\n\n let response;\n try {\n response = unityState\n ? await postCaseAttachmentUnity(values)\n : await postCaseAttachment(values);\n } catch (apiError) {\n console.error('post Case API call failed:', apiError);\n enqueueSnackbar(t('Submission failed'), {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: (key) => (\n <Button\n color='primary'\n size='small'\n id='udpRecord-SupportCaseForm-close'\n onClick={() => {\n closeSnackbar(key);\n }}\n >\n close\n </Button>\n )\n });\n setLoadingState(false);\n return { submitError: apiError.message };\n }\n\n // Check for valid response\n if (!response?.data?.evergrnCaseId) {\n console.error('API call succeeded but no case ID returned');\n enqueueSnackbar(t('Submission failed - No case ID returned'), {\n variant: 'error',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: (key) => (\n <Button\n color='primary'\n size='small'\n id='udpRecord-SupportCaseForm-close'\n onClick={() => {\n closeSnackbar(key);\n }}\n >\n close\n </Button>\n )\n });\n setLoadingState(false);\n return { submitError: 'No case ID was returned from the server' };\n }\n\n window.dispatchEvent(new CustomEvent('support-case-created'));\n\n try {\n handleCloseSupportCaseSideSheet();\n } catch (closeError) {\n console.error('Error closing sheet:', closeError);\n }\n\n enqueueSnackbar(t(`Support Case Created. View your cases`), {\n variant: 'success',\n anchorOrigin: {\n vertical: 'top',\n horizontal: 'center'\n },\n action: (key) => (\n <Button\n color='primary'\n size='small'\n id='udpRecord-SupportCaseForm-here'\n onClick={() => {\n try {\n const caseId = response.data.evergrnCaseId;\n let url;\n if (unityState) {\n url = `/support/cases/${caseId}`;\n history.push(url);\n } else {\n url = `${ConfigService.config.UNITY_URL}/support/cases/${caseId}`;\n window.location.href = url;\n }\n closeSnackbar(key);\n } catch (navError) {\n console.error('Navigation error:', navError);\n closeSnackbar(key);\n }\n }}\n >\n here\n </Button>\n )\n });\n\n try {\n await onSubmit(values);\n } catch (onSubmitError) {\n console.error('Error in onSubmit:', onSubmitError);\n }\n setLoadingState(false);\n };\n\n return (\n <>\n {loadingState && <LinearProgress />}\n <Form onSubmit={handleSubmit}>\n <AmbientCard fullWidth>\n <Field\n component={FluentTextField}\n name='title'\n label={t('Title')}\n placeholder={t('Enter a brief title for your issue')}\n variant='outlined'\n fullWidth\n autoFocus\n required={true}\n />\n {unityState && (\n <Field\n component={FluentTextFieldAutoComplete}\n name='product'\n label={t('Product')}\n variant='outlined'\n margin='normal'\n size='small'\n options={brandOptions}\n optionKey='label'\n style={{ width: '100%' }}\n disableClearable\n id='udpRecord-CreateSupportCaseForm-product'\n udprecordid='udpRecord-CreateSupportCaseForm-product'\n />\n )}\n <Field\n component={FluentTextFieldAutoComplete}\n name='severity'\n label={t('Severity')}\n variant='outlined'\n margin='normal'\n size='small'\n options={severityOptions}\n optionKey='label'\n style={{ width: '100%' }}\n disableClearable\n id='udpRecord-CreateSupportCaseForm-severity'\n udprecordid='udpRecord-CreateSupportCaseForm-severity'\n required={true}\n />\n </AmbientCard>\n\n <LayoutUnit unit='xxs' />\n\n <AmbientCard fullWidth>\n <Field\n name='description'\n component={FluentTextField}\n multiline={true}\n rows={10}\n minRows={3}\n maxRows={20}\n required={true}\n label='Description'\n placeholder='Please describe your issue in detail'\n />\n </AmbientCard>\n\n <LayoutUnit unit='xxs' />\n\n <AmbientCard fullWidth>\n <DragDropFileUpload\n key={uploadKey}\n title='Attachments'\n multiple={true}\n minHeight='100px'\n maxHeight='400px'\n acceptedFiles='.pdf,.doc,.docx,.png,.jpg,.jpeg'\n handleUploadFile={handleUploadFile}\n />\n </AmbientCard>\n\n <LayoutUnit unit='xxs' />\n\n <FormButtons>\n <SubmitButton\n color='primary'\n variant='contained'\n disablePristine={false}\n >\n Submit Ticket\n </SubmitButton>\n </FormButtons>\n </Form>\n </>\n );\n};\n\nexport default SupportCaseForm;\n","import React from 'react';\nimport { SideSheet } from '../surfaces/SideSheet';\nimport SupportCaseForm from './SupportCaseForm';\n\nexport const SupportCaseSideSheet = ({\n open,\n onClose,\n onSubmit,\n initialValues,\n handleCloseSupportCaseSideSheet,\n loading\n}) => {\n return (\n <SideSheet\n open={open}\n onClose={onClose}\n title=\"Submit Support Ticket\"\n width={600} // You can adjust the width as needed\n >\n <SupportCaseForm\n onSubmit={onSubmit}\n initialValues={initialValues}\n handleCloseSupportCaseSideSheet={handleCloseSupportCaseSideSheet}\n loading={loading}\n />\n </SideSheet>\n );\n};\n\nexport default SupportCaseSideSheet;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAgBA,MAAM,mBAAmB,EACvB,UACA,gBAAgB,EAAE,EAClB,sCACI;CACJ,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,OAAO,SAAS;CACtB,MAAM,EAAE,iBAAiB,kBAAkB,aAAa;CACxD,MAAM,CAAC,iBAAiB,sBAAsB,SAAS,EAAE,CAAC;CAC1D,MAAM,CAAC,oBAAoB,yBAAyB,SAAS,EAAE,CAAC;CAChE,MAAM,CAAC,cAAc,mBAAmB,SAAS,EAAE,CAAC;CACpD,MAAM,CAAC,eAAe,oBAAoB,SAAS,EAAE,CAAC;CACtD,MAAM,CAAC,YAAY,iBAAiB,UAAU;CAC9C,MAAM,CAAC,cAAc,mBAAmB,SAAS,MAAM;CACvD,MAAM,UAAU,cAAc;CAC9B,MAAM,WAAW,cAAc;CAC/B,MAAM,WAAW,cAAc,OAAO;CACtC,MAAM,CAAC,WAAW,gBAAgB,SAAS,EAAE;CAC7C,MAAM,CAAC,iBAAiB,sBAAsB,SAAS,EAAE,CAAC;CAC1D,MAAM,UAAU,YAAY;CAE5B,MAAM,sBAAsB,YAC1B,YACE,UAAU,SAAS,iDAAiD;EAClE,QAAQ;EACR,SAAS,EACP,iBAAiB,MAAM,iBACxB;EACF,CAAC,EACJ,CAAC,SAAS,MAAM,gBAAgB,CACjC;CAED,MAAM,2BAA2B,YAC/B,YACE,UAAU,UAAU,qDAAqD;EACvE,QAAQ;EACR,SAAS,EACP,iBAAiB,MAAM,iBACxB;EACF,CAAC,EACJ,CAAC,UAAU,MAAM,gBAAgB,CAClC;CAED,MAAM,mBAAmB,YACvB,YACE,UAAU,UAAU,kCAAkC;EACpD,QAAQ;EACR,SAAS,EACP,iBAAiB,MAAM,iBACxB;EACF,CAAC,EACJ,CAAC,UAAU,MAAM,gBAAgB,CAClC;CAED,MAAM,sBAAsB,YAC1B,YACE,UAAU,UAAU,gDAAgD;EAClE,QAAQ;EACR,SAAS,EACP,iBAAiB,MAAM,iBACxB;EACF,CAAC,EACJ,CAAC,UAAU,MAAM,gBAAgB,CAClC;CAED,MAAM,cAAc,YAClB,YACE,UAAU,SAAS,8BAA8B;EAC/C,QAAQ;EACR,SAAS,EACP,iBAAiB,MAAM,iBACxB;EACF,CAAC,EACJ,CAAC,SAAS,MAAM,gBAAgB,CACjC;CAED,MAAM,iBAAiB,YACrB,YACE,UAAU,SAAS,gCAAgC;EACjD,QAAQ;EACR,SAAS,EACP,iBAAiB,MAAM,iBACxB;EACF,CAAC,EACJ,CAAC,SAAS,MAAM,gBAAgB,CACjC;AAG4B,aAC3B,YACE,UACE,SACA,uCAAuC,MAAM,iBAC7C;EACE,QAAQ;EACR,SAAS,EACP,iBAAiB,MAAM,iBACxB;EACF,CACF,EACH,CAAC,SAAS,MAAM,gBAAgB,CACjC;CAGD,MAAM,qBAAqB,YACzB,YACE,UAAU,cAAc,gBAAgB,mBAAmB;EACzD,QAAQ;EACR,SAAS,EACP,iBAAiB,MAAM,iBACxB;EACF,CAAC,EACJ,CAAC,MAAM,gBAAgB,CACxB;CAED,MAAM,8BAA8B,YAClC,YACE,UACE,cAAc,gBACd,2BAA2B,MAAM,mBACjC;EACE,QAAQ;EACR,SAAS,EACP,iBAAiB,MAAM,iBACxB;EACF,CACF,EACH,CAAC,MAAM,gBAAgB,CACxB;CAGD,MAAM,cAAc;EAClB,aAAa;EACb,OAAO;EACP,SAAS;EACT,YAAY;EACb;CAED,SAAS,qBAAqB;AAC5B,SAAO,YAAY,aAAa;;CAGlC,IAAI,UAAU;CAEd,MAAM,qBAAqB,aACxB,WAAW;EACV,MAAM,OAAO,IAAI,UAAU;AAC3B,gBAAc,SAAS,SAAS;AAC9B,QAAK,OAAO,SAAS,KAAK;IAC1B;AACF,OAAK,OAAO,mBAAmB,OAAO,MAAM;AAC5C,OAAK,OAAO,sBAAsB,OAAO,YAAY;AACrD,OAAK,OAAO,0BAA0B,oBAAoB,CAAC;AAC3D,OAAK,OAAO,mBAAmB,OAAO,SAAS,MAAM;EAErD,MAAM,kBAAkB,aAAa,MAClC,YAAY,QAAQ,aAAa,cAAc,OAAO,iBACxD;AACD,MAAI,mBAAmB,gBAAgB,MACrC,WAAU,gBAAgB;AAE5B,OAAK,OAAO,kBAAkB,QAAQ;AACtC,OAAK,OACH,0BACA,cAAc,OAAO,iBACtB;AAED,SAAO,UACL,SACA,wBACA;GACE,QAAQ;GACR,SAAS,EACP,gBAAgB,uBACjB;GACF,EACD,EAAQ,MAAM,CACf;IAEH;EAAC;EAAS;EAAe;EAAoB;EAAc;EAAQ,CACpE;CAED,MAAM,0BAA0B,aAC7B,WAAW;EACV,MAAM,OAAO,IAAI,UAAU;AAC3B,gBAAc,SAAS,SAAS;AAC9B,QAAK,OAAO,SAAS,KAAK;IAC1B;AACF,OAAK,OAAO,mBAAmB,OAAO,MAAM;AAC5C,OAAK,OAAO,sBAAsB,OAAO,YAAY;AACrD,OAAK,OAAO,0BAA0B,oBAAoB,CAAC;AAC3D,OAAK,OAAO,mBAAmB,OAAO,SAAS,MAAM;AACrD,OAAK,OAAO,kBAAkB,OAAO,SAAS,SAAS,QAAQ;AAC/D,OAAK,OACH,0BACA,cAAc,OAAO,iBACtB;AAED,SAAO,UACL,UACA,yBACA;GACE,QAAQ;GACR,SAAS,EACP,gBAAgB,uBACjB;GACF,EACD,EAAQ,MAAM,CACf;IAEH;EAAC;EAAU;EAAe;EAAoB;EAAQ,CACvD;AAED,iBAAgB;EACd,MAAM,YAAY,YAAY;AAC5B,OAAI;AACF,QAAI,cAAc,OAAO,qBAAqB,IAC5C,eAAc,KAAK;QAEnB,eAAc,MAAM;IAGtB,IAAI,8BAA8B,aAC9B,MAAM,0BAA0B,GAChC,MAAM,qBAAqB;IAE/B,IAAI,mBAAmB,aACnB,MAAM,kBAAkB,GACxB,MAAM,aAAa;IAEvB,IAAI,sBAAsB,aACtB,MAAM,qBAAqB,GAC3B,MAAM,gBAAgB;AAE1B,QAAI,6BAA6B;KAC/B,MAAM,uBAAuB,4BAA4B;AACzD,wBAAmB,qBAAqB;;AAG1C,QAAI,iBAKF,oBAJwB,iBAAiB,KAAK,KAAK,UAAU;KAC3D,OAAO,KAAK,aAAa,UAAU;KACnC,OAAO,KAAK;KACb,EAAE,CACgC;AAGrC,QAAI,oBAKF,uBAJ2B,oBAAoB,KAAK,KAAK,UAAU;KACjE,OAAO,KAAK,4BAA4B,UAAU;KAClD,OAAO,KAAK;KACb,EAAE,CACsC;IAI3C,MAAM,gBAAgB,MAAM,oBAAoB;IAChD,MAAM,mCACJ,MAAM,6BAA6B;AAErC,QAAI,iBAAiB,kCAAkC;KACrD,MAAM,aAAa,cAAc,KAAK,QACnC,cAAc,UAAU,gBAAgB,KAC1C;AAsBD,qBArBwB,iCAAiC,KAGtD,KAAK,sBAAsB;MAC1B,MAAM,eAAe,WAAW,MAC7B,cACC,UAAU,cAAc,kBAAkB,UAC7C;AAED,UAAI,CAAC,aACH,QAAO;AAGT,aAAO;OACL,GAAG;OACH,OAAO,aAAa,cAAc,UAAU;OAC5C,OAAO,aAAa,KAAK,UAAU;OACpC;OACD,CACD,OAAO,QAAQ,CAEW;;YAExB,OAAO;AACd,YAAQ,MAAM,wBAAwB,MAAM;;;AAIhD,aAAW;IACV;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,oBAAoB,UAAU;EAClC,MAAM,iCAAiC,EAAE;EACzC,MAAM,gCAAgC,EAAE;AAExC,QAAM,SAAS,SAAS;GACtB,MAAM,gBAAgB,KAAK,KAAK,SAAS,IAAI,GACzC,MAAM,KAAK,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,GAC9C;AAEJ,OAAI,gBAAgB,qBAAqB,SAAS,cAAc,CAC9D,gCAA+B,KAAK,cAAc;AAGpD,OAAI,KAAK,OAAO,gBAAgB,YAC9B,+BAA8B,KAAK,KAAK,KAAK;IAE/C;EAEF,MAAM,yBAAyB,+BAA+B,WAAW;EACzE,MAAM,oBAAoB,8BAA8B,WAAW;AAEnE,MAAI,EAAE,0BAA0B,oBAAoB;AAClD,OAAI,CAAC,uBAKH,iBAAgB,EAHE,4BADO,CAAC,GAAG,IAAI,IAAI,+BAA+B,CAAC,CACN,KAC7D,KACD,GAC2B,EAAE;IAC5B,SAAS;IACT,cAAc;KAAE,UAAU;KAAO,YAAY;KAAU;IACxD,CAAC;AAGJ,OAAI,CAAC,kBAIH,iBAAgB,EAHE,sCAAsC,8BAA8B,KACpF,KACD,GAC2B,EAAE;IAC5B,SAAS;IACT,cAAc;KAAE,UAAU;KAAO,YAAY;KAAU;IACxD,CAAC;AAGJ,iBAAc,YAAY,UAAU,EAAE;AACtC;;AAGF,mBAAiB,MAAM;;CAGzB,MAAM,eAAe,OAAO,WAAW;AACrC,kBAAgB,KAAK;EAErB,IAAI;AACJ,MAAI;AACF,cAAW,aACP,MAAM,wBAAwB,OAAO,GACrC,MAAM,mBAAmB,OAAO;WAC7B,UAAU;AACjB,WAAQ,MAAM,8BAA8B,SAAS;AACrD,mBAAgB,EAAE,oBAAoB,EAAE;IACtC,SAAS;IACT,cAAc;KACZ,UAAU;KACV,YAAY;KACb;IACD,SAAS,QACP,oCAAC;KACC,OAAM;KACN,MAAK;KACL,IAAG;KACH,eAAe;AACb,oBAAc,IAAI;;OAErB,QAEQ;IAEZ,CAAC;AACF,mBAAgB,MAAM;AACtB,UAAO,EAAE,aAAa,SAAS,SAAS;;AAI1C,MAAI,CAAC,UAAU,MAAM,eAAe;AAClC,WAAQ,MAAM,6CAA6C;AAC3D,mBAAgB,EAAE,0CAA0C,EAAE;IAC5D,SAAS;IACT,cAAc;KACZ,UAAU;KACV,YAAY;KACb;IACD,SAAS,QACP,oCAAC;KACC,OAAM;KACN,MAAK;KACL,IAAG;KACH,eAAe;AACb,oBAAc,IAAI;;OAErB,QAEQ;IAEZ,CAAC;AACF,mBAAgB,MAAM;AACtB,UAAO,EAAE,aAAa,2CAA2C;;AAGnE,SAAO,cAAc,IAAI,YAAY,uBAAuB,CAAC;AAE7D,MAAI;AACF,oCAAiC;WAC1B,YAAY;AACnB,WAAQ,MAAM,wBAAwB,WAAW;;AAGnD,kBAAgB,EAAE,wCAAwC,EAAE;GAC1D,SAAS;GACT,cAAc;IACZ,UAAU;IACV,YAAY;IACb;GACD,SAAS,QACP,oCAAC;IACC,OAAM;IACN,MAAK;IACL,IAAG;IACH,eAAe;AACb,SAAI;MACF,MAAM,SAAS,SAAS,KAAK;MAC7B,IAAI;AACJ,UAAI,YAAY;AACd,aAAM,kBAAkB;AACxB,eAAQ,KAAK,IAAI;aACZ;AACL,aAAM,GAAG,cAAc,OAAO,UAAU,iBAAiB;AACzD,cAAO,SAAS,OAAO;;AAEzB,oBAAc,IAAI;cACX,UAAU;AACjB,cAAQ,MAAM,qBAAqB,SAAS;AAC5C,oBAAc,IAAI;;;MAGvB,OAEQ;GAEZ,CAAC;AAEF,MAAI;AACF,SAAM,SAAS,OAAO;WACf,eAAe;AACtB,WAAQ,MAAM,sBAAsB,cAAc;;AAEpD,kBAAgB,MAAM;;AAGxB,QACE,0DACG,gBAAgB,oCAACA,uBAAiB,EACnC,oCAAC,QAAK,UAAU,gBACd,oCAAC,eAAY,mBACX,oCAAC;EACC,WAAW;EACX,MAAK;EACL,OAAO,EAAE,QAAQ;EACjB,aAAa,EAAE,qCAAqC;EACpD,SAAQ;EACR;EACA;EACA,UAAU;GACV,EACD,cACC,oCAAC;EACC,WAAW;EACX,MAAK;EACL,OAAO,EAAE,UAAU;EACnB,SAAQ;EACR,QAAO;EACP,MAAK;EACL,SAAS;EACT,WAAU;EACV,OAAO,EAAE,OAAO,QAAQ;EACxB;EACA,IAAG;EACH,aAAY;GACZ,EAEJ,oCAAC;EACC,WAAW;EACX,MAAK;EACL,OAAO,EAAE,WAAW;EACpB,SAAQ;EACR,QAAO;EACP,MAAK;EACL,SAAS;EACT,WAAU;EACV,OAAO,EAAE,OAAO,QAAQ;EACxB;EACA,IAAG;EACH,aAAY;EACZ,UAAU;GACV,CACU,EAEd,oCAAC,cAAW,MAAK,QAAQ,EAEzB,oCAAC,eAAY,mBACX,oCAAC;EACC,MAAK;EACL,WAAW;EACX,WAAW;EACX,MAAM;EACN,SAAS;EACT,SAAS;EACT,UAAU;EACV,OAAM;EACN,aAAY;GACZ,CACU,EAEd,oCAAC,cAAW,MAAK,QAAQ,EAEzB,oCAAC,eAAY,mBACX,oCAAC;EACC,KAAK;EACL,OAAM;EACN,UAAU;EACV,WAAU;EACV,WAAU;EACV,eAAc;EACI;GAClB,CACU,EAEd,oCAAC,cAAW,MAAK,QAAQ,EAEzB,oCAAC,mBACC,oCAAC;EACC,OAAM;EACN,SAAQ;EACR,iBAAiB;IAClB,gBAEc,CACH,CACT,CACN;;AAIP,8BAAe;;;;AC1jBf,MAAa,wBAAwB,EACnC,MACA,SACA,UACA,eACA,iCACA,cACI;AACJ,QACE,oCAAC;EACO;EACG;EACT,OAAM;EACN,OAAO;IAEP,oCAACC;EACW;EACK;EACkB;EACxB;GACT,CACQ;;AAIhB,mCAAe"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as SupportCaseSideSheet_default, t as SupportCaseSideSheet } from "./SupportCaseSideSheet-
|
|
1
|
+
import { n as SupportCaseSideSheet_default, t as SupportCaseSideSheet } from "./SupportCaseSideSheet-B9BxUCym.js";
|
|
2
2
|
|
|
3
3
|
export { SupportCaseSideSheet, SupportCaseSideSheet_default as default };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { r as useAgGridApi } from "./AgTable-B2xTzAm2.js";
|
|
2
2
|
import { r as getSanitizedName } from "./entityUtilities-_8w-Zjs3.js";
|
|
3
|
-
import { t as executeQueryAdHoc } from "./methodUtils-
|
|
3
|
+
import { t as executeQueryAdHoc } from "./methodUtils-BmW5r7qU.js";
|
|
4
4
|
import { n as useBuildEnvironment } from "./useBuildEnvironment-2gdqpmBX.js";
|
|
5
|
-
import { t as AmbientGridTemplate } from "./AmbientGridTemplate-
|
|
6
|
-
import { t as ActionsRenderer } from "./ActionsRenderer-
|
|
7
|
-
import { t as SearchServiceDatasource } from "./SearchServiceDatasource-
|
|
5
|
+
import { t as AmbientGridTemplate } from "./AmbientGridTemplate-UXA3KgIL.js";
|
|
6
|
+
import { t as ActionsRenderer } from "./ActionsRenderer-DbMlilVW.js";
|
|
7
|
+
import { t as SearchServiceDatasource } from "./SearchServiceDatasource-DxoCnnUT.js";
|
|
8
8
|
import React, { useCallback, useEffect, useMemo } from "react";
|
|
9
9
|
|
|
10
10
|
//#region src/maintenanceEngine/tableBrowser/TableColumnDefs.js
|
|
@@ -107,4 +107,4 @@ const TableContainer = (props) => {
|
|
|
107
107
|
|
|
108
108
|
//#endregion
|
|
109
109
|
export { TableColumnDefs as n, defaultColumnActionsDef as r, TableContainer as t };
|
|
110
|
-
//# sourceMappingURL=TableContainer-
|
|
110
|
+
//# sourceMappingURL=TableContainer-mo1phK4j.js.map
|