2
0
mirror of https://github.com/inventree/InvenTree.git synced 2026-05-09 03:03:41 +00:00

Expose global importer state to the plugin interface

This commit is contained in:
Oliver Walters
2026-04-07 11:02:02 +00:00
parent 731e25a902
commit 6174fbf67d
2 changed files with 23 additions and 0 deletions
+10
View File
@@ -48,6 +48,13 @@ export type InvenTreeFormsContext = {
stockActions: StockAdjustmentFormsContext; stockActions: StockAdjustmentFormsContext;
}; };
export type ImporterDrawerContext = {
open: (sessionId: number, options?: { onClose?: () => void }) => void;
close: () => void;
isOpen: () => boolean;
sessionId: () => number | null;
};
/** /**
* A set of properties which are passed to a plugin, * A set of properties which are passed to a plugin,
* for rendering an element in the user interface. * for rendering an element in the user interface.
@@ -59,6 +66,8 @@ export type InvenTreeFormsContext = {
* @param globalSettings - The global settings (see ../states/SettingsState.tsx) * @param globalSettings - The global settings (see ../states/SettingsState.tsx)
* @param navigate - The navigation function (see react-router-dom) * @param navigate - The navigation function (see react-router-dom)
* @param theme - The current Mantine theme * @param theme - The current Mantine theme
* @param forms - A set of functions for opening various API forms (see ../components/Forms.tsx)
* @param importer - A set of functions for controlling the global importer drawer (see ../components/importer/GlobalImporterDrawer.tsx)
* @param colorScheme - The current Mantine color scheme (e.g. 'light' / 'dark') * @param colorScheme - The current Mantine color scheme (e.g. 'light' / 'dark')
* @param host - The current host URL * @param host - The current host URL
* @param i18n - The i18n instance for translations (from @lingui/core) * @param i18n - The i18n instance for translations (from @lingui/core)
@@ -87,6 +96,7 @@ export type InvenTreePluginContext = {
navigate: NavigateFunction; navigate: NavigateFunction;
theme: MantineTheme; theme: MantineTheme;
forms: InvenTreeFormsContext; forms: InvenTreeFormsContext;
importer: ImporterDrawerContext;
colorScheme: MantineColorScheme; colorScheme: MantineColorScheme;
model?: ModelType | string; model?: ModelType | string;
id?: string | number | null; id?: string | number | null;
@@ -36,6 +36,12 @@ import {
useDeleteApiFormModal, useDeleteApiFormModal,
useEditApiFormModal useEditApiFormModal
} from '../../hooks/UseForm'; } from '../../hooks/UseForm';
import {
type ImporterOpenOptions,
closeGlobalImporter,
getGlobalImporterState,
openGlobalImporter
} from '../../states/ImporterState';
import { useServerApiState } from '../../states/ServerApiState'; import { useServerApiState } from '../../states/ServerApiState';
import { RenderInstance } from '../render/Instance'; import { RenderInstance } from '../render/Instance';
@@ -70,6 +76,13 @@ export const useInvenTreeContext = () => {
renderInstance: RenderInstance, renderInstance: RenderInstance,
theme: theme, theme: theme,
colorScheme: colorScheme, colorScheme: colorScheme,
importer: {
open: (sessionId: number, options?: ImporterOpenOptions) =>
openGlobalImporter(sessionId, options),
close: () => closeGlobalImporter(),
isOpen: () => getGlobalImporterState().isOpen,
sessionId: () => getGlobalImporterState().sessionId
},
forms: { forms: {
bulkEdit: useBulkEditApiFormModal, bulkEdit: useBulkEditApiFormModal,
create: useCreateApiFormModal, create: useCreateApiFormModal,