1// barcodeScannerMultiScan.js
2import { LightningElement, track } from "lwc";
3import { getBarcodeScanner } from "lightning/mobileCapabilities";
4
5export default class BarcodeScannerContinuousDocDemo extends LightningElement {
6 barcodeScanner;
7 @track scannedBarcodes;
8
9 connectedCallback() {
10 this.barcodeScanner = getBarcodeScanner();
11 }
12
13 beginScanning() {
14 // Set your configuration options, including bulk and multi-scanning if desired, in this scanningOptions object
15 const scanningOptions = {
16 barcodeTypes: [this.barcodeScanner.barcodeTypes.QR],
17 scannerSize: "FULLSCREEN",
18 cameraFacing: "BACK",
19 showSuccessCheckMark: true,
20 enableBulkScan: true,
21 enableMultiScan: true,
22 };
23
24 // Make sure BarcodeScanner is available before trying to use it
25 if (this.barcodeScanner != null && this.barcodeScanner.isAvailable()) {
26 // Reset scannedBarcodes before starting new scanning session
27 this.scannedBarcodes = [];
28
29 // Start scanning barcodes
30 this.barcodeScanner
31 .scan(scanningOptions)
32 .then((results) => {
33 this.processScannedBarcodes(results);
34 })
35 .catch((error) => {
36 this.processError(error);
37 })
38 .finally(() => {
39 this.barcodeScanner.dismiss();
40 });
41 } else {
42 console.log("BarcodeScanner unavailable. Non-mobile device?");
43 }
44 }
45
46 processScannedBarcodes(barcodes) {
47 // Do something with the barcode scan value:
48 // - look up a record
49 // - create or update a record
50 // - parse data and put values into a form
51 // - and so on; this is YOUR code
52 console.log(JSON.stringify(barcodes));
53 this.scannedBarcodes = this.scannedBarcodes.concat(barcodes);
54 }
55
56 processError(error) {
57 // Check to see if user ended scanning
58 if (error.code == "USER_DISMISSED") {
59 console.log("User terminated scanning session.");
60 } else {
61 console.error(error);
62 }
63 }
64
65 get scannedBarcodesAsString() {
66 return this.scannedBarcodes.map((barcode) => barcode.value).join("\n");
67 }
68}