udp-react-enterprise-component-library 25.18.1-beta.71 → 25.18.1-beta.72
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-DGzli-X1.js → ActionProvider-BGugOmjV.js} +2 -2
- package/dist/{ActionProvider-DGzli-X1.js.map → ActionProvider-BGugOmjV.js.map} +1 -1
- package/dist/{ActionSplitScreen-gKH4ISoo.js → ActionSplitScreen-D6_7PlK-.js} +4 -4
- package/dist/{ActionSplitScreen-gKH4ISoo.js.map → ActionSplitScreen-D6_7PlK-.js.map} +1 -1
- package/dist/{ActionWrapper-Bpp9Mn4j.js → ActionWrapper-DnP7lGDq.js} +4 -4
- package/dist/{ActionWrapper-Bpp9Mn4j.js.map → ActionWrapper-DnP7lGDq.js.map} +1 -1
- package/dist/{AmbientCard-CLW4bPCu.js → AmbientCard-DhAiVDYD.js} +2 -2
- package/dist/{AmbientCard-CLW4bPCu.js.map → AmbientCard-DhAiVDYD.js.map} +1 -1
- package/dist/{AmbientVisualizationCard-CAxx4QWe.js → AmbientVisualizationCard-CivQRhmD.js} +4 -4
- package/dist/{AmbientVisualizationCard-CAxx4QWe.js.map → AmbientVisualizationCard-CivQRhmD.js.map} +1 -1
- package/dist/{AmbientVisualizer-BABKxgsK.js → AmbientVisualizer-buICwVdO.js} +2 -2
- package/dist/{AmbientVisualizer-BABKxgsK.js.map → AmbientVisualizer-buICwVdO.js.map} +1 -1
- package/dist/{BioCardWrapper-B2bT-4zw.js → BioCardWrapper-D1ZOHyA4.js} +3 -3
- package/dist/{BioCardWrapper-B2bT-4zw.js.map → BioCardWrapper-D1ZOHyA4.js.map} +1 -1
- package/dist/{CrudTableSidePanel-CNEZxJi0.js → CrudTableSidePanel-Dw8gZSqR.js} +2 -2
- package/dist/{CrudTableSidePanel-CNEZxJi0.js.map → CrudTableSidePanel-Dw8gZSqR.js.map} +1 -1
- package/dist/{DashboardWidget-CsOrr74H.js → DashboardWidget-D3HStfJA.js} +26 -10
- package/dist/DashboardWidget-D3HStfJA.js.map +1 -0
- package/dist/{DataBrowserContainer-cU_EEIiR.js → DataBrowserContainer-D4gJ66IC.js} +2 -2
- package/dist/{DataBrowserContainer-cU_EEIiR.js.map → DataBrowserContainer-D4gJ66IC.js.map} +1 -1
- package/dist/{DynamicRangeSlider-prr4fg8d.js → DynamicRangeSlider-BX4kCzUd.js} +2 -2
- package/dist/{DynamicRangeSlider-prr4fg8d.js.map → DynamicRangeSlider-BX4kCzUd.js.map} +1 -1
- package/dist/{EmailDisplay-Dm8ynSko.js → EmailDisplay-DZHmPeiL.js} +2 -2
- package/dist/{EmailDisplay-Dm8ynSko.js.map → EmailDisplay-DZHmPeiL.js.map} +1 -1
- package/dist/{ExportSidesheet-DWkoiwxC.js → ExportSidesheet-BQiNzxN9.js} +4 -4
- package/dist/{ExportSidesheet-DWkoiwxC.js.map → ExportSidesheet-BQiNzxN9.js.map} +1 -1
- package/dist/{FieldArrayCard-Ds_ysYWL.js → FieldArrayCard-sEe2pmg7.js} +3 -3
- package/dist/{FieldArrayCard-Ds_ysYWL.js.map → FieldArrayCard-sEe2pmg7.js.map} +1 -1
- package/dist/{FluentListItem-_Nq3fhEY.js → FluentListItem-1fzW--Dq.js} +2 -2
- package/dist/{FluentListItem-_Nq3fhEY.js.map → FluentListItem-1fzW--Dq.js.map} +1 -1
- package/dist/{GraphCard-BhcSveF4.js → GraphCard-Bdh6VeDb.js} +2 -2
- package/dist/{GraphCard-BhcSveF4.js.map → GraphCard-Bdh6VeDb.js.map} +1 -1
- package/dist/{ImportDataFromFileMapping-3XXgUR-Z.js → ImportDataFromFileMapping-BIcQmKll.js} +2 -2
- package/dist/{ImportDataFromFileMapping-3XXgUR-Z.js.map → ImportDataFromFileMapping-BIcQmKll.js.map} +1 -1
- package/dist/{Inquiry-KKLgba3g.js → Inquiry-1o8EuckI.js} +12 -10
- package/dist/{Inquiry-KKLgba3g.js.map → Inquiry-1o8EuckI.js.map} +1 -1
- package/dist/Inquiry-B9U7e2Iu.js +3 -0
- package/dist/{InquirySearchContainer-DKDrIqNO.js → InquirySearchContainer-zxbukV51.js} +3 -3
- package/dist/{InquirySearchContainer-DKDrIqNO.js.map → InquirySearchContainer-zxbukV51.js.map} +1 -1
- package/dist/MenuPage-CdzHSWBt.js +3 -0
- package/dist/{MenuPage-tkkhpco5.js → MenuPage-KiNfnc7P.js} +3 -3
- package/dist/{MenuPage-tkkhpco5.js.map → MenuPage-KiNfnc7P.js.map} +1 -1
- package/dist/{MttMainTimeline-s0ANW7l-.js → MttMainTimeline-DbaaXXQv.js} +2 -2
- package/dist/{MttMainTimeline-s0ANW7l-.js.map → MttMainTimeline-DbaaXXQv.js.map} +1 -1
- package/dist/{NotesScreen-DQatppnX.js → NotesScreen-D8-QnWaB.js} +2 -2
- package/dist/{NotesScreen-DQatppnX.js.map → NotesScreen-D8-QnWaB.js.map} +1 -1
- package/dist/{PDFViewer-B4nJKbIy.js → PDFViewer-BvaqCfIS.js} +2 -2
- package/dist/{PDFViewer-B4nJKbIy.js.map → PDFViewer-BvaqCfIS.js.map} +1 -1
- package/dist/{Page-fxgRfgm6.js → Page-BNjiUMqy.js} +5 -4
- package/dist/Page-BNjiUMqy.js.map +1 -0
- package/dist/{PageActionWrapper-BBkGtnC6.js → PageActionWrapper-Bm6J0thr.js} +2 -2
- package/dist/{PageActionWrapper-BBkGtnC6.js.map → PageActionWrapper-Bm6J0thr.js.map} +1 -1
- package/dist/{PageContainer-DTXNLt_2.js → PageContainer-ButX_XVS.js} +8 -6
- package/dist/PageContainer-ButX_XVS.js.map +1 -0
- package/dist/{PageRenderer-BTkUO-hr.js → PageRenderer-hxobUKe_.js} +2 -2
- package/dist/{PageRenderer-BTkUO-hr.js.map → PageRenderer-hxobUKe_.js.map} +1 -1
- package/dist/{PaymentForm-Dum5p1mf.js → PaymentForm-BdWY9dEt.js} +2 -2
- package/dist/{PaymentForm-Dum5p1mf.js.map → PaymentForm-BdWY9dEt.js.map} +1 -1
- package/dist/{PrimaryActionHeader-DBJpROPu.js → PrimaryActionHeader-H5w3twaM.js} +3 -2
- package/dist/PrimaryActionHeader-H5w3twaM.js.map +1 -0
- package/dist/{RecentlyLoadedNodesTable-Dy8yBVfH.js → RecentlyLoadedNodesTable-BzvR0L0h.js} +2 -2
- package/dist/{RecentlyLoadedNodesTable-Dy8yBVfH.js.map → RecentlyLoadedNodesTable-BzvR0L0h.js.map} +1 -1
- package/dist/{RecentlyLoadedNodesWidget-Cb8fiSSn.js → RecentlyLoadedNodesWidget-Kt5BElrK.js} +2 -2
- package/dist/{RecentlyLoadedNodesWidget-Cb8fiSSn.js.map → RecentlyLoadedNodesWidget-Kt5BElrK.js.map} +1 -1
- package/dist/{RemindersScreen-Cp7lMWrE.js → RemindersScreen-BDgMIUaq.js} +2 -2
- package/dist/{RemindersScreen-Cp7lMWrE.js.map → RemindersScreen-BDgMIUaq.js.map} +1 -1
- package/dist/{Shell-BE_Aq6W2.js → Shell-Bcr0PHnd.js} +6 -6
- package/dist/{Shell-BE_Aq6W2.js.map → Shell-Bcr0PHnd.js.map} +1 -1
- package/dist/{SiteHeader-CuOFCr7D.js → SiteHeader-DmfTUOmH.js} +4 -4
- package/dist/{SiteHeader-CuOFCr7D.js.map → SiteHeader-DmfTUOmH.js.map} +1 -1
- package/dist/{SummaryBlock-BjUNDl4q.js → SummaryBlock-Q5Jf4V8A.js} +2 -2
- package/dist/{SummaryBlock-BjUNDl4q.js.map → SummaryBlock-Q5Jf4V8A.js.map} +1 -1
- package/dist/{SupportCaseSideSheet-DuvvXDWF.js → SupportCaseSideSheet-9iAiZyOu.js} +1 -1
- package/dist/{SupportCaseSideSheet-BNec-nDN.js → SupportCaseSideSheet-CT15Dg8h.js} +2 -2
- package/dist/{SupportCaseSideSheet-BNec-nDN.js.map → SupportCaseSideSheet-CT15Dg8h.js.map} +1 -1
- package/dist/{Typography-BMsa1JYd.js → Typography-FuShOop3.js} +2 -2
- package/dist/{Typography-BMsa1JYd.js.map → Typography-FuShOop3.js.map} +1 -1
- package/dist/UI/accordion/index.js +1 -1
- package/dist/UI/components/dataDisplay/index.js +1 -1
- package/dist/UI/components/index.js +1 -1
- package/dist/UI/dataDisplay/GraphCard/index.js +1 -1
- package/dist/UI/dataDisplay/index.js +2 -2
- package/dist/UI/dataDisplay/typography/index.js +1 -1
- package/dist/UI/dataDisplay/visualization/index.js +1 -1
- package/dist/UI/fileViewer/index.js +1 -1
- package/dist/UI/fileViewer/pdfViewer/index.js +1 -1
- package/dist/UI/forms/index.js +1 -1
- package/dist/UI/index.js +11 -11
- package/dist/UI/inputs/fieldArrayCard/index.js +1 -1
- package/dist/UI/mapLayout/index.js +1 -1
- package/dist/UI/support/index.js +1 -1
- package/dist/UI/surfaces/cards/AmbientCard/index.js +1 -1
- package/dist/UI/surfaces/cards/chartDisplayCards/index.js +1 -1
- package/dist/UI/surfaces/cards/workOrderCard/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/utilityDisplay/index.js +2 -2
- package/dist/UI/utilityDisplay/utilityHeader/index.js +1 -1
- package/dist/UI/widgets/index.js +1 -1
- package/dist/UI/widgets/library/CircleGaugeWidget/index.js +1 -1
- package/dist/UI/widgets/library/RecentlyLoadedNodesWidget/index.js +1 -1
- package/dist/{UdpAuditEvents-C5p1KgV0.js → UdpAuditEvents-DotSR4R9.js} +2 -2
- package/dist/{UdpAuditEvents-C5p1KgV0.js.map → UdpAuditEvents-DotSR4R9.js.map} +1 -1
- package/dist/{UdpAuditEventsPage-CohNvZiq.js → UdpAuditEventsPage-BZ5fMCYW.js} +2 -2
- package/dist/{UdpAuditEventsPage-CohNvZiq.js.map → UdpAuditEventsPage-BZ5fMCYW.js.map} +1 -1
- package/dist/UdpAuditEventsPage-BtsmPFyR.js +3 -0
- package/dist/{UdpDataBrowserPage-DQXaWtYD.js → UdpDataBrowserPage-3fiOCSkx.js} +3 -3
- package/dist/{UdpDataBrowserPage-DQXaWtYD.js.map → UdpDataBrowserPage-3fiOCSkx.js.map} +1 -1
- package/dist/{UdpFormsSubmissionGrid-DzMuwwTO.js → UdpFormsSubmissionGrid-B3pQiK5q.js} +10 -9
- package/dist/UdpFormsSubmissionGrid-B3pQiK5q.js.map +1 -0
- package/dist/{UdpGridTemplate-OsS_O6jR.js → UdpGridTemplate-xen0Fvww.js} +2 -2
- package/dist/{UdpGridTemplate-OsS_O6jR.js.map → UdpGridTemplate-xen0Fvww.js.map} +1 -1
- package/dist/{UdpImportFromFileMappingPage-Dti79T9x.js → UdpImportFromFileMappingPage-BxGvGFua.js} +2 -2
- package/dist/{UdpImportFromFileMappingPage-Dti79T9x.js.map → UdpImportFromFileMappingPage-BxGvGFua.js.map} +1 -1
- package/dist/{UdpInquiryMaintenanceEnginePage-Boln3evx.js → UdpInquiryMaintenanceEnginePage-CSf7jB35.js} +2 -2
- package/dist/{UdpInquiryMaintenanceEnginePage-Boln3evx.js.map → UdpInquiryMaintenanceEnginePage-CSf7jB35.js.map} +1 -1
- package/dist/{UdpMaintenanceEnginePage-B8OpNNcP.js → UdpMaintenanceEnginePage-C8NLZSPb.js} +3 -3
- package/dist/{UdpMaintenanceEnginePage-B8OpNNcP.js.map → UdpMaintenanceEnginePage-C8NLZSPb.js.map} +1 -1
- package/dist/{UdpNotesPage-DCjDBqqU.js → UdpNotesPage-BABI4D2S.js} +2 -2
- package/dist/{UdpNotesPage-DCjDBqqU.js.map → UdpNotesPage-BABI4D2S.js.map} +1 -1
- package/dist/{UdpRemindersPage-CrgWmKWD.js → UdpRemindersPage-DuS3aPUk.js} +2 -2
- package/dist/{UdpRemindersPage-CrgWmKWD.js.map → UdpRemindersPage-DuS3aPUk.js.map} +1 -1
- package/dist/{UdpTransactionsPage-X1Wu4-CC.js → UdpTransactionsPage-DXt_i8vP.js} +6 -6
- package/dist/{UdpTransactionsPage-X1Wu4-CC.js.map → UdpTransactionsPage-DXt_i8vP.js.map} +1 -1
- package/dist/{UtilitySideBar-wvrocDGI.js → UtilitySideBar-BU3ppHrv.js} +2 -2
- package/dist/{UtilitySideBar-wvrocDGI.js.map → UtilitySideBar-BU3ppHrv.js.map} +1 -1
- package/dist/VirtualBrowser-CbL5X-W-.js +3 -0
- package/dist/{VirtualBrowser-CVs-vW3x.js → VirtualBrowser-qF1k097T.js} +2 -2
- package/dist/{VirtualBrowser-CVs-vW3x.js.map → VirtualBrowser-qF1k097T.js.map} +1 -1
- package/dist/{WorkOrderCard-s-6QK3Re.js → WorkOrderCard-geZ9o4iP.js} +2 -2
- package/dist/{WorkOrderCard-s-6QK3Re.js.map → WorkOrderCard-geZ9o4iP.js.map} +1 -1
- package/dist/{WorkflowContainer-Boj87JRI.js → WorkflowContainer-BxBxnHEY.js} +1 -1
- package/dist/{WorkflowContainer-DDGm1Cxo.js → WorkflowContainer-Drts8hsZ.js} +3 -3
- package/dist/{WorkflowContainer-DDGm1Cxo.js.map → WorkflowContainer-Drts8hsZ.js.map} +1 -1
- package/dist/{WorkflowContent-CU_-pOym.js → WorkflowContent-HlBHhWl8.js} +4 -4
- package/dist/{WorkflowContent-CU_-pOym.js.map → WorkflowContent-HlBHhWl8.js.map} +1 -1
- package/dist/{accordion--zpb1uMC.js → accordion-Ca8ECaw2.js} +3 -3
- package/dist/accordion-Ca8ECaw2.js.map +1 -0
- package/dist/{actionSummary-D0CwyTXJ.js → actionSummary-DwSHY1Tt.js} +2 -2
- package/dist/{actionSummary-D0CwyTXJ.js.map → actionSummary-DwSHY1Tt.js.map} +1 -1
- package/dist/actions/actionSummary/index.js +1 -1
- package/dist/actions/index.js +4 -4
- package/dist/{colorConverter-x64WSLsF.js → colorConverter-5PvESBA1.js} +7 -1
- package/dist/colorConverter-5PvESBA1.js.map +1 -0
- package/dist/componentSystems/multiThreadTimeline/index.js +2 -2
- package/dist/componentSystems/multiThreadTimeline/mttMainTimeline/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/dashboard/index.js +1 -1
- package/dist/dataBrowser/index.js +1 -1
- package/dist/{fileViewer-BbIFHura.js → fileViewer-C_Q-hFda.js} +4 -4
- package/dist/{fileViewer-BbIFHura.js.map → fileViewer-C_Q-hFda.js.map} +1 -1
- package/dist/{forms-BVssUn2h.js → forms-lyNriVSn.js} +3 -3
- package/dist/{forms-BVssUn2h.js.map → forms-lyNriVSn.js.map} +1 -1
- package/dist/index.js +47 -47
- package/dist/inquiry/dashboard/index.js +1 -1
- package/dist/inquiry/index.js +3 -3
- package/dist/inquiry/search/index.js +1 -1
- package/dist/layout/index.js +1 -1
- package/dist/{layout-Do6o2q2R.js → layout-IgoykV-U.js} +2 -2
- package/dist/{layout-Do6o2q2R.js.map → layout-IgoykV-U.js.map} +1 -1
- package/dist/maintenanceEngine/crudBrowser/index.js +1 -1
- package/dist/maintenanceEngine/index.js +2 -2
- package/dist/maintenanceEngine/virtualBrowser/index.js +1 -1
- package/dist/{mapLayout-B_m2Fh8n.js → mapLayout-BlHtCf7p.js} +2 -2
- package/dist/{mapLayout-B_m2Fh8n.js.map → mapLayout-BlHtCf7p.js.map} +1 -1
- package/dist/menuPage/index.js +1 -1
- package/dist/{menuPage-7DcUM-Q3.js → menuPage-BHXchSeD.js} +2 -2
- package/dist/{menuPage-7DcUM-Q3.js.map → menuPage-BHXchSeD.js.map} +1 -1
- package/dist/{newGrid-zmtQXU5G.js → newGrid-Cx_UGQS8.js} +2 -2
- package/dist/{newGrid-zmtQXU5G.js.map → newGrid-Cx_UGQS8.js.map} +1 -1
- package/dist/notes/index.js +1 -1
- package/dist/page/PageContainer/index.js +1 -1
- package/dist/reminders/index.js +1 -1
- package/dist/routes/index.js +1 -1
- package/dist/{routes-DafRlYVQ.js → routes-Cep1JMTf.js} +5 -5
- package/dist/{routes-DafRlYVQ.js.map → routes-Cep1JMTf.js.map} +1 -1
- package/dist/shell/index.js +2 -2
- package/dist/shell/ui/index.js +1 -1
- package/dist/types/src/UI/accordion/Accordion.d.ts.map +1 -1
- package/dist/types/src/UI/utilityDisplay/utilityHeader/PrimaryActionHeader.d.ts.map +1 -1
- package/dist/types/src/dashboard/DashboardCardGrid.d.ts.map +1 -1
- package/dist/types/src/inquiry/InquiryContainer.d.ts.map +1 -1
- package/dist/types/src/page/Page.d.ts.map +1 -1
- package/dist/types/src/page/PageContainer/PageContainer.d.ts.map +1 -1
- package/dist/types/src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.d.ts +3 -1
- package/dist/types/src/udp/pages/UdpFormsSubmissionGrid/UdpFormsSubmissionGrid.d.ts.map +1 -1
- package/dist/types/src/utilities/style/colorConverter.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/udp/export/index.js +1 -1
- package/dist/udp/fileImportMapping/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/UdpFormsSubmissionGrid/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/UdpMaintenanceEnginePage/index.js +1 -1
- package/dist/udp/pages/UdpNotesPage/index.js +1 -1
- package/dist/udp/pages/UdpPages/index.js +9 -9
- package/dist/udp/pages/UdpPagesLazy/index.js +1 -1
- package/dist/udp/pages/UdpRemindersPage/index.js +1 -1
- package/dist/udp/pages/UdpTransactionsPage/index.js +1 -1
- package/dist/uploader/index.js +1 -1
- package/dist/{uploader-YWjDebFN.js → uploader-BdeUKdYW.js} +2 -2
- package/dist/{uploader-YWjDebFN.js.map → uploader-BdeUKdYW.js.map} +1 -1
- package/dist/utilities/form/paymentForm/index.js +1 -1
- package/dist/utilities/provider/index.js +1 -1
- package/dist/utilities/style/index.js +1 -1
- package/dist/{widgets-BCHN3J80.js → widgets-Bwklnxz1.js} +2 -2
- package/dist/{widgets-BCHN3J80.js.map → widgets-Bwklnxz1.js.map} +1 -1
- package/dist/{withEngineComponent-CpOJBSmx.js → withEngineComponent-Bcnxug3h.js} +2 -2
- package/dist/{withEngineComponent-CpOJBSmx.js.map → withEngineComponent-Bcnxug3h.js.map} +1 -1
- package/dist/workflow/index.js +2 -2
- package/export-map.json +1 -1
- package/package.json +1 -1
- package/dist/DashboardWidget-CsOrr74H.js.map +0 -1
- package/dist/Inquiry-C094H1jQ.js +0 -3
- package/dist/MenuPage-R6mbeCuS.js +0 -3
- package/dist/Page-fxgRfgm6.js.map +0 -1
- package/dist/PageContainer-DTXNLt_2.js.map +0 -1
- package/dist/PrimaryActionHeader-DBJpROPu.js.map +0 -1
- package/dist/UdpAuditEventsPage-BiUdXrGu.js +0 -3
- package/dist/UdpFormsSubmissionGrid-DzMuwwTO.js.map +0 -1
- package/dist/VirtualBrowser-CcWYHhRb.js +0 -3
- package/dist/accordion--zpb1uMC.js.map +0 -1
- package/dist/colorConverter-x64WSLsF.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SiteHeader-CuOFCr7D.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-DmfTUOmH.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,5 +1,5 @@
|
|
|
1
1
|
import { t as FluentIcon } from "./FluentIcon-DQ6nSDJg.js";
|
|
2
|
-
import { r as getEllipseColor } from "./colorConverter-
|
|
2
|
+
import { r as getEllipseColor } from "./colorConverter-5PvESBA1.js";
|
|
3
3
|
import { t as useSplitDecimal } from "./useSplitDecimal-CsxaeRaU.js";
|
|
4
4
|
import React from "react";
|
|
5
5
|
import { Box, Typography, makeStyles, useTheme } from "@material-ui/core";
|
|
@@ -95,4 +95,4 @@ SummaryBlock.propTypes = {
|
|
|
95
95
|
|
|
96
96
|
//#endregion
|
|
97
97
|
export { SummaryBlock as t };
|
|
98
|
-
//# sourceMappingURL=SummaryBlock-
|
|
98
|
+
//# sourceMappingURL=SummaryBlock-Q5Jf4V8A.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SummaryBlock-
|
|
1
|
+
{"version":3,"file":"SummaryBlock-Q5Jf4V8A.js","names":["PropTypes"],"sources":["../src/UI/dataDisplay/SummaryBlock.jsx"],"sourcesContent":["import React from 'react';\nimport { makeStyles, Typography, Box, useTheme } from '@material-ui/core';\nimport { PropTypes } from 'prop-types';\nimport { useSplitDecimal } from '../../hooks/useSplitDecimal';\nimport { grey } from '@material-ui/core/colors';\nimport clsx from 'clsx';\nimport { FluentIcon } from '../../utilities/iconLibrary/FluentIcon';\nimport { getEllipseColor } from '../../utilities/style/colorConverter';\n\nconst useStyles = makeStyles(theme => ({\n rootContainer: {\n backgroundColor: props =>\n props?.backgroundColor || theme.palette.background.paper,\n borderLeft: props => (props?.noLeftBorder ? '0px' : 'solid 1px'),\n borderRight: props => (props?.noRightBorder ? '0px' : 'solid 1px'),\n height: props => props?.height,\n width: props => props?.width\n },\n labelOverflow: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n fontWeight: '400',\n },\n labelValue: {\n fontWeight: '400',\n fontSize: '16px',\n },\n labelText: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n padding: '0px 10px',\n color: grey[500],\n fontSize: props => props?.labelVariant === 'caption' && '12px',\n fontWeight: props => (props?.labelVariant === 'caption' ? '400' : '500'),\n },\n iconWrapper: {\n marginLeft: theme.spacing(1),\n },\n}));\n\n/**\n * `SummaryBlock` component\n */\nexport const SummaryBlock = props => {\n const {\n value,\n startLabel,\n label,\n icon,\n style,\n primary,\n secondary,\n textVariant,\n labelVariant = 'caption',\n children,\n valueIsDecimal = true,\n iconColor,\n } = props;\n\n const { textValue } = useSplitDecimal(value);\n const theme = useTheme();\n const classes = useStyles(props);\n\n return (\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n justifyContent=\"center\"\n alignItems=\"center\"\n className={classes.rootContainer}\n style={{ gap: '2px', ...style }}\n >\n <Box\n display=\"flex\"\n justifyContent=\"center\"\n alignItems=\"center\"\n alignSelf=\"stretch\"\n >\n {primary ? (\n primary\n ) : (\n <>\n {startLabel && (\n <Typography\n variant=\"caption\"\n className={clsx(classes.labelOverflow)}\n >\n {startLabel}\n </Typography>\n )}\n <Typography\n variant={textVariant}\n className={clsx(\n textVariant ? {} : classes.labelValue,\n classes.labelOverflow\n )}\n style={style?.mainLabel}\n >\n {textValue.mainLabel}\n </Typography>\n {valueIsDecimal && textValue.decimalLabel && (\n <Typography\n variant=\"caption\"\n className={clsx(classes.labelOverflow)}\n >\n .{textValue.decimalLabel}\n </Typography>\n )}\n {icon && (\n <div className={classes.iconWrapper}>\n <FluentIcon\n component={icon}\n color={iconColor ? getEllipseColor(theme, iconColor) : null}\n />\n </div>\n )}\n </>\n )}\n </Box>\n {secondary ? (\n secondary\n ) : (\n <Typography\n variant={labelVariant}\n className={clsx(classes.labelText, classes.labelOverflow)}\n style={style?.label}\n >\n {label}\n </Typography>\n )}\n {children}\n </Box>\n );\n};\n\nSummaryBlock.propTypes = {\n /** @type {?string} main label, if you pass a number with decimals the card will show the decimals in the left side */\n value: PropTypes.string.isRequired,\n\n /** @type {?string} label showed in the bottom part of the block summary */\n label: PropTypes.string,\n\n /** @type {?string} optional symbol to put at the right side of the value */\n startLabel: PropTypes.string,\n\n /** @type {?elementType} optional icon to display in the left side of the value */\n icon: PropTypes.elementType,\n\n /** @type {?object} optional additional css properties */\n style: PropTypes.object,\n\n /** @type {?object} render prop if you want to pass a custom react element instead of the predefined value */\n primary: PropTypes.elementType,\n\n /** @type {?object} render prop if you want to pass a custom react element instead of the predefined label*/\n secondary: PropTypes.elementType,\n\n /** @type {?string} optional variant for the main text e.g ['caption', 'subtitle'] */\n textVariant: PropTypes.string,\n\n /** @type {?string} optional variant for the label e.g ['caption', 'subtitle'] */\n labelVariant: PropTypes.string,\n\n /** @type {?string} optional background color for the full content */\n backgroundColor: PropTypes.string,\n\n /** @type {?elementType} optional children element */\n children: PropTypes.elementType,\n};\n"],"mappings":";;;;;;;;;;AASA,MAAM,YAAY,YAAW,WAAU;CACrC,eAAe;EACb,kBAAiB,UACf,OAAO,mBAAmB,MAAM,QAAQ,WAAW;EACrD,aAAY,UAAU,OAAO,eAAe,QAAQ;EACpD,cAAa,UAAU,OAAO,gBAAgB,QAAQ;EACtD,SAAQ,UAAS,OAAO;EACxB,QAAO,UAAS,OAAO;EACxB;CACD,eAAe;EACb,YAAY;EACZ,UAAU;EACV,cAAc;EACd,YAAY;EACb;CACD,YAAY;EACV,YAAY;EACZ,UAAU;EACX;CACD,WAAW;EACT,SAAS;EACT,eAAe;EACf,YAAY;EACZ,SAAS;EACT,OAAO,KAAK;EACZ,WAAU,UAAS,OAAO,iBAAiB,aAAa;EACxD,aAAY,UAAU,OAAO,iBAAiB,YAAY,QAAQ;EACnE;CACD,aAAa,EACX,YAAY,MAAM,QAAQ,EAAE,EAC7B;CACF,EAAE;;;;AAKH,MAAa,gBAAe,UAAS;CACnC,MAAM,EACJ,OACA,YACA,OACA,MACA,OACA,SACA,WACA,aACA,eAAe,WACf,UACA,iBAAiB,MACjB,cACE;CAEJ,MAAM,EAAE,cAAc,gBAAgB,MAAM;CAC5C,MAAM,QAAQ,UAAU;CACxB,MAAM,UAAU,UAAU,MAAM;AAEhC,QACE,oCAAC;EACC,SAAQ;EACR,eAAc;EACd,gBAAe;EACf,YAAW;EACX,WAAW,QAAQ;EACnB,OAAO;GAAE,KAAK;GAAO,GAAG;GAAO;IAE/B,oCAAC;EACC,SAAQ;EACR,gBAAe;EACf,YAAW;EACX,WAAU;IAET,UACC,UAEA,0DACG,cACC,oCAAC;EACC,SAAQ;EACR,WAAW,KAAK,QAAQ,cAAc;IAErC,WACU,EAEf,oCAAC;EACC,SAAS;EACT,WAAW,KACT,cAAc,EAAE,GAAG,QAAQ,YAC3B,QAAQ,cACT;EACD,OAAO,OAAO;IAEb,UAAU,UACA,EACZ,kBAAkB,UAAU,gBAC3B,oCAAC;EACC,SAAQ;EACR,WAAW,KAAK,QAAQ,cAAc;IACvC,KACG,UAAU,aACD,EAEd,QACC,oCAAC,SAAI,WAAW,QAAQ,eACtB,oCAAC;EACC,WAAW;EACX,OAAO,YAAY,gBAAgB,OAAO,UAAU,GAAG;GACvD,CACE,CAEP,CAED,EACL,YACC,YAEA,oCAAC;EACC,SAAS;EACT,WAAW,KAAK,QAAQ,WAAW,QAAQ,cAAc;EACzD,OAAO,OAAO;IAEb,MACU,EAEd,SACG;;AAIV,aAAa,YAAY;CAEvB,OAAOA,YAAU,OAAO;CAGxB,OAAOA,YAAU;CAGjB,YAAYA,YAAU;CAGtB,MAAMA,YAAU;CAGhB,OAAOA,YAAU;CAGjB,SAASA,YAAU;CAGnB,WAAWA,YAAU;CAGrB,aAAaA,YAAU;CAGvB,cAAcA,YAAU;CAGxB,iBAAiBA,YAAU;CAG3B,UAAUA,YAAU;CACrB"}
|
|
@@ -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-CT15Dg8h.js";
|
|
2
2
|
|
|
3
3
|
export { SupportCaseSideSheet, SupportCaseSideSheet_default as default };
|
|
@@ -7,7 +7,7 @@ import { t as apiMutate } from "./useAxiosMutate-DeqKSi5z.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";
|
|
10
|
-
import { t as AmbientCard } from "./AmbientCard-
|
|
10
|
+
import { t as AmbientCard } from "./AmbientCard-DhAiVDYD.js";
|
|
11
11
|
import { t as LinearProgress$1 } from "./LinearProgress-CpJeIaEP.js";
|
|
12
12
|
import { t as FluentTextField } from "./FluentTextField-WfFk-koa.js";
|
|
13
13
|
import { t as DragDropFileUpload } from "./DragDropFileUpload-CVnUu-6f.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-CT15Dg8h.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SupportCaseSideSheet-BNec-nDN.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-CT15Dg8h.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,4 +1,4 @@
|
|
|
1
|
-
import { r as getEllipseColor } from "./colorConverter-
|
|
1
|
+
import { r as getEllipseColor } from "./colorConverter-5PvESBA1.js";
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { Typography, makeStyles } from "@material-ui/core";
|
|
4
4
|
import clsx from "clsx";
|
|
@@ -19,4 +19,4 @@ const Typography$1 = (props) => {
|
|
|
19
19
|
|
|
20
20
|
//#endregion
|
|
21
21
|
export { Typography$1 as t };
|
|
22
|
-
//# sourceMappingURL=Typography-
|
|
22
|
+
//# sourceMappingURL=Typography-FuShOop3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Typography-
|
|
1
|
+
{"version":3,"file":"Typography-FuShOop3.js","names":["Typography","MuiTypography"],"sources":["../src/UI/dataDisplay/typography/Typography.jsx"],"sourcesContent":["import React from 'react';\nimport { Typography as MuiTypography, makeStyles } from '@material-ui/core';\nimport clsx from 'clsx';\nimport { getEllipseColor } from '../../../utilities/style/colorConverter';\n\nconst useStyles = makeStyles((theme) => ({\n typography: {\n color: (props) => props?.color && getEllipseColor(theme, props?.color)\n }\n}));\nexport const Typography = (props) => {\n const {\n variant,\n align,\n children,\n className,\n noWrap = false,\n paragraph = false,\n color\n } = props;\n const classes = useStyles(props);\n\n return (\n <MuiTypography\n variant={variant}\n align={align}\n className={clsx({[classes.typography]: color}, className)}\n noWrap={noWrap}\n paragraph={paragraph}\n >\n {children}\n </MuiTypography>\n );\n};\n"],"mappings":";;;;;;AAKA,MAAM,YAAY,YAAY,WAAW,EACvC,YAAY,EACV,QAAQ,UAAU,OAAO,SAAS,gBAAgB,OAAO,OAAO,MAAM,EACvE,EACF,EAAE;AACH,MAAaA,gBAAc,UAAU;CACnC,MAAM,EACJ,SACA,OACA,UACA,WACA,SAAS,OACT,YAAY,OACZ,UACE;CACJ,MAAM,UAAU,UAAU,MAAM;AAEhC,QACE,oCAACC;EACU;EACF;EACP,WAAW,KAAK,GAAE,QAAQ,aAAa,OAAM,EAAE,UAAU;EACjD;EACG;IAEV,SACa"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as Ellipse } from "../../../Ellipse-DGTaApGj.js";
|
|
2
2
|
import { t as Token } from "../../../Token-rFpVjQT_.js";
|
|
3
|
-
import { n as SmsDisplay, t as EmailDisplay } from "../../../EmailDisplay-
|
|
3
|
+
import { n as SmsDisplay, t as EmailDisplay } from "../../../EmailDisplay-DZHmPeiL.js";
|
|
4
4
|
import { t as Sticky } from "../../../dataDisplay-BP3z7lU0.js";
|
|
5
5
|
|
|
6
6
|
export { Ellipse, EmailDisplay, SmsDisplay, Sticky, Token };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as Adornment } from "../../Adornment-Ciq1X7he.js";
|
|
2
2
|
import { t as Ellipse } from "../../Ellipse-DGTaApGj.js";
|
|
3
3
|
import { t as Token } from "../../Token-rFpVjQT_.js";
|
|
4
|
-
import { n as SmsDisplay, t as EmailDisplay } from "../../EmailDisplay-
|
|
4
|
+
import { n as SmsDisplay, t as EmailDisplay } from "../../EmailDisplay-DZHmPeiL.js";
|
|
5
5
|
import { t as Sticky } from "../../dataDisplay-BP3z7lU0.js";
|
|
6
6
|
|
|
7
7
|
export { Adornment, Ellipse, EmailDisplay, SmsDisplay, Sticky, Token };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as SummaryBlock } from "../../SummaryBlock-
|
|
1
|
+
import { t as SummaryBlock } from "../../SummaryBlock-Q5Jf4V8A.js";
|
|
2
2
|
import { n as AmbientList, r as HintPanel, t as FluentListElement } from "../../dataDisplay-CTkvIsCs.js";
|
|
3
3
|
import { t as HeaderExpander } from "../../HeaderExpander-Coexy8dm.js";
|
|
4
4
|
import { t as EmptyStateDisplay } from "../../EmptyStateDisplay-YOwCw38_.js";
|
|
@@ -7,7 +7,7 @@ import { t as CompactDataListItem } from "../../CompactDataListItem-BB0gf0JD.js"
|
|
|
7
7
|
import { t as FluentDataTable } from "../../FluentDataTable-BSQ_EHJX.js";
|
|
8
8
|
import { t as AvatarAlphabet } from "../../AvatarAlphabet-D5klbFfJ.js";
|
|
9
9
|
import { n as FluentActivity, t as FluentActivityRow } from "../../FluentActivity-CQQeL7Qe.js";
|
|
10
|
-
import { t as FluentListItem } from "../../FluentListItem-
|
|
10
|
+
import { t as FluentListItem } from "../../FluentListItem-1fzW--Dq.js";
|
|
11
11
|
import { t as ChipAlphabet } from "../../ChipAlphabet-DCU1DsB-.js";
|
|
12
12
|
|
|
13
13
|
export { AmbientList, AvatarAlphabet, ChipAlphabet, CompactDataList, CompactDataListItem, EmptyStateDisplay, FluentActivity, FluentActivityRow, FluentDataTable, FluentListElement, FluentListItem, HeaderExpander, HintPanel, SummaryBlock };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as Typography } from "../../../Typography-
|
|
1
|
+
import { t as Typography } from "../../../Typography-FuShOop3.js";
|
|
2
2
|
import { t as StandardTitle } from "../../../StandardTitle-DJ9zcNBA.js";
|
|
3
3
|
import { t as SideSheetHeader } from "../../../SideSheetHeader-DgnkLGmv.js";
|
|
4
4
|
import { t as SidebarHeader } from "../../../SidebarHeader-DU68JdgW.js";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as GaugeGraph, r as RatioVisulization, t as AmbientVisualizer } from "../../../AmbientVisualizer-
|
|
1
|
+
import { n as GaugeGraph, r as RatioVisulization, t as AmbientVisualizer } from "../../../AmbientVisualizer-buICwVdO.js";
|
|
2
2
|
|
|
3
3
|
export { AmbientVisualizer, GaugeGraph, RatioVisulization };
|
package/dist/UI/forms/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as UdpCrudFormFields, t as CrudForm } from "../../CrudForm-C9xMnPoA.js";
|
|
2
|
-
import { n as PaymentReversalForm, r as LoginForm, t as UdpTransactionEmailForm } from "../../forms-
|
|
2
|
+
import { n as PaymentReversalForm, r as LoginForm, t as UdpTransactionEmailForm } from "../../forms-lyNriVSn.js";
|
|
3
3
|
import { t as VirtualForm } from "../../VirtualForm-Cw3gjug-.js";
|
|
4
4
|
|
|
5
5
|
export { CrudForm, LoginForm, PaymentReversalForm, UdpCrudFormFields, UdpTransactionEmailForm, VirtualForm };
|