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:
@ -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
|
||||
};
|
||||
}
|
||||
|
@ -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}
|
||||
|
Reference in New Issue
Block a user