2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-16 12:05:53 +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 />
<Box>
<ScanInputHandler navigate={navigate} onClose={onClose} />
<ScanInputHandler
navigate={navigate}
onClose={onClose}
callback={callback}
/>
</Box>
</Modal>
);
@ -145,3 +149,31 @@ export function ScanInputHandler({
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 { useMemo, useState } from 'react';
import { useNavigate, useParams } from 'react-router-dom';
import { useBarcodeScanDialog } from '../../components/barcodes/BarcodeScanDialog';
import AdminButton from '../../components/buttons/AdminButton';
import { PrintingActions } from '../../components/buttons/PrintingActions';
import {
@ -272,6 +273,17 @@ export default function Stock() {
const transferStockItems = useTransferStockItem(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(
() => [
<AdminButton model={ModelType.stocklocation} id={location.pk} />,
@ -287,7 +299,7 @@ export default function Stock() {
name: 'Scan in stock items',
icon: <InvenTreeIcon icon='stock' />,
tooltip: 'Scan items',
onClick: notYetImplemented
onClick: scanInStockItems.open
},
{
name: 'Scan in container',
@ -362,6 +374,7 @@ export default function Stock() {
<>
{editLocation.modal}
{deleteLocation.modal}
{scanInStockItems.dialog}
<InstanceDetail
status={requestStatus}
loading={id ? instanceQuery.isFetching : false}