diff --git a/README.md b/README.md index b07881b..9d2846a 100644 --- a/README.md +++ b/README.md @@ -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** diff --git a/demo/index.html b/demo/index.html new file mode 100644 index 0000000..e76e502 --- /dev/null +++ b/demo/index.html @@ -0,0 +1,13 @@ + + + + + + Document + + + + + + + \ No newline at end of file diff --git a/demo/index.js b/demo/index.js new file mode 100644 index 0000000..4b86687 --- /dev/null +++ b/demo/index.js @@ -0,0 +1,7 @@ +const scanner = simpleBarcodeScanner({ + devicePrefix: 'QW' +}); + +scanner.on((data, e) => { + console.log(data) +}) \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index a60e38b..e2b55ee 100644 --- a/src/index.ts +++ b/src/index.ts @@ -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 { @@ -65,7 +70,8 @@ export default function BarcodeScanner( minLength: 3, element: document, endKeys: ["Enter"], - validKey: /^\w$/ + validKey: /^\w$/, + devicePrefix: null }, options ); @@ -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