diff --git a/packages/client/manifest.json b/packages/client/manifest.json index 2a9bc6f258..83a5b858db 100644 --- a/packages/client/manifest.json +++ b/packages/client/manifest.json @@ -3969,6 +3969,12 @@ "key": "allowManualEntry", "defaultValue": false }, + { + "type": "boolean", + "label": "Auto confirm", + "key": "autoConfirm", + "defaultValue": false + }, { "type": "boolean", "label": "Play sound on scan", diff --git a/packages/client/src/components/app/forms/CodeScanner.svelte b/packages/client/src/components/app/forms/CodeScanner.svelte index ff860d216f..2a546eb64c 100644 --- a/packages/client/src/components/app/forms/CodeScanner.svelte +++ b/packages/client/src/components/app/forms/CodeScanner.svelte @@ -14,11 +14,13 @@ export let value export let disabled = false export let allowManualEntry = false + export let autoConfirm = false export let scanButtonText = "Scan code" export let beepOnScan = false export let beepFrequency = 2637 export let customFrequency = 1046 export let preferredCamera = "environment" + export let validator const dispatch = createEventDispatcher() @@ -41,6 +43,9 @@ beep() } dispatch("change", decodedText) + if (autoConfirm && !validator?.(decodedText)) { + camModal?.hide() + } } } @@ -127,7 +132,11 @@
{#if value && !manualMode}
- + {#if validator?.(value)} + + {:else} + + {/if} {value}
{/if} @@ -183,11 +192,16 @@
{#if cameraEnabled === true}
- {#if value} + {#if value && !validator?.(value)}
{value}
+ {:else if value && validator?.(value)} +
+ + {value} +
{:else}
diff --git a/packages/client/src/components/app/forms/CodeScannerField.svelte b/packages/client/src/components/app/forms/CodeScannerField.svelte index be590106c2..7c9948554a 100644 --- a/packages/client/src/components/app/forms/CodeScannerField.svelte +++ b/packages/client/src/components/app/forms/CodeScannerField.svelte @@ -11,6 +11,7 @@ export let defaultValue = "" export let onChange export let allowManualEntry + export let autoConfirm export let scanButtonText export let beepOnScan export let beepFrequency @@ -49,11 +50,13 @@ on:change={handleUpdate} disabled={fieldState.disabled || fieldState.readonly} {allowManualEntry} + {autoConfirm} scanButtonText={scanText} {beepOnScan} {beepFrequency} {customFrequency} {preferredCamera} + validator={fieldState.validator} /> {/if}