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