From 731e25a902610fa767f713fd4e75011f654c3d02 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 7 Apr 2026 10:59:55 +0000 Subject: [PATCH] Refactor ImporterDrawer - Use a single, globally accessible object - Provide global state management --- .../importer/GlobalImporterDrawer.tsx | 20 ++++++ src/frontend/src/components/nav/Layout.tsx | 54 ++++++++-------- src/frontend/src/states/ImporterState.tsx | 62 +++++++++++++++++++ src/frontend/src/tables/bom/BomTable.tsx | 23 ++----- .../src/tables/general/ParameterTable.tsx | 23 ++----- src/frontend/src/tables/part/PartTable.tsx | 23 ++----- .../purchasing/PurchaseOrderLineItemTable.tsx | 23 ++----- .../tables/settings/ImportSessionTable.tsx | 22 +++---- 8 files changed, 139 insertions(+), 111 deletions(-) create mode 100644 src/frontend/src/components/importer/GlobalImporterDrawer.tsx create mode 100644 src/frontend/src/states/ImporterState.tsx diff --git a/src/frontend/src/components/importer/GlobalImporterDrawer.tsx b/src/frontend/src/components/importer/GlobalImporterDrawer.tsx new file mode 100644 index 0000000000..de34229b14 --- /dev/null +++ b/src/frontend/src/components/importer/GlobalImporterDrawer.tsx @@ -0,0 +1,20 @@ +import { useImporterState } from '../../states/ImporterState'; +import ImporterDrawer from './ImporterDrawer'; + +export default function GlobalImporterDrawer() { + const isOpen = useImporterState((state) => state.isOpen); + const sessionId = useImporterState((state) => state.sessionId); + const closeImporter = useImporterState((state) => state.closeImporter); + + if (!isOpen || sessionId === null) { + return null; + } + + return ( + + ); +} diff --git a/src/frontend/src/components/nav/Layout.tsx b/src/frontend/src/components/nav/Layout.tsx index 9607520db8..741f6d14ad 100644 --- a/src/frontend/src/components/nav/Layout.tsx +++ b/src/frontend/src/components/nav/Layout.tsx @@ -21,6 +21,7 @@ import { } from '../../states/SettingsStates'; import { useUserState } from '../../states/UserState'; import { Boundary } from '../Boundary'; +import GlobalImporterDrawer from '../importer/GlobalImporterDrawer'; import { ApiIcon } from '../items/ApiIcon'; import { useInvenTreeContext } from '../plugins/PluginContext'; import { callExternalPluginFunction } from '../plugins/PluginSource'; @@ -118,31 +119,34 @@ export default function LayoutComponent() { return ( - -
- - - - - {/* */} - - -