Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,10 @@ Creates a simple function to listen to barcode scanners
Refer [Key Values | MDN](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values)

_default: `/^\w$/`_

- `devicePrefix` **string** Barcode prefix string for device event filtering

_default: `null`_

Returns **Scanner**

Expand Down
13 changes: 13 additions & 0 deletions demo/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>

</body>
<script src="../dist/index.umd.js"></script>
<script src="index.js"></script>
</html>
7 changes: 7 additions & 0 deletions demo/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const scanner = simpleBarcodeScanner({
devicePrefix: 'QW'
});

scanner.on((data, e) => {
console.log(data)
})
13 changes: 11 additions & 2 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ export declare namespace BarcodeScanner {
* Refer {@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values Key Values | MDN}
*/
validKey?: RegExp;
/**
* Barcode prefix string for device event filtering
* @default null
*/
devicePrefix?: string | null;
}

interface HandlerFunction {
Expand Down Expand Up @@ -65,7 +70,8 @@ export default function BarcodeScanner(
minLength: 3,
element: document,
endKeys: ["Enter"],
validKey: /^\w$/
validKey: /^\w$/,
devicePrefix: null
},
options
);
Expand Down Expand Up @@ -93,8 +99,11 @@ export default function BarcodeScanner(
} else {
if (isEndKey) {
// End of barcode
if (code.length >= options.minLength) {
if (code.length >= options.minLength && !options.devicePrefix) {
fun(code, e);
} else if (code.length >= options.minLength && options.devicePrefix) {
// Check for device prefix
if (code.includes(options.devicePrefix)) fun(code.slice(options.devicePrefix.length), e)
}
}
// Invalid character, reset
Expand Down