summaryrefslogtreecommitdiff
path: root/app/lib/camera/component/scannerBarcode.tsx
diff options
context:
space:
mode:
authortrisusilo48 <tri.susilo@altama.co.id>2024-10-21 14:54:11 +0700
committertrisusilo48 <tri.susilo@altama.co.id>2024-10-21 14:54:11 +0700
commit83d1a1c558293e1b14c9a5847628e7661f749c66 (patch)
tree5f083f90192df0fc2aff41e3dd1c3c84f2592352 /app/lib/camera/component/scannerBarcode.tsx
parent30c5eb5776fcc60f023ad6aa51153cb375c87930 (diff)
initial commit
Diffstat (limited to 'app/lib/camera/component/scannerBarcode.tsx')
-rw-r--r--app/lib/camera/component/scannerBarcode.tsx56
1 files changed, 56 insertions, 0 deletions
diff --git a/app/lib/camera/component/scannerBarcode.tsx b/app/lib/camera/component/scannerBarcode.tsx
new file mode 100644
index 0000000..3079e33
--- /dev/null
+++ b/app/lib/camera/component/scannerBarcode.tsx
@@ -0,0 +1,56 @@
+import { QrCode2 } from "@mui/icons-material";
+import { Button, TextField } from "@mui/material";
+import dynamic from "next/dynamic";
+import React, { useState } from "react";
+import useCameraStore from "../hooks/useCameraStore";
+
+const BarcodeScannerComponent = dynamic(
+ () => import("react-qr-barcode-scanner"),
+ { ssr: false }
+);
+const BarcodeScanner: React.FC = () => {
+ const { barcode, setBarcode } = useCameraStore();
+ const [isCameraActive, setIsCameraActive] = useState(false);
+
+ return (
+ <div>
+ <Button
+ variant="outlined"
+ onClick={() => setIsCameraActive(!isCameraActive)}
+ startIcon={<QrCode2 />}
+ color="error"
+ className="mb-2"
+ >
+ {isCameraActive ? "Cancel" : "Scane Code"}
+ </Button>
+
+ {isCameraActive && (
+ <BarcodeScannerComponent
+ width={500} // Tingkatkan ukuran untuk memperjelas gambar
+ height={300}
+ onUpdate={(err, result) => {
+ if (result) {
+ setBarcode(result.getText());
+ setIsCameraActive(false);
+ }
+ }}
+ />
+ )}
+
+ <div className="mt-4">
+ <TextField
+ fullWidth
+ label="Detected Picking Code"
+ id="outlined-basic"
+ value={barcode}
+ onChange={ (e) => setBarcode(e.target.value) }
+ InputLabelProps={{
+ shrink: true, // Label akan selalu berada di atas (outline)
+ }}
+ />
+ </div>
+ </div>
+ );
+};
+
+export default BarcodeScanner;