mirror of
https://github.com/inventree/InvenTree.git
synced 2026-05-17 23:08:28 +00:00
[UI] Panel indicator badges (#11956)
* Refactor panel indicator dots - Allow indicator status to be fetched async * Add indicator dot for attachments * Support parameters panel * Refactor - Expose more types to @lib - Define new PanelIndicatorType type - Support old interface
This commit is contained in:
@@ -21,6 +21,12 @@ export type {
|
|||||||
StockAdjustmentFormsContext
|
StockAdjustmentFormsContext
|
||||||
} from './types/Plugins';
|
} from './types/Plugins';
|
||||||
|
|
||||||
|
export type {
|
||||||
|
PanelIndicatorType,
|
||||||
|
PanelType,
|
||||||
|
PanelGroupType
|
||||||
|
} from './types/Panel';
|
||||||
|
|
||||||
export type {
|
export type {
|
||||||
RowAction,
|
RowAction,
|
||||||
RowViewProps,
|
RowViewProps,
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
import type { ReactNode } from 'react';
|
import type { ReactNode } from 'react';
|
||||||
|
|
||||||
|
// The type of indicator dot to be shown against a panel
|
||||||
|
export type PanelIndicatorType = 'info' | 'warning' | 'danger' | null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Type used to specify a single panel in a panel group
|
* Type used to specify a single panel in a panel group
|
||||||
*/
|
*/
|
||||||
@@ -8,7 +11,7 @@ export type PanelType = {
|
|||||||
label: string;
|
label: string;
|
||||||
controls?: ReactNode;
|
controls?: ReactNode;
|
||||||
icon?: ReactNode;
|
icon?: ReactNode;
|
||||||
notification_dot?: 'info' | 'warning' | 'danger' | null;
|
notification_dot?: PanelIndicatorType | (() => Promise<PanelIndicatorType>);
|
||||||
content?: ReactNode;
|
content?: ReactNode;
|
||||||
hidden?: boolean;
|
hidden?: boolean;
|
||||||
disabled?: boolean;
|
disabled?: boolean;
|
||||||
@@ -16,6 +19,9 @@ export type PanelType = {
|
|||||||
supportsDirty?: boolean;
|
supportsDirty?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Type used to specify a group of panels
|
||||||
|
*/
|
||||||
export type PanelGroupType = {
|
export type PanelGroupType = {
|
||||||
id: string;
|
id: string;
|
||||||
label: string;
|
label: string;
|
||||||
@@ -3,8 +3,10 @@ import { Skeleton } from '@mantine/core';
|
|||||||
import { IconPaperclip } from '@tabler/icons-react';
|
import { IconPaperclip } from '@tabler/icons-react';
|
||||||
|
|
||||||
import type { ModelType } from '@lib/enums/ModelType';
|
import type { ModelType } from '@lib/enums/ModelType';
|
||||||
|
import { ApiEndpoints, apiUrl } from '@lib/index';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
|
import { api } from '../../App';
|
||||||
import { AttachmentTable } from '../../tables/general/AttachmentTable';
|
import { AttachmentTable } from '../../tables/general/AttachmentTable';
|
||||||
import type { PanelType } from './Panel';
|
|
||||||
|
|
||||||
export default function AttachmentPanel({
|
export default function AttachmentPanel({
|
||||||
model_type,
|
model_type,
|
||||||
@@ -17,6 +19,21 @@ export default function AttachmentPanel({
|
|||||||
name: 'attachments',
|
name: 'attachments',
|
||||||
label: t`Attachments`,
|
label: t`Attachments`,
|
||||||
icon: <IconPaperclip />,
|
icon: <IconPaperclip />,
|
||||||
|
notification_dot: async () => {
|
||||||
|
if (!model_type || !model_id) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return api
|
||||||
|
.get(apiUrl(ApiEndpoints.attachment_list), {
|
||||||
|
params: {
|
||||||
|
model_type: model_type,
|
||||||
|
model_id: model_id,
|
||||||
|
limit: 1
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then((response) => ((response.data?.count ?? 0) > 0 ? 'info' : null));
|
||||||
|
},
|
||||||
content:
|
content:
|
||||||
model_type && model_id ? (
|
model_type && model_id ? (
|
||||||
<AttachmentTable model_type={model_type} model_id={model_id} />
|
<AttachmentTable model_type={model_type} model_id={model_id} />
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ import { Skeleton } from '@mantine/core';
|
|||||||
import { IconNotes } from '@tabler/icons-react';
|
import { IconNotes } from '@tabler/icons-react';
|
||||||
|
|
||||||
import type { ModelType } from '@lib/enums/ModelType';
|
import type { ModelType } from '@lib/enums/ModelType';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import { lazy } from 'react';
|
import { lazy } from 'react';
|
||||||
import { useUserState } from '../../states/UserState';
|
import { useUserState } from '../../states/UserState';
|
||||||
import type { PanelType } from './Panel';
|
|
||||||
|
|
||||||
const NotesEditor = lazy(() => import('../editors/NotesEditor'));
|
const NotesEditor = lazy(() => import('../editors/NotesEditor'));
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import {
|
|||||||
Group,
|
Group,
|
||||||
Indicator,
|
Indicator,
|
||||||
Loader,
|
Loader,
|
||||||
|
type MantineColor,
|
||||||
Paper,
|
Paper,
|
||||||
Stack,
|
Stack,
|
||||||
Tabs,
|
Tabs,
|
||||||
@@ -39,14 +40,19 @@ import { identifierString } from '@lib/functions/Conversion';
|
|||||||
import { cancelEvent } from '@lib/functions/Events';
|
import { cancelEvent } from '@lib/functions/Events';
|
||||||
import { eventModified, getBaseUrl } from '@lib/functions/Navigation';
|
import { eventModified, getBaseUrl } from '@lib/functions/Navigation';
|
||||||
import { navigateToLink } from '@lib/functions/Navigation';
|
import { navigateToLink } from '@lib/functions/Navigation';
|
||||||
|
import type {
|
||||||
|
PanelGroupType,
|
||||||
|
PanelIndicatorType,
|
||||||
|
PanelType
|
||||||
|
} from '@lib/types/Panel';
|
||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { useWindowEvent } from '@mantine/hooks';
|
import { useDocumentVisibility, useWindowEvent } from '@mantine/hooks';
|
||||||
|
import { useQuery } from '@tanstack/react-query';
|
||||||
import { useShallow } from 'zustand/react/shallow';
|
import { useShallow } from 'zustand/react/shallow';
|
||||||
import { generateUrl } from '../../functions/urls';
|
import { generateUrl } from '../../functions/urls';
|
||||||
import { usePluginPanels } from '../../hooks/UsePluginPanels';
|
import { usePluginPanels } from '../../hooks/UsePluginPanels';
|
||||||
import { useLocalState } from '../../states/LocalState';
|
import { useLocalState } from '../../states/LocalState';
|
||||||
import { vars } from '../../theme';
|
import { vars } from '../../theme';
|
||||||
import type { PanelGroupType, PanelType } from '../panels/Panel';
|
|
||||||
import * as classes from './PanelGroup.css';
|
import * as classes from './PanelGroup.css';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -79,6 +85,99 @@ export type PanelProps = {
|
|||||||
pluginPanelKey?: PluginPanelKey;
|
pluginPanelKey?: PluginPanelKey;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Render a single panel tab within the side menu
|
||||||
|
*/
|
||||||
|
function PanelTabComponent({
|
||||||
|
expanded,
|
||||||
|
panel,
|
||||||
|
onClick
|
||||||
|
}: {
|
||||||
|
expanded: boolean;
|
||||||
|
panel: PanelType;
|
||||||
|
onClick: (event: any) => void;
|
||||||
|
}) {
|
||||||
|
const visibility = useDocumentVisibility();
|
||||||
|
|
||||||
|
// Check if we should display an indicator dot for this panel
|
||||||
|
const notificationDot = useQuery({
|
||||||
|
enabled: panel.notification_dot !== undefined && visibility === 'visible',
|
||||||
|
queryKey: ['panel-notification', panel.name],
|
||||||
|
queryFn: async () => {
|
||||||
|
if (panel.notification_dot === undefined) {
|
||||||
|
return null;
|
||||||
|
} else if (typeof panel.notification_dot === 'function') {
|
||||||
|
return await panel.notification_dot();
|
||||||
|
} else {
|
||||||
|
return panel.notification_dot as PanelIndicatorType;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
staleTime: 5 * 60 * 1000, // cache for 5 minutes
|
||||||
|
refetchOnMount: false,
|
||||||
|
refetchOnWindowFocus: false
|
||||||
|
});
|
||||||
|
|
||||||
|
const indicatorColor: MantineColor | undefined = useMemo(() => {
|
||||||
|
switch (notificationDot.data) {
|
||||||
|
case 'info':
|
||||||
|
return 'blue';
|
||||||
|
case 'warning':
|
||||||
|
return 'yellow';
|
||||||
|
case 'danger':
|
||||||
|
return 'red';
|
||||||
|
default:
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
}, [notificationDot.data]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Tooltip
|
||||||
|
label={panel.label ?? panel.name}
|
||||||
|
key={panel.name}
|
||||||
|
disabled={expanded}
|
||||||
|
position='right'
|
||||||
|
>
|
||||||
|
<Tabs.Tab
|
||||||
|
p='xs'
|
||||||
|
key={`panel-label-${panel.name}`}
|
||||||
|
w={'100%'}
|
||||||
|
value={panel.name}
|
||||||
|
leftSection={
|
||||||
|
<Indicator
|
||||||
|
position='top-end'
|
||||||
|
disabled={!indicatorColor}
|
||||||
|
color={indicatorColor}
|
||||||
|
withBorder
|
||||||
|
size={14}
|
||||||
|
>
|
||||||
|
{panel.icon}
|
||||||
|
</Indicator>
|
||||||
|
}
|
||||||
|
hidden={panel.hidden}
|
||||||
|
disabled={panel.disabled}
|
||||||
|
style={{
|
||||||
|
cursor: panel.disabled ? 'unset' : 'pointer'
|
||||||
|
}}
|
||||||
|
onClick={(event: any) => onClick(event)}
|
||||||
|
>
|
||||||
|
<Group justify='left' gap='xs' wrap='nowrap'>
|
||||||
|
<UnstyledButton
|
||||||
|
component={'a'}
|
||||||
|
style={{
|
||||||
|
textAlign: 'left'
|
||||||
|
}}
|
||||||
|
href={generateUrl(
|
||||||
|
`/${getBaseUrl()}${location.pathname}/${panel.name}`
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
{expanded && panel.label}
|
||||||
|
</UnstyledButton>
|
||||||
|
</Group>
|
||||||
|
</Tabs.Tab>
|
||||||
|
</Tooltip>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function BasePanelGroup({
|
function BasePanelGroup({
|
||||||
pageKey,
|
pageKey,
|
||||||
panels,
|
panels,
|
||||||
@@ -269,54 +368,13 @@ function BasePanelGroup({
|
|||||||
{group.panels?.map(
|
{group.panels?.map(
|
||||||
(panel) =>
|
(panel) =>
|
||||||
!panel.hidden && (
|
!panel.hidden && (
|
||||||
<Tooltip
|
<PanelTabComponent
|
||||||
label={panel.label ?? panel.name}
|
expanded={expanded}
|
||||||
key={panel.name}
|
panel={panel}
|
||||||
disabled={expanded}
|
|
||||||
position='right'
|
|
||||||
>
|
|
||||||
<Tabs.Tab
|
|
||||||
p='xs'
|
|
||||||
key={`panel-label-${panel.name}`}
|
|
||||||
w={'100%'}
|
|
||||||
value={panel.name}
|
|
||||||
leftSection={panel.icon}
|
|
||||||
hidden={panel.hidden}
|
|
||||||
disabled={panel.disabled}
|
|
||||||
style={{
|
|
||||||
cursor: panel.disabled ? 'unset' : 'pointer'
|
|
||||||
}}
|
|
||||||
onClick={(event: any) =>
|
onClick={(event: any) =>
|
||||||
handlePanelChange(panel.name, event)
|
handlePanelChange(panel.name, event)
|
||||||
}
|
}
|
||||||
>
|
/>
|
||||||
<Indicator
|
|
||||||
color={
|
|
||||||
panel.notification_dot == 'info'
|
|
||||||
? 'blue'
|
|
||||||
: panel.notification_dot == 'warning'
|
|
||||||
? 'yellow'
|
|
||||||
: 'red'
|
|
||||||
}
|
|
||||||
position='middle-end'
|
|
||||||
disabled={!panel.notification_dot}
|
|
||||||
>
|
|
||||||
<Group justify='left' gap='xs' wrap='nowrap'>
|
|
||||||
<UnstyledButton
|
|
||||||
component={'a'}
|
|
||||||
style={{
|
|
||||||
textAlign: 'left'
|
|
||||||
}}
|
|
||||||
href={generateUrl(
|
|
||||||
`/${getBaseUrl()}${location.pathname}/${panel.name}`
|
|
||||||
)}
|
|
||||||
>
|
|
||||||
{expanded && panel.label}
|
|
||||||
</UnstyledButton>
|
|
||||||
</Group>
|
|
||||||
</Indicator>
|
|
||||||
</Tabs.Tab>
|
|
||||||
</Tooltip>
|
|
||||||
)
|
)
|
||||||
)}
|
)}
|
||||||
</Box>
|
</Box>
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import type { ModelType } from '@lib/enums/ModelType';
|
import type { ModelType } from '@lib/enums/ModelType';
|
||||||
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { Skeleton } from '@mantine/core';
|
import { Skeleton } from '@mantine/core';
|
||||||
import { IconListDetails } from '@tabler/icons-react';
|
import { IconListDetails } from '@tabler/icons-react';
|
||||||
|
import { api } from '../../App';
|
||||||
import { ParameterTable } from '../../tables/general/ParameterTable';
|
import { ParameterTable } from '../../tables/general/ParameterTable';
|
||||||
import type { PanelType } from './Panel';
|
|
||||||
|
|
||||||
export default function ParametersPanel({
|
export default function ParametersPanel({
|
||||||
model_type,
|
model_type,
|
||||||
@@ -21,6 +24,21 @@ export default function ParametersPanel({
|
|||||||
label: t`Parameters`,
|
label: t`Parameters`,
|
||||||
icon: <IconListDetails />,
|
icon: <IconListDetails />,
|
||||||
hidden: hidden ?? false,
|
hidden: hidden ?? false,
|
||||||
|
notification_dot: async () => {
|
||||||
|
if (!model_type || !model_id) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return api
|
||||||
|
.get(apiUrl(ApiEndpoints.parameter_list), {
|
||||||
|
params: {
|
||||||
|
model_type: model_type,
|
||||||
|
model_id: model_id,
|
||||||
|
limit: 1
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then((response) => ((response.data?.count ?? 0) > 0 ? 'info' : null));
|
||||||
|
},
|
||||||
content:
|
content:
|
||||||
model_type && model_id ? (
|
model_type && model_id ? (
|
||||||
<ParameterTable
|
<ParameterTable
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import SegmentedIconControl from '../buttons/SegmentedIconControl';
|
import SegmentedIconControl from '../buttons/SegmentedIconControl';
|
||||||
import type { PanelType } from './Panel';
|
|
||||||
|
|
||||||
export type SegmentedControlPanelSelection = {
|
export type SegmentedControlPanelSelection = {
|
||||||
value: string;
|
value: string;
|
||||||
|
|||||||
@@ -4,10 +4,10 @@ import { useMemo } from 'react';
|
|||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import type { ModelType, PluginPanelKey } from '@lib/enums/ModelType';
|
import type { ModelType, PluginPanelKey } from '@lib/enums/ModelType';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import type { InvenTreePluginContext } from '@lib/types/Plugins';
|
import type { InvenTreePluginContext } from '@lib/types/Plugins';
|
||||||
import { api } from '../App';
|
import { api } from '../App';
|
||||||
import { ApiIcon } from '../components/items/ApiIcon';
|
import { ApiIcon } from '../components/items/ApiIcon';
|
||||||
import type { PanelType } from '../components/panels/Panel';
|
|
||||||
import { useInvenTreeContext } from '../components/plugins/PluginContext';
|
import { useInvenTreeContext } from '../components/plugins/PluginContext';
|
||||||
import PluginPanelContent from '../components/plugins/PluginPanel';
|
import PluginPanelContent from '../components/plugins/PluginPanel';
|
||||||
import {
|
import {
|
||||||
|
|||||||
@@ -24,13 +24,10 @@ import { lazy, useMemo } from 'react';
|
|||||||
|
|
||||||
import { PluginPanelKey } from '@lib/enums/ModelType';
|
import { PluginPanelKey } from '@lib/enums/ModelType';
|
||||||
import { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
|
import type { PanelGroupType, PanelType } from '@lib/types/Panel';
|
||||||
import PermissionDenied from '../../../../components/errors/PermissionDenied';
|
import PermissionDenied from '../../../../components/errors/PermissionDenied';
|
||||||
import PageTitle from '../../../../components/nav/PageTitle';
|
import PageTitle from '../../../../components/nav/PageTitle';
|
||||||
import { SettingsHeader } from '../../../../components/nav/SettingsHeader';
|
import { SettingsHeader } from '../../../../components/nav/SettingsHeader';
|
||||||
import type {
|
|
||||||
PanelGroupType,
|
|
||||||
PanelType
|
|
||||||
} from '../../../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../../../components/panels/PanelGroup';
|
||||||
import { GlobalSettingList } from '../../../../components/settings/SettingList';
|
import { GlobalSettingList } from '../../../../components/settings/SettingList';
|
||||||
import { Loadable } from '../../../../functions/loading';
|
import { Loadable } from '../../../../functions/loading';
|
||||||
|
|||||||
@@ -18,11 +18,11 @@ import {
|
|||||||
import { lazy, useMemo } from 'react';
|
import { lazy, useMemo } from 'react';
|
||||||
|
|
||||||
import { PluginPanelKey } from '@lib/enums/ModelType';
|
import { PluginPanelKey } from '@lib/enums/ModelType';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import { useShallow } from 'zustand/react/shallow';
|
import { useShallow } from 'zustand/react/shallow';
|
||||||
import PermissionDenied from '../../../components/errors/PermissionDenied';
|
import PermissionDenied from '../../../components/errors/PermissionDenied';
|
||||||
import PageTitle from '../../../components/nav/PageTitle';
|
import PageTitle from '../../../components/nav/PageTitle';
|
||||||
import { SettingsHeader } from '../../../components/nav/SettingsHeader';
|
import { SettingsHeader } from '../../../components/nav/SettingsHeader';
|
||||||
import type { PanelType } from '../../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../../components/panels/PanelGroup';
|
||||||
import { GlobalSettingList } from '../../../components/settings/SettingList';
|
import { GlobalSettingList } from '../../../components/settings/SettingList';
|
||||||
import { Loadable } from '../../../functions/loading';
|
import { Loadable } from '../../../functions/loading';
|
||||||
|
|||||||
@@ -12,10 +12,10 @@ import {
|
|||||||
import { lazy, useMemo } from 'react';
|
import { lazy, useMemo } from 'react';
|
||||||
|
|
||||||
import { PluginPanelKey } from '@lib/enums/ModelType';
|
import { PluginPanelKey } from '@lib/enums/ModelType';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import { useShallow } from 'zustand/react/shallow';
|
import { useShallow } from 'zustand/react/shallow';
|
||||||
import PageTitle from '../../../components/nav/PageTitle';
|
import PageTitle from '../../../components/nav/PageTitle';
|
||||||
import { SettingsHeader } from '../../../components/nav/SettingsHeader';
|
import { SettingsHeader } from '../../../components/nav/SettingsHeader';
|
||||||
import type { PanelType } from '../../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../../components/panels/PanelGroup';
|
||||||
import { UserSettingList } from '../../../components/settings/SettingList';
|
import { UserSettingList } from '../../../components/settings/SettingList';
|
||||||
import { Loadable } from '../../../functions/loading';
|
import { Loadable } from '../../../functions/loading';
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import { UserRoles } from '@lib/enums/Roles';
|
|||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import { getDetailUrl } from '@lib/functions/Navigation';
|
import { getDetailUrl } from '@lib/functions/Navigation';
|
||||||
import type { ApiFormFieldSet } from '@lib/types/Forms';
|
import type { ApiFormFieldSet } from '@lib/types/Forms';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import AdminButton from '../../components/buttons/AdminButton';
|
import AdminButton from '../../components/buttons/AdminButton';
|
||||||
import PrimaryActionButton from '../../components/buttons/PrimaryActionButton';
|
import PrimaryActionButton from '../../components/buttons/PrimaryActionButton';
|
||||||
import { PrintingActions } from '../../components/buttons/PrintingActions';
|
import { PrintingActions } from '../../components/buttons/PrintingActions';
|
||||||
@@ -44,7 +45,6 @@ import InstanceDetail from '../../components/nav/InstanceDetail';
|
|||||||
import { PageDetail } from '../../components/nav/PageDetail';
|
import { PageDetail } from '../../components/nav/PageDetail';
|
||||||
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
||||||
import NotesPanel from '../../components/panels/NotesPanel';
|
import NotesPanel from '../../components/panels/NotesPanel';
|
||||||
import type { PanelType } from '../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||||
import ParametersPanel from '../../components/panels/ParametersPanel';
|
import ParametersPanel from '../../components/panels/ParametersPanel';
|
||||||
import { StatusRenderer } from '../../components/render/StatusRenderer';
|
import { StatusRenderer } from '../../components/render/StatusRenderer';
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ import { useMemo } from 'react';
|
|||||||
import { ModelType, PluginPanelKey } from '@lib/enums/ModelType';
|
import { ModelType, PluginPanelKey } from '@lib/enums/ModelType';
|
||||||
import { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
import type { TableFilter } from '@lib/types/Filters';
|
import type { TableFilter } from '@lib/types/Filters';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import { useLocalStorage } from '@mantine/hooks';
|
import { useLocalStorage } from '@mantine/hooks';
|
||||||
import OrderCalendar from '../../components/calendar/OrderCalendar';
|
import OrderCalendar from '../../components/calendar/OrderCalendar';
|
||||||
import PermissionDenied from '../../components/errors/PermissionDenied';
|
import PermissionDenied from '../../components/errors/PermissionDenied';
|
||||||
import { PageDetail } from '../../components/nav/PageDetail';
|
import { PageDetail } from '../../components/nav/PageDetail';
|
||||||
import type { PanelType } from '../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||||
import SegmentedControlPanel from '../../components/panels/SegmentedControlPanel';
|
import SegmentedControlPanel from '../../components/panels/SegmentedControlPanel';
|
||||||
import { useGlobalSettingsState } from '../../states/SettingsStates';
|
import { useGlobalSettingsState } from '../../states/SettingsStates';
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
|||||||
import { ModelType } from '@lib/enums/ModelType';
|
import { ModelType } from '@lib/enums/ModelType';
|
||||||
import { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import AdminButton from '../../components/buttons/AdminButton';
|
import AdminButton from '../../components/buttons/AdminButton';
|
||||||
import { PrintingActions } from '../../components/buttons/PrintingActions';
|
import { PrintingActions } from '../../components/buttons/PrintingActions';
|
||||||
import {
|
import {
|
||||||
@@ -37,7 +38,6 @@ import InstanceDetail from '../../components/nav/InstanceDetail';
|
|||||||
import { PageDetail } from '../../components/nav/PageDetail';
|
import { PageDetail } from '../../components/nav/PageDetail';
|
||||||
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
||||||
import NotesPanel from '../../components/panels/NotesPanel';
|
import NotesPanel from '../../components/panels/NotesPanel';
|
||||||
import type { PanelType } from '../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||||
import ParametersPanel from '../../components/panels/ParametersPanel';
|
import ParametersPanel from '../../components/panels/ParametersPanel';
|
||||||
import { companyFields } from '../../forms/CompanyForms';
|
import { companyFields } from '../../forms/CompanyForms';
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { ModelType } from '@lib/enums/ModelType';
|
|||||||
import { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import { getDetailUrl } from '@lib/functions/Navigation';
|
import { getDetailUrl } from '@lib/functions/Navigation';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import AdminButton from '../../components/buttons/AdminButton';
|
import AdminButton from '../../components/buttons/AdminButton';
|
||||||
import {
|
import {
|
||||||
type DetailsField,
|
type DetailsField,
|
||||||
@@ -30,7 +31,6 @@ import InstanceDetail from '../../components/nav/InstanceDetail';
|
|||||||
import { PageDetail } from '../../components/nav/PageDetail';
|
import { PageDetail } from '../../components/nav/PageDetail';
|
||||||
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
||||||
import NotesPanel from '../../components/panels/NotesPanel';
|
import NotesPanel from '../../components/panels/NotesPanel';
|
||||||
import type { PanelType } from '../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||||
import ParametersPanel from '../../components/panels/ParametersPanel';
|
import ParametersPanel from '../../components/panels/ParametersPanel';
|
||||||
import { useManufacturerPartFields } from '../../forms/CompanyForms';
|
import { useManufacturerPartFields } from '../../forms/CompanyForms';
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import { UserRoles } from '@lib/enums/Roles';
|
|||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import { formatDecimal } from '@lib/functions/Formatting';
|
import { formatDecimal } from '@lib/functions/Formatting';
|
||||||
import { getDetailUrl } from '@lib/functions/Navigation';
|
import { getDetailUrl } from '@lib/functions/Navigation';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import AdminButton from '../../components/buttons/AdminButton';
|
import AdminButton from '../../components/buttons/AdminButton';
|
||||||
import {
|
import {
|
||||||
type DetailsField,
|
type DetailsField,
|
||||||
@@ -34,7 +35,6 @@ import InstanceDetail from '../../components/nav/InstanceDetail';
|
|||||||
import { PageDetail } from '../../components/nav/PageDetail';
|
import { PageDetail } from '../../components/nav/PageDetail';
|
||||||
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
||||||
import NotesPanel from '../../components/panels/NotesPanel';
|
import NotesPanel from '../../components/panels/NotesPanel';
|
||||||
import type { PanelType } from '../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||||
import ParametersPanel from '../../components/panels/ParametersPanel';
|
import ParametersPanel from '../../components/panels/ParametersPanel';
|
||||||
import { useSupplierPartFields } from '../../forms/CompanyForms';
|
import { useSupplierPartFields } from '../../forms/CompanyForms';
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { StylishText } from '@lib/components/StylishText';
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { ModelType } from '@lib/enums/ModelType';
|
import { ModelType } from '@lib/enums/ModelType';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { Paper, Skeleton, Stack } from '@mantine/core';
|
import { Paper, Skeleton, Stack } from '@mantine/core';
|
||||||
import { IconInfoCircle } from '@tabler/icons-react';
|
import { IconInfoCircle } from '@tabler/icons-react';
|
||||||
@@ -15,7 +16,6 @@ import {} from '../../components/items/ActionDropdown';
|
|||||||
import { RoleTable, type RuleSet } from '../../components/items/RoleTable';
|
import { RoleTable, type RuleSet } from '../../components/items/RoleTable';
|
||||||
import InstanceDetail from '../../components/nav/InstanceDetail';
|
import InstanceDetail from '../../components/nav/InstanceDetail';
|
||||||
import { PageDetail } from '../../components/nav/PageDetail';
|
import { PageDetail } from '../../components/nav/PageDetail';
|
||||||
import type { PanelType } from '../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||||
import {} from '../../hooks/UseForm';
|
import {} from '../../hooks/UseForm';
|
||||||
import { useInstance } from '../../hooks/UseInstance';
|
import { useInstance } from '../../hooks/UseInstance';
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { ModelType } from '@lib/enums/ModelType';
|
import { ModelType } from '@lib/enums/ModelType';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { Badge, Group, Skeleton, Stack } from '@mantine/core';
|
import { Badge, Group, Skeleton, Stack } from '@mantine/core';
|
||||||
import { IconInfoCircle } from '@tabler/icons-react';
|
import { IconInfoCircle } from '@tabler/icons-react';
|
||||||
@@ -13,7 +14,6 @@ import { ItemDetailsGrid } from '../../components/details/ItemDetails';
|
|||||||
import {} from '../../components/items/ActionDropdown';
|
import {} from '../../components/items/ActionDropdown';
|
||||||
import InstanceDetail from '../../components/nav/InstanceDetail';
|
import InstanceDetail from '../../components/nav/InstanceDetail';
|
||||||
import { PageDetail } from '../../components/nav/PageDetail';
|
import { PageDetail } from '../../components/nav/PageDetail';
|
||||||
import type { PanelType } from '../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||||
import {} from '../../hooks/UseForm';
|
import {} from '../../hooks/UseForm';
|
||||||
import { useInstance } from '../../hooks/UseInstance';
|
import { useInstance } from '../../hooks/UseInstance';
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
|||||||
import { ModelType } from '@lib/enums/ModelType';
|
import { ModelType } from '@lib/enums/ModelType';
|
||||||
import { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
import { getDetailUrl } from '@lib/functions/Navigation';
|
import { getDetailUrl } from '@lib/functions/Navigation';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import { useLocalStorage } from '@mantine/hooks';
|
import { useLocalStorage } from '@mantine/hooks';
|
||||||
import AdminButton from '../../components/buttons/AdminButton';
|
import AdminButton from '../../components/buttons/AdminButton';
|
||||||
import StarredToggleButton from '../../components/buttons/StarredToggleButton';
|
import StarredToggleButton from '../../components/buttons/StarredToggleButton';
|
||||||
@@ -33,7 +34,6 @@ import { ApiIcon } from '../../components/items/ApiIcon';
|
|||||||
import InstanceDetail from '../../components/nav/InstanceDetail';
|
import InstanceDetail from '../../components/nav/InstanceDetail';
|
||||||
import NavigationTree from '../../components/nav/NavigationTree';
|
import NavigationTree from '../../components/nav/NavigationTree';
|
||||||
import { PageDetail } from '../../components/nav/PageDetail';
|
import { PageDetail } from '../../components/nav/PageDetail';
|
||||||
import type { PanelType } from '../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||||
import SegmentedControlPanel from '../../components/panels/SegmentedControlPanel';
|
import SegmentedControlPanel from '../../components/panels/SegmentedControlPanel';
|
||||||
import { partCategoryFields } from '../../forms/PartForms';
|
import { partCategoryFields } from '../../forms/PartForms';
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ import { UserRoles } from '@lib/enums/Roles';
|
|||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import { getDetailUrl } from '@lib/functions/Navigation';
|
import { getDetailUrl } from '@lib/functions/Navigation';
|
||||||
import type { StockOperationProps } from '@lib/types/Forms';
|
import type { StockOperationProps } from '@lib/types/Forms';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import AdminButton from '../../components/buttons/AdminButton';
|
import AdminButton from '../../components/buttons/AdminButton';
|
||||||
import { PrintingActions } from '../../components/buttons/PrintingActions';
|
import { PrintingActions } from '../../components/buttons/PrintingActions';
|
||||||
import StarredToggleButton from '../../components/buttons/StarredToggleButton';
|
import StarredToggleButton from '../../components/buttons/StarredToggleButton';
|
||||||
@@ -68,7 +69,6 @@ import NavigationTree from '../../components/nav/NavigationTree';
|
|||||||
import { PageDetail } from '../../components/nav/PageDetail';
|
import { PageDetail } from '../../components/nav/PageDetail';
|
||||||
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
||||||
import NotesPanel from '../../components/panels/NotesPanel';
|
import NotesPanel from '../../components/panels/NotesPanel';
|
||||||
import type { PanelType } from '../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||||
import { RenderPart } from '../../components/render/Part';
|
import { RenderPart } from '../../components/render/Part';
|
||||||
import OrderPartsWizard from '../../components/wizards/OrderPartsWizard';
|
import OrderPartsWizard from '../../components/wizards/OrderPartsWizard';
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
|||||||
import { ModelType } from '@lib/enums/ModelType';
|
import { ModelType } from '@lib/enums/ModelType';
|
||||||
import { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import AdminButton from '../../components/buttons/AdminButton';
|
import AdminButton from '../../components/buttons/AdminButton';
|
||||||
import PrimaryActionButton from '../../components/buttons/PrimaryActionButton';
|
import PrimaryActionButton from '../../components/buttons/PrimaryActionButton';
|
||||||
import { PrintingActions } from '../../components/buttons/PrintingActions';
|
import { PrintingActions } from '../../components/buttons/PrintingActions';
|
||||||
@@ -30,7 +31,6 @@ import InstanceDetail from '../../components/nav/InstanceDetail';
|
|||||||
import { PageDetail } from '../../components/nav/PageDetail';
|
import { PageDetail } from '../../components/nav/PageDetail';
|
||||||
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
||||||
import NotesPanel from '../../components/panels/NotesPanel';
|
import NotesPanel from '../../components/panels/NotesPanel';
|
||||||
import type { PanelType } from '../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||||
import ParametersPanel from '../../components/panels/ParametersPanel';
|
import ParametersPanel from '../../components/panels/ParametersPanel';
|
||||||
import { StatusRenderer } from '../../components/render/StatusRenderer';
|
import { StatusRenderer } from '../../components/render/StatusRenderer';
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
|||||||
import { ModelType } from '@lib/enums/ModelType';
|
import { ModelType } from '@lib/enums/ModelType';
|
||||||
import { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import AdminButton from '../../components/buttons/AdminButton';
|
import AdminButton from '../../components/buttons/AdminButton';
|
||||||
import PrimaryActionButton from '../../components/buttons/PrimaryActionButton';
|
import PrimaryActionButton from '../../components/buttons/PrimaryActionButton';
|
||||||
import { PrintingActions } from '../../components/buttons/PrintingActions';
|
import { PrintingActions } from '../../components/buttons/PrintingActions';
|
||||||
@@ -30,7 +31,6 @@ import InstanceDetail from '../../components/nav/InstanceDetail';
|
|||||||
import { PageDetail } from '../../components/nav/PageDetail';
|
import { PageDetail } from '../../components/nav/PageDetail';
|
||||||
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
||||||
import NotesPanel from '../../components/panels/NotesPanel';
|
import NotesPanel from '../../components/panels/NotesPanel';
|
||||||
import type { PanelType } from '../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||||
import ParametersPanel from '../../components/panels/ParametersPanel';
|
import ParametersPanel from '../../components/panels/ParametersPanel';
|
||||||
import { RenderAddress } from '../../components/render/Company';
|
import { RenderAddress } from '../../components/render/Company';
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
|||||||
import { ModelType } from '@lib/enums/ModelType';
|
import { ModelType } from '@lib/enums/ModelType';
|
||||||
import { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import AdminButton from '../../components/buttons/AdminButton';
|
import AdminButton from '../../components/buttons/AdminButton';
|
||||||
import PrimaryActionButton from '../../components/buttons/PrimaryActionButton';
|
import PrimaryActionButton from '../../components/buttons/PrimaryActionButton';
|
||||||
import { PrintingActions } from '../../components/buttons/PrintingActions';
|
import { PrintingActions } from '../../components/buttons/PrintingActions';
|
||||||
@@ -36,7 +37,6 @@ import InstanceDetail from '../../components/nav/InstanceDetail';
|
|||||||
import { PageDetail } from '../../components/nav/PageDetail';
|
import { PageDetail } from '../../components/nav/PageDetail';
|
||||||
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
||||||
import NotesPanel from '../../components/panels/NotesPanel';
|
import NotesPanel from '../../components/panels/NotesPanel';
|
||||||
import type { PanelType } from '../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||||
import ParametersPanel from '../../components/panels/ParametersPanel';
|
import ParametersPanel from '../../components/panels/ParametersPanel';
|
||||||
import { RenderAddress } from '../../components/render/Company';
|
import { RenderAddress } from '../../components/render/Company';
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
|||||||
import { ModelType } from '@lib/enums/ModelType';
|
import { ModelType } from '@lib/enums/ModelType';
|
||||||
import { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
import { getDetailUrl } from '@lib/functions/Navigation';
|
import { getDetailUrl } from '@lib/functions/Navigation';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import AdminButton from '../../components/buttons/AdminButton';
|
import AdminButton from '../../components/buttons/AdminButton';
|
||||||
import PrimaryActionButton from '../../components/buttons/PrimaryActionButton';
|
import PrimaryActionButton from '../../components/buttons/PrimaryActionButton';
|
||||||
import { PrintingActions } from '../../components/buttons/PrintingActions';
|
import { PrintingActions } from '../../components/buttons/PrintingActions';
|
||||||
@@ -33,7 +34,6 @@ import InstanceDetail from '../../components/nav/InstanceDetail';
|
|||||||
import { PageDetail } from '../../components/nav/PageDetail';
|
import { PageDetail } from '../../components/nav/PageDetail';
|
||||||
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
||||||
import NotesPanel from '../../components/panels/NotesPanel';
|
import NotesPanel from '../../components/panels/NotesPanel';
|
||||||
import type { PanelType } from '../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||||
import ParametersPanel from '../../components/panels/ParametersPanel';
|
import ParametersPanel from '../../components/panels/ParametersPanel';
|
||||||
import { RenderAddress } from '../../components/render/Company';
|
import { RenderAddress } from '../../components/render/Company';
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { UserRoles } from '@lib/enums/Roles';
|
|||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import { getDetailUrl } from '@lib/functions/Navigation';
|
import { getDetailUrl } from '@lib/functions/Navigation';
|
||||||
import type { StockOperationProps } from '@lib/types/Forms';
|
import type { StockOperationProps } from '@lib/types/Forms';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { Group, Skeleton, Stack } from '@mantine/core';
|
import { Group, Skeleton, Stack } from '@mantine/core';
|
||||||
import {
|
import {
|
||||||
@@ -34,7 +35,6 @@ import { ApiIcon } from '../../components/items/ApiIcon';
|
|||||||
import InstanceDetail from '../../components/nav/InstanceDetail';
|
import InstanceDetail from '../../components/nav/InstanceDetail';
|
||||||
import NavigationTree from '../../components/nav/NavigationTree';
|
import NavigationTree from '../../components/nav/NavigationTree';
|
||||||
import { PageDetail } from '../../components/nav/PageDetail';
|
import { PageDetail } from '../../components/nav/PageDetail';
|
||||||
import type { PanelType } from '../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||||
import ParametersPanel from '../../components/panels/ParametersPanel';
|
import ParametersPanel from '../../components/panels/ParametersPanel';
|
||||||
import SegmentedControlPanel from '../../components/panels/SegmentedControlPanel';
|
import SegmentedControlPanel from '../../components/panels/SegmentedControlPanel';
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ import { UserRoles } from '@lib/enums/Roles';
|
|||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import { getDetailUrl, getOverviewUrl } from '@lib/functions/Navigation';
|
import { getDetailUrl, getOverviewUrl } from '@lib/functions/Navigation';
|
||||||
import type { ApiFormFieldSet, StockOperationProps } from '@lib/types/Forms';
|
import type { ApiFormFieldSet, StockOperationProps } from '@lib/types/Forms';
|
||||||
|
import type { PanelType } from '@lib/types/Panel';
|
||||||
import { notifications } from '@mantine/notifications';
|
import { notifications } from '@mantine/notifications';
|
||||||
import { useBarcodeScanDialog } from '../../components/barcodes/BarcodeScanDialog';
|
import { useBarcodeScanDialog } from '../../components/barcodes/BarcodeScanDialog';
|
||||||
import AdminButton from '../../components/buttons/AdminButton';
|
import AdminButton from '../../components/buttons/AdminButton';
|
||||||
@@ -60,7 +61,6 @@ import NavigationTree from '../../components/nav/NavigationTree';
|
|||||||
import { PageDetail } from '../../components/nav/PageDetail';
|
import { PageDetail } from '../../components/nav/PageDetail';
|
||||||
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
||||||
import NotesPanel from '../../components/panels/NotesPanel';
|
import NotesPanel from '../../components/panels/NotesPanel';
|
||||||
import type { PanelType } from '../../components/panels/Panel';
|
|
||||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||||
import LocateItemButton from '../../components/plugins/LocateItemButton';
|
import LocateItemButton from '../../components/plugins/LocateItemButton';
|
||||||
import { StatusRenderer } from '../../components/render/StatusRenderer';
|
import { StatusRenderer } from '../../components/render/StatusRenderer';
|
||||||
|
|||||||
Reference in New Issue
Block a user