diff --git a/src/frontend/src/components/Boundary.tsx b/src/frontend/src/components/Boundary.tsx index 1ad6529883..126b9b76fb 100644 --- a/src/frontend/src/components/Boundary.tsx +++ b/src/frontend/src/components/Boundary.tsx @@ -4,7 +4,7 @@ import { ErrorBoundary, FallbackRender } from '@sentry/react'; import { IconExclamationCircle } from '@tabler/icons-react'; import { ReactNode, useCallback } from 'react'; -function DefaultFallback({ title }: { title: String }): ReactNode { +function DefaultFallback({ title }: Readonly<{ title: string }>): ReactNode { return ( ): ReactNode { const onError = useCallback( (error: unknown, componentStack: string | undefined, eventId: string) => { console.error(`Error rendering component: ${label}`); diff --git a/src/frontend/src/components/buttons/AdminButton.tsx b/src/frontend/src/components/buttons/AdminButton.tsx index 0b59e0be9e..cccf7c6c48 100644 --- a/src/frontend/src/components/buttons/AdminButton.tsx +++ b/src/frontend/src/components/buttons/AdminButton.tsx @@ -22,7 +22,7 @@ export type AdminButtonProps = { * - The user has "superuser" role * - The user has at least read rights for the selected item */ -export default function AdminButton(props: AdminButtonProps) { +export default function AdminButton(props: Readonly) { const user = useUserState(); const enabled: boolean = useMemo(() => { diff --git a/src/frontend/src/components/buttons/PrimaryActionButton.tsx b/src/frontend/src/components/buttons/PrimaryActionButton.tsx index c4c61d2e89..65aa4defae 100644 --- a/src/frontend/src/components/buttons/PrimaryActionButton.tsx +++ b/src/frontend/src/components/buttons/PrimaryActionButton.tsx @@ -12,14 +12,14 @@ export default function PrimaryActionButton({ color, hidden, onClick -}: { +}: Readonly<{ title: string; tooltip?: string; icon?: InvenTreeIconType; color?: string; hidden?: boolean; onClick: () => void; -}) { +}>) { if (hidden) { return null; } diff --git a/src/frontend/src/components/buttons/RemoveRowButton.tsx b/src/frontend/src/components/buttons/RemoveRowButton.tsx index f46a928cfc..ebdcca60c1 100644 --- a/src/frontend/src/components/buttons/RemoveRowButton.tsx +++ b/src/frontend/src/components/buttons/RemoveRowButton.tsx @@ -6,10 +6,10 @@ import { ActionButton } from './ActionButton'; export default function RemoveRowButton({ onClick, tooltip = t`Remove this row` -}: { +}: Readonly<{ onClick: () => void; tooltip?: string; -}) { +}>) { return ( ) { const v = isTrue(value); - const pass = passText || t`Pass`; - const fail = failText || t`Fail`; + const pass = passText ?? t`Pass`; + const fail = failText ?? t`Fail`; return ( ) { return ; } -export function YesNoUndefinedButton({ value }: { value?: boolean }) { +export function YesNoUndefinedButton({ value }: Readonly<{ value?: boolean }>) { if (value === undefined) { return ; } else { diff --git a/src/frontend/src/components/editors/NotesEditor.tsx b/src/frontend/src/components/editors/NotesEditor.tsx index e7f02c3d89..5cd3382795 100644 --- a/src/frontend/src/components/editors/NotesEditor.tsx +++ b/src/frontend/src/components/editors/NotesEditor.tsx @@ -1,6 +1,4 @@ -// import SimpleMDE from "react-simplemde-editor"; import { t } from '@lingui/macro'; -import { useMantineColorScheme } from '@mantine/core'; import { notifications } from '@mantine/notifications'; import { useQuery } from '@tanstack/react-query'; import EasyMDE, { default as SimpleMde } from 'easymde'; @@ -60,13 +58,11 @@ export default function NotesEditor({ modelType, modelId, editable -}: { +}: Readonly<{ modelType: ModelType; modelId: number; editable?: boolean; -}) { - const { colorScheme } = useMantineColorScheme(); - +}>) { // In addition to the editable prop, we also need to check if the user has "enabled" editing const [editing, setEditing] = useState(false); diff --git a/src/frontend/src/components/errors/ClientError.tsx b/src/frontend/src/components/errors/ClientError.tsx index 85811ac736..67869b7231 100644 --- a/src/frontend/src/components/errors/ClientError.tsx +++ b/src/frontend/src/components/errors/ClientError.tsx @@ -5,7 +5,7 @@ import NotAuthenticated from './NotAuthenticated'; import NotFound from './NotFound'; import PermissionDenied from './PermissionDenied'; -export default function ClientError({ status }: { status?: number }) { +export default function ClientError({ status }: Readonly<{ status?: number }>) { switch (status) { case 401: return ; diff --git a/src/frontend/src/components/errors/GenericErrorPage.tsx b/src/frontend/src/components/errors/GenericErrorPage.tsx index 0e712e0bb0..128f487955 100644 --- a/src/frontend/src/components/errors/GenericErrorPage.tsx +++ b/src/frontend/src/components/errors/GenericErrorPage.tsx @@ -19,13 +19,13 @@ export default function ErrorPage({ title, message, status -}: { +}: Readonly<{ title: string; message: string; status?: number; redirectMessage?: string; redirectTarget?: string; -}) { +}>) { const navigate = useNavigate(); return ( diff --git a/src/frontend/src/components/forms/fields/ChoiceField.tsx b/src/frontend/src/components/forms/fields/ChoiceField.tsx index 10e860aedd..fcf6f21917 100644 --- a/src/frontend/src/components/forms/fields/ChoiceField.tsx +++ b/src/frontend/src/components/forms/fields/ChoiceField.tsx @@ -1,6 +1,6 @@ import { Select } from '@mantine/core'; import { useId } from '@mantine/hooks'; -import { useCallback, useEffect, useMemo } from 'react'; +import { useCallback, useMemo } from 'react'; import { FieldValues, UseControllerReturn } from 'react-hook-form'; import { ApiFormFieldType } from './ApiFormField'; @@ -12,11 +12,11 @@ export function ChoiceField({ controller, definition, fieldName -}: { +}: Readonly<{ controller: UseControllerReturn; definition: ApiFormFieldType; fieldName: string; -}) { +}>) { const fieldId = useId(); const { diff --git a/src/frontend/src/components/forms/fields/DependentField.tsx b/src/frontend/src/components/forms/fields/DependentField.tsx index 216275d6b7..0b44ba7ccd 100644 --- a/src/frontend/src/components/forms/fields/DependentField.tsx +++ b/src/frontend/src/components/forms/fields/DependentField.tsx @@ -18,13 +18,13 @@ export function DependentField({ definition, url, setFields -}: { +}: Readonly<{ control: Control; definition: ApiFormFieldType; fieldName: string; url?: string; setFields?: React.Dispatch>; -}) { +}>) { const { watch, resetField } = useFormContext(); const mappedFieldNames = useMemo( diff --git a/src/frontend/src/components/forms/fields/TableField.tsx b/src/frontend/src/components/forms/fields/TableField.tsx index 333ed40cac..83841eef31 100644 --- a/src/frontend/src/components/forms/fields/TableField.tsx +++ b/src/frontend/src/components/forms/fields/TableField.tsx @@ -20,16 +20,16 @@ export function TableField({ definition, fieldName, control -}: { +}: Readonly<{ definition: ApiFormFieldType; fieldName: string; control: UseControllerReturn; -}) { +}>) { const { field, fieldState: { error } } = control; - const { value, ref } = field; + const { value } = field; const onRowFieldChange = (idx: number, key: string, value: any) => { const val = field.value; diff --git a/src/frontend/src/components/forms/fields/TextField.tsx b/src/frontend/src/components/forms/fields/TextField.tsx index 0445d4feaa..1f5cabf13e 100644 --- a/src/frontend/src/components/forms/fields/TextField.tsx +++ b/src/frontend/src/components/forms/fields/TextField.tsx @@ -14,12 +14,12 @@ export default function TextField({ fieldName, definition, onChange -}: { +}: Readonly<{ controller: UseControllerReturn; definition: any; fieldName: string; onChange: (value: any) => void; -}) { +}>) { const fieldId = useId(); const { field, diff --git a/src/frontend/src/components/images/Thumbnail.tsx b/src/frontend/src/components/images/Thumbnail.tsx index 63e2414122..148fcc09f9 100644 --- a/src/frontend/src/components/images/Thumbnail.tsx +++ b/src/frontend/src/components/images/Thumbnail.tsx @@ -1,5 +1,5 @@ import { t } from '@lingui/macro'; -import { Anchor, Group, Skeleton, Text } from '@mantine/core'; +import { Anchor, Group } from '@mantine/core'; import { ReactNode, useMemo } from 'react'; import { ApiImage } from './ApiImage'; @@ -14,14 +14,14 @@ export function Thumbnail({ link, text, align -}: { - src?: string | undefined; +}: Readonly<{ + src?: string; alt?: string; size?: number; text?: ReactNode; align?: string; link?: string; -}) { +}>) { const backup_image = '/static/img/blank_image.png'; const inner = useMemo(() => { diff --git a/src/frontend/src/components/importer/ImportDataSelector.tsx b/src/frontend/src/components/importer/ImportDataSelector.tsx index 83c210e3f3..1cdd1ccf97 100644 --- a/src/frontend/src/components/importer/ImportDataSelector.tsx +++ b/src/frontend/src/components/importer/ImportDataSelector.tsx @@ -38,12 +38,12 @@ function ImporterDataCell({ column, row, onEdit -}: { +}: Readonly<{ session: ImportSessionState; column: any; row: any; onEdit?: () => void; -}) { +}>) { const onRowEdit = useCallback( (event: any) => { cancelEvent(event); @@ -128,9 +128,9 @@ function ImporterDataCell({ export default function ImporterDataSelector({ session -}: { +}: Readonly<{ session: ImportSessionState; -}) { +}>) { const table = useTable('dataimporter'); const [selectedFieldNames, setSelectedFieldNames] = useState([]); @@ -377,6 +377,7 @@ export default function ImporterDataSelector({ return [ } color="green" diff --git a/src/frontend/src/components/importer/ImporterColumnSelector.tsx b/src/frontend/src/components/importer/ImporterColumnSelector.tsx index 0fe47653db..1e903009f0 100644 --- a/src/frontend/src/components/importer/ImporterColumnSelector.tsx +++ b/src/frontend/src/components/importer/ImporterColumnSelector.tsx @@ -20,7 +20,10 @@ import { apiUrl } from '../../states/ApiState'; import { StandaloneField } from '../forms/StandaloneField'; import { ApiFormFieldType } from '../forms/fields/ApiFormField'; -function ImporterColumn({ column, options }: { column: any; options: any[] }) { +function ImporterColumn({ + column, + options +}: Readonly<{ column: any; options: any[] }>) { const [errorMessage, setErrorMessage] = useState(''); const [selectedColumn, setSelectedColumn] = useState( @@ -122,11 +125,11 @@ function ImporterColumnTableRow({ session, column, options -}: { +}: Readonly<{ session: ImportSessionState; column: any; options: any; -}) { +}>) { return ( @@ -156,9 +159,9 @@ function ImporterColumnTableRow({ export default function ImporterColumnSelector({ session -}: { +}: Readonly<{ session: ImportSessionState; -}) { +}>) { const [errorMessage, setErrorMessage] = useState(''); const acceptMapping = useCallback(() => { @@ -221,6 +224,7 @@ export default function ImporterColumnSelector({ {session.columnMappings.map((column: any) => { return ( ) { /* TODO: Enhance this with: * - Custom icons * - Loading indicators for "background" states @@ -54,11 +56,11 @@ export default function ImporterDrawer({ sessionId, opened, onClose -}: { +}: Readonly<{ sessionId: number; opened: boolean; onClose: () => void; -}) { +}>) { const session = useImportSession({ sessionId: sessionId }); const importSessionStatus = useStatusCodes({ diff --git a/src/frontend/src/components/importer/ImporterImportProgress.tsx b/src/frontend/src/components/importer/ImporterImportProgress.tsx index 34231e9d9f..01820ec675 100644 --- a/src/frontend/src/components/importer/ImporterImportProgress.tsx +++ b/src/frontend/src/components/importer/ImporterImportProgress.tsx @@ -10,9 +10,9 @@ import { StylishText } from '../items/StylishText'; export default function ImporterImportProgress({ session -}: { +}: Readonly<{ session: ImportSessionState; -}) { +}>) { const importSessionStatus = useStatusCodes({ modelType: ModelType.importsession }); diff --git a/src/frontend/src/components/items/ActionDropdown.tsx b/src/frontend/src/components/items/ActionDropdown.tsx index aca665ffd6..e8e730af90 100644 --- a/src/frontend/src/components/items/ActionDropdown.tsx +++ b/src/frontend/src/components/items/ActionDropdown.tsx @@ -127,11 +127,11 @@ export function OptionsActionDropdown({ actions = [], tooltip = t`Options`, hidden = false -}: { +}: Readonly<{ actions: ActionDropdownItem[]; tooltip?: string; hidden?: boolean; -}) { +}>) { return ( } diff --git a/src/frontend/src/components/items/QRCode.tsx b/src/frontend/src/components/items/QRCode.tsx index 627dcfa459..be8c573bb3 100644 --- a/src/frontend/src/components/items/QRCode.tsx +++ b/src/frontend/src/components/items/QRCode.tsx @@ -11,7 +11,6 @@ import { Stack, Text } from '@mantine/core'; -import { useDisclosure } from '@mantine/hooks'; import { modals } from '@mantine/modals'; import { useQuery } from '@tanstack/react-query'; import QR from 'qrcode'; @@ -143,7 +142,6 @@ export const InvenTreeQRCode = ({ export const QRCodeLink = ({ mdl_prop }: { mdl_prop: QrCodeType }) => { const [barcode, setBarcode] = useState(''); - const [isScanning, toggleIsScanning] = useDisclosure(false); function linkBarcode(value?: string) { api diff --git a/src/frontend/src/components/nav/InstanceDetail.tsx b/src/frontend/src/components/nav/InstanceDetail.tsx index 1baeb669a5..98ed5d0292 100644 --- a/src/frontend/src/components/nav/InstanceDetail.tsx +++ b/src/frontend/src/components/nav/InstanceDetail.tsx @@ -8,11 +8,11 @@ export default function InstanceDetail({ status, loading, children -}: { +}: Readonly<{ status: number; loading: boolean; children: React.ReactNode; -}) { +}>) { const user = useUserState(); if (loading || !user.isLoggedIn()) { diff --git a/src/frontend/src/components/nav/NavigationTree.tsx b/src/frontend/src/components/nav/NavigationTree.tsx index ceb166cf0c..ec2773f92e 100644 --- a/src/frontend/src/components/nav/NavigationTree.tsx +++ b/src/frontend/src/components/nav/NavigationTree.tsx @@ -40,14 +40,14 @@ export default function NavigationTree({ selectedId, modelType, endpoint -}: { +}: Readonly<{ title: string; opened: boolean; onClose: () => void; selectedId?: number | null; modelType: ModelType; endpoint: ApiEndpoints; -}) { +}>) { const navigate = useNavigate(); const treeState = useTree(); diff --git a/src/frontend/src/components/plugins/PluginPanel.tsx b/src/frontend/src/components/plugins/PluginPanel.tsx index d2bb708275..dbabc549b8 100644 --- a/src/frontend/src/components/plugins/PluginPanel.tsx +++ b/src/frontend/src/components/plugins/PluginPanel.tsx @@ -64,10 +64,10 @@ export async function isPluginPanelHidden({ export default function PluginPanelContent({ pluginProps, pluginContext -}: { +}: Readonly<{ pluginProps: PluginPanelProps; pluginContext: PluginContext; -}): ReactNode { +}>): ReactNode { const ref = useRef(); const [error, setError] = useState(undefined); diff --git a/src/frontend/src/components/render/Instance.tsx b/src/frontend/src/components/render/Instance.tsx index c2df42a7d3..9f9c4b1c76 100644 --- a/src/frontend/src/components/render/Instance.tsx +++ b/src/frontend/src/components/render/Instance.tsx @@ -121,10 +121,10 @@ export function RenderInstance(props: RenderInstanceProps): ReactNode { export function RenderRemoteInstance({ model, pk -}: { +}: Readonly<{ model: ModelType; pk: number; -}): ReactNode { +}>): ReactNode { const { data, isLoading, isFetching } = useQuery({ queryKey: ['model', model, pk], queryFn: async () => { @@ -166,7 +166,7 @@ export function RenderInlineModel({ navigate, showSecondary = true, tooltip -}: { +}: Readonly<{ primary: string; secondary?: string; showSecondary?: boolean; @@ -177,7 +177,7 @@ export function RenderInlineModel({ url?: string; navigate?: any; tooltip?: string; -}): ReactNode { +}>): ReactNode { // TODO: Handle labels const onClick = useCallback( @@ -215,9 +215,9 @@ export function RenderInlineModel({ export function UnknownRenderer({ model -}: { +}: Readonly<{ model: ModelType | undefined; -}): ReactNode { +}>): ReactNode { return ( <> diff --git a/src/frontend/src/components/render/Plugin.tsx b/src/frontend/src/components/render/Plugin.tsx index 6ba246ef4d..59770d00dd 100644 --- a/src/frontend/src/components/render/Plugin.tsx +++ b/src/frontend/src/components/render/Plugin.tsx @@ -6,9 +6,9 @@ import { RenderInlineModel } from './Instance'; export function RenderPlugin({ instance -}: { +}: Readonly<{ instance: Readonly; -}): ReactNode { +}>): ReactNode { return ( ): ReactNode { return ( ): ReactNode { return ( ) { return ( {items.map((item, index) => ( - + ))} ); diff --git a/src/frontend/src/components/settings/FactItem.tsx b/src/frontend/src/components/settings/FactItem.tsx index bc549c3b50..a4a69cf926 100644 --- a/src/frontend/src/components/settings/FactItem.tsx +++ b/src/frontend/src/components/settings/FactItem.tsx @@ -2,7 +2,10 @@ import { Paper, Stack, Text } from '@mantine/core'; import { StylishText } from '../items/StylishText'; -export function FactItem({ title, value }: { title: string; value: number }) { +export function FactItem({ + title, + value +}: Readonly<{ title: string; value: number }>) { return ( diff --git a/src/frontend/src/forms/BuildForms.tsx b/src/frontend/src/forms/BuildForms.tsx index b5b69e718d..5ce8aacedb 100644 --- a/src/frontend/src/forms/BuildForms.tsx +++ b/src/frontend/src/forms/BuildForms.tsx @@ -11,7 +11,6 @@ import { } from '@tabler/icons-react'; import { DataTable } from 'mantine-datatable'; import { useEffect, useMemo, useState } from 'react'; -import { useFormContext } from 'react-hook-form'; import { api } from '../App'; import { ActionButton } from '../components/buttons/ActionButton'; @@ -25,7 +24,6 @@ import { TableFieldRowProps } from '../components/forms/fields/TableField'; import { ProgressBar } from '../components/items/ProgressBar'; import { ApiEndpoints } from '../enums/ApiEndpoints'; import { ModelType } from '../enums/ModelType'; -import { resolveItem } from '../functions/conversion'; import { InvenTreeIcon } from '../functions/icons'; import { useCreateApiFormModal } from '../hooks/UseForm'; import { useBatchCodeGenerator } from '../hooks/UseGenerator'; @@ -487,11 +485,11 @@ function BuildAllocateLineRow({ props, record, sourceLocation -}: { +}: Readonly<{ props: TableFieldRowProps; record: any; sourceLocation: number | undefined; -}) { +}>) { const stockField: ApiFormFieldType = useMemo(() => { return { field_type: 'related field', @@ -542,35 +540,33 @@ function BuildAllocateLineRow({ ); return ( - <> - - {partDetail} - - - - - - - - - - - props.removeFn(props.idx)} /> - - - + + {partDetail} + + + + + + + + + + + props.removeFn(props.idx)} /> + + ); } diff --git a/src/frontend/src/forms/PurchaseOrderForms.tsx b/src/frontend/src/forms/PurchaseOrderForms.tsx index 1d0b4c3019..067bb19fb4 100644 --- a/src/frontend/src/forms/PurchaseOrderForms.tsx +++ b/src/frontend/src/forms/PurchaseOrderForms.tsx @@ -197,11 +197,11 @@ function LineItemFormRow({ props, record, statuses -}: { +}: Readonly<{ props: TableFieldRowProps; record: any; statuses: any; -}) { +}>) { // Barcode Modal state const [opened, { open, close }] = useDisclosure(false, { onClose: () => props.changeFn(props.idx, 'barcode', undefined) @@ -263,7 +263,7 @@ function LineItemFormRow({ // Barcode value const [barcodeInput, setBarcodeInput] = useState(''); - const [barcode, setBarcode] = useState(undefined); + const [barcode, setBarcode] = useState(undefined); // Change form value when state is altered useEffect(() => { diff --git a/src/frontend/src/hooks/UsePluginPanels.tsx b/src/frontend/src/hooks/UsePluginPanels.tsx index 710b39f1df..aa676278f4 100644 --- a/src/frontend/src/hooks/UsePluginPanels.tsx +++ b/src/frontend/src/hooks/UsePluginPanels.tsx @@ -6,11 +6,10 @@ import { useNavigate } from 'react-router-dom'; import { api } from '../App'; import { PanelType } from '../components/nav/Panel'; import { PluginContext } from '../components/plugins/PluginContext'; -import { +import PluginPanelContent, { PluginPanelProps, isPluginPanelHidden } from '../components/plugins/PluginPanel'; -import PluginPanelContent from '../components/plugins/PluginPanel'; import { ApiEndpoints } from '../enums/ApiEndpoints'; import { ModelType } from '../enums/ModelType'; import { identifierString } from '../functions/conversion'; diff --git a/src/frontend/src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx b/src/frontend/src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx index 40dcb1be60..609ca51ba3 100644 --- a/src/frontend/src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx +++ b/src/frontend/src/pages/Index/Settings/AccountSettings/UserThemePanel.tsx @@ -14,13 +14,12 @@ import { Title, useMantineTheme } from '@mantine/core'; -import { IconReload, IconRestore } from '@tabler/icons-react'; +import { IconRestore } from '@tabler/icons-react'; import { useState } from 'react'; import { ColorToggle } from '../../../../components/items/ColorToggle'; import { LanguageSelect } from '../../../../components/items/LanguageSelect'; import { SizeMarks } from '../../../../defaults/defaults'; -import { notYetImplemented } from '../../../../functions/notifications'; import { IS_DEV } from '../../../../main'; import { useLocalState } from '../../../../states/LocalState'; @@ -32,7 +31,7 @@ const LOOKUP = Object.assign( ...Object.keys(DEFAULT_THEME.colors).map((clr) => getLkp(clr)) ); -export function UserTheme({ height }: { height: number }) { +export function UserTheme({ height }: Readonly<{ height: number }>) { const theme = useMantineTheme(); const [themeLoader, setThemeLoader] = useLocalState((state) => [ diff --git a/src/frontend/src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx b/src/frontend/src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx index 7dca628bcd..59d1445b49 100644 --- a/src/frontend/src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx +++ b/src/frontend/src/pages/Index/Settings/AdminCenter/PluginManagementPanel.tsx @@ -1,7 +1,6 @@ import { Trans, t } from '@lingui/macro'; import { Accordion, Alert, Stack } from '@mantine/core'; import { IconInfoCircle } from '@tabler/icons-react'; -import { userInfo } from 'os'; import { lazy } from 'react'; import { StylishText } from '../../../../components/items/StylishText'; diff --git a/src/frontend/src/pages/Index/Settings/SystemSettings.tsx b/src/frontend/src/pages/Index/Settings/SystemSettings.tsx index 29c727a2a7..22969847b7 100644 --- a/src/frontend/src/pages/Index/Settings/SystemSettings.tsx +++ b/src/frontend/src/pages/Index/Settings/SystemSettings.tsx @@ -11,7 +11,6 @@ import { IconQrcode, IconServerCog, IconShoppingCart, - IconSitemap, IconTag, IconTools, IconTruckDelivery, diff --git a/src/frontend/src/pages/part/pricing/PurchaseHistoryPanel.tsx b/src/frontend/src/pages/part/pricing/PurchaseHistoryPanel.tsx index 1c4a4880eb..29e4c5de6c 100644 --- a/src/frontend/src/pages/part/pricing/PurchaseHistoryPanel.tsx +++ b/src/frontend/src/pages/part/pricing/PurchaseHistoryPanel.tsx @@ -13,9 +13,9 @@ import { NoPricingData } from './PricingPanel'; export default function PurchaseHistoryPanel({ part -}: { +}: Readonly<{ part: any; -}): ReactNode { +}>): ReactNode { const table = useTable('pricing-purchase-history'); const calculateUnitPrice = useCallback((record: any) => { @@ -86,13 +86,6 @@ export default function PurchaseHistoryPanel({ ]; }, []); - const currency: string = useMemo(() => { - if (table.records.length === 0) { - return ''; - } - return table.records[0].purchase_price_currency; - }, [table.records]); - const purchaseHistoryData = useMemo(() => { return table.records.map((record: any) => { return { diff --git a/src/frontend/src/pages/part/pricing/SaleHistoryPanel.tsx b/src/frontend/src/pages/part/pricing/SaleHistoryPanel.tsx index a71427c24d..359f003463 100644 --- a/src/frontend/src/pages/part/pricing/SaleHistoryPanel.tsx +++ b/src/frontend/src/pages/part/pricing/SaleHistoryPanel.tsx @@ -12,7 +12,9 @@ import { DateColumn } from '../../../tables/ColumnRenderers'; import { InvenTreeTable } from '../../../tables/InvenTreeTable'; import { NoPricingData } from './PricingPanel'; -export default function SaleHistoryPanel({ part }: { part: any }): ReactNode { +export default function SaleHistoryPanel({ + part +}: Readonly<{ part: any }>): ReactNode { const table = useTable('pricing-sale-history'); const columns: TableColumn[] = useMemo(() => { @@ -51,13 +53,6 @@ export default function SaleHistoryPanel({ part }: { part: any }): ReactNode { ]; }, []); - const currency: string = useMemo(() => { - if (table.records.length === 0) { - return ''; - } - return table.records[0].sale_price_currency; - }, [table.records]); - const saleHistoryData = useMemo(() => { return table.records.map((record: any) => { return { diff --git a/src/frontend/src/tables/build/BuildAllocatedStockTable.tsx b/src/frontend/src/tables/build/BuildAllocatedStockTable.tsx index f39bdbbdf0..2db9b50e6d 100644 --- a/src/frontend/src/tables/build/BuildAllocatedStockTable.tsx +++ b/src/frontend/src/tables/build/BuildAllocatedStockTable.tsx @@ -34,7 +34,7 @@ export default function BuildAllocatedStockTable({ allowEdit, modelTarget, modelField -}: { +}: Readonly<{ buildId?: number; stockId?: number; partId?: number; @@ -43,7 +43,7 @@ export default function BuildAllocatedStockTable({ allowEdit?: boolean; modelTarget?: ModelType; modelField?: string; -}) { +}>) { const user = useUserState(); const table = useTable('buildallocatedstock'); diff --git a/src/frontend/src/tables/build/BuildLineTable.tsx b/src/frontend/src/tables/build/BuildLineTable.tsx index 0ab49f02e6..6568e507b0 100644 --- a/src/frontend/src/tables/build/BuildLineTable.tsx +++ b/src/frontend/src/tables/build/BuildLineTable.tsx @@ -5,7 +5,6 @@ import { IconCircleMinus, IconShoppingCart, IconTool, - IconTransferIn, IconWand } from '@tabler/icons-react'; import { useCallback, useMemo, useState } from 'react'; @@ -37,12 +36,12 @@ export default function BuildLineTable({ build, outputId, params = {} -}: { +}: Readonly<{ buildId: number; build: any; outputId?: number; params?: any; -}) { +}>) { const table = useTable('buildline'); const user = useUserState(); const buildStatus = useStatusCodes({ modelType: ModelType.build }); @@ -441,6 +440,7 @@ export default function BuildLineTable({ const visible = production && canEdit; return [ } tooltip={t`Auto Allocate Stock`} hidden={!visible} @@ -450,6 +450,7 @@ export default function BuildLineTable({ }} />, } tooltip={t`Allocate Stock`} hidden={!visible} @@ -468,6 +469,7 @@ export default function BuildLineTable({ }} />, } tooltip={t`Deallocate Stock`} hidden={!visible} diff --git a/src/frontend/src/tables/build/BuildOrderTestTable.tsx b/src/frontend/src/tables/build/BuildOrderTestTable.tsx index 4905945e9d..ff8cb61d68 100644 --- a/src/frontend/src/tables/build/BuildOrderTestTable.tsx +++ b/src/frontend/src/tables/build/BuildOrderTestTable.tsx @@ -28,10 +28,10 @@ import { TableHoverCard } from '../TableHoverCard'; export default function BuildOrderTestTable({ buildId, partId -}: { +}: Readonly<{ buildId: number; partId: number; -}) { +}>) { const table = useTable('build-tests'); const user = useUserState(); diff --git a/src/frontend/src/tables/build/BuildOutputTable.tsx b/src/frontend/src/tables/build/BuildOutputTable.tsx index 61dd1a8dc4..ae81ac8c12 100644 --- a/src/frontend/src/tables/build/BuildOutputTable.tsx +++ b/src/frontend/src/tables/build/BuildOutputTable.tsx @@ -34,7 +34,7 @@ type TestResultOverview = { result: boolean; }; -export default function BuildOutputTable({ build }: { build: any }) { +export default function BuildOutputTable({ build }: Readonly<{ build: any }>) { const user = useUserState(); const table = useTable('build-outputs'); @@ -208,11 +208,13 @@ export default function BuildOutputTable({ build }: { build: any }) { const tableActions = useMemo(() => { return [ ) : ( - {t`Plugin is not active`} + {t`Plugin is not active`} )} @@ -207,7 +207,7 @@ export function PluginDrawer({ pluginKey }: { pluginKey: Readonly }) { /** * Construct an indicator icon for a single plugin */ -function PluginIcon({ plugin }: { plugin: PluginI }) { +function PluginIcon({ plugin }: Readonly<{ plugin: PluginI }>) { if (plugin?.is_installed) { if (plugin?.active) { return ( @@ -514,12 +514,14 @@ export default function PluginListTable() { return [ } tooltip={t`Reload Plugins`} onClick={reloadPlugins} />, } tooltip={t`Install Plugin`} diff --git a/src/frontend/src/tables/sales/ReturnOrderLineItemTable.tsx b/src/frontend/src/tables/sales/ReturnOrderLineItemTable.tsx index 25a7a9fe72..4b5629a768 100644 --- a/src/frontend/src/tables/sales/ReturnOrderLineItemTable.tsx +++ b/src/frontend/src/tables/sales/ReturnOrderLineItemTable.tsx @@ -34,11 +34,11 @@ export default function ReturnOrderLineItemTable({ orderId, customerId, currency -}: { +}: Readonly<{ orderId: number; customerId: number; currency: string; -}) { +}>) { const table = useTable('return-order-line-item'); const user = useUserState(); @@ -139,6 +139,7 @@ export default function ReturnOrderLineItemTable({ const tableActions = useMemo(() => { return [