udp-react-enterprise-component-library 25.18.1-beta.71 → 25.18.1-beta.73
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/{UdpTransactionTypesPage-DgFxT4pz.js → UdpTransactionTypesPage-BS8Nji4M.js} +4 -3
- package/dist/UdpTransactionTypesPage-BS8Nji4M.js.map +1 -0
- 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/udp/pages/UdpTransactionTypesPage/UdpTransactionTypesPage.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 +10 -10
- package/dist/udp/pages/UdpPagesLazy/index.js +1 -1
- package/dist/udp/pages/UdpRemindersPage/index.js +1 -1
- package/dist/udp/pages/UdpTransactionTypesPage/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/UdpTransactionTypesPage-DgFxT4pz.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":"ExportSidesheet-DWkoiwxC.js","names":["entity","searchObject","Typography","LinearProgress"],"sources":["../src/udp/export/useUdpExport.js","../src/udp/export/VisualSearchObject.jsx","../src/udp/export/ExportSidesheet.jsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { executeQueryAdHoc } from '../utilities/methodUtils';\nimport { executeQueryWithParameters } from '../utilities/methodUtils';\nimport { usePromotedMethodEntity } from '../../hooks/usePromotedMethodEntity';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\n\nexport const useUdpExport = (apiCatalogId, productId) => {\n const [entity, setEntity] = useState();\n const [searchObject, setSearchObject] = useState();\n const [fileFormat, setFileFormat] = useState('.XLSX');\n const [numRowsToExport, setNumRowsToExport] = useState(null);\n const [validSearch, setValidSearch] = useState(false);\n const [errorList, setErrorList] = useState([]);\n const [activeExportJob, setActiveExportJob] = useState();\n const [exportLoading, setExportLoading] = useState(false);\n const [fileResultData, setFileResultData] = useState();\n\n const { data: selectedEntity, loading: entityLoading } =\n usePromotedMethodEntity(entity, true, apiCatalogId, productId);\n const { data: udpJobEntity } = usePromotedMethodEntity(\n 'udpJob',\n true,\n apiCatalogId,\n productId\n );\n\n const refetchActiveJobData = useCallback(async () => {\n if (udpJobEntity?.unityBaseGetMethod?.apiMethodId) {\n await executeQueryWithParameters(\n {\n data: { id: activeExportJob?.id }\n },\n udpJobEntity?.unityBaseGetMethod?.apiMethodId\n )\n .then((res) => {\n setActiveExportJob(res.data);\n })\n .catch((err) => {\n addErrorIfNotExists(\n 'jobstatus',\n 'Error getting job status ',\n 'error'\n );\n });\n }\n }, [activeExportJob?.id, udpJobEntity?.unityBaseGetMethod?.apiMethodId]);\n\n const refetchfileResultData = useCallback(async () => {\n if (udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId) {\n await executeQueryWithParameters(\n {\n data: { JobId: activeExportJob?.id }\n },\n udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n )\n .then((res) => {\n setFileResultData(res.data);\n })\n .catch((err) => {\n addErrorIfNotExists('fileError', 'Error getting file ', 'error');\n });\n }\n }, [\n activeExportJob?.id,\n udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n ]);\n\n const clearParameters = useCallback(() => {\n setEntity(null);\n setSearchObject(null);\n setNumRowsToExport(null);\n setActiveExportJob(null);\n setErrorList([]);\n }, []);\n\n const updateExportParameters = useCallback((entity, searchObject) => {\n setEntity(entity);\n setSearchObject(searchObject);\n }, []);\n\n const addErrorIfNotExists = (id, message, severity = 'error') => {\n setErrorList((prev) => {\n const exists = prev.some((error) => error.id === id);\n if (!exists) {\n return [...prev, { id, message, severity }];\n }\n return prev;\n });\n };\n\n const initialSearchWithParams = useCallback(async () => {\n await executeQueryAdHoc(\n {\n data: {\n ...searchObject,\n pageSize: 1\n }\n },\n selectedEntity?.unityBaseSearchMethod?.apiMethodId\n )\n .then((res) => {\n setNumRowsToExport(res?.data?.total);\n })\n .catch((err) => {\n addErrorIfNotExists(\n 'searchObject',\n 'Error fetching row count',\n 'error'\n );\n });\n }, [searchObject, selectedEntity]);\n\n const createExport = useCallback(async () => {\n if (selectedEntity?.unityBaseExportMethod?.apiMethodId) {\n setExportLoading(true);\n await executeQueryWithParameters(\n {\n data: {\n requestBody: {\n debug: true,\n exportAcrossAssociations: false,\n exportOnAllAssociations: false,\n exportSiblings: false,\n search: searchObject\n }\n }\n },\n selectedEntity?.unityBaseExportMethod?.apiMethodId\n )\n .then((res) => {\n setActiveExportJob(res?.data);\n setExportLoading(false);\n })\n .catch((err) => {\n addErrorIfNotExists(\n 'exportRequest',\n 'Error creating the export job',\n 'error'\n );\n setExportLoading(false);\n });\n }\n }, [searchObject, selectedEntity?.unityBaseExportMethod?.apiMethodId]);\n\n useEffect(() => {\n if (!entityLoading) {\n if (selectedEntity?.unityBaseSearchMethod === null) {\n addErrorIfNotExists(\n 'search',\n `${getSanitizedName(entity)}'s search method must be promoted`,\n 'error'\n );\n } else {\n initialSearchWithParams();\n }\n if (selectedEntity?.unityBaseExportMethod === null) {\n addErrorIfNotExists(\n 'export',\n `${getSanitizedName(entity)}'s export method must be promoted`,\n 'error'\n );\n }\n }\n }, [initialSearchWithParams, selectedEntity, entity, entityLoading]);\n\n useEffect(() => {\n if (entity) {\n if (\n udpJobEntity &&\n !udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n ) {\n addErrorIfNotExists(\n 'fileResultGet',\n `UdpJob's GetFileResult must be promoted to download the file`,\n 'warning'\n );\n }\n\n if (udpJobEntity && !udpJobEntity?.unityBaseGetMethod?.apiMethodId) {\n addErrorIfNotExists(\n 'fileBaseGet',\n `UdpJob's Get method must be promoted to view job status`,\n 'warning'\n );\n }\n }\n }, [entity, udpJobEntity]);\n\n useEffect(() => {\n let isValid = true;\n errorList?.forEach((item) => {\n if (item.severity === 'error') {\n isValid = false;\n }\n });\n setValidSearch(isValid);\n }, [errorList]);\n\n useEffect(() => {\n if (\n !activeExportJob ||\n activeExportJob?.statusId === 3 ||\n activeExportJob?.statusId === 4\n )\n return;\n\n const intervalId = setInterval(() => {\n refetchActiveJobData();\n }, 5000);\n\n return () => clearInterval(intervalId);\n }, [activeExportJob, refetchActiveJobData]);\n\n useEffect(() => {\n if (activeExportJob?.statusId === 3) {\n refetchfileResultData();\n }\n }, [activeExportJob?.statusId, refetchfileResultData]);\n\n const handleFileDownload = useCallback(() => {\n if (fileResultData?.link) {\n const link = document.createElement('a');\n link.href = fileResultData?.link;\n link.download = '';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }, [fileResultData?.link]);\n\n return {\n updateExportParameters,\n createExport,\n entity,\n searchObject,\n fileFormat,\n numRowsToExport,\n validSearch,\n errorList,\n activeExportJob,\n exportLoading,\n handleFileDownload,\n clearParameters\n };\n};\n","import React, { useMemo } from 'react';\nimport { Box, Chip } from '@material-ui/core';\nimport { StatusChip } from '../../UI/dataDisplay/status/StatusChip';\n\nexport const VisualSearchObject = ({ searchObject }) => {\n // 1️⃣ Safely default to an empty object if searchObject is null/undefined:\n const safeSO = searchObject || {};\n\n // 2️⃣ Destructure with defaults for each property:\n const {\n filterElements = [],\n filterGroups = [],\n logicalSearchOperator = 1,\n } = safeSO;\n\n const filtersByGroup = useMemo(() => {\n return filterElements.reduce((acc, fe) => {\n const gid = fe.groupId ?? 0;\n (acc[gid] = acc[gid] || []).push(fe);\n return acc;\n }, {});\n }, [filterElements]);\n\n const groupLookup = useMemo(() => {\n const lookup = {};\n filterGroups.forEach(g => {\n lookup[g.groupId] = { ...g, children: [] };\n });\n filterGroups.forEach(g => {\n if (g.parentGroupId && lookup[g.parentGroupId]) {\n lookup[g.parentGroupId].children.push(lookup[g.groupId]);\n }\n });\n return lookup;\n }, [filterGroups]);\n\n const topLevelGroups = useMemo(() => {\n return filterGroups\n .filter(g => !g.parentGroupId)\n .map(g => groupLookup[g.groupId]);\n }, [filterGroups, groupLookup]);\n\n // virtual root\n const rootGroup = {\n groupId: 0,\n logicalSearchOperator,\n children: topLevelGroups,\n };\n\n // 4️⃣ Recursive render\n const OpLabel = { 1: 'AND', 2: 'OR' };\n const renderGroup = (group, level = 0) => (\n <Box\n key={group.groupId}\n border={1}\n borderColor=\"grey.300\"\n borderRadius={4}\n p={1}\n ml={level * 2}\n mb={1}\n bgcolor={level === 0 ? 'grey.100' : 'transparent'}\n >\n <Box mb={1}>\n <StatusChip\n label={OpLabel[group.logicalSearchOperator] || 'AND'}\n status=\"info\"\n size=\"small\"\n />\n </Box>\n <Box display=\"flex\" flexWrap=\"wrap\" mb={group.children.length ? 1 : 0}>\n {(filtersByGroup[group.groupId] || []).map((fe, i) => (\n <Chip\n key={`g${group.groupId}-f${i}`}\n size=\"small\"\n label={`${fe.searchField} ${fe.searchOperator} ${fe.searchValue}`}\n style={{ marginRight: 4, marginBottom: 4 }}\n />\n ))}\n </Box>\n {group.children.map(c => renderGroup(c, level + 1))}\n </Box>\n );\n\n // 5️⃣ Finally, render nothing if truly empty:\n const hasAnything =\n filterElements.length > 0 || filterGroups.length > 0;\n\n if (!hasAnything) return null;\n\n return (\n <Box>\n {renderGroup(rootGroup)}\n </Box>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { Typography } from '../../UI/dataDisplay/typography/Typography';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\nimport { FluentListItem } from '../../UI/dataDisplay/FluentListItem';\nimport { VisualSearchObject } from './VisualSearchObject';\nimport { AmbientAlert } from '../../UI/feedback/AmbientAlert';\nimport { Skeleton } from '@material-ui/lab';\nimport { StatusChip } from '../../UI/dataDisplay/status/StatusChip';\nimport { Slide } from '@material-ui/core';\nimport { LinearProgress } from '../../UI/loading/LinearProgress';\nimport { EmptyStateDisplay } from '../../UI/dataDisplay/EmptyStateDisplay';\nimport { StatusCircleCheckmarkIcon } from '@fluentui/react-icons';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { useHistory } from 'react-router-dom';\n\nexport const ExportSidesheet = (props) => {\n const {\n entity,\n numRowsToExport,\n fileFormat,\n searchObject,\n errorList,\n activeExportJob,\n handleFileDownload,\n exportSidesheetOpen,\n handleCloseExportSidesheet,\n createExport,\n exportLoading,\n validSearch\n } = props;\n\n const history = useHistory();\n const [page, setPage] = useState('exportSummary');\n\n useEffect(() => {\n if (activeExportJob?.id) {\n setPage('transition');\n }\n }, [activeExportJob?.id]);\n\n const handleSummaryExited = () => {\n setPage('exportProgress');\n };\n\n const getJobStatus = (value) => {\n if (value === 1) {\n return { status: null, label: 'Pending' };\n } else if (value === 2) {\n return { status: 'info', label: 'Running' };\n } else if (value === 3) {\n return { status: 'success', label: 'Completed' };\n } else if (value === 4) {\n return { status: 'error', label: 'Failed' };\n }\n };\n\n const onCloseSidesheet = () => {\n setPage('exportSummary');\n handleCloseExportSidesheet();\n };\n\n return (\n <SideSheet\n open={exportSidesheetOpen}\n onClose={onCloseSidesheet}\n width={'50%'}\n onSubmit={createExport}\n buttonLabel={'Create Export'}\n buttonTwoLabel='My Exports'\n buttonTwoAction={() => history.push('/myexports')}\n progress={exportLoading}\n buttonOneDisabled={!validSearch || activeExportJob}\n >\n <div>\n {errorList?.map((error) => (\n <AmbientAlert\n alertMessage={error.message}\n showAlert={true}\n alertSeverity={error.severity}\n />\n ))}\n <Slide\n in={page === 'exportSummary'}\n onExited={handleSummaryExited}\n direction='right'\n unmountOnExit\n appear={false}\n >\n <div style={{ display: 'flex', flexDirection: 'column', gap: 10 }}>\n <AmbientCard title='Export Summary' fullWidth removeTopLayoutUnit>\n <Typography>\n You are about to export all records from this table using your\n search criteria.\n </Typography>\n <div style={{ marginTop: 16 }}>\n <FluentListItem\n subject='Table'\n value={getSanitizedName(entity)}\n />\n <FluentListItem\n subject='Number of Rows'\n value={numRowsToExport ?? <Skeleton width={40} height={26} />}\n />\n </div>\n </AmbientCard>\n <AmbientCard title='Applied Filters' fullWidth>\n <VisualSearchObject searchObject={searchObject} />\n </AmbientCard>\n <AmbientCard title='Export Options' fullWidth>\n <FluentListItem subject='File Format' value={fileFormat} />\n </AmbientCard>\n </div>\n </Slide>\n <Slide in={page === 'exportProgress'} direction='left' mountOnEnter>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 10 }}>\n <AmbientCard title={`Job Details`} fullWidth removeTopLayoutUnit>\n <div style={{ marginBottom: 25 }}>\n <Typography>\n Exports are handled in the background. You can safely close\n this window.\n </Typography>\n </div>\n <FluentListItem subject='Job Id' value={activeExportJob?.id} />\n <FluentListItem\n subject='Status'\n value={\n <StatusChip\n status={getJobStatus(activeExportJob?.statusId)?.status}\n label={getJobStatus(activeExportJob?.statusId)?.label}\n />\n }\n />\n </AmbientCard>\n <AmbientCard\n title={`Export ${getJobStatus(activeExportJob?.statusId)?.label}`}\n fullWidth\n removeTopLayoutUnit\n >\n {(activeExportJob?.statusId === 1 ||\n activeExportJob?.statusId === 2) && <LinearProgress />}\n {activeExportJob?.statusId === 3 &&\n (!errorList.some((err) => err?.id === 'fileResultGet') ? (\n <EmptyStateDisplay\n icon={StatusCircleCheckmarkIcon}\n primaryText={'File is ready!'}\n actionLabel='Download'\n action={handleFileDownload && (() => handleFileDownload())}\n />\n ) : (\n <Typography>\n To download the file, please go to the My Exports page.\n </Typography>\n ))}\n </AmbientCard>\n </div>\n </Slide>\n </div>\n </SideSheet>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ExportSidesheet-BQiNzxN9.js","names":["entity","searchObject","Typography","LinearProgress"],"sources":["../src/udp/export/useUdpExport.js","../src/udp/export/VisualSearchObject.jsx","../src/udp/export/ExportSidesheet.jsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { executeQueryAdHoc } from '../utilities/methodUtils';\nimport { executeQueryWithParameters } from '../utilities/methodUtils';\nimport { usePromotedMethodEntity } from '../../hooks/usePromotedMethodEntity';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\n\nexport const useUdpExport = (apiCatalogId, productId) => {\n const [entity, setEntity] = useState();\n const [searchObject, setSearchObject] = useState();\n const [fileFormat, setFileFormat] = useState('.XLSX');\n const [numRowsToExport, setNumRowsToExport] = useState(null);\n const [validSearch, setValidSearch] = useState(false);\n const [errorList, setErrorList] = useState([]);\n const [activeExportJob, setActiveExportJob] = useState();\n const [exportLoading, setExportLoading] = useState(false);\n const [fileResultData, setFileResultData] = useState();\n\n const { data: selectedEntity, loading: entityLoading } =\n usePromotedMethodEntity(entity, true, apiCatalogId, productId);\n const { data: udpJobEntity } = usePromotedMethodEntity(\n 'udpJob',\n true,\n apiCatalogId,\n productId\n );\n\n const refetchActiveJobData = useCallback(async () => {\n if (udpJobEntity?.unityBaseGetMethod?.apiMethodId) {\n await executeQueryWithParameters(\n {\n data: { id: activeExportJob?.id }\n },\n udpJobEntity?.unityBaseGetMethod?.apiMethodId\n )\n .then((res) => {\n setActiveExportJob(res.data);\n })\n .catch((err) => {\n addErrorIfNotExists(\n 'jobstatus',\n 'Error getting job status ',\n 'error'\n );\n });\n }\n }, [activeExportJob?.id, udpJobEntity?.unityBaseGetMethod?.apiMethodId]);\n\n const refetchfileResultData = useCallback(async () => {\n if (udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId) {\n await executeQueryWithParameters(\n {\n data: { JobId: activeExportJob?.id }\n },\n udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n )\n .then((res) => {\n setFileResultData(res.data);\n })\n .catch((err) => {\n addErrorIfNotExists('fileError', 'Error getting file ', 'error');\n });\n }\n }, [\n activeExportJob?.id,\n udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n ]);\n\n const clearParameters = useCallback(() => {\n setEntity(null);\n setSearchObject(null);\n setNumRowsToExport(null);\n setActiveExportJob(null);\n setErrorList([]);\n }, []);\n\n const updateExportParameters = useCallback((entity, searchObject) => {\n setEntity(entity);\n setSearchObject(searchObject);\n }, []);\n\n const addErrorIfNotExists = (id, message, severity = 'error') => {\n setErrorList((prev) => {\n const exists = prev.some((error) => error.id === id);\n if (!exists) {\n return [...prev, { id, message, severity }];\n }\n return prev;\n });\n };\n\n const initialSearchWithParams = useCallback(async () => {\n await executeQueryAdHoc(\n {\n data: {\n ...searchObject,\n pageSize: 1\n }\n },\n selectedEntity?.unityBaseSearchMethod?.apiMethodId\n )\n .then((res) => {\n setNumRowsToExport(res?.data?.total);\n })\n .catch((err) => {\n addErrorIfNotExists(\n 'searchObject',\n 'Error fetching row count',\n 'error'\n );\n });\n }, [searchObject, selectedEntity]);\n\n const createExport = useCallback(async () => {\n if (selectedEntity?.unityBaseExportMethod?.apiMethodId) {\n setExportLoading(true);\n await executeQueryWithParameters(\n {\n data: {\n requestBody: {\n debug: true,\n exportAcrossAssociations: false,\n exportOnAllAssociations: false,\n exportSiblings: false,\n search: searchObject\n }\n }\n },\n selectedEntity?.unityBaseExportMethod?.apiMethodId\n )\n .then((res) => {\n setActiveExportJob(res?.data);\n setExportLoading(false);\n })\n .catch((err) => {\n addErrorIfNotExists(\n 'exportRequest',\n 'Error creating the export job',\n 'error'\n );\n setExportLoading(false);\n });\n }\n }, [searchObject, selectedEntity?.unityBaseExportMethod?.apiMethodId]);\n\n useEffect(() => {\n if (!entityLoading) {\n if (selectedEntity?.unityBaseSearchMethod === null) {\n addErrorIfNotExists(\n 'search',\n `${getSanitizedName(entity)}'s search method must be promoted`,\n 'error'\n );\n } else {\n initialSearchWithParams();\n }\n if (selectedEntity?.unityBaseExportMethod === null) {\n addErrorIfNotExists(\n 'export',\n `${getSanitizedName(entity)}'s export method must be promoted`,\n 'error'\n );\n }\n }\n }, [initialSearchWithParams, selectedEntity, entity, entityLoading]);\n\n useEffect(() => {\n if (entity) {\n if (\n udpJobEntity &&\n !udpJobEntity?.unityBaseGetFileResultMethod?.apiMethodId\n ) {\n addErrorIfNotExists(\n 'fileResultGet',\n `UdpJob's GetFileResult must be promoted to download the file`,\n 'warning'\n );\n }\n\n if (udpJobEntity && !udpJobEntity?.unityBaseGetMethod?.apiMethodId) {\n addErrorIfNotExists(\n 'fileBaseGet',\n `UdpJob's Get method must be promoted to view job status`,\n 'warning'\n );\n }\n }\n }, [entity, udpJobEntity]);\n\n useEffect(() => {\n let isValid = true;\n errorList?.forEach((item) => {\n if (item.severity === 'error') {\n isValid = false;\n }\n });\n setValidSearch(isValid);\n }, [errorList]);\n\n useEffect(() => {\n if (\n !activeExportJob ||\n activeExportJob?.statusId === 3 ||\n activeExportJob?.statusId === 4\n )\n return;\n\n const intervalId = setInterval(() => {\n refetchActiveJobData();\n }, 5000);\n\n return () => clearInterval(intervalId);\n }, [activeExportJob, refetchActiveJobData]);\n\n useEffect(() => {\n if (activeExportJob?.statusId === 3) {\n refetchfileResultData();\n }\n }, [activeExportJob?.statusId, refetchfileResultData]);\n\n const handleFileDownload = useCallback(() => {\n if (fileResultData?.link) {\n const link = document.createElement('a');\n link.href = fileResultData?.link;\n link.download = '';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n }, [fileResultData?.link]);\n\n return {\n updateExportParameters,\n createExport,\n entity,\n searchObject,\n fileFormat,\n numRowsToExport,\n validSearch,\n errorList,\n activeExportJob,\n exportLoading,\n handleFileDownload,\n clearParameters\n };\n};\n","import React, { useMemo } from 'react';\nimport { Box, Chip } from '@material-ui/core';\nimport { StatusChip } from '../../UI/dataDisplay/status/StatusChip';\n\nexport const VisualSearchObject = ({ searchObject }) => {\n // 1️⃣ Safely default to an empty object if searchObject is null/undefined:\n const safeSO = searchObject || {};\n\n // 2️⃣ Destructure with defaults for each property:\n const {\n filterElements = [],\n filterGroups = [],\n logicalSearchOperator = 1,\n } = safeSO;\n\n const filtersByGroup = useMemo(() => {\n return filterElements.reduce((acc, fe) => {\n const gid = fe.groupId ?? 0;\n (acc[gid] = acc[gid] || []).push(fe);\n return acc;\n }, {});\n }, [filterElements]);\n\n const groupLookup = useMemo(() => {\n const lookup = {};\n filterGroups.forEach(g => {\n lookup[g.groupId] = { ...g, children: [] };\n });\n filterGroups.forEach(g => {\n if (g.parentGroupId && lookup[g.parentGroupId]) {\n lookup[g.parentGroupId].children.push(lookup[g.groupId]);\n }\n });\n return lookup;\n }, [filterGroups]);\n\n const topLevelGroups = useMemo(() => {\n return filterGroups\n .filter(g => !g.parentGroupId)\n .map(g => groupLookup[g.groupId]);\n }, [filterGroups, groupLookup]);\n\n // virtual root\n const rootGroup = {\n groupId: 0,\n logicalSearchOperator,\n children: topLevelGroups,\n };\n\n // 4️⃣ Recursive render\n const OpLabel = { 1: 'AND', 2: 'OR' };\n const renderGroup = (group, level = 0) => (\n <Box\n key={group.groupId}\n border={1}\n borderColor=\"grey.300\"\n borderRadius={4}\n p={1}\n ml={level * 2}\n mb={1}\n bgcolor={level === 0 ? 'grey.100' : 'transparent'}\n >\n <Box mb={1}>\n <StatusChip\n label={OpLabel[group.logicalSearchOperator] || 'AND'}\n status=\"info\"\n size=\"small\"\n />\n </Box>\n <Box display=\"flex\" flexWrap=\"wrap\" mb={group.children.length ? 1 : 0}>\n {(filtersByGroup[group.groupId] || []).map((fe, i) => (\n <Chip\n key={`g${group.groupId}-f${i}`}\n size=\"small\"\n label={`${fe.searchField} ${fe.searchOperator} ${fe.searchValue}`}\n style={{ marginRight: 4, marginBottom: 4 }}\n />\n ))}\n </Box>\n {group.children.map(c => renderGroup(c, level + 1))}\n </Box>\n );\n\n // 5️⃣ Finally, render nothing if truly empty:\n const hasAnything =\n filterElements.length > 0 || filterGroups.length > 0;\n\n if (!hasAnything) return null;\n\n return (\n <Box>\n {renderGroup(rootGroup)}\n </Box>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { Typography } from '../../UI/dataDisplay/typography/Typography';\nimport { getSanitizedName } from '../../utilities/entities/entityUtilities';\nimport { FluentListItem } from '../../UI/dataDisplay/FluentListItem';\nimport { VisualSearchObject } from './VisualSearchObject';\nimport { AmbientAlert } from '../../UI/feedback/AmbientAlert';\nimport { Skeleton } from '@material-ui/lab';\nimport { StatusChip } from '../../UI/dataDisplay/status/StatusChip';\nimport { Slide } from '@material-ui/core';\nimport { LinearProgress } from '../../UI/loading/LinearProgress';\nimport { EmptyStateDisplay } from '../../UI/dataDisplay/EmptyStateDisplay';\nimport { StatusCircleCheckmarkIcon } from '@fluentui/react-icons';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { useHistory } from 'react-router-dom';\n\nexport const ExportSidesheet = (props) => {\n const {\n entity,\n numRowsToExport,\n fileFormat,\n searchObject,\n errorList,\n activeExportJob,\n handleFileDownload,\n exportSidesheetOpen,\n handleCloseExportSidesheet,\n createExport,\n exportLoading,\n validSearch\n } = props;\n\n const history = useHistory();\n const [page, setPage] = useState('exportSummary');\n\n useEffect(() => {\n if (activeExportJob?.id) {\n setPage('transition');\n }\n }, [activeExportJob?.id]);\n\n const handleSummaryExited = () => {\n setPage('exportProgress');\n };\n\n const getJobStatus = (value) => {\n if (value === 1) {\n return { status: null, label: 'Pending' };\n } else if (value === 2) {\n return { status: 'info', label: 'Running' };\n } else if (value === 3) {\n return { status: 'success', label: 'Completed' };\n } else if (value === 4) {\n return { status: 'error', label: 'Failed' };\n }\n };\n\n const onCloseSidesheet = () => {\n setPage('exportSummary');\n handleCloseExportSidesheet();\n };\n\n return (\n <SideSheet\n open={exportSidesheetOpen}\n onClose={onCloseSidesheet}\n width={'50%'}\n onSubmit={createExport}\n buttonLabel={'Create Export'}\n buttonTwoLabel='My Exports'\n buttonTwoAction={() => history.push('/myexports')}\n progress={exportLoading}\n buttonOneDisabled={!validSearch || activeExportJob}\n >\n <div>\n {errorList?.map((error) => (\n <AmbientAlert\n alertMessage={error.message}\n showAlert={true}\n alertSeverity={error.severity}\n />\n ))}\n <Slide\n in={page === 'exportSummary'}\n onExited={handleSummaryExited}\n direction='right'\n unmountOnExit\n appear={false}\n >\n <div style={{ display: 'flex', flexDirection: 'column', gap: 10 }}>\n <AmbientCard title='Export Summary' fullWidth removeTopLayoutUnit>\n <Typography>\n You are about to export all records from this table using your\n search criteria.\n </Typography>\n <div style={{ marginTop: 16 }}>\n <FluentListItem\n subject='Table'\n value={getSanitizedName(entity)}\n />\n <FluentListItem\n subject='Number of Rows'\n value={numRowsToExport ?? <Skeleton width={40} height={26} />}\n />\n </div>\n </AmbientCard>\n <AmbientCard title='Applied Filters' fullWidth>\n <VisualSearchObject searchObject={searchObject} />\n </AmbientCard>\n <AmbientCard title='Export Options' fullWidth>\n <FluentListItem subject='File Format' value={fileFormat} />\n </AmbientCard>\n </div>\n </Slide>\n <Slide in={page === 'exportProgress'} direction='left' mountOnEnter>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 10 }}>\n <AmbientCard title={`Job Details`} fullWidth removeTopLayoutUnit>\n <div style={{ marginBottom: 25 }}>\n <Typography>\n Exports are handled in the background. You can safely close\n this window.\n </Typography>\n </div>\n <FluentListItem subject='Job Id' value={activeExportJob?.id} />\n <FluentListItem\n subject='Status'\n value={\n <StatusChip\n status={getJobStatus(activeExportJob?.statusId)?.status}\n label={getJobStatus(activeExportJob?.statusId)?.label}\n />\n }\n />\n </AmbientCard>\n <AmbientCard\n title={`Export ${getJobStatus(activeExportJob?.statusId)?.label}`}\n fullWidth\n removeTopLayoutUnit\n >\n {(activeExportJob?.statusId === 1 ||\n activeExportJob?.statusId === 2) && <LinearProgress />}\n {activeExportJob?.statusId === 3 &&\n (!errorList.some((err) => err?.id === 'fileResultGet') ? (\n <EmptyStateDisplay\n icon={StatusCircleCheckmarkIcon}\n primaryText={'File is ready!'}\n actionLabel='Download'\n action={handleFileDownload && (() => handleFileDownload())}\n />\n ) : (\n <Typography>\n To download the file, please go to the My Exports page.\n </Typography>\n ))}\n </AmbientCard>\n </div>\n </Slide>\n </div>\n </SideSheet>\n );\n};\n"],"mappings":"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"}
|
|
@@ -4,10 +4,10 @@ import { t as apiMutate } from "./useAxiosMutate-DeqKSi5z.js";
|
|
|
4
4
|
import { t as DateTimeField } from "./DateTimeField-CUzs3MIq.js";
|
|
5
5
|
import { t as FluentTextFieldAutoComplete } from "./FluentTextFieldAutoComplete-5Hp3qpk6.js";
|
|
6
6
|
import { t as FluentToggle } from "./FluentToggle-B1DqTfua.js";
|
|
7
|
-
import { t as Typography$1 } from "./Typography-
|
|
7
|
+
import { t as Typography$1 } from "./Typography-FuShOop3.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 FluentDatePicker } from "./FluentDatePicker-C6WEywwM.js";
|
|
12
12
|
import { t as FilterOperators } from "./SearchOperator-D9838PIe.js";
|
|
13
13
|
import { t as AmbientGridTemplate } from "./AmbientGridTemplate-D1TMpzxb.js";
|
|
@@ -401,4 +401,4 @@ const FieldArrayCard = (props) => {
|
|
|
401
401
|
|
|
402
402
|
//#endregion
|
|
403
403
|
export { FieldType as n, FieldArrayCard as t };
|
|
404
|
-
//# sourceMappingURL=FieldArrayCard-
|
|
404
|
+
//# sourceMappingURL=FieldArrayCard-sEe2pmg7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldArrayCard-Ds_ysYWL.js","names":["Grid","AutocompleteFinalField","DateRangeField","FormControlLabel","Typography","Grid","SearchSideSheet"],"sources":["../src/UI/inputs/fieldArrayCard/fieldArrayCardEnum.ts","../src/UI/inputs/fieldArrayCard/SearchSideSheet.jsx","../src/UI/inputs/fieldArrayCard/AutocompleteFinalField.jsx","../src/UI/inputs/fieldArrayCard/DateRangeField.jsx","../src/UI/inputs/fieldArrayCard/FieldArrayCard.jsx"],"sourcesContent":["export enum FieldType {\n Text = 'text',\n Date = 'date',\n DateRange = 'dateRange',\n Time = 'time',\n DateTime = 'dateTime',\n Toggle = 'toggle',\n Checkbox = 'checkbox',\n DropdownMenu = 'dropdownMenu',\n}","import React, { useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { AmbientGridTemplate } from '../../templates/deprecated/AmbientGridTemplate/AmbientGridTemplate';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { FilterOperators } from '../../../models/SearchOperator';\nimport { SideSheet } from '../../surfaces/SideSheet';\nimport { useAgGridApi } from '../../../utilities/aggrid/AgTable';\n\nconst SearchSideSheet = props => {\n const {\n open,\n handleClose,\n exclude,\n title,\n productApiBase,\n searchApi,\n colDefs = [],\n gridTitle,\n idField,\n formIdField,\n handleSearch,\n width = '800px',\n height='58vh'\n } = props;\n const [selectedData, setSelectedData] = useState([]);\n const { t } = useTranslation();\n const { gridApi, onGridReady, gridColumnApi } = useAgGridApi();\n const paginationPageSize = 20;\n\n // TODO: use queryId or new data grid from stencil\n const searchData = useCallback(\n async data =>\n apiMutate(\n productApiBase,\n searchApi,\n {\n method: 'post',\n },\n data\n ),\n [productApiBase, searchApi]\n );\n\n const onSelectionChanged = useCallback(() => {\n const selectedRows = gridApi?.getSelectedRows() ?? [];\n setSelectedData(selectedRows);\n }, [gridApi]);\n\n const handleCloseSideSheet = useCallback(\n data => {\n handleClose(data);\n setSelectedData([]);\n },\n [handleClose]\n );\n\n const dataSource = useMemo(\n () => ({\n getRows: async ({ request, success, fail }) => {\n if (handleSearch) {\n handleSearch(paginationPageSize, request, success, fail);\n return;\n }\n const filterElements = request?.filterModel\n ? Object.entries(request.filterModel)?.map(([key, value]) => {\n return {\n searchField: key,\n searchOperator: FilterOperators[value?.type],\n searchValue: value?.filter,\n };\n })\n : [];\n\n const orderElements = request?.sortModel\n ? request.sortModel?.map(sortObj => {\n return {\n sortColumn: sortObj?.colId,\n sortDirection: sortObj?.sort?.toUpperCase(),\n };\n })\n : [];\n await searchData({\n data: {\n filterElements: filterElements,\n orderElements: orderElements,\n pagesize: paginationPageSize,\n pageNumber: (request?.startRow ?? 0) / paginationPageSize + 1,\n },\n })\n .then(response => {\n success({\n rowData: response.data?.pageList,\n rowCount: response.data?.total,\n });\n })\n .catch(error => {\n fail();\n });\n\n },\n }),\n [searchData, handleSearch]\n );\n return (\n <SideSheet\n open={open}\n onClose={() => handleCloseSideSheet()}\n title={title}\n width={width}\n buttonLabel={t('Choose')}\n onSubmit={() => {\n handleCloseSideSheet(selectedData);\n }}\n >\n <AmbientGridTemplate\n title={gridTitle}\n rowModelType=\"serverSide\"\n serverSideDatasource={dataSource}\n cacheBlockSize={paginationPageSize}\n serverSideStoreType=\"partial\"\n paginationPageSize={paginationPageSize}\n columnDefs={[\n {\n field: '',\n checkboxSelection: true,\n maxWidth: 60,\n minWidth: 60,\n cellRenderer: params => {\n console.log({\n exclude,\n formIdField,\n idField,\n bool: exclude?.find(\n selectedItem =>\n selectedItem[formIdField] === params.data?.[idField]\n ),\n });\n if (\n params?.data &&\n !!exclude?.find(\n selectedItem =>\n selectedItem[formIdField] === params.data?.[idField]\n )\n ) {\n params.node.setSelected(true);\n }\n },\n },\n ...colDefs,\n ]}\n hideGroupTab\n hideColumnTab\n suppressRowClickSelection={true}\n onSelectionChanged={onSelectionChanged}\n rowSelection=\"multiple\"\n api={gridApi}\n gridReady={onGridReady}\n columnApi={gridColumnApi}\n dynamicSizing={true}\n height={height}\n />\n </SideSheet>\n );\n};\n\nexport default SearchSideSheet;\n","import React, { useMemo } from 'react';\nimport { FluentTextFieldAutoComplete } from '../textField/FluentTextFieldAutoComplete';\n\n// this is only to used in FieldArrayCard\nconst AutocompleteFinalField = props => {\n const { value, options, idField = 'id' ,...otherProps } = props;\n\n const currentValue = useMemo(() => {\n if (typeof value === 'object') {\n return value;\n }\n\n return options.find(option => option[idField] === value) || null;\n }, [idField, options, value]);\n\n return (\n <FluentTextFieldAutoComplete\n {...otherProps}\n options={options}\n value={currentValue}\n />\n );\n};\n\nexport default AutocompleteFinalField;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Field } from '../../../utilities/form';\nimport { FluentDatePicker } from '../pickers/FluentDatePicker';\nimport { Grid } from '../../Grid';\n\nconst DateRangeField = props => {\n const {\n fieldName,\n startDateProps = {},\n endDateProps = {},\n sameRow = false,\n initialValues,\n } = props;\n const [maxStartDate, setMaxStartDate] = useState();\n const [minEndDate, setMinEndDate] = useState();\n const { t } = useTranslation();\n\n useEffect(() => {\n const currentStartDate = initialValues[startDateProps?.name ?? 'startDate'];\n if (currentStartDate) {\n let minDate = new Date(currentStartDate);\n minDate.setDate(minDate?.getDate() + 1);\n setMinEndDate(minDate);\n } else {\n setMinEndDate(undefined);\n }\n }, [initialValues, startDateProps.name]);\n\n useEffect(() => {\n const currentEndDate = initialValues[endDateProps?.name ?? 'endDate'];\n if (currentEndDate) {\n let maxDate = new Date(currentEndDate);\n maxDate.setDate(maxDate?.getDate() - 1);\n maxDate.setHours(0, 0, 0, 0);\n setMaxStartDate(maxDate);\n } else {\n setMaxStartDate(undefined);\n }\n }, [endDateProps.name, initialValues]);\n\n return (\n <Grid container spacing={sameRow ? 2 : 0}>\n <Grid item xs={12} sm={sameRow ? 6 : 12}>\n <Field\n {...startDateProps}\n parse={value => (value ? value : null)}\n format={value => (value ? value : null)}\n label={startDateProps?.label ?? t('Start Date')}\n name={`${fieldName}.${startDateProps?.name ?? 'startDate'}`}\n key={`${fieldName}.${startDateProps?.name ?? 'startDate'}`}\n component={FluentDatePicker}\n size=\"small\"\n maxDate={maxStartDate}\n allowNull\n />\n </Grid>\n <Grid item xs={12} sm={sameRow ? 6 : 12}>\n <Field\n {...endDateProps}\n parse={value => value ?? null}\n format={value => value ?? null}\n label={endDateProps?.label ?? t('End Date')}\n name={`${fieldName}.${endDateProps?.name ?? 'endDate'}`}\n key={`${fieldName}.${endDateProps?.name ?? 'endDate'}`}\n component={FluentDatePicker}\n size=\"small\"\n minDate={minEndDate}\n allowNull\n />\n </Grid>\n </Grid>\n );\n};\n\nexport default DateRangeField;\n","import { AddIcon, DeleteIcon } from '@fluentui/react-icons';\nimport { makeStyles } from '@material-ui/core';\nimport React, { useCallback, useState } from 'react';\nimport { FieldArray } from 'react-final-form-arrays';\nimport { useTranslation } from 'react-i18next';\nimport SearchSideSheet from './SearchSideSheet';\nimport AutocompleteFinalField from './AutocompleteFinalField';\nimport DateRangeField from './DateRangeField';\nimport { FieldType } from './fieldArrayCardEnum';\nimport { AmbientCard } from '../../surfaces/cards/AmbientCard';\nimport { DateTimeField } from '../datetimes/DateTimeField';\nimport { EmptyStateDisplay } from '../../dataDisplay/EmptyStateDisplay';\nimport { Field } from '../../../utilities/form';\nimport { FluentCheckbox } from '../checkbox/FluentCheckbox';\nimport { FluentDatePicker } from '../pickers/FluentDatePicker';\nimport { FluentTextField } from '../textField/FluentTextField';\nimport { FluentTimePicker } from '../pickers/FluentTimePicker';\nimport { FluentToggle } from '../toggle/FluentToggle';\nimport { FormControlLabel } from '../../utilityDisplay/FormControlLabel';\nimport { Grid } from '../../Grid';\nimport { IconButtonWithTooltip } from '../buttons/IconButtonWithToolTip';\nimport { LayoutUnit } from '../../../layout/LayoutUnit';\nimport { Typography } from '../../dataDisplay/typography/Typography';\n\nconst useStyles = makeStyles(theme => ({\n toggleWrapper: {\n marginLeft: theme.spacing(-0.1),\n gap: theme.spacing(1),\n marginTop: theme.spacing(0.8),\n },\n checkboxField: {\n marginLeft: theme.spacing(-1.1),\n },\n sectionHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: theme.spacing(1),\n alignItems: 'center',\n marginBottom: theme.spacing(1),\n },\n fieldsWrapper: {\n display: 'flex',\n flexDirection: 'column',\n },\n cardsWrapper: {\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n },\n cardHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: theme.spacing(1),\n alignItems: 'center',\n },\n}));\n\nexport const FieldArrayCard = props => {\n const {\n title = ' ',\n fieldArrayName,\n getRowTitle,\n fieldConfig,\n removeTopLayoutUnit = false,\n defaultAddedItemValues,\n //search sidesheet props\n enableSearchSideSheet,\n searchSideSheetTitle,\n searchFieldId = 'id',\n formFieldId = 'id',\n formatAddedSearchItems,\n productApiBase,\n searchApi,\n searchGridColDefs,\n searchGridTitle,\n handleSearch,\n disableExcludeInSearch = false,\n searchSideSheetWidth,\n searchSideSheetHeight,\n } = props;\n const classes = useStyles();\n const [openSideSheet, setOpenSideSheet] = useState(false);\n const { t } = useTranslation();\n\n const getField = useCallback(\n (finalFieldName, config, fieldObj) => {\n const { fieldName, fieldType, fieldLabel, componentProps } = config;\n\n let fieldComponent = null;\n\n switch (fieldType) {\n case FieldType.DropdownMenu:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={AutocompleteFinalField}\n label={fieldLabel}\n />\n );\n break;\n case FieldType.Date:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentDatePicker}\n label={fieldLabel}\n size=\"small\"\n allowNull\n />\n );\n break;\n case FieldType.DateRange:\n fieldComponent = (\n <DateRangeField\n {...componentProps}\n fieldName={finalFieldName}\n initialValues={fieldObj}\n />\n );\n break;\n case FieldType.Time:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentTimePicker}\n label={fieldLabel}\n size=\"small\"\n />\n );\n break;\n case FieldType.DateTime:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={DateTimeField}\n label={fieldLabel}\n size=\"small\"\n allowNull\n />\n );\n break;\n case FieldType.Toggle:\n fieldComponent = (\n <FormControlLabel\n control={\n <Field\n defaultChecked={false}\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentToggle}\n type=\"checkbox\"\n />\n }\n label={fieldLabel}\n className={classes.toggleWrapper}\n />\n );\n break;\n case FieldType.Checkbox:\n fieldComponent = (\n <FormControlLabel\n control={\n <Field\n defaultChecked={false}\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentCheckbox}\n type=\"checkbox\"\n />\n }\n label={fieldLabel}\n className={classes.checkboxField}\n />\n );\n break;\n default:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentTextField}\n label={fieldLabel}\n />\n );\n break;\n }\n\n return fieldComponent;\n },\n [classes.checkboxField, classes.toggleWrapper]\n );\n\n const handleCloseSideSheet = useCallback(\n (selectedRecords, fieldArray) => {\n const formattedRecords = formatAddedSearchItems\n ? formatAddedSearchItems(selectedRecords ?? [])\n : selectedRecords;\n\n if (formattedRecords?.length) {\n for (const record of formattedRecords) {\n if (\n disableExcludeInSearch ||\n !!!fieldArray?.value?.find(\n item => item[formFieldId] === record[formFieldId]\n )\n )\n fieldArray.push(record);\n }\n }\n\n setOpenSideSheet(false);\n },\n [disableExcludeInSearch, formFieldId, formatAddedSearchItems]\n );\n\n const handleAddField = useCallback(\n fields => {\n if (enableSearchSideSheet) {\n setOpenSideSheet(true);\n } else {\n if (defaultAddedItemValues) {\n fields.push(defaultAddedItemValues);\n } else {\n fields.push({});\n }\n }\n },\n [defaultAddedItemValues, enableSearchSideSheet]\n );\n\n return (\n <div>\n <FieldArray name={fieldArrayName}>\n {({ fields }) => {\n return (\n <div>\n <div className={classes.sectionHeader}>\n <div>\n {title && <Typography variant=\"h6\">{title}</Typography>}\n </div>\n <IconButtonWithTooltip\n onClick={() => {\n handleAddField(fields);\n }}\n icon={AddIcon}\n title={t('Add')}\n />\n </div>\n\n <div className={classes.cardsWrapper}>\n {fields?.value?.length > 0 ? (\n fields.map((name, index) => {\n const rowTitle =\n getRowTitle && getRowTitle(fields?.value?.[index]);\n return (\n <AmbientCard fullWidth>\n <div className={classes.cardHeader}>\n <Typography variant=\"h6\">{rowTitle}</Typography>\n\n <IconButtonWithTooltip\n onClick={() => fields.remove(index)}\n icon={DeleteIcon}\n title={t('Delete')}\n />\n </div>\n {rowTitle && !removeTopLayoutUnit && (\n <LayoutUnit unit=\"xxs\" />\n )}\n <div className={classes.fieldsWrapper}>\n {fieldConfig?.map(config => {\n if (Array.isArray(config)) {\n return (\n <Grid container spacing={2}>\n {config?.map(innerConfig => {\n return (\n <Grid\n item\n xs={12}\n sm={12 / config?.length}\n >\n {getField(\n name,\n innerConfig,\n fields?.value?.[index]\n )}\n </Grid>\n );\n })}\n </Grid>\n );\n } else {\n return getField(\n name,\n config,\n fields?.value?.[index]\n );\n }\n })}\n </div>\n </AmbientCard>\n );\n })\n ) : (\n <AmbientCard fullWidth cardHeight=\"155px\">\n <EmptyStateDisplay\n primaryText={t('No records to show')}\n secondaryText={t('Try adding one')}\n />\n </AmbientCard>\n )}\n </div>\n <SearchSideSheet\n open={openSideSheet}\n handleClose={data => {\n handleCloseSideSheet(data, fields);\n }}\n exclude={disableExcludeInSearch ? [] : fields?.value}\n title={searchSideSheetTitle}\n productApiBase={productApiBase}\n searchApi={searchApi}\n colDefs={searchGridColDefs}\n idField={searchFieldId}\n formIdField={formFieldId}\n gridTitle={searchGridTitle}\n handleSearch={handleSearch}\n width={searchSideSheetWidth}\n height={searchSideSheetHeight}\n />\n </div>\n );\n }}\n </FieldArray>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FieldArrayCard-sEe2pmg7.js","names":["Grid","AutocompleteFinalField","DateRangeField","FormControlLabel","Typography","Grid","SearchSideSheet"],"sources":["../src/UI/inputs/fieldArrayCard/fieldArrayCardEnum.ts","../src/UI/inputs/fieldArrayCard/SearchSideSheet.jsx","../src/UI/inputs/fieldArrayCard/AutocompleteFinalField.jsx","../src/UI/inputs/fieldArrayCard/DateRangeField.jsx","../src/UI/inputs/fieldArrayCard/FieldArrayCard.jsx"],"sourcesContent":["export enum FieldType {\n Text = 'text',\n Date = 'date',\n DateRange = 'dateRange',\n Time = 'time',\n DateTime = 'dateTime',\n Toggle = 'toggle',\n Checkbox = 'checkbox',\n DropdownMenu = 'dropdownMenu',\n}","import React, { useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { AmbientGridTemplate } from '../../templates/deprecated/AmbientGridTemplate/AmbientGridTemplate';\nimport { apiMutate } from '../../../utilities/useAxiosMutate';\nimport { FilterOperators } from '../../../models/SearchOperator';\nimport { SideSheet } from '../../surfaces/SideSheet';\nimport { useAgGridApi } from '../../../utilities/aggrid/AgTable';\n\nconst SearchSideSheet = props => {\n const {\n open,\n handleClose,\n exclude,\n title,\n productApiBase,\n searchApi,\n colDefs = [],\n gridTitle,\n idField,\n formIdField,\n handleSearch,\n width = '800px',\n height='58vh'\n } = props;\n const [selectedData, setSelectedData] = useState([]);\n const { t } = useTranslation();\n const { gridApi, onGridReady, gridColumnApi } = useAgGridApi();\n const paginationPageSize = 20;\n\n // TODO: use queryId or new data grid from stencil\n const searchData = useCallback(\n async data =>\n apiMutate(\n productApiBase,\n searchApi,\n {\n method: 'post',\n },\n data\n ),\n [productApiBase, searchApi]\n );\n\n const onSelectionChanged = useCallback(() => {\n const selectedRows = gridApi?.getSelectedRows() ?? [];\n setSelectedData(selectedRows);\n }, [gridApi]);\n\n const handleCloseSideSheet = useCallback(\n data => {\n handleClose(data);\n setSelectedData([]);\n },\n [handleClose]\n );\n\n const dataSource = useMemo(\n () => ({\n getRows: async ({ request, success, fail }) => {\n if (handleSearch) {\n handleSearch(paginationPageSize, request, success, fail);\n return;\n }\n const filterElements = request?.filterModel\n ? Object.entries(request.filterModel)?.map(([key, value]) => {\n return {\n searchField: key,\n searchOperator: FilterOperators[value?.type],\n searchValue: value?.filter,\n };\n })\n : [];\n\n const orderElements = request?.sortModel\n ? request.sortModel?.map(sortObj => {\n return {\n sortColumn: sortObj?.colId,\n sortDirection: sortObj?.sort?.toUpperCase(),\n };\n })\n : [];\n await searchData({\n data: {\n filterElements: filterElements,\n orderElements: orderElements,\n pagesize: paginationPageSize,\n pageNumber: (request?.startRow ?? 0) / paginationPageSize + 1,\n },\n })\n .then(response => {\n success({\n rowData: response.data?.pageList,\n rowCount: response.data?.total,\n });\n })\n .catch(error => {\n fail();\n });\n\n },\n }),\n [searchData, handleSearch]\n );\n return (\n <SideSheet\n open={open}\n onClose={() => handleCloseSideSheet()}\n title={title}\n width={width}\n buttonLabel={t('Choose')}\n onSubmit={() => {\n handleCloseSideSheet(selectedData);\n }}\n >\n <AmbientGridTemplate\n title={gridTitle}\n rowModelType=\"serverSide\"\n serverSideDatasource={dataSource}\n cacheBlockSize={paginationPageSize}\n serverSideStoreType=\"partial\"\n paginationPageSize={paginationPageSize}\n columnDefs={[\n {\n field: '',\n checkboxSelection: true,\n maxWidth: 60,\n minWidth: 60,\n cellRenderer: params => {\n console.log({\n exclude,\n formIdField,\n idField,\n bool: exclude?.find(\n selectedItem =>\n selectedItem[formIdField] === params.data?.[idField]\n ),\n });\n if (\n params?.data &&\n !!exclude?.find(\n selectedItem =>\n selectedItem[formIdField] === params.data?.[idField]\n )\n ) {\n params.node.setSelected(true);\n }\n },\n },\n ...colDefs,\n ]}\n hideGroupTab\n hideColumnTab\n suppressRowClickSelection={true}\n onSelectionChanged={onSelectionChanged}\n rowSelection=\"multiple\"\n api={gridApi}\n gridReady={onGridReady}\n columnApi={gridColumnApi}\n dynamicSizing={true}\n height={height}\n />\n </SideSheet>\n );\n};\n\nexport default SearchSideSheet;\n","import React, { useMemo } from 'react';\nimport { FluentTextFieldAutoComplete } from '../textField/FluentTextFieldAutoComplete';\n\n// this is only to used in FieldArrayCard\nconst AutocompleteFinalField = props => {\n const { value, options, idField = 'id' ,...otherProps } = props;\n\n const currentValue = useMemo(() => {\n if (typeof value === 'object') {\n return value;\n }\n\n return options.find(option => option[idField] === value) || null;\n }, [idField, options, value]);\n\n return (\n <FluentTextFieldAutoComplete\n {...otherProps}\n options={options}\n value={currentValue}\n />\n );\n};\n\nexport default AutocompleteFinalField;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Field } from '../../../utilities/form';\nimport { FluentDatePicker } from '../pickers/FluentDatePicker';\nimport { Grid } from '../../Grid';\n\nconst DateRangeField = props => {\n const {\n fieldName,\n startDateProps = {},\n endDateProps = {},\n sameRow = false,\n initialValues,\n } = props;\n const [maxStartDate, setMaxStartDate] = useState();\n const [minEndDate, setMinEndDate] = useState();\n const { t } = useTranslation();\n\n useEffect(() => {\n const currentStartDate = initialValues[startDateProps?.name ?? 'startDate'];\n if (currentStartDate) {\n let minDate = new Date(currentStartDate);\n minDate.setDate(minDate?.getDate() + 1);\n setMinEndDate(minDate);\n } else {\n setMinEndDate(undefined);\n }\n }, [initialValues, startDateProps.name]);\n\n useEffect(() => {\n const currentEndDate = initialValues[endDateProps?.name ?? 'endDate'];\n if (currentEndDate) {\n let maxDate = new Date(currentEndDate);\n maxDate.setDate(maxDate?.getDate() - 1);\n maxDate.setHours(0, 0, 0, 0);\n setMaxStartDate(maxDate);\n } else {\n setMaxStartDate(undefined);\n }\n }, [endDateProps.name, initialValues]);\n\n return (\n <Grid container spacing={sameRow ? 2 : 0}>\n <Grid item xs={12} sm={sameRow ? 6 : 12}>\n <Field\n {...startDateProps}\n parse={value => (value ? value : null)}\n format={value => (value ? value : null)}\n label={startDateProps?.label ?? t('Start Date')}\n name={`${fieldName}.${startDateProps?.name ?? 'startDate'}`}\n key={`${fieldName}.${startDateProps?.name ?? 'startDate'}`}\n component={FluentDatePicker}\n size=\"small\"\n maxDate={maxStartDate}\n allowNull\n />\n </Grid>\n <Grid item xs={12} sm={sameRow ? 6 : 12}>\n <Field\n {...endDateProps}\n parse={value => value ?? null}\n format={value => value ?? null}\n label={endDateProps?.label ?? t('End Date')}\n name={`${fieldName}.${endDateProps?.name ?? 'endDate'}`}\n key={`${fieldName}.${endDateProps?.name ?? 'endDate'}`}\n component={FluentDatePicker}\n size=\"small\"\n minDate={minEndDate}\n allowNull\n />\n </Grid>\n </Grid>\n );\n};\n\nexport default DateRangeField;\n","import { AddIcon, DeleteIcon } from '@fluentui/react-icons';\nimport { makeStyles } from '@material-ui/core';\nimport React, { useCallback, useState } from 'react';\nimport { FieldArray } from 'react-final-form-arrays';\nimport { useTranslation } from 'react-i18next';\nimport SearchSideSheet from './SearchSideSheet';\nimport AutocompleteFinalField from './AutocompleteFinalField';\nimport DateRangeField from './DateRangeField';\nimport { FieldType } from './fieldArrayCardEnum';\nimport { AmbientCard } from '../../surfaces/cards/AmbientCard';\nimport { DateTimeField } from '../datetimes/DateTimeField';\nimport { EmptyStateDisplay } from '../../dataDisplay/EmptyStateDisplay';\nimport { Field } from '../../../utilities/form';\nimport { FluentCheckbox } from '../checkbox/FluentCheckbox';\nimport { FluentDatePicker } from '../pickers/FluentDatePicker';\nimport { FluentTextField } from '../textField/FluentTextField';\nimport { FluentTimePicker } from '../pickers/FluentTimePicker';\nimport { FluentToggle } from '../toggle/FluentToggle';\nimport { FormControlLabel } from '../../utilityDisplay/FormControlLabel';\nimport { Grid } from '../../Grid';\nimport { IconButtonWithTooltip } from '../buttons/IconButtonWithToolTip';\nimport { LayoutUnit } from '../../../layout/LayoutUnit';\nimport { Typography } from '../../dataDisplay/typography/Typography';\n\nconst useStyles = makeStyles(theme => ({\n toggleWrapper: {\n marginLeft: theme.spacing(-0.1),\n gap: theme.spacing(1),\n marginTop: theme.spacing(0.8),\n },\n checkboxField: {\n marginLeft: theme.spacing(-1.1),\n },\n sectionHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: theme.spacing(1),\n alignItems: 'center',\n marginBottom: theme.spacing(1),\n },\n fieldsWrapper: {\n display: 'flex',\n flexDirection: 'column',\n },\n cardsWrapper: {\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n },\n cardHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: theme.spacing(1),\n alignItems: 'center',\n },\n}));\n\nexport const FieldArrayCard = props => {\n const {\n title = ' ',\n fieldArrayName,\n getRowTitle,\n fieldConfig,\n removeTopLayoutUnit = false,\n defaultAddedItemValues,\n //search sidesheet props\n enableSearchSideSheet,\n searchSideSheetTitle,\n searchFieldId = 'id',\n formFieldId = 'id',\n formatAddedSearchItems,\n productApiBase,\n searchApi,\n searchGridColDefs,\n searchGridTitle,\n handleSearch,\n disableExcludeInSearch = false,\n searchSideSheetWidth,\n searchSideSheetHeight,\n } = props;\n const classes = useStyles();\n const [openSideSheet, setOpenSideSheet] = useState(false);\n const { t } = useTranslation();\n\n const getField = useCallback(\n (finalFieldName, config, fieldObj) => {\n const { fieldName, fieldType, fieldLabel, componentProps } = config;\n\n let fieldComponent = null;\n\n switch (fieldType) {\n case FieldType.DropdownMenu:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={AutocompleteFinalField}\n label={fieldLabel}\n />\n );\n break;\n case FieldType.Date:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentDatePicker}\n label={fieldLabel}\n size=\"small\"\n allowNull\n />\n );\n break;\n case FieldType.DateRange:\n fieldComponent = (\n <DateRangeField\n {...componentProps}\n fieldName={finalFieldName}\n initialValues={fieldObj}\n />\n );\n break;\n case FieldType.Time:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentTimePicker}\n label={fieldLabel}\n size=\"small\"\n />\n );\n break;\n case FieldType.DateTime:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={DateTimeField}\n label={fieldLabel}\n size=\"small\"\n allowNull\n />\n );\n break;\n case FieldType.Toggle:\n fieldComponent = (\n <FormControlLabel\n control={\n <Field\n defaultChecked={false}\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentToggle}\n type=\"checkbox\"\n />\n }\n label={fieldLabel}\n className={classes.toggleWrapper}\n />\n );\n break;\n case FieldType.Checkbox:\n fieldComponent = (\n <FormControlLabel\n control={\n <Field\n defaultChecked={false}\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentCheckbox}\n type=\"checkbox\"\n />\n }\n label={fieldLabel}\n className={classes.checkboxField}\n />\n );\n break;\n default:\n fieldComponent = (\n <Field\n {...componentProps}\n name={`${finalFieldName}.${fieldName}`}\n component={FluentTextField}\n label={fieldLabel}\n />\n );\n break;\n }\n\n return fieldComponent;\n },\n [classes.checkboxField, classes.toggleWrapper]\n );\n\n const handleCloseSideSheet = useCallback(\n (selectedRecords, fieldArray) => {\n const formattedRecords = formatAddedSearchItems\n ? formatAddedSearchItems(selectedRecords ?? [])\n : selectedRecords;\n\n if (formattedRecords?.length) {\n for (const record of formattedRecords) {\n if (\n disableExcludeInSearch ||\n !!!fieldArray?.value?.find(\n item => item[formFieldId] === record[formFieldId]\n )\n )\n fieldArray.push(record);\n }\n }\n\n setOpenSideSheet(false);\n },\n [disableExcludeInSearch, formFieldId, formatAddedSearchItems]\n );\n\n const handleAddField = useCallback(\n fields => {\n if (enableSearchSideSheet) {\n setOpenSideSheet(true);\n } else {\n if (defaultAddedItemValues) {\n fields.push(defaultAddedItemValues);\n } else {\n fields.push({});\n }\n }\n },\n [defaultAddedItemValues, enableSearchSideSheet]\n );\n\n return (\n <div>\n <FieldArray name={fieldArrayName}>\n {({ fields }) => {\n return (\n <div>\n <div className={classes.sectionHeader}>\n <div>\n {title && <Typography variant=\"h6\">{title}</Typography>}\n </div>\n <IconButtonWithTooltip\n onClick={() => {\n handleAddField(fields);\n }}\n icon={AddIcon}\n title={t('Add')}\n />\n </div>\n\n <div className={classes.cardsWrapper}>\n {fields?.value?.length > 0 ? (\n fields.map((name, index) => {\n const rowTitle =\n getRowTitle && getRowTitle(fields?.value?.[index]);\n return (\n <AmbientCard fullWidth>\n <div className={classes.cardHeader}>\n <Typography variant=\"h6\">{rowTitle}</Typography>\n\n <IconButtonWithTooltip\n onClick={() => fields.remove(index)}\n icon={DeleteIcon}\n title={t('Delete')}\n />\n </div>\n {rowTitle && !removeTopLayoutUnit && (\n <LayoutUnit unit=\"xxs\" />\n )}\n <div className={classes.fieldsWrapper}>\n {fieldConfig?.map(config => {\n if (Array.isArray(config)) {\n return (\n <Grid container spacing={2}>\n {config?.map(innerConfig => {\n return (\n <Grid\n item\n xs={12}\n sm={12 / config?.length}\n >\n {getField(\n name,\n innerConfig,\n fields?.value?.[index]\n )}\n </Grid>\n );\n })}\n </Grid>\n );\n } else {\n return getField(\n name,\n config,\n fields?.value?.[index]\n );\n }\n })}\n </div>\n </AmbientCard>\n );\n })\n ) : (\n <AmbientCard fullWidth cardHeight=\"155px\">\n <EmptyStateDisplay\n primaryText={t('No records to show')}\n secondaryText={t('Try adding one')}\n />\n </AmbientCard>\n )}\n </div>\n <SearchSideSheet\n open={openSideSheet}\n handleClose={data => {\n handleCloseSideSheet(data, fields);\n }}\n exclude={disableExcludeInSearch ? [] : fields?.value}\n title={searchSideSheetTitle}\n productApiBase={productApiBase}\n searchApi={searchApi}\n colDefs={searchGridColDefs}\n idField={searchFieldId}\n formIdField={formFieldId}\n gridTitle={searchGridTitle}\n handleSearch={handleSearch}\n width={searchSideSheetWidth}\n height={searchSideSheetHeight}\n />\n </div>\n );\n }}\n </FieldArray>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as FluentIcon } from "./FluentIcon-DQ6nSDJg.js";
|
|
2
|
-
import { t as Typography$1 } from "./Typography-
|
|
2
|
+
import { t as Typography$1 } from "./Typography-FuShOop3.js";
|
|
3
3
|
import { t as LayoutUnit } from "./LayoutUnit-D4jJvonh.js";
|
|
4
4
|
import { t as FluentCheckbox } from "./FluentCheckbox-CX7XgoFz.js";
|
|
5
5
|
import React, { useState } from "react";
|
|
@@ -96,4 +96,4 @@ const FluentListItem = (props) => {
|
|
|
96
96
|
|
|
97
97
|
//#endregion
|
|
98
98
|
export { FluentListItem as t };
|
|
99
|
-
//# sourceMappingURL=FluentListItem-
|
|
99
|
+
//# sourceMappingURL=FluentListItem-1fzW--Dq.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FluentListItem-
|
|
1
|
+
{"version":3,"file":"FluentListItem-1fzW--Dq.js","names":["Typography"],"sources":["../src/UI/dataDisplay/FluentListItem.jsx"],"sourcesContent":["/* eslint-disable react/self-closing-comp */\nimport React, { useState } from 'react';\nimport { makeStyles, Divider, Collapse } from '@material-ui/core';\nimport clsx from 'clsx';\nimport { LayoutUnit } from '../../layout/LayoutUnit';\nimport { FluentIcon } from '../../utilities/iconLibrary/FluentIcon';\nimport { ChevronDownIcon } from '@fluentui/react-icons';\nimport { Typography } from './typography/Typography';\nimport { FluentCheckbox } from '../inputs/checkbox/FluentCheckbox';\n\nconst useStyles = makeStyles(\n (theme) => ({\n root: {\n height: theme.spacing(5)\n },\n wrapper: {\n display: 'flex',\n flexDirection: 'row'\n },\n titleWrapper: {\n display: 'flex',\n width: '100%',\n textAlign: 'left',\n alignItems: 'center'\n },\n title: {\n flex: 1\n },\n progress: {\n height: 2,\n '&::after': {\n content: `''`,\n display: 'block',\n background: theme.palette.secondary.main,\n width: (props) => (props.progress / props.total) * 425,\n height: '100%'\n }\n },\n iconStart: {\n marginRight: theme.spacing(1)\n },\n iconEnd: {\n marginLeft: theme.spacing(1)\n },\n expand: {\n transform: 'rotate(0deg)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shortest\n })\n },\n expandOpen: {\n transform: 'rotate(180deg)'\n },\n iconSpace: {\n width: theme.spacing(2.75)\n },\n valueWrapper: {\n display: 'flex',\n alignItems: 'center'\n },\n valueIcon: {\n marginRight: theme.spacing(1)\n },\n checkbox: {\n marginRight: theme.spacing(1),\n padding: '0px'\n }\n }),\n { name: 'FluentListItem' }\n);\n\nexport const FluentListItem = (props) => {\n const classes = useStyles(props);\n const {\n subject,\n value,\n visualization,\n boldSubject = true,\n expandable = false,\n valueTextColor,\n icon,\n iconColor,\n iconEnd = true,\n valueIcon,\n valueIconColor,\n hideDivider = false,\n children,\n expandedDefaultValue = false,\n keepIconLeftSpace = false,\n keepIconRightSpace = false,\n defaultChecked = false,\n onCheckEvent\n } = props;\n const [expandItem, setExpandItem] = useState(expandedDefaultValue);\n\n const handleOnClick = () => {\n setExpandItem(!expandItem);\n };\n\n return (\n <div>\n <div className={classes.root} onClick={expandable ? handleOnClick : null}>\n <div className={classes.wrapper}>\n <div className={classes.titleWrapper}>\n {keepIconLeftSpace && (!expandable || iconEnd) && (\n <div className={classes.iconSpace}></div>\n )}\n {onCheckEvent && (\n <FluentCheckbox\n defaultChecked={defaultChecked}\n onChange={onCheckEvent}\n className={classes.checkbox}\n />\n )}\n {(icon || expandable) && !iconEnd && (\n <FluentIcon\n component={expandable ? ChevronDownIcon : icon}\n color={iconColor}\n className={clsx(classes.iconStart, {\n [classes.expand]: expandable,\n [classes.expandOpen]: expandable && expandItem\n })}\n size='small'\n />\n )}\n\n <div className={classes.title}>\n <Typography variant='body1'>\n {boldSubject ? <strong>{subject}</strong> : subject}\n </Typography>\n </div>\n <LayoutUnit unit='nudge' />\n <div className={classes.valueWrapper}>\n {valueIcon && (\n <FluentIcon\n component={valueIcon}\n color={valueIconColor}\n className={classes.valueIcon}\n size='small'\n />\n )}\n <Typography variant='body1' color={valueTextColor}>\n {value}\n </Typography>\n </div>\n\n {(icon || expandable) && iconEnd && (\n <FluentIcon\n component={expandable ? ChevronDownIcon : icon}\n color={iconColor}\n className={clsx(classes.iconEnd, {\n [classes.expand]: expandable,\n [classes.expandOpen]: expandable && expandItem\n })}\n size='small'\n />\n )}\n {keepIconRightSpace && (!expandable || !iconEnd) && (\n <div className={classes.iconSpace}></div>\n )}\n </div>\n </div>\n <LayoutUnit unit='nudge' />\n {!hideDivider && (\n <Divider className={visualization && classes.progress} />\n )}\n </div>\n <Collapse in={expandItem} timeout='auto' unmountOnExit>\n <div>{children}</div>\n </Collapse>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as AmbientCard } from "./AmbientCard-
|
|
1
|
+
import { t as AmbientCard } from "./AmbientCard-DhAiVDYD.js";
|
|
2
2
|
import { t as EmptyStateDisplay } from "./EmptyStateDisplay-YOwCw38_.js";
|
|
3
3
|
import React from "react";
|
|
4
4
|
import { makeStyles } from "@material-ui/core";
|
|
@@ -72,4 +72,4 @@ GraphCard.propTypes = {
|
|
|
72
72
|
|
|
73
73
|
//#endregion
|
|
74
74
|
export { GraphCard as t };
|
|
75
|
-
//# sourceMappingURL=GraphCard-
|
|
75
|
+
//# sourceMappingURL=GraphCard-Bdh6VeDb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphCard-
|
|
1
|
+
{"version":3,"file":"GraphCard-Bdh6VeDb.js","names":["PropTypes"],"sources":["../src/UI/dataDisplay/GraphCard/GraphCard.jsx"],"sourcesContent":["import React from 'react';\nimport { makeStyles } from '@material-ui/core';\nimport { MuiVegaLite } from '@material-vega/material-ui';\nimport { PropTypes } from 'prop-types';\nimport { AmbientCard } from '../../surfaces/cards/AmbientCard';\nimport { EmptyStateDisplay } from '../EmptyStateDisplay';\nimport { useTranslation } from 'react-i18next';\nimport clsx from 'clsx';\n\nconst useStyles = makeStyles((theme) => ({\n infoPanel: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-around',\n alignItems: 'center',\n alignSelf: 'stretch',\n padding: '10px 32px'\n },\n graphSection: {\n overflow: 'hidden',\n '& svg': {\n width: '100%',\n height: '100%'\n },\n '& .vega-embed': {\n width: '100%',\n height: '100%'\n },\n paddingTop: theme.spacing(1),\n margin: 0,\n height: (props) => props?.graphHeight ?? '255px'\n },\n emptyStateDisplay: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n }\n}));\n\n/**\n * `GraphCard` component\n */\nexport const GraphCard = (props) => {\n const {\n title,\n showInfoPanel = true,\n graphSpecs,\n children,\n headerColor,\n className,\n noData = false,\n emptyStatePrimaryText,\n emptyStateImageSrc,\n emptyStateIconSize,\n emptyStateImageWidth,\n emptyStateClassName,\n emptyStateIcon,\n ...otherProps\n } = props;\n const classes = useStyles(props);\n const { t } = useTranslation();\n\n return (\n <AmbientCard\n fullWidth\n title={title}\n headerColor={headerColor}\n {...otherProps}\n >\n {!noData ? (\n <div>\n {showInfoPanel && <div className={classes.infoPanel}>{children}</div>}\n <div className={classes.graphSection}>\n <MuiVegaLite\n variant='verticalBarChart'\n background='paper'\n autoResize\n actions={false}\n spec={graphSpecs || {}}\n />\n </div>\n </div>\n ) : (\n <div className={clsx(classes.emptyStateDisplay, emptyStateClassName)}>\n <EmptyStateDisplay\n primaryText={emptyStatePrimaryText ?? t('No results found')}\n icon={emptyStateIcon}\n iconSize={emptyStateIconSize}\n imageSrc={emptyStateImageSrc}\n imageWidth={emptyStateImageWidth}\n />\n </div>\n )}\n </AmbientCard>\n );\n};\n\nGraphCard.propTypes = {\n /**\n * Optional, card title\n */\n title: PropTypes.string,\n\n /**\n * @type {?object}\n {\n graphSpecs: {} object see an example structure in https://vega.github.io/vega-lite/usage/typescript.html\n }\n */\n graphSpecs: PropTypes.object.isRequired,\n\n /**\n * Optional, hide or show the top panel\n */\n showInfoPanel: PropTypes.bool,\n\n /**\n * Optional, content for the info panel behind the graph\n */\n children: PropTypes.node,\n\n /**\n * Optional, additional properties to apply some styles over the main container\n */\n style: PropTypes.object\n};\n"],"mappings":";;;;;;;;;;AASA,MAAM,YAAY,YAAY,WAAW;CACvC,WAAW;EACT,SAAS;EACT,eAAe;EACf,gBAAgB;EAChB,YAAY;EACZ,WAAW;EACX,SAAS;EACV;CACD,cAAc;EACZ,UAAU;EACV,SAAS;GACP,OAAO;GACP,QAAQ;GACT;EACD,iBAAiB;GACf,OAAO;GACP,QAAQ;GACT;EACD,YAAY,MAAM,QAAQ,EAAE;EAC5B,QAAQ;EACR,SAAS,UAAU,OAAO,eAAe;EAC1C;CACD,mBAAmB;EACjB,WAAW,MAAM,QAAQ,EAAE;EAC3B,cAAc,MAAM,QAAQ,EAAE;EAC/B;CACF,EAAE;;;;AAKH,MAAa,aAAa,UAAU;CAClC,MAAM,EACJ,OACA,gBAAgB,MAChB,YACA,UACA,aACA,WACA,SAAS,OACT,uBACA,oBACA,oBACA,sBACA,qBACA,gBACA,GAAG,eACD;CACJ,MAAM,UAAU,UAAU,MAAM;CAChC,MAAM,EAAE,MAAM,gBAAgB;AAE9B,QACE,oCAAC;EACC;EACO;EACM;EACb,GAAI;IAEH,CAAC,SACA,oCAAC,aACE,iBAAiB,oCAAC,SAAI,WAAW,QAAQ,aAAY,SAAe,EACrE,oCAAC,SAAI,WAAW,QAAQ,gBACtB,oCAAC;EACC,SAAQ;EACR,YAAW;EACX;EACA,SAAS;EACT,MAAM,cAAc,EAAE;GACtB,CACE,CACF,GAEN,oCAAC,SAAI,WAAW,KAAK,QAAQ,mBAAmB,oBAAoB,IAClE,oCAAC;EACC,aAAa,yBAAyB,EAAE,mBAAmB;EAC3D,MAAM;EACN,UAAU;EACV,UAAU;EACV,YAAY;GACZ,CACE,CAEI;;AAIlB,UAAU,YAAY;CAIpB,OAAOA,YAAU;CAQjB,YAAYA,YAAU,OAAO;CAK7B,eAAeA,YAAU;CAKzB,UAAUA,YAAU;CAKpB,OAAOA,YAAU;CAClB"}
|
package/dist/{ImportDataFromFileMapping-3XXgUR-Z.js → ImportDataFromFileMapping-BIcQmKll.js}
RENAMED
|
@@ -11,7 +11,7 @@ import { r as getSanitizedName } from "./entityUtilities-_8w-Zjs3.js";
|
|
|
11
11
|
import { n as SideSheet } from "./SideSheet-CDXVa_Kr.js";
|
|
12
12
|
import { t as useAxiosGet } from "./useAxiosGet-CYnt6Hd0.js";
|
|
13
13
|
import { t as executeQueryAdHoc } from "./methodUtils-CDx9usdO.js";
|
|
14
|
-
import { t as AmbientCard } from "./AmbientCard-
|
|
14
|
+
import { t as AmbientCard } from "./AmbientCard-DhAiVDYD.js";
|
|
15
15
|
import { t as usePromotedMethodEntity } from "./usePromotedMethodEntity-B4rk75tH.js";
|
|
16
16
|
import { t as AmbientTextField } from "./AmbientTextField-CdnqPJUw.js";
|
|
17
17
|
import { t as Divider$1 } from "./Divider-B63XWSBY.js";
|
|
@@ -566,4 +566,4 @@ const ImportDataFromFileMapping = (props) => {
|
|
|
566
566
|
|
|
567
567
|
//#endregion
|
|
568
568
|
export { handleTextFileUpload as a, handleJsonFileUpload as i, FileImportConfigCard as n, handleExcelFileUpload as r, ImportDataFromFileMapping as t };
|
|
569
|
-
//# sourceMappingURL=ImportDataFromFileMapping-
|
|
569
|
+
//# sourceMappingURL=ImportDataFromFileMapping-BIcQmKll.js.map
|