feat(barcode reader): add wrapper for the webcomponent
This commit is contained in:
6
src/app/components/bar-code-reader/bar-code-reader.html
Normal file
6
src/app/components/bar-code-reader/bar-code-reader.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<barcode-reader
|
||||
#reader
|
||||
(result)="this.result.emit($event)"
|
||||
(scan-status)="this.scanStatus.emit($event)"
|
||||
(scan-permission-denied)="this.scanPermissionDenied.emit()"
|
||||
/>
|
||||
6
src/app/components/bar-code-reader/bar-code-reader.scss
Normal file
6
src/app/components/bar-code-reader/bar-code-reader.scss
Normal file
@@ -0,0 +1,6 @@
|
||||
barcode-reader {
|
||||
display: block;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
}
|
||||
23
src/app/components/bar-code-reader/bar-code-reader.spec.ts
Normal file
23
src/app/components/bar-code-reader/bar-code-reader.spec.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { BarCodeReaderWrapper } from './bar-code-reader';
|
||||
|
||||
describe('BarCodeReaderWrapper', () => {
|
||||
let component: BarCodeReaderWrapper;
|
||||
let fixture: ComponentFixture<BarCodeReaderWrapper>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [BarCodeReaderWrapper]
|
||||
})
|
||||
.compileComponents();
|
||||
|
||||
fixture = TestBed.createComponent(BarCodeReaderWrapper);
|
||||
component = fixture.componentInstance;
|
||||
await fixture.whenStable();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
23
src/app/components/bar-code-reader/bar-code-reader.ts
Normal file
23
src/app/components/bar-code-reader/bar-code-reader.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { Component, CUSTOM_ELEMENTS_SCHEMA, effect, ElementRef, input, output, signal, viewChild } from '@angular/core';
|
||||
import { DetectedBarcode } from '../../types/globalThis';
|
||||
import { BarcodeReader } from '../../web-components/barcode-reader';
|
||||
|
||||
@Component({
|
||||
selector: 'app-bar-code-reader',
|
||||
templateUrl: './bar-code-reader.html',
|
||||
styleUrl: './bar-code-reader.scss',
|
||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||
})
|
||||
export class BarCodeReaderWrapper {
|
||||
private readonly ref = viewChild<ElementRef<BarcodeReader>>('reader');
|
||||
protected readonly result = output<Event & {detail?: {code: DetectedBarcode | null}}>();
|
||||
protected readonly scanStatus = output<Event & {detail?: {state: ScanState}}>();
|
||||
protected readonly scanPermissionDenied = output();
|
||||
scan = input({scan: false})
|
||||
|
||||
constructor() {
|
||||
effect(() => this.scan().scan && this.ref()?.nativeElement.scan())
|
||||
}
|
||||
}
|
||||
|
||||
export type ScanState = 'loading'|'started'|'stopped';
|
||||
Reference in New Issue
Block a user