UNPKG

web-otp-angular

Version:

Angular library to automatically detect OTP from mobile device (Both mobile web site and Desktop)

44 lines 4.63 kB
import { Directive, Input } from '@angular/core'; import * as i0 from "@angular/core"; export class WebOtpDirective { constructor(el) { this.el = el; this.ac = new AbortController(); this.timer = null; } ; ngOnInit() { const options = { otp: { transport: ['sms'] }, signal: this.ac.signal }; navigator.credentials.get(options).then((otp) => { this.el.nativeElement.value = otp.code; }).catch(err => { console.log(err); }); if (this.timeout) { this.timer = setTimeout(() => { this.ac.abort(); }, this.timeout); } } ngOnDestroy() { this.ac.abort(); if (this.timer) { clearTimeout(this.timer); } } } WebOtpDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: WebOtpDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); WebOtpDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: WebOtpDirective, selector: "[appWebOtp]", inputs: { timeout: "timeout" }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: WebOtpDirective, decorators: [{ type: Directive, args: [{ selector: '[appWebOtp]', }] }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { timeout: [{ type: Input, args: ['timeout'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLW90cC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy93ZWItb3RwLWFuZ3VsYXIvc3JjL2xpYi93ZWItb3RwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7O0FBU2hGLE1BQU0sT0FBTyxlQUFlO0lBRzFCLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBRjFCLE9BQUUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQzNCLFVBQUssR0FBMEIsSUFBSSxDQUFDO0lBQ04sQ0FBQztJQUFBLENBQUM7SUFJeEMsUUFBUTtRQUNOLE1BQU0sT0FBTyxHQUE2QjtZQUN4QyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNO1NBQ3ZCLENBQUE7UUFDRCxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNuRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQixDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1NBQ2pCO0lBQ0gsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUI7SUFDSCxDQUFDOzs2R0E1QlUsZUFBZTtpR0FBZixlQUFlOzRGQUFmLGVBQWU7a0JBSDNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCO2lHQU1tQixPQUFPO3NCQUF4QixLQUFLO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW50ZXJmYWNlIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyB7XG4gIG90cDogYW55O1xuICBzaWduYWw6IGFueTtcbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FwcFdlYk90cF0nLFxufSlcbmV4cG9ydCBjbGFzcyBXZWJPdHBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgYWMgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIHByaXZhdGUgdGltZXI6IE5vZGVKUy5UaW1lb3V0IHwgbnVsbCA9IG51bGw7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHsgfTtcblxuICBASW5wdXQoJ3RpbWVvdXQnKSB0aW1lb3V0PzogbnVtYmVyO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnM6IENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyA9IHtcbiAgICAgIG90cDogeyB0cmFuc3BvcnQ6IFsnc21zJ10gfSxcbiAgICAgIHNpZ25hbDogdGhpcy5hYy5zaWduYWxcbiAgICB9XG4gICAgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKChvdHA6IGFueSkgPT4ge1xuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gb3RwLmNvZGU7XG4gICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgfSk7XG4gICAgaWYgKHRoaXMudGltZW91dCkge1xuICAgICAgdGhpcy50aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmFjLmFib3J0KCk7XG4gICAgICB9LCB0aGlzLnRpbWVvdXQpXG4gICAgfVxuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuYWMuYWJvcnQoKTtcbiAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgIH1cbiAgfVxufVxuIl19