2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-16 20:15:44 +00:00

Adds hook for barcode scan dialog

This commit is contained in:
Oliver Walters
2025-04-19 05:38:20 +00:00
parent b0d5a21777
commit 2a72525d8e
2 changed files with 47 additions and 2 deletions

View File

@ -47,7 +47,11 @@ export default function BarcodeScanDialog({
> >
<Divider /> <Divider />
<Box> <Box>
<ScanInputHandler navigate={navigate} onClose={onClose} /> <ScanInputHandler
navigate={navigate}
onClose={onClose}
callback={callback}
/>
</Box> </Box>
</Modal> </Modal>
); );
@ -145,3 +149,31 @@ export function ScanInputHandler({
return <BarcodeInput onScan={onScan} error={error} processing={processing} />; return <BarcodeInput onScan={onScan} error={error} processing={processing} />;
} }
export function useBarcodeScanDialog({
title,
callback
}: Readonly<{
title: string;
callback: BarcodeScanCallback;
}>) {
const [opened, setOpened] = useState(false);
const open = useCallback((callback?: BarcodeScanCallback) => {
setOpened(true);
}, []);
const dialog = (
<BarcodeScanDialog
title={title}
opened={opened}
callback={callback}
onClose={() => setOpened(false)}
/>
);
return {
open,
dialog
};
}

View File

@ -7,6 +7,7 @@ import { Group, Skeleton, Stack, Text } from '@mantine/core';
import { IconInfoCircle, IconPackages, IconSitemap } from '@tabler/icons-react'; import { IconInfoCircle, IconPackages, IconSitemap } from '@tabler/icons-react';
import { useMemo, useState } from 'react'; import { useMemo, useState } from 'react';
import { useNavigate, useParams } from 'react-router-dom'; import { useNavigate, useParams } from 'react-router-dom';
import { useBarcodeScanDialog } from '../../components/barcodes/BarcodeScanDialog';
import AdminButton from '../../components/buttons/AdminButton'; import AdminButton from '../../components/buttons/AdminButton';
import { PrintingActions } from '../../components/buttons/PrintingActions'; import { PrintingActions } from '../../components/buttons/PrintingActions';
import { import {
@ -272,6 +273,17 @@ export default function Stock() {
const transferStockItems = useTransferStockItem(stockItemActionProps); const transferStockItems = useTransferStockItem(stockItemActionProps);
const countStockItems = useCountStockItem(stockItemActionProps); const countStockItems = useCountStockItem(stockItemActionProps);
const scanInStockItems = useBarcodeScanDialog({
title: t`Scan Stock Item`,
callback: async (barcode, response) => {
console.log('response:', response);
return {
success: true,
error: ''
};
}
});
const locationActions = useMemo( const locationActions = useMemo(
() => [ () => [
<AdminButton model={ModelType.stocklocation} id={location.pk} />, <AdminButton model={ModelType.stocklocation} id={location.pk} />,
@ -287,7 +299,7 @@ export default function Stock() {
name: 'Scan in stock items', name: 'Scan in stock items',
icon: <InvenTreeIcon icon='stock' />, icon: <InvenTreeIcon icon='stock' />,
tooltip: 'Scan items', tooltip: 'Scan items',
onClick: notYetImplemented onClick: scanInStockItems.open
}, },
{ {
name: 'Scan in container', name: 'Scan in container',
@ -362,6 +374,7 @@ export default function Stock() {
<> <>
{editLocation.modal} {editLocation.modal}
{deleteLocation.modal} {deleteLocation.modal}
{scanInStockItems.dialog}
<InstanceDetail <InstanceDetail
status={requestStatus} status={requestStatus}
loading={id ? instanceQuery.isFetching : false} loading={id ? instanceQuery.isFetching : false}