UNPKG

@doku-dev/doku-fragment

Version:

A new Angular UI library that moving away from Bootstrap and built from scratch.

60 lines 6.93 kB
import { Directive } from '@angular/core'; import * as i0 from "@angular/core"; const STANDARD_MAX_TIME = { hour: 23, minute: 59, second: 59, }; export class DokuInputTime { constructor(elementRef, ngZone) { this.elementRef = elementRef; this.ngZone = ngZone; this.listenOnInput(); this.listenOnBlur(); } get element() { return this.elementRef.nativeElement; } listenOnInput() { this.ngZone.runOutsideAngular(() => { this.element.oninput = () => { this.normalizeInputToNumbersOnly(); this.setStandardMaxTime(); }; }); } listenOnBlur() { this.ngZone.runOutsideAngular(() => { this.element.onblur = () => { this.addPadToValue(); }; }); } normalizeInputToNumbersOnly() { this.element.value = this.element.value.replaceAll(/\D/g, ''); } addPadToValue() { this.element.value = this.element.value ? this.element.value.padStart(2, '0') : ''; } setStandardMaxTime() { const type = this.element.name; const standardMaxTime = STANDARD_MAX_TIME[type]; let normalizedValue = ''; if (this.element.value) { const value = parseInt(this.element.value); normalizedValue = value > standardMaxTime ? standardMaxTime : value; } this.element.value = normalizedValue?.toString(); } } DokuInputTime.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DokuInputTime, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); DokuInputTime.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: DokuInputTime, isStandalone: true, selector: "[doku-input-time]", exportAs: ["dokuInputTime"], ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DokuInputTime, decorators: [{ type: Directive, args: [{ selector: '[doku-input-time]', exportAs: 'dokuInputTime', standalone: true, }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGltZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kb2t1LWZyYWdtZW50L3NyYy9saWIvdGltZS1waWNrZXIvaW5wdXQtdGltZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsTUFBTSxlQUFlLENBQUM7O0FBRTlELE1BQU0saUJBQWlCLEdBQUc7SUFDeEIsSUFBSSxFQUFFLEVBQUU7SUFDUixNQUFNLEVBQUUsRUFBRTtJQUNWLE1BQU0sRUFBRSxFQUFFO0NBQ1gsQ0FBQztBQU9GLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQW9CLFVBQXNCLEVBQVUsTUFBYztRQUE5QyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNoRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFjLE9BQU87UUFDbkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN2QyxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUU7Z0JBQzFCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM1QixDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtnQkFDekIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDckYsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQXNDLENBQUM7UUFDakUsTUFBTSxlQUFlLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEQsSUFBSSxlQUFlLEdBQWdCLEVBQUUsQ0FBQztRQUV0QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLGVBQWUsR0FBRyxLQUFLLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztTQUNyRTtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLGVBQWUsRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUNuRCxDQUFDOzswR0EvQ1UsYUFBYTs4RkFBYixhQUFhOzJGQUFiLGFBQWE7a0JBTHpCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmNvbnN0IFNUQU5EQVJEX01BWF9USU1FID0ge1xuICBob3VyOiAyMyxcbiAgbWludXRlOiA1OSxcbiAgc2Vjb25kOiA1OSxcbn07XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tkb2t1LWlucHV0LXRpbWVdJyxcbiAgZXhwb3J0QXM6ICdkb2t1SW5wdXRUaW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRG9rdUlucHV0VGltZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgIHRoaXMubGlzdGVuT25JbnB1dCgpO1xuICAgIHRoaXMubGlzdGVuT25CbHVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5PbklucHV0KCkge1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuZWxlbWVudC5vbmlucHV0ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLm5vcm1hbGl6ZUlucHV0VG9OdW1iZXJzT25seSgpO1xuICAgICAgICB0aGlzLnNldFN0YW5kYXJkTWF4VGltZSgpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuT25CbHVyKCkge1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuZWxlbWVudC5vbmJsdXIgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuYWRkUGFkVG9WYWx1ZSgpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplSW5wdXRUb051bWJlcnNPbmx5KCkge1xuICAgIHRoaXMuZWxlbWVudC52YWx1ZSA9IHRoaXMuZWxlbWVudC52YWx1ZS5yZXBsYWNlQWxsKC9cXEQvZywgJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRQYWRUb1ZhbHVlKCkge1xuICAgIHRoaXMuZWxlbWVudC52YWx1ZSA9IHRoaXMuZWxlbWVudC52YWx1ZSA/IHRoaXMuZWxlbWVudC52YWx1ZS5wYWRTdGFydCgyLCAnMCcpIDogJyc7XG4gIH1cblxuICBwcml2YXRlIHNldFN0YW5kYXJkTWF4VGltZSgpOiB2b2lkIHtcbiAgICBjb25zdCB0eXBlID0gdGhpcy5lbGVtZW50Lm5hbWUgYXMga2V5b2YgdHlwZW9mIFNUQU5EQVJEX01BWF9USU1FO1xuICAgIGNvbnN0IHN0YW5kYXJkTWF4VGltZSA9IFNUQU5EQVJEX01BWF9USU1FW3R5cGVdO1xuXG4gICAgbGV0IG5vcm1hbGl6ZWRWYWx1ZTogbnVtYmVyIHwgJycgPSAnJztcblxuICAgIGlmICh0aGlzLmVsZW1lbnQudmFsdWUpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcGFyc2VJbnQodGhpcy5lbGVtZW50LnZhbHVlKTtcbiAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IHZhbHVlID4gc3RhbmRhcmRNYXhUaW1lID8gc3RhbmRhcmRNYXhUaW1lIDogdmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5lbGVtZW50LnZhbHVlID0gbm9ybWFsaXplZFZhbHVlPy50b1N0cmluZygpO1xuICB9XG59XG4iXX0=