diff --git a/src/frontend/src/components/barcodes/BarcodeScanDialog.tsx b/src/frontend/src/components/barcodes/BarcodeScanDialog.tsx
index 8ce74cccbc..26f6be28fb 100644
--- a/src/frontend/src/components/barcodes/BarcodeScanDialog.tsx
+++ b/src/frontend/src/components/barcodes/BarcodeScanDialog.tsx
@@ -47,7 +47,11 @@ export default function BarcodeScanDialog({
>
-
+
);
@@ -145,3 +149,31 @@ export function ScanInputHandler({
return ;
}
+
+export function useBarcodeScanDialog({
+ title,
+ callback
+}: Readonly<{
+ title: string;
+ callback: BarcodeScanCallback;
+}>) {
+ const [opened, setOpened] = useState(false);
+
+ const open = useCallback((callback?: BarcodeScanCallback) => {
+ setOpened(true);
+ }, []);
+
+ const dialog = (
+ setOpened(false)}
+ />
+ );
+
+ return {
+ open,
+ dialog
+ };
+}
diff --git a/src/frontend/src/pages/stock/LocationDetail.tsx b/src/frontend/src/pages/stock/LocationDetail.tsx
index 45e063f280..f7ece9c4c0 100644
--- a/src/frontend/src/pages/stock/LocationDetail.tsx
+++ b/src/frontend/src/pages/stock/LocationDetail.tsx
@@ -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(
() => [
,
@@ -287,7 +299,7 @@ export default function Stock() {
name: 'Scan in stock items',
icon: ,
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}