mirror of
https://github.com/inventree/InvenTree.git
synced 2026-05-06 17:53:44 +00:00
feat(frontend): lib make Detaildrawer available (#11827)
* feat(frontend): lib make Detaildrawer available Co-authored-by: Copilot <copilot@github.com> * move StylishText to lib Co-authored-by: Copilot <copilot@github.com> * add changelog entry Co-authored-by: Copilot <copilot@github.com> * fix import path --------- Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -2,6 +2,14 @@
|
|||||||
|
|
||||||
This file contains historical changelog information for the InvenTree UI components library.
|
This file contains historical changelog information for the InvenTree UI components library.
|
||||||
|
|
||||||
|
### 0.11.3 - April 2026
|
||||||
|
|
||||||
|
Exposes additional type definitions related to rendering drawers from tables:
|
||||||
|
- `DetailDrawer`
|
||||||
|
- `TableState`
|
||||||
|
|
||||||
|
Also exposes `StylishText`, which is required downstream for rendering the DetailDrawer component, and is used in a number of places within the InvenTree UI.
|
||||||
|
|
||||||
### 0.11.2 - April 2026
|
### 0.11.2 - April 2026
|
||||||
|
|
||||||
Exposes additional type definitions related to tables and filters:
|
Exposes additional type definitions related to tables and filters:
|
||||||
|
|||||||
+6
-5
@@ -4,10 +4,11 @@ import { useCallback, useMemo } from 'react';
|
|||||||
import { Link, Route, Routes, useNavigate, useParams } from 'react-router-dom';
|
import { Link, Route, Routes, useNavigate, useParams } from 'react-router-dom';
|
||||||
import type { To } from 'react-router-dom';
|
import type { To } from 'react-router-dom';
|
||||||
|
|
||||||
import type { UiSizeType } from '@lib/types/Core';
|
import type { UiSizeType } from '../../types/Core';
|
||||||
|
|
||||||
import { useShallow } from 'zustand/react/shallow';
|
import { useShallow } from 'zustand/react/shallow';
|
||||||
import { useLocalState } from '../../states/LocalState';
|
import { useLocalLibState } from '../../states/LocalLibState';
|
||||||
import { StylishText } from '../items/StylishText';
|
import { StylishText } from '../StylishText';
|
||||||
import * as classes from './DetailDrawer.css';
|
import * as classes from './DetailDrawer.css';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -38,7 +39,7 @@ function DetailDrawerComponent({
|
|||||||
const content = renderContent(id);
|
const content = renderContent(id);
|
||||||
const opened = useMemo(() => !!id && !!content, [id, content]);
|
const opened = useMemo(() => !!id && !!content, [id, content]);
|
||||||
|
|
||||||
const [detailDrawerStack, addDetailDrawer] = useLocalState(
|
const [detailDrawerStack, addDetailDrawer] = useLocalLibState(
|
||||||
useShallow((state) => [state.detailDrawerStack, state.addDetailDrawer])
|
useShallow((state) => [state.detailDrawerStack, state.addDetailDrawer])
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -91,7 +92,7 @@ export function DetailDrawerLink({
|
|||||||
to,
|
to,
|
||||||
text
|
text
|
||||||
}: Readonly<{ to: To; text: string }>) {
|
}: Readonly<{ to: To; text: string }>) {
|
||||||
const addDetailDrawer = useLocalState(
|
const addDetailDrawer = useLocalLibState(
|
||||||
useShallow((state) => state.addDetailDrawer)
|
useShallow((state) => state.addDetailDrawer)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -132,6 +132,13 @@ export {
|
|||||||
type TableStateExtraProps
|
type TableStateExtraProps
|
||||||
} from './hooks/UseTable';
|
} from './hooks/UseTable';
|
||||||
|
|
||||||
|
export {
|
||||||
|
type DrawerProps,
|
||||||
|
DetailDrawer,
|
||||||
|
DetailDrawerLink
|
||||||
|
} from './components/nav/DetailDrawer';
|
||||||
|
export { StylishText } from './components/StylishText';
|
||||||
|
|
||||||
// State management
|
// State management
|
||||||
export {
|
export {
|
||||||
type StoredTableStateProps,
|
type StoredTableStateProps,
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
import { create } from 'zustand';
|
||||||
|
import { persist } from 'zustand/middleware';
|
||||||
|
|
||||||
|
export const useLocalLibState = create<LocalLibStateProps>()(
|
||||||
|
persist(
|
||||||
|
(set, get) => ({
|
||||||
|
detailDrawerStack: 0,
|
||||||
|
addDetailDrawer: (value) => {
|
||||||
|
set({
|
||||||
|
detailDrawerStack:
|
||||||
|
value === false ? 0 : get().detailDrawerStack + value
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
name: 'session-settings-inventreedb_lib'
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
export interface LocalLibStateProps {
|
||||||
|
detailDrawerStack: number;
|
||||||
|
addDetailDrawer: (value: number | false) => void;
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@inventreedb/ui",
|
"name": "@inventreedb/ui",
|
||||||
"description": "UI components for the InvenTree project",
|
"description": "UI components for the InvenTree project",
|
||||||
"version": "0.11.2",
|
"version": "0.11.3",
|
||||||
"private": false,
|
"private": false,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { ModelInformationDict } from '@lib/enums/ModelInformation';
|
import { ModelInformationDict } from '@lib/enums/ModelInformation';
|
||||||
import type { ModelType } from '@lib/enums/ModelType';
|
import type { ModelType } from '@lib/enums/ModelType';
|
||||||
@@ -11,7 +12,6 @@ import { type NavigateFunction, useNavigate } from 'react-router-dom';
|
|||||||
import { api } from '../../App';
|
import { api } from '../../App';
|
||||||
import { extractErrorMessage } from '../../functions/api';
|
import { extractErrorMessage } from '../../functions/api';
|
||||||
import { useUserState } from '../../states/UserState';
|
import { useUserState } from '../../states/UserState';
|
||||||
import { StylishText } from '../items/StylishText';
|
|
||||||
import { BarcodeInput } from './BarcodeInput';
|
import { BarcodeInput } from './BarcodeInput';
|
||||||
|
|
||||||
export type BarcodeScanResult = {
|
export type BarcodeScanResult = {
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import FullCalendar from '@fullcalendar/react';
|
|||||||
import { ActionButton } from '@lib/components/ActionButton';
|
import { ActionButton } from '@lib/components/ActionButton';
|
||||||
import { Boundary } from '@lib/components/Boundary';
|
import { Boundary } from '@lib/components/Boundary';
|
||||||
import { SearchInput } from '@lib/components/SearchInput';
|
import { SearchInput } from '@lib/components/SearchInput';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import type { TableFilter } from '@lib/types/Filters';
|
import type { TableFilter } from '@lib/types/Filters';
|
||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import {
|
import {
|
||||||
@@ -37,7 +38,6 @@ import {
|
|||||||
import type { CalendarState } from '../../hooks/UseCalendar';
|
import type { CalendarState } from '../../hooks/UseCalendar';
|
||||||
import { useLocalState } from '../../states/LocalState';
|
import { useLocalState } from '../../states/LocalState';
|
||||||
import { FilterSelectDrawer } from '../../tables/FilterSelectDrawer';
|
import { FilterSelectDrawer } from '../../tables/FilterSelectDrawer';
|
||||||
import { StylishText } from '../items/StylishText';
|
|
||||||
|
|
||||||
export interface InvenTreeCalendarProps extends CalendarOptions {
|
export interface InvenTreeCalendarProps extends CalendarOptions {
|
||||||
enableDownload?: boolean;
|
enableDownload?: boolean;
|
||||||
|
|||||||
@@ -17,9 +17,9 @@ import {
|
|||||||
} from '@tabler/icons-react';
|
} from '@tabler/icons-react';
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import useInstanceName from '../../hooks/UseInstanceName';
|
import useInstanceName from '../../hooks/UseInstanceName';
|
||||||
import { useUserState } from '../../states/UserState';
|
import { useUserState } from '../../states/UserState';
|
||||||
import { StylishText } from '../items/StylishText';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A menu for editing the dashboard layout
|
* A menu for editing the dashboard layout
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ import { useDebouncedValue } from '@mantine/hooks';
|
|||||||
import { IconBackspace, IconLayoutGridAdd } from '@tabler/icons-react';
|
import { IconBackspace, IconLayoutGridAdd } from '@tabler/icons-react';
|
||||||
import { useMemo, useState } from 'react';
|
import { useMemo, useState } from 'react';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { useDashboardItems } from '../../hooks/UseDashboardItems';
|
import { useDashboardItems } from '../../hooks/UseDashboardItems';
|
||||||
import { StylishText } from '../items/StylishText';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Drawer allowing the user to add new widgets to the dashboard.
|
* Drawer allowing the user to add new widgets to the dashboard.
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { Group } from '@mantine/core';
|
import { Group } from '@mantine/core';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ColorToggle } from '../../items/ColorToggle';
|
import { ColorToggle } from '../../items/ColorToggle';
|
||||||
import { StylishText } from '../../items/StylishText';
|
|
||||||
import type { DashboardWidgetProps } from '../DashboardWidget';
|
import type { DashboardWidgetProps } from '../DashboardWidget';
|
||||||
|
|
||||||
function ColorToggleWidget(title: string) {
|
function ColorToggleWidget(title: string) {
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ import { t } from '@lingui/core/macro';
|
|||||||
import { Stack } from '@mantine/core';
|
import { Stack } from '@mantine/core';
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { DocumentationLinks } from '../../../defaults/links';
|
import { DocumentationLinks } from '../../../defaults/links';
|
||||||
import { GettingStartedCarousel } from '../../items/GettingStartedCarousel';
|
import { GettingStartedCarousel } from '../../items/GettingStartedCarousel';
|
||||||
import type { MenuLinkItem } from '../../items/MenuLinks';
|
import type { MenuLinkItem } from '../../items/MenuLinks';
|
||||||
import { StylishText } from '../../items/StylishText';
|
|
||||||
|
|
||||||
export default function GetStartedWidget() {
|
export default function GetStartedWidget() {
|
||||||
const docLinks: MenuLinkItem[] = useMemo(() => DocumentationLinks(), []);
|
const docLinks: MenuLinkItem[] = useMemo(() => DocumentationLinks(), []);
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { Stack } from '@mantine/core';
|
import { Stack } from '@mantine/core';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { LanguageSelect } from '../../items/LanguageSelect';
|
import { LanguageSelect } from '../../items/LanguageSelect';
|
||||||
import { StylishText } from '../../items/StylishText';
|
|
||||||
import type { DashboardWidgetProps } from '../DashboardWidget';
|
import type { DashboardWidgetProps } from '../DashboardWidget';
|
||||||
|
|
||||||
function LanguageSelectWidget(title: string) {
|
function LanguageSelectWidget(title: string) {
|
||||||
|
|||||||
@@ -14,12 +14,12 @@ import { IconMailCheck } from '@tabler/icons-react';
|
|||||||
import { useQuery } from '@tanstack/react-query';
|
import { useQuery } from '@tanstack/react-query';
|
||||||
import { useCallback, useMemo } from 'react';
|
import { useCallback, useMemo } from 'react';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import { api } from '../../../App';
|
import { api } from '../../../App';
|
||||||
import { formatDate } from '../../../defaults/formatters';
|
import { formatDate } from '../../../defaults/formatters';
|
||||||
import { useUserState } from '../../../states/UserState';
|
import { useUserState } from '../../../states/UserState';
|
||||||
import { StylishText } from '../../items/StylishText';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Render a link to an external news item
|
* Render a link to an external news item
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { useQuery } from '@tanstack/react-query';
|
|||||||
import { type ReactNode, useCallback, useMemo } from 'react';
|
import { type ReactNode, useCallback, useMemo } from 'react';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ModelInformationDict } from '@lib/enums/ModelInformation';
|
import { ModelInformationDict } from '@lib/enums/ModelInformation';
|
||||||
import type { ModelType } from '@lib/enums/ModelType';
|
import type { ModelType } from '@lib/enums/ModelType';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
@@ -13,7 +14,6 @@ import { useDocumentVisibility } from '@mantine/hooks';
|
|||||||
import { useApi } from '../../../contexts/ApiContext';
|
import { useApi } from '../../../contexts/ApiContext';
|
||||||
import { InvenTreeIcon } from '../../../functions/icons';
|
import { InvenTreeIcon } from '../../../functions/icons';
|
||||||
import { useUserState } from '../../../states/UserState';
|
import { useUserState } from '../../../states/UserState';
|
||||||
import { StylishText } from '../../items/StylishText';
|
|
||||||
import type { DashboardWidgetProps } from '../DashboardWidget';
|
import type { DashboardWidgetProps } from '../DashboardWidget';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import { useNavigate } from 'react-router-dom';
|
|||||||
|
|
||||||
import { CopyButton } from '@lib/components/CopyButton';
|
import { CopyButton } from '@lib/components/CopyButton';
|
||||||
import { ProgressBar } from '@lib/components/ProgressBar';
|
import { ProgressBar } from '@lib/components/ProgressBar';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { YesNoButton } from '@lib/components/YesNoButton';
|
import { YesNoButton } from '@lib/components/YesNoButton';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { ModelType } from '@lib/enums/ModelType';
|
import { ModelType } from '@lib/enums/ModelType';
|
||||||
@@ -30,7 +31,6 @@ import { useApi } from '../../contexts/ApiContext';
|
|||||||
import { formatDate, formatDecimal } from '../../defaults/formatters';
|
import { formatDate, formatDecimal } from '../../defaults/formatters';
|
||||||
import { InvenTreeIcon } from '../../functions/icons';
|
import { InvenTreeIcon } from '../../functions/icons';
|
||||||
import { useGlobalSettingsState } from '../../states/SettingsStates';
|
import { useGlobalSettingsState } from '../../states/SettingsStates';
|
||||||
import { StylishText } from '../items/StylishText';
|
|
||||||
import { getModelInfo } from '../render/ModelType';
|
import { getModelInfo } from '../render/ModelType';
|
||||||
import { StatusRenderer } from '../render/StatusRenderer';
|
import { StatusRenderer } from '../render/StatusRenderer';
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import { modals } from '@mantine/modals';
|
|||||||
import { useEffect, useMemo, useState } from 'react';
|
import { useEffect, useMemo, useState } from 'react';
|
||||||
|
|
||||||
import { ActionButton } from '@lib/components/ActionButton';
|
import { ActionButton } from '@lib/components/ActionButton';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import type { UserRoles } from '@lib/enums/Roles';
|
import type { UserRoles } from '@lib/enums/Roles';
|
||||||
import { cancelEvent } from '@lib/functions/Events';
|
import { cancelEvent } from '@lib/functions/Events';
|
||||||
import { showNotification } from '@mantine/notifications';
|
import { showNotification } from '@mantine/notifications';
|
||||||
@@ -34,7 +35,6 @@ import { useUserState } from '../../states/UserState';
|
|||||||
import { PartThumbTable } from '../../tables/part/PartThumbTable';
|
import { PartThumbTable } from '../../tables/part/PartThumbTable';
|
||||||
import { vars } from '../../theme';
|
import { vars } from '../../theme';
|
||||||
import { ApiImage } from '../images/ApiImage';
|
import { ApiImage } from '../images/ApiImage';
|
||||||
import { StylishText } from '../items/StylishText';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Props for detail image
|
* Props for detail image
|
||||||
|
|||||||
@@ -13,11 +13,11 @@ import {
|
|||||||
import { IconCheck, IconExclamationCircle } from '@tabler/icons-react';
|
import { IconCheck, IconExclamationCircle } from '@tabler/icons-react';
|
||||||
import { type ReactNode, useMemo } from 'react';
|
import { type ReactNode, useMemo } from 'react';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ModelType } from '@lib/enums/ModelType';
|
import { ModelType } from '@lib/enums/ModelType';
|
||||||
import type { ApiFormFieldSet } from '@lib/index';
|
import type { ApiFormFieldSet } from '@lib/index';
|
||||||
import { useImportSession } from '../../hooks/UseImportSession';
|
import { useImportSession } from '../../hooks/UseImportSession';
|
||||||
import useStatusCodes from '../../hooks/UseStatusCodes';
|
import useStatusCodes from '../../hooks/UseStatusCodes';
|
||||||
import { StylishText } from '../items/StylishText';
|
|
||||||
import ImporterDataSelector from './ImportDataSelector';
|
import ImporterDataSelector from './ImportDataSelector';
|
||||||
import ImporterColumnSelector from './ImporterColumnSelector';
|
import ImporterColumnSelector from './ImporterColumnSelector';
|
||||||
import ImporterStatus from './ImporterStatus';
|
import ImporterStatus from './ImporterStatus';
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ import { Center, Loader, Stack } from '@mantine/core';
|
|||||||
import { useInterval } from '@mantine/hooks';
|
import { useInterval } from '@mantine/hooks';
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ModelType } from '@lib/enums/ModelType';
|
import { ModelType } from '@lib/enums/ModelType';
|
||||||
import type { ImportSessionState } from '../../hooks/UseImportSession';
|
import type { ImportSessionState } from '../../hooks/UseImportSession';
|
||||||
import { StylishText } from '../items/StylishText';
|
|
||||||
import { getStatusCodeLabel } from '../render/StatusRenderer';
|
import { getStatusCodeLabel } from '../render/StatusRenderer';
|
||||||
|
|
||||||
export default function ImporterStatus({
|
export default function ImporterStatus({
|
||||||
|
|||||||
@@ -20,11 +20,11 @@ import {
|
|||||||
} from '@tabler/icons-react';
|
} from '@tabler/icons-react';
|
||||||
import { type ReactNode, useMemo } from 'react';
|
import { type ReactNode, useMemo } from 'react';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import type { ModelType } from '@lib/enums/ModelType';
|
import type { ModelType } from '@lib/enums/ModelType';
|
||||||
import { identifierString } from '@lib/functions/Conversion';
|
import { identifierString } from '@lib/functions/Conversion';
|
||||||
import { InvenTreeIcon } from '../../functions/icons';
|
import { InvenTreeIcon } from '../../functions/icons';
|
||||||
import { InvenTreeQRCode, QRCodeLink, QRCodeUnlink } from '../barcodes/QRCode';
|
import { InvenTreeQRCode, QRCodeLink, QRCodeUnlink } from '../barcodes/QRCode';
|
||||||
import { StylishText } from './StylishText';
|
|
||||||
|
|
||||||
export type ActionDropdownItem = {
|
export type ActionDropdownItem = {
|
||||||
icon?: ReactNode;
|
icon?: ReactNode;
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ import { Trans } from '@lingui/react/macro';
|
|||||||
import { Carousel } from '@mantine/carousel';
|
import { Carousel } from '@mantine/carousel';
|
||||||
import { Anchor, Button, Paper, Text } from '@mantine/core';
|
import { Anchor, Button, Paper, Text } from '@mantine/core';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import * as classes from './GettingStartedCarousel.css';
|
import * as classes from './GettingStartedCarousel.css';
|
||||||
import type { MenuLinkItem } from './MenuLinks';
|
import type { MenuLinkItem } from './MenuLinks';
|
||||||
import { StylishText } from './StylishText';
|
|
||||||
|
|
||||||
function StartedCard({ title, description, link }: Readonly<MenuLinkItem>) {
|
function StartedCard({ title, description, link }: Readonly<MenuLinkItem>) {
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { Code, Flex, Group, Text } from '@mantine/core';
|
|||||||
import { Link, type To } from 'react-router-dom';
|
import { Link, type To } from 'react-router-dom';
|
||||||
|
|
||||||
import { YesNoButton } from '@lib/components/YesNoButton';
|
import { YesNoButton } from '@lib/components/YesNoButton';
|
||||||
import { DetailDrawerLink } from '../nav/DetailDrawer';
|
import { DetailDrawerLink } from '@lib/components/nav/DetailDrawer';
|
||||||
|
|
||||||
export function InfoItem({
|
export function InfoItem({
|
||||||
name,
|
name,
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ import {
|
|||||||
import { type JSX, useMemo } from 'react';
|
import { type JSX, useMemo } from 'react';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { navigateToLink } from '@lib/functions/Navigation';
|
import { navigateToLink } from '@lib/functions/Navigation';
|
||||||
import type { InvenTreeIconType } from '@lib/types/Icons';
|
import type { InvenTreeIconType } from '@lib/types/Icons';
|
||||||
import { InvenTreeIcon } from '../../functions/icons';
|
import { InvenTreeIcon } from '../../functions/icons';
|
||||||
import { StylishText } from './StylishText';
|
|
||||||
|
|
||||||
export interface MenuLinkItem {
|
export interface MenuLinkItem {
|
||||||
id: string;
|
id: string;
|
||||||
|
|||||||
@@ -14,13 +14,13 @@ import type { ContextModalProps } from '@mantine/modals';
|
|||||||
import { useQuery } from '@tanstack/react-query';
|
import { useQuery } from '@tanstack/react-query';
|
||||||
|
|
||||||
import { CopyButton } from '@lib/components/CopyButton';
|
import { CopyButton } from '@lib/components/CopyButton';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import { useShallow } from 'zustand/react/shallow';
|
import { useShallow } from 'zustand/react/shallow';
|
||||||
import { api } from '../../App';
|
import { api } from '../../App';
|
||||||
import { generateUrl } from '../../functions/urls';
|
import { generateUrl } from '../../functions/urls';
|
||||||
import { useServerApiState } from '../../states/ServerApiState';
|
import { useServerApiState } from '../../states/ServerApiState';
|
||||||
import { StylishText } from '../items/StylishText';
|
|
||||||
|
|
||||||
import type { JSX } from 'react';
|
import type { JSX } from 'react';
|
||||||
import { OnlyStaff } from '../items/OnlyStaff';
|
import { OnlyStaff } from '../items/OnlyStaff';
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { Container, Drawer, Flex, Group, Space } from '@mantine/core';
|
|||||||
import { useViewportSize } from '@mantine/hooks';
|
import { useViewportSize } from '@mantine/hooks';
|
||||||
import { useEffect, useMemo, useRef, useState } from 'react';
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
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 { AboutLinks, DocumentationLinks } from '../../defaults/links';
|
import { AboutLinks, DocumentationLinks } from '../../defaults/links';
|
||||||
@@ -12,7 +13,6 @@ import { useGlobalSettingsState } from '../../states/SettingsStates';
|
|||||||
import { useUserState } from '../../states/UserState';
|
import { useUserState } from '../../states/UserState';
|
||||||
import { InvenTreeLogo } from '../items/InvenTreeLogo';
|
import { InvenTreeLogo } from '../items/InvenTreeLogo';
|
||||||
import { type MenuLinkItem, MenuLinks } from '../items/MenuLinks';
|
import { type MenuLinkItem, MenuLinks } from '../items/MenuLinks';
|
||||||
import { StylishText } from '../items/StylishText';
|
|
||||||
|
|
||||||
// TODO @matmair #1: implement plugin loading and menu item generation see #5269
|
// TODO @matmair #1: implement plugin loading and menu item generation see #5269
|
||||||
const plugins: MenuLinkItem[] = [];
|
const plugins: MenuLinkItem[] = [];
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import { useQuery } from '@tanstack/react-query';
|
|||||||
import { useCallback, useMemo } from 'react';
|
import { useCallback, useMemo } from 'react';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import type { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import type { 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 { apiUrl } from '@lib/functions/Api';
|
||||||
@@ -34,7 +35,6 @@ import {
|
|||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { useApi } from '../../contexts/ApiContext';
|
import { useApi } from '../../contexts/ApiContext';
|
||||||
import { ApiIcon } from '../items/ApiIcon';
|
import { ApiIcon } from '../items/ApiIcon';
|
||||||
import { StylishText } from '../items/StylishText';
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A generic navigation tree component.
|
* A generic navigation tree component.
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import { useCallback, useMemo } from 'react';
|
|||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
|
|
||||||
import { Boundary } from '@lib/components/Boundary';
|
import { Boundary } from '@lib/components/Boundary';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { ModelInformationDict } from '@lib/enums/ModelInformation';
|
import { ModelInformationDict } from '@lib/enums/ModelInformation';
|
||||||
import type { ModelType } from '@lib/enums/ModelType';
|
import type { ModelType } from '@lib/enums/ModelType';
|
||||||
@@ -33,7 +34,6 @@ import { getBaseUrl } from '@lib/functions/Navigation';
|
|||||||
import { navigateToLink } from '@lib/functions/Navigation';
|
import { navigateToLink } from '@lib/functions/Navigation';
|
||||||
import { api } from '../../App';
|
import { api } from '../../App';
|
||||||
import { useUserState } from '../../states/UserState';
|
import { useUserState } from '../../states/UserState';
|
||||||
import { StylishText } from '../items/StylishText';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Render a single notification entry in the drawer
|
* Render a single notification entry in the drawer
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { Group, Paper, Space, Stack, Text } from '@mantine/core';
|
import { Group, Paper, Space, Stack, Text } from '@mantine/core';
|
||||||
import { useHotkeys } from '@mantine/hooks';
|
import { useHotkeys } from '@mantine/hooks';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { shortenString } from '@lib/functions/String';
|
import { shortenString } from '@lib/functions/String';
|
||||||
import { Fragment, type ReactNode, useMemo } from 'react';
|
import { Fragment, type ReactNode, useMemo } from 'react';
|
||||||
import { useUserSettingsState } from '../../states/SettingsStates';
|
import { useUserSettingsState } from '../../states/SettingsStates';
|
||||||
import { ApiImage } from '../images/ApiImage';
|
import { ApiImage } from '../images/ApiImage';
|
||||||
import { StylishText } from '../items/StylishText';
|
|
||||||
import { type Breadcrumb, BreadcrumbList } from './BreadcrumbList';
|
import { type Breadcrumb, BreadcrumbList } from './BreadcrumbList';
|
||||||
import PageTitle from './PageTitle';
|
import PageTitle from './PageTitle';
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ import { Group, SegmentedControl, Stack, Text } from '@mantine/core';
|
|||||||
import type { ReactNode } from 'react';
|
import type { ReactNode } from 'react';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { useUserState } from '../../states/UserState';
|
import { useUserState } from '../../states/UserState';
|
||||||
import { StylishText } from '../items/StylishText';
|
|
||||||
|
|
||||||
interface SettingsHeaderInterface {
|
interface SettingsHeaderInterface {
|
||||||
label: string;
|
label: string;
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import {
|
|||||||
} from 'react-router-dom';
|
} from 'react-router-dom';
|
||||||
|
|
||||||
import { Boundary } from '@lib/components/Boundary';
|
import { Boundary } from '@lib/components/Boundary';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import type { ModelType, PluginPanelKey } from '@lib/enums/ModelType';
|
import type { ModelType, PluginPanelKey } from '@lib/enums/ModelType';
|
||||||
import { identifierString } from '@lib/functions/Conversion';
|
import { identifierString } from '@lib/functions/Conversion';
|
||||||
import { cancelEvent } from '@lib/functions/Events';
|
import { cancelEvent } from '@lib/functions/Events';
|
||||||
@@ -45,7 +46,6 @@ 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 { StylishText } from '../items/StylishText';
|
|
||||||
import type { PanelGroupType, PanelType } from '../panels/Panel';
|
import type { PanelGroupType, PanelType } from '../panels/Panel';
|
||||||
import * as classes from './PanelGroup.css';
|
import * as classes from './PanelGroup.css';
|
||||||
|
|
||||||
|
|||||||
@@ -4,10 +4,10 @@ import { IconExclamationCircle } from '@tabler/icons-react';
|
|||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import { useParams } from 'react-router-dom';
|
import { useParams } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { useInstance } from '../../hooks/UseInstance';
|
import { useInstance } from '../../hooks/UseInstance';
|
||||||
import { InfoItem } from '../items/InfoItem';
|
import { InfoItem } from '../items/InfoItem';
|
||||||
import { StylishText } from '../items/StylishText';
|
|
||||||
import { PluginSettingList } from '../settings/SettingList';
|
import { PluginSettingList } from '../settings/SettingList';
|
||||||
import type { PluginInterface } from './PluginInterface';
|
import type { PluginInterface } from './PluginInterface';
|
||||||
import PluginSettingsPanel from './PluginSettingsPanel';
|
import PluginSettingsPanel from './PluginSettingsPanel';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Paper, Stack, Text } from '@mantine/core';
|
import { Paper, Stack, Text } from '@mantine/core';
|
||||||
|
|
||||||
import { StylishText } from '../items/StylishText';
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
|
|
||||||
export function FactItem({
|
export function FactItem({
|
||||||
title,
|
title,
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { Boundary } from '@lib/components/Boundary';
|
import { Boundary } from '@lib/components/Boundary';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import {
|
import {
|
||||||
ActionIcon,
|
ActionIcon,
|
||||||
@@ -17,7 +18,6 @@ import {
|
|||||||
IconCircleCheck
|
IconCircleCheck
|
||||||
} from '@tabler/icons-react';
|
} from '@tabler/icons-react';
|
||||||
import { type ReactNode, useCallback, useMemo } from 'react';
|
import { type ReactNode, useCallback, useMemo } from 'react';
|
||||||
import { StylishText } from '../items/StylishText';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Progress stepper displayed at the top of the wizard drawer.
|
* Progress stepper displayed at the top of the wizard drawer.
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import { t } from '@lingui/core/macro';
|
|||||||
import { Trans } from '@lingui/react/macro';
|
import { Trans } from '@lingui/react/macro';
|
||||||
import { openContextModal } from '@mantine/modals';
|
import { openContextModal } from '@mantine/modals';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
import type { SettingsStateProps } from '@lib/types/Settings';
|
import type { SettingsStateProps } from '@lib/types/Settings';
|
||||||
import type { UserStateProps } from '@lib/types/User';
|
import type { UserStateProps } from '@lib/types/User';
|
||||||
@@ -15,7 +16,6 @@ import {
|
|||||||
} from '@tabler/icons-react';
|
} from '@tabler/icons-react';
|
||||||
import type { ReactNode } from 'react';
|
import type { ReactNode } from 'react';
|
||||||
import type { MenuLinkItem } from '../components/items/MenuLinks';
|
import type { MenuLinkItem } from '../components/items/MenuLinks';
|
||||||
import { StylishText } from '../components/items/StylishText';
|
|
||||||
|
|
||||||
type NavTab = {
|
type NavTab = {
|
||||||
name: string;
|
name: string;
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ import RemoveRowButton from '../components/buttons/RemoveRowButton';
|
|||||||
import { StandaloneField } from '../components/forms/StandaloneField';
|
import { StandaloneField } from '../components/forms/StandaloneField';
|
||||||
|
|
||||||
import { ProgressBar } from '@lib/components/ProgressBar';
|
import { ProgressBar } from '@lib/components/ProgressBar';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import { toNumber } from '@lib/functions/Conversion';
|
import { toNumber } from '@lib/functions/Conversion';
|
||||||
import type {
|
import type {
|
||||||
@@ -48,7 +49,6 @@ import {
|
|||||||
type TableFieldRowProps
|
type TableFieldRowProps
|
||||||
} from '../components/forms/fields/TableField';
|
} from '../components/forms/fields/TableField';
|
||||||
import { Thumbnail } from '../components/images/Thumbnail';
|
import { Thumbnail } from '../components/images/Thumbnail';
|
||||||
import { StylishText } from '../components/items/StylishText';
|
|
||||||
import { getStatusCodeOptions } from '../components/render/StatusRenderer';
|
import { getStatusCodeOptions } from '../components/render/StatusRenderer';
|
||||||
import { InvenTreeIcon } from '../functions/icons';
|
import { InvenTreeIcon } from '../functions/icons';
|
||||||
import { useCreateApiFormModal } from '../hooks/UseForm';
|
import { useCreateApiFormModal } from '../hooks/UseForm';
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import { api } from '../App';
|
|||||||
import RemoveRowButton from '../components/buttons/RemoveRowButton';
|
import RemoveRowButton from '../components/buttons/RemoveRowButton';
|
||||||
import { StandaloneField } from '../components/forms/StandaloneField';
|
import { StandaloneField } from '../components/forms/StandaloneField';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
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 {
|
import type {
|
||||||
@@ -45,7 +46,6 @@ import {
|
|||||||
type TableFieldRowProps
|
type TableFieldRowProps
|
||||||
} from '../components/forms/fields/TableField';
|
} from '../components/forms/fields/TableField';
|
||||||
import { Thumbnail } from '../components/images/Thumbnail';
|
import { Thumbnail } from '../components/images/Thumbnail';
|
||||||
import { StylishText } from '../components/items/StylishText';
|
|
||||||
import { StatusRenderer } from '../components/render/StatusRenderer';
|
import { StatusRenderer } from '../components/render/StatusRenderer';
|
||||||
import { RenderStockLocation } from '../components/render/Stock';
|
import { RenderStockLocation } from '../components/render/Stock';
|
||||||
import { InvenTreeIcon } from '../functions/icons';
|
import { InvenTreeIcon } from '../functions/icons';
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import { Modal } from '@mantine/core';
|
|||||||
import { useDisclosure } from '@mantine/hooks';
|
import { useDisclosure } from '@mantine/hooks';
|
||||||
import { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import type { UseModalProps, UseModalReturn } from '@lib/types/Modals';
|
import type { UseModalProps, UseModalReturn } from '@lib/types/Modals';
|
||||||
import { StylishText } from '../components/items/StylishText';
|
|
||||||
import { useUserSettingsState } from '../states/SettingsStates';
|
import { useUserSettingsState } from '../states/SettingsStates';
|
||||||
|
|
||||||
export function useModal(props: UseModalProps): UseModalReturn {
|
export function useModal(props: UseModalProps): UseModalReturn {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { Trans } from '@lingui/react/macro';
|
import { Trans } from '@lingui/react/macro';
|
||||||
import {
|
import {
|
||||||
@@ -11,7 +12,6 @@ import {
|
|||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useForm } from '@mantine/form';
|
import { useForm } from '@mantine/form';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
import { handleChangePassword } from '../../functions/auth';
|
import { handleChangePassword } from '../../functions/auth';
|
||||||
import { useUserState } from '../../states/UserState';
|
import { useUserState } from '../../states/UserState';
|
||||||
import { Wrapper } from './Layout';
|
import { Wrapper } from './Layout';
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { Trans } from '@lingui/react/macro';
|
import { Trans } from '@lingui/react/macro';
|
||||||
import {
|
import {
|
||||||
Button,
|
Button,
|
||||||
@@ -11,7 +12,6 @@ import {
|
|||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { Outlet, useNavigate } from 'react-router-dom';
|
import { Outlet, useNavigate } from 'react-router-dom';
|
||||||
import SplashScreen from '../../components/SplashScreen';
|
import SplashScreen from '../../components/SplashScreen';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
import { doLogout } from '../../functions/auth';
|
import { doLogout } from '../../functions/auth';
|
||||||
|
|
||||||
export default function LoginLayoutComponent() {
|
export default function LoginLayoutComponent() {
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import {
|
|||||||
} from '@tabler/icons-react';
|
} from '@tabler/icons-react';
|
||||||
import { useCallback, useEffect, useMemo, useState } from 'react';
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { ModelInformationDict } from '@lib/enums/ModelInformation';
|
import { ModelInformationDict } from '@lib/enums/ModelInformation';
|
||||||
import type { ModelType } from '@lib/enums/ModelType';
|
import type { ModelType } from '@lib/enums/ModelType';
|
||||||
@@ -29,7 +30,6 @@ import dayjs from 'dayjs';
|
|||||||
import { api } from '../../App';
|
import { api } from '../../App';
|
||||||
import { BarcodeInput } from '../../components/barcodes/BarcodeInput';
|
import { BarcodeInput } from '../../components/barcodes/BarcodeInput';
|
||||||
import type { BarcodeScanItem } from '../../components/barcodes/BarcodeScanItem';
|
import type { BarcodeScanItem } from '../../components/barcodes/BarcodeScanItem';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
import PageTitle from '../../components/nav/PageTitle';
|
import PageTitle from '../../components/nav/PageTitle';
|
||||||
import { showApiErrorMessage } from '../../functions/notifications';
|
import { showApiErrorMessage } from '../../functions/notifications';
|
||||||
import BarcodeScanTable from '../../tables/general/BarcodeScanTable';
|
import BarcodeScanTable from '../../tables/general/BarcodeScanTable';
|
||||||
|
|||||||
@@ -5,13 +5,13 @@ import { IconEdit, IconKey, IconUser } from '@tabler/icons-react';
|
|||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
import { ActionButton } from '@lib/components/ActionButton';
|
import { ActionButton } from '@lib/components/ActionButton';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { YesNoUndefinedButton } from '@lib/components/YesNoButton';
|
import { YesNoUndefinedButton } from '@lib/components/YesNoButton';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import type { ApiFormFieldSet } from '@lib/types/Forms';
|
import type { ApiFormFieldSet } from '@lib/types/Forms';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
import { useShallow } from 'zustand/react/shallow';
|
import { useShallow } from 'zustand/react/shallow';
|
||||||
import { ActionDropdown } from '../../../../components/items/ActionDropdown';
|
import { ActionDropdown } from '../../../../components/items/ActionDropdown';
|
||||||
import { StylishText } from '../../../../components/items/StylishText';
|
|
||||||
import { useEditApiFormModal } from '../../../../hooks/UseForm';
|
import { useEditApiFormModal } from '../../../../hooks/UseForm';
|
||||||
import { useUserState } from '../../../../states/UserState';
|
import { useUserState } from '../../../../states/UserState';
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { create } from '@github/webauthn-json/browser-ponyfill';
|
import { create } from '@github/webauthn-json/browser-ponyfill';
|
||||||
import { CopyButton } from '@lib/components/CopyButton';
|
import { CopyButton } from '@lib/components/CopyButton';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import { FlowEnum } from '@lib/types/Auth';
|
import { FlowEnum } from '@lib/types/Auth';
|
||||||
@@ -32,7 +33,6 @@ import { useCallback, useEffect, useMemo, useState } from 'react';
|
|||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
import { useShallow } from 'zustand/react/shallow';
|
import { useShallow } from 'zustand/react/shallow';
|
||||||
import { api, queryClient } from '../../../../App';
|
import { api, queryClient } from '../../../../App';
|
||||||
import { StylishText } from '../../../../components/items/StylishText';
|
|
||||||
import { authApi, doLogout } from '../../../../functions/auth';
|
import { authApi, doLogout } from '../../../../functions/auth';
|
||||||
import { useServerApiState } from '../../../../states/ServerApiState';
|
import { useServerApiState } from '../../../../states/ServerApiState';
|
||||||
import { useGlobalSettingsState } from '../../../../states/SettingsStates';
|
import { useGlobalSettingsState } from '../../../../states/SettingsStates';
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { DefaultFallback } from '@lib/components/Boundary';
|
import { DefaultFallback } from '@lib/components/Boundary';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import type { AuthConfig, AuthProvider } from '@lib/types/Auth';
|
import type { AuthConfig, AuthProvider } from '@lib/types/Auth';
|
||||||
@@ -31,7 +32,6 @@ import {
|
|||||||
import { useQuery } from '@tanstack/react-query';
|
import { useQuery } from '@tanstack/react-query';
|
||||||
import { useCallback, useMemo, useState } from 'react';
|
import { useCallback, useMemo, useState } from 'react';
|
||||||
import { useShallow } from 'zustand/react/shallow';
|
import { useShallow } from 'zustand/react/shallow';
|
||||||
import { StylishText } from '../../../../components/items/StylishText';
|
|
||||||
import { ProviderLogin, authApi } from '../../../../functions/auth';
|
import { ProviderLogin, authApi } from '../../../../functions/auth';
|
||||||
import { useServerApiState } from '../../../../states/ServerApiState';
|
import { useServerApiState } from '../../../../states/ServerApiState';
|
||||||
import { useUserState } from '../../../../states/UserState';
|
import { useUserState } from '../../../../states/UserState';
|
||||||
|
|||||||
@@ -17,10 +17,10 @@ import {
|
|||||||
import { IconRestore } from '@tabler/icons-react';
|
import { IconRestore } from '@tabler/icons-react';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { useShallow } from 'zustand/react/shallow';
|
import { useShallow } from 'zustand/react/shallow';
|
||||||
import { ColorToggle } from '../../../../components/items/ColorToggle';
|
import { ColorToggle } from '../../../../components/items/ColorToggle';
|
||||||
import { LanguageSelect } from '../../../../components/items/LanguageSelect';
|
import { LanguageSelect } from '../../../../components/items/LanguageSelect';
|
||||||
import { StylishText } from '../../../../components/items/StylishText';
|
|
||||||
import { SizeMarks } from '../../../../defaults/defaults';
|
import { SizeMarks } from '../../../../defaults/defaults';
|
||||||
import { IS_DEV } from '../../../../main';
|
import { IS_DEV } from '../../../../main';
|
||||||
import { useLocalState } from '../../../../states/LocalState';
|
import { useLocalState } from '../../../../states/LocalState';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { Accordion } from '@mantine/core';
|
import { Accordion } from '@mantine/core';
|
||||||
|
|
||||||
import { StylishText } from '../../../../components/items/StylishText';
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ConfigValueList } from '../../../../components/settings/ConfigValueList';
|
import { ConfigValueList } from '../../../../components/settings/ConfigValueList';
|
||||||
import { EmailTable } from '../../../../tables/settings/EmailTable';
|
import { EmailTable } from '../../../../tables/settings/EmailTable';
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { Trans } from '@lingui/react/macro';
|
import { Trans } from '@lingui/react/macro';
|
||||||
import { Accordion, Alert, SimpleGrid, Stack, Text } from '@mantine/core';
|
import { Accordion, Alert, SimpleGrid, Stack, Text } from '@mantine/core';
|
||||||
import { type JSX, useMemo, useState } from 'react';
|
import { type JSX, useMemo, useState } from 'react';
|
||||||
import { useShallow } from 'zustand/react/shallow';
|
import { useShallow } from 'zustand/react/shallow';
|
||||||
import { StylishText } from '../../../../components/items/StylishText';
|
|
||||||
import {
|
import {
|
||||||
type ExtendedAlertInfo,
|
type ExtendedAlertInfo,
|
||||||
ServerAlert,
|
ServerAlert,
|
||||||
|
|||||||
@@ -13,10 +13,10 @@ import { IconInfoCircle, IconRefresh } from '@tabler/icons-react';
|
|||||||
import { useQuery } from '@tanstack/react-query';
|
import { useQuery } from '@tanstack/react-query';
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import { api } from '../../../../App';
|
import { api } from '../../../../App';
|
||||||
import { StylishText } from '../../../../components/items/StylishText';
|
|
||||||
import { GlobalSettingList } from '../../../../components/settings/SettingList';
|
import { GlobalSettingList } from '../../../../components/settings/SettingList';
|
||||||
import { MachineListTable } from '../../../../tables/machine/MachineListTable';
|
import { MachineListTable } from '../../../../tables/machine/MachineListTable';
|
||||||
import {
|
import {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { Accordion } from '@mantine/core';
|
import { Accordion } from '@mantine/core';
|
||||||
|
|
||||||
import { StylishText } from '../../../../components/items/StylishText';
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import ParameterTemplateTable from '../../../../tables/general/ParameterTemplateTable';
|
import ParameterTemplateTable from '../../../../tables/general/ParameterTemplateTable';
|
||||||
import SelectionListTable from '../../../../tables/part/SelectionListTable';
|
import SelectionListTable from '../../../../tables/part/SelectionListTable';
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import { Accordion, Alert, Stack } from '@mantine/core';
|
|||||||
import { IconInfoCircle } from '@tabler/icons-react';
|
import { IconInfoCircle } from '@tabler/icons-react';
|
||||||
import { lazy } from 'react';
|
import { lazy } from 'react';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { useShallow } from 'zustand/react/shallow';
|
import { useShallow } from 'zustand/react/shallow';
|
||||||
import { StylishText } from '../../../../components/items/StylishText';
|
|
||||||
import { GlobalSettingList } from '../../../../components/settings/SettingList';
|
import { GlobalSettingList } from '../../../../components/settings/SettingList';
|
||||||
import { Loadable } from '../../../../functions/loading';
|
import { Loadable } from '../../../../functions/loading';
|
||||||
import { useServerApiState } from '../../../../states/ServerApiState';
|
import { useServerApiState } from '../../../../states/ServerApiState';
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ import { t } from '@lingui/core/macro';
|
|||||||
import { Accordion, Alert, Divider, Stack, Text } from '@mantine/core';
|
import { Accordion, Alert, Divider, Stack, Text } from '@mantine/core';
|
||||||
import { lazy } from 'react';
|
import { lazy } from 'react';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { IconCircleCheck, IconExclamationCircle } from '@tabler/icons-react';
|
import { IconCircleCheck, IconExclamationCircle } from '@tabler/icons-react';
|
||||||
import { StylishText } from '../../../../components/items/StylishText';
|
|
||||||
import { errorCodeLink } from '../../../../components/nav/Alerts';
|
import { errorCodeLink } from '../../../../components/nav/Alerts';
|
||||||
import { FactCollection } from '../../../../components/settings/FactCollection';
|
import { FactCollection } from '../../../../components/settings/FactCollection';
|
||||||
import { Loadable } from '../../../../functions/loading';
|
import { Loadable } from '../../../../functions/loading';
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ import { t } from '@lingui/core/macro';
|
|||||||
import { Accordion, Stack } from '@mantine/core';
|
import { Accordion, Stack } from '@mantine/core';
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import useTable from '@lib/hooks/UseTable';
|
import useTable from '@lib/hooks/UseTable';
|
||||||
import { StylishText } from '../../../../components/items/StylishText';
|
|
||||||
import { BooleanColumn } from '../../../../tables/ColumnRenderers';
|
import { BooleanColumn } from '../../../../tables/ColumnRenderers';
|
||||||
import { InvenTreeTable } from '../../../../tables/InvenTreeTable';
|
import { InvenTreeTable } from '../../../../tables/InvenTreeTable';
|
||||||
import CustomUnitsTable from '../../../../tables/settings/CustomUnitsTable';
|
import CustomUnitsTable from '../../../../tables/settings/CustomUnitsTable';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { Accordion } from '@mantine/core';
|
import { Accordion } from '@mantine/core';
|
||||||
|
|
||||||
import { StylishText } from '../../../../components/items/StylishText';
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { GlobalSettingList } from '../../../../components/settings/SettingList';
|
import { GlobalSettingList } from '../../../../components/settings/SettingList';
|
||||||
import { ApiTokenTable } from '../../../../tables/settings/ApiTokenTable';
|
import { ApiTokenTable } from '../../../../tables/settings/ApiTokenTable';
|
||||||
import { GroupTable } from '../../../../tables/settings/GroupTable';
|
import { GroupTable } from '../../../../tables/settings/GroupTable';
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
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 { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
@@ -12,7 +13,6 @@ import {
|
|||||||
import { ItemDetailsGrid } from '../../components/details/ItemDetails';
|
import { ItemDetailsGrid } from '../../components/details/ItemDetails';
|
||||||
import {} from '../../components/items/ActionDropdown';
|
import {} from '../../components/items/ActionDropdown';
|
||||||
import { RoleTable, type RuleSet } from '../../components/items/RoleTable';
|
import { RoleTable, type RuleSet } from '../../components/items/RoleTable';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
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 type { PanelType } from '../../components/panels/Panel';
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { Accordion } from '@mantine/core';
|
import { Accordion } from '@mantine/core';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
import { useUserState } from '../../states/UserState';
|
import { useUserState } from '../../states/UserState';
|
||||||
import PartBuildAllocationsTable from '../../tables/part/PartBuildAllocationsTable';
|
import PartBuildAllocationsTable from '../../tables/part/PartBuildAllocationsTable';
|
||||||
import PartSalesAllocationsTable from '../../tables/part/PartSalesAllocationsTable';
|
import PartSalesAllocationsTable from '../../tables/part/PartSalesAllocationsTable';
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { RowDeleteAction, RowEditAction } from '@lib/components/RowActions';
|
import { RowDeleteAction, RowEditAction } from '@lib/components/RowActions';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
@@ -18,7 +19,6 @@ import {
|
|||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import { useCallback, useMemo, useState } from 'react';
|
import { useCallback, useMemo, useState } from 'react';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
import { formatDate, formatPriceRange } from '../../defaults/formatters';
|
import { formatDate, formatPriceRange } from '../../defaults/formatters';
|
||||||
import { partStocktakeFields } from '../../forms/PartForms';
|
import { partStocktakeFields } from '../../forms/PartForms';
|
||||||
import {
|
import {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { Accordion } from '@mantine/core';
|
import { Accordion } from '@mantine/core';
|
||||||
|
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ManufacturerPartTable } from '../../tables/purchasing/ManufacturerPartTable';
|
import { ManufacturerPartTable } from '../../tables/purchasing/ManufacturerPartTable';
|
||||||
import { SupplierPartTable } from '../../tables/purchasing/SupplierPartTable';
|
import { SupplierPartTable } from '../../tables/purchasing/SupplierPartTable';
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import {
|
|||||||
import { IconAlertCircle, IconExclamationCircle } from '@tabler/icons-react';
|
import { IconAlertCircle, IconExclamationCircle } from '@tabler/icons-react';
|
||||||
import type { ReactNode } from 'react';
|
import type { ReactNode } from 'react';
|
||||||
|
|
||||||
import { StylishText } from '../../../components/items/StylishText';
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import type { panelOptions } from '../PartPricingPanel';
|
import type { panelOptions } from '../PartPricingPanel';
|
||||||
|
|
||||||
function AccordionControl(props: AccordionControlProps) {
|
function AccordionControl(props: AccordionControlProps) {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { IconInfoCircle, IconList, IconPackages } from '@tabler/icons-react';
|
|||||||
import { type ReactNode, useMemo } from 'react';
|
import { type ReactNode, useMemo } from 'react';
|
||||||
import { useParams } from 'react-router-dom';
|
import { useParams } from 'react-router-dom';
|
||||||
|
|
||||||
|
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 { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
@@ -25,7 +26,6 @@ import {
|
|||||||
HoldItemAction,
|
HoldItemAction,
|
||||||
OptionsActionDropdown
|
OptionsActionDropdown
|
||||||
} from '../../components/items/ActionDropdown';
|
} from '../../components/items/ActionDropdown';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
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 AttachmentPanel from '../../components/panels/AttachmentPanel';
|
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { IconInfoCircle, IconList } from '@tabler/icons-react';
|
|||||||
import { type ReactNode, useMemo } from 'react';
|
import { type ReactNode, useMemo } from 'react';
|
||||||
import { useParams } from 'react-router-dom';
|
import { useParams } from 'react-router-dom';
|
||||||
|
|
||||||
|
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 { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
@@ -25,7 +26,6 @@ import {
|
|||||||
HoldItemAction,
|
HoldItemAction,
|
||||||
OptionsActionDropdown
|
OptionsActionDropdown
|
||||||
} from '../../components/items/ActionDropdown';
|
} from '../../components/items/ActionDropdown';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
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 AttachmentPanel from '../../components/panels/AttachmentPanel';
|
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import {
|
|||||||
import { type ReactNode, useMemo } from 'react';
|
import { type ReactNode, useMemo } from 'react';
|
||||||
import { useParams } from 'react-router-dom';
|
import { useParams } from 'react-router-dom';
|
||||||
|
|
||||||
|
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 { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
@@ -31,7 +32,6 @@ import {
|
|||||||
HoldItemAction,
|
HoldItemAction,
|
||||||
OptionsActionDropdown
|
OptionsActionDropdown
|
||||||
} from '../../components/items/ActionDropdown';
|
} from '../../components/items/ActionDropdown';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
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 AttachmentPanel from '../../components/panels/AttachmentPanel';
|
import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import { type ReactNode, useMemo, useState } from 'react';
|
|||||||
import { useNavigate, useParams } from 'react-router-dom';
|
import { useNavigate, useParams } from 'react-router-dom';
|
||||||
|
|
||||||
import { ActionButton } from '@lib/components/ActionButton';
|
import { ActionButton } from '@lib/components/ActionButton';
|
||||||
|
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 { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
@@ -54,7 +55,6 @@ import {
|
|||||||
EditItemAction,
|
EditItemAction,
|
||||||
OptionsActionDropdown
|
OptionsActionDropdown
|
||||||
} from '../../components/items/ActionDropdown';
|
} from '../../components/items/ActionDropdown';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
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';
|
||||||
|
|||||||
@@ -36,8 +36,6 @@ interface LocalStateProps {
|
|||||||
// panels
|
// panels
|
||||||
lastUsedPanels: Record<string, string>;
|
lastUsedPanels: Record<string, string>;
|
||||||
setLastUsedPanel: (panelKey: string) => (value: string) => void;
|
setLastUsedPanel: (panelKey: string) => (value: string) => void;
|
||||||
detailDrawerStack: number;
|
|
||||||
addDetailDrawer: (value: number | false) => void;
|
|
||||||
navigationOpen: boolean;
|
navigationOpen: boolean;
|
||||||
setNavigationOpen: (value: boolean) => void;
|
setNavigationOpen: (value: boolean) => void;
|
||||||
allowMobile: boolean;
|
allowMobile: boolean;
|
||||||
@@ -134,15 +132,6 @@ export const useLocalState = create<LocalStateProps>()(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// detail drawers
|
|
||||||
detailDrawerStack: 0,
|
|
||||||
addDetailDrawer: (value) => {
|
|
||||||
set({
|
|
||||||
detailDrawerStack:
|
|
||||||
value === false ? 0 : get().detailDrawerStack + value
|
|
||||||
});
|
|
||||||
},
|
|
||||||
// navigation
|
// navigation
|
||||||
navigationOpen: false,
|
navigationOpen: false,
|
||||||
setNavigationOpen: (value) => {
|
setNavigationOpen: (value) => {
|
||||||
@@ -162,7 +151,7 @@ export const useLocalState = create<LocalStateProps>()(
|
|||||||
/*
|
/*
|
||||||
pushes changes in user profile to backend
|
pushes changes in user profile to backend
|
||||||
*/
|
*/
|
||||||
function patchUser(key: 'language' | 'theme' | 'widgets', val: any) {
|
export function patchUser(key: 'language' | 'theme' | 'widgets', val: any) {
|
||||||
const uid = useUserState.getState().userId();
|
const uid = useUserState.getState().userId();
|
||||||
if (uid) {
|
if (uid) {
|
||||||
api.patch(apiUrl(ApiEndpoints.user_profile), { [key]: val });
|
api.patch(apiUrl(ApiEndpoints.user_profile), { [key]: val });
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import { DateInput, type DateValue } from '@mantine/dates';
|
|||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import { useCallback, useEffect, useMemo, useState } from 'react';
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import type {
|
import type {
|
||||||
FilterSetState,
|
FilterSetState,
|
||||||
TableFilter,
|
TableFilter,
|
||||||
@@ -27,7 +28,6 @@ import type {
|
|||||||
} from '@lib/types/Filters';
|
} from '@lib/types/Filters';
|
||||||
import { IconCheck } from '@tabler/icons-react';
|
import { IconCheck } from '@tabler/icons-react';
|
||||||
import { StandaloneField } from '../components/forms/StandaloneField';
|
import { StandaloneField } from '../components/forms/StandaloneField';
|
||||||
import { StylishText } from '../components/items/StylishText';
|
|
||||||
import {
|
import {
|
||||||
filterDisplayLabel,
|
filterDisplayLabel,
|
||||||
filterDisplayValue,
|
filterDisplayValue,
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import { ActionButton } from '@lib/components/ActionButton';
|
|||||||
import { Boundary } from '@lib/components/Boundary';
|
import { Boundary } from '@lib/components/Boundary';
|
||||||
import { ButtonMenu } from '@lib/components/ButtonMenu';
|
import { ButtonMenu } from '@lib/components/ButtonMenu';
|
||||||
import { SearchInput } from '@lib/components/SearchInput';
|
import { SearchInput } from '@lib/components/SearchInput';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { TableColumnSelect } from '@lib/components/TableColumnSelect';
|
import { TableColumnSelect } from '@lib/components/TableColumnSelect';
|
||||||
import { resolveItem } from '@lib/functions/Conversion';
|
import { resolveItem } from '@lib/functions/Conversion';
|
||||||
import type { TableFilter } from '@lib/types/Filters';
|
import type { TableFilter } from '@lib/types/Filters';
|
||||||
@@ -33,7 +34,6 @@ import type { TableState } from '@lib/types/Tables';
|
|||||||
import type { InvenTreeTableProps } from '@lib/types/Tables';
|
import type { InvenTreeTableProps } from '@lib/types/Tables';
|
||||||
import { showNotification } from '@mantine/notifications';
|
import { showNotification } from '@mantine/notifications';
|
||||||
import { PrintingActions } from '../components/buttons/PrintingActions';
|
import { PrintingActions } from '../components/buttons/PrintingActions';
|
||||||
import { StylishText } from '../components/items/StylishText';
|
|
||||||
import useDataExport from '../hooks/UseDataExport';
|
import useDataExport from '../hooks/UseDataExport';
|
||||||
import { useDeleteApiFormModal } from '../hooks/UseForm';
|
import { useDeleteApiFormModal } from '../hooks/UseForm';
|
||||||
import { FilterPreview, FilterSelectDrawer } from './FilterSelectDrawer';
|
import { FilterPreview, FilterSelectDrawer } from './FilterSelectDrawer';
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import { ActionButton } from '@lib/components/ActionButton';
|
|||||||
import { AddItemButton } from '@lib/components/AddItemButton';
|
import { AddItemButton } from '@lib/components/AddItemButton';
|
||||||
import { ProgressBar } from '@lib/components/ProgressBar';
|
import { ProgressBar } from '@lib/components/ProgressBar';
|
||||||
import { type RowAction, RowEditAction } from '@lib/components/RowActions';
|
import { type RowAction, RowEditAction } from '@lib/components/RowActions';
|
||||||
|
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 { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
@@ -32,7 +33,6 @@ import useTable from '@lib/hooks/UseTable';
|
|||||||
import type { TableFilter } from '@lib/types/Filters';
|
import type { TableFilter } from '@lib/types/Filters';
|
||||||
import type { StockOperationProps } from '@lib/types/Forms';
|
import type { StockOperationProps } from '@lib/types/Forms';
|
||||||
import type { TableColumn } from '@lib/types/Tables';
|
import type { TableColumn } from '@lib/types/Tables';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
import { useApi } from '../../contexts/ApiContext';
|
import { useApi } from '../../contexts/ApiContext';
|
||||||
import {
|
import {
|
||||||
useBuildAutoAllocateFields,
|
useBuildAutoAllocateFields,
|
||||||
|
|||||||
@@ -23,7 +23,12 @@ import { useCallback, useMemo, useState } from 'react';
|
|||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
|
|
||||||
import { AddItemButton } from '@lib/components/AddItemButton';
|
import { AddItemButton } from '@lib/components/AddItemButton';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { YesNoButton } from '@lib/components/YesNoButton';
|
import { YesNoButton } from '@lib/components/YesNoButton';
|
||||||
|
import {
|
||||||
|
DetailDrawer,
|
||||||
|
DetailDrawerLink
|
||||||
|
} from '@lib/components/nav/DetailDrawer';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import useTable from '@lib/hooks/UseTable';
|
import useTable from '@lib/hooks/UseTable';
|
||||||
@@ -38,12 +43,7 @@ import {
|
|||||||
OptionsActionDropdown
|
OptionsActionDropdown
|
||||||
} from '../../components/items/ActionDropdown';
|
} from '../../components/items/ActionDropdown';
|
||||||
import { InfoItem } from '../../components/items/InfoItem';
|
import { InfoItem } from '../../components/items/InfoItem';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
import { UnavailableIndicator } from '../../components/items/UnavailableIndicator';
|
import { UnavailableIndicator } from '../../components/items/UnavailableIndicator';
|
||||||
import {
|
|
||||||
DetailDrawer,
|
|
||||||
DetailDrawerLink
|
|
||||||
} from '../../components/nav/DetailDrawer';
|
|
||||||
import {
|
import {
|
||||||
StatusRenderer,
|
StatusRenderer,
|
||||||
TableStatusRenderer
|
TableStatusRenderer
|
||||||
|
|||||||
@@ -18,14 +18,14 @@ import { IconExclamationCircle, IconRefresh } from '@tabler/icons-react';
|
|||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
|
import { DetailDrawer } from '@lib/components/nav/DetailDrawer';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import useTable from '@lib/hooks/UseTable';
|
import useTable from '@lib/hooks/UseTable';
|
||||||
import type { TableColumn } from '@lib/types/Tables';
|
import type { TableColumn } from '@lib/types/Tables';
|
||||||
import type { InvenTreeTableProps } from '@lib/types/Tables';
|
import type { InvenTreeTableProps } from '@lib/types/Tables';
|
||||||
import { InfoItem } from '../../components/items/InfoItem';
|
import { InfoItem } from '../../components/items/InfoItem';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
import { DetailDrawer } from '../../components/nav/DetailDrawer';
|
|
||||||
import { BooleanColumn, DescriptionColumn } from '../ColumnRenderers';
|
import { BooleanColumn, DescriptionColumn } from '../ColumnRenderers';
|
||||||
import { InvenTreeTable } from '../InvenTreeTable';
|
import { InvenTreeTable } from '../InvenTreeTable';
|
||||||
import { MachineListTable, useMachineTypeDriver } from './MachineListTable';
|
import { MachineListTable, useMachineTypeDriver } from './MachineListTable';
|
||||||
|
|||||||
@@ -15,11 +15,11 @@ import { useNavigate } from 'react-router-dom';
|
|||||||
|
|
||||||
import { ActionButton } from '@lib/components/ActionButton';
|
import { ActionButton } from '@lib/components/ActionButton';
|
||||||
import type { RowAction } from '@lib/components/RowActions';
|
import type { RowAction } from '@lib/components/RowActions';
|
||||||
|
import { DetailDrawer } from '@lib/components/nav/DetailDrawer';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import useTable from '@lib/hooks/UseTable';
|
import useTable from '@lib/hooks/UseTable';
|
||||||
import type { TableColumn } from '@lib/types/Tables';
|
import type { TableColumn } from '@lib/types/Tables';
|
||||||
import { DetailDrawer } from '../../components/nav/DetailDrawer';
|
|
||||||
import PluginDrawer from '../../components/plugins/PluginDrawer';
|
import PluginDrawer from '../../components/plugins/PluginDrawer';
|
||||||
import type { PluginInterface } from '../../components/plugins/PluginInterface';
|
import type { PluginInterface } from '../../components/plugins/PluginInterface';
|
||||||
import { useApi } from '../../contexts/ApiContext';
|
import { useApi } from '../../contexts/ApiContext';
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { AddItemButton } from '@lib/components/AddItemButton';
|
import { AddItemButton } from '@lib/components/AddItemButton';
|
||||||
import { CopyButton } from '@lib/components/CopyButton';
|
import { CopyButton } from '@lib/components/CopyButton';
|
||||||
import type { RowAction } from '@lib/components/RowActions';
|
import type { RowAction } from '@lib/components/RowActions';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import useTable from '@lib/hooks/UseTable';
|
import useTable from '@lib/hooks/UseTable';
|
||||||
@@ -12,7 +13,6 @@ import { useDisclosure } from '@mantine/hooks';
|
|||||||
import { IconCircleX } from '@tabler/icons-react';
|
import { IconCircleX } from '@tabler/icons-react';
|
||||||
import { useCallback, useMemo, useState } from 'react';
|
import { useCallback, useMemo, useState } from 'react';
|
||||||
import { api } from '../../App';
|
import { api } from '../../App';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
import { showApiErrorMessage } from '../../functions/notifications';
|
import { showApiErrorMessage } from '../../functions/notifications';
|
||||||
import { useCreateApiFormModal } from '../../hooks/UseForm';
|
import { useCreateApiFormModal } from '../../hooks/UseForm';
|
||||||
import { BooleanColumn, UserColumn } from '../ColumnRenderers';
|
import { BooleanColumn, UserColumn } from '../ColumnRenderers';
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import { useCallback, useMemo, useState } from 'react';
|
|||||||
|
|
||||||
import { CopyButton } from '@lib/components/CopyButton';
|
import { CopyButton } from '@lib/components/CopyButton';
|
||||||
import { RowDeleteAction } from '@lib/components/RowActions';
|
import { RowDeleteAction } from '@lib/components/RowActions';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { PassFailButton } from '@lib/components/YesNoButton';
|
import { PassFailButton } from '@lib/components/YesNoButton';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
@@ -24,7 +25,6 @@ import { shortenString } from '@lib/functions/String';
|
|||||||
import useTable from '@lib/hooks/UseTable';
|
import useTable from '@lib/hooks/UseTable';
|
||||||
import type { TableFilter } from '@lib/types/Filters';
|
import type { TableFilter } from '@lib/types/Filters';
|
||||||
import type { TableColumn } from '@lib/types/Tables';
|
import type { TableColumn } from '@lib/types/Tables';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
import { RenderUser } from '../../components/render/User';
|
import { RenderUser } from '../../components/render/User';
|
||||||
import { useDeleteApiFormModal } from '../../hooks/UseForm';
|
import { useDeleteApiFormModal } from '../../hooks/UseForm';
|
||||||
import { useGlobalSettingsState } from '../../states/SettingsStates';
|
import { useGlobalSettingsState } from '../../states/SettingsStates';
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ import { useNavigate, useParams } from 'react-router-dom';
|
|||||||
|
|
||||||
import { CopyButton } from '@lib/components/CopyButton';
|
import { CopyButton } from '@lib/components/CopyButton';
|
||||||
import { type RowAction, RowDeleteAction } from '@lib/components/RowActions';
|
import { type RowAction, RowDeleteAction } from '@lib/components/RowActions';
|
||||||
|
import { DetailDrawer } from '@lib/components/nav/DetailDrawer';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import useTable from '@lib/hooks/UseTable';
|
import useTable from '@lib/hooks/UseTable';
|
||||||
import type { TableColumn } from '@lib/types/Tables';
|
import type { TableColumn } from '@lib/types/Tables';
|
||||||
import { DetailDrawer } from '../../components/nav/DetailDrawer';
|
|
||||||
import { useDeleteApiFormModal } from '../../hooks/UseForm';
|
import { useDeleteApiFormModal } from '../../hooks/UseForm';
|
||||||
import { useInstance } from '../../hooks/UseInstance';
|
import { useInstance } from '../../hooks/UseInstance';
|
||||||
import { useUserState } from '../../states/UserState';
|
import { useUserState } from '../../states/UserState';
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ import { hideNotification, showNotification } from '@mantine/notifications';
|
|||||||
import { IconExclamationCircle } from '@tabler/icons-react';
|
import { IconExclamationCircle } from '@tabler/icons-react';
|
||||||
import { useMemo, useState } from 'react';
|
import { useMemo, useState } from 'react';
|
||||||
|
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import useTable from '@lib/hooks/UseTable';
|
import useTable from '@lib/hooks/UseTable';
|
||||||
import type { TableColumn } from '@lib/types/Tables';
|
import type { TableColumn } from '@lib/types/Tables';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
import { useUserState } from '../../states/UserState';
|
import { useUserState } from '../../states/UserState';
|
||||||
import { InvenTreeTable } from '../InvenTreeTable';
|
import { InvenTreeTable } from '../InvenTreeTable';
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ import {
|
|||||||
RowDeleteAction,
|
RowDeleteAction,
|
||||||
RowEditAction
|
RowEditAction
|
||||||
} from '@lib/components/RowActions';
|
} from '@lib/components/RowActions';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
|
import { DetailDrawer } from '@lib/components/nav/DetailDrawer';
|
||||||
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 { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
@@ -20,8 +22,6 @@ import { IconUsersGroup } from '@tabler/icons-react';
|
|||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
import { EditApiForm } from '../../components/forms/ApiForm';
|
import { EditApiForm } from '../../components/forms/ApiForm';
|
||||||
import { RoleTable, type RuleSet } from '../../components/items/RoleTable';
|
import { RoleTable, type RuleSet } from '../../components/items/RoleTable';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
import { DetailDrawer } from '../../components/nav/DetailDrawer';
|
|
||||||
import {
|
import {
|
||||||
useCreateApiFormModal,
|
useCreateApiFormModal,
|
||||||
useDeleteApiFormModal
|
useDeleteApiFormModal
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import {
|
|||||||
RowDeleteAction,
|
RowDeleteAction,
|
||||||
RowEditAction
|
RowEditAction
|
||||||
} from '@lib/components/RowActions';
|
} from '@lib/components/RowActions';
|
||||||
|
import { DetailDrawer } from '@lib/components/nav/DetailDrawer';
|
||||||
import type { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
import type { 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 { apiUrl } from '@lib/functions/Api';
|
||||||
@@ -30,7 +31,6 @@ import type {
|
|||||||
} from '../../components/editors/TemplateEditor/TemplateEditor';
|
} from '../../components/editors/TemplateEditor/TemplateEditor';
|
||||||
import { ApiIcon } from '../../components/items/ApiIcon';
|
import { ApiIcon } from '../../components/items/ApiIcon';
|
||||||
import { AttachmentLink } from '../../components/items/AttachmentLink';
|
import { AttachmentLink } from '../../components/items/AttachmentLink';
|
||||||
import { DetailDrawer } from '../../components/nav/DetailDrawer';
|
|
||||||
import {
|
import {
|
||||||
getPluginTemplateEditor,
|
getPluginTemplateEditor,
|
||||||
getPluginTemplatePreview
|
getPluginTemplatePreview
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ import {
|
|||||||
RowDeleteAction,
|
RowDeleteAction,
|
||||||
RowEditAction
|
RowEditAction
|
||||||
} from '@lib/components/RowActions';
|
} from '@lib/components/RowActions';
|
||||||
|
import { StylishText } from '@lib/components/StylishText';
|
||||||
|
import { DetailDrawer } from '@lib/components/nav/DetailDrawer';
|
||||||
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 { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
@@ -29,12 +31,10 @@ import { useNavigate } from 'react-router-dom';
|
|||||||
import { useShallow } from 'zustand/react/shallow';
|
import { useShallow } from 'zustand/react/shallow';
|
||||||
import { api } from '../../App';
|
import { api } from '../../App';
|
||||||
import { EditApiForm } from '../../components/forms/ApiForm';
|
import { EditApiForm } from '../../components/forms/ApiForm';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
|
||||||
import {
|
import {
|
||||||
TransferList,
|
TransferList,
|
||||||
type TransferListItem
|
type TransferListItem
|
||||||
} from '../../components/items/TransferList';
|
} from '../../components/items/TransferList';
|
||||||
import { DetailDrawer } from '../../components/nav/DetailDrawer';
|
|
||||||
import { showApiErrorMessage } from '../../functions/notifications';
|
import { showApiErrorMessage } from '../../functions/notifications';
|
||||||
import {
|
import {
|
||||||
useApiFormModal,
|
useApiFormModal,
|
||||||
|
|||||||
Reference in New Issue
Block a user