UNPKG

ng-halfmoon

Version:

Angular Library to build upon the halfmoon-framework

66 lines 7.45 kB
import { Directive, ElementRef, HostBinding, HostListener, Input, Optional, Renderer2, Self } from '@angular/core'; import { Applier } from '../../utils'; import { NgControl } from '@angular/forms'; import { ControlService, ControlStatus } from '../services/control.service'; export class InputDirective extends Applier { constructor(ngControl, controlService, el, renderer) { super(el, renderer, 'form-control'); this.ngControl = ngControl; this.controlService = controlService; this.sizing = undefined; this.isInvalid = false; this.addClass('form-control', this.el); } ngOnInit() { this.setupControlService(); } ngOnChanges(changes) { if (changes.sizing) { this.applyChange(changes.sizing, this.el); } } ngDoCheck() { if (!this.controlService && this.ngControl) { this.isInvalid = !!(this.ngControl.invalid && (this.ngControl.touched || this.ngControl.dirty)); } } ngOnDestroy() { if (!this.subscription) { return; } this.subscription.unsubscribe(); } changeStatus() { if (!this.controlService) { return; } this.controlService.triggerStatusChange(); } setupControlService() { if (!this.controlService) { return; } this.controlService.init(this.ngControl.control); this.subscription = this.controlService.currentStatus$.subscribe((value) => { this.isInvalid = value === ControlStatus.INVALID; }); } } InputDirective.decorators = [ { type: Directive, args: [{ selector: '[hmInput]' },] } ]; InputDirective.ctorParameters = () => [ { type: NgControl, decorators: [{ type: Optional }, { type: Self }] }, { type: ControlService, decorators: [{ type: Optional }] }, { type: ElementRef }, { type: Renderer2 } ]; InputDirective.propDecorators = { sizing: [{ type: Input }], isInvalid: [{ type: HostBinding, args: ['class.is-invalid',] }], changeStatus: [{ type: HostListener, args: ['blur',] }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctaGFsZm1vb24vc3JjL2xpYi9mb3JtL2lucHV0L2lucHV0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFJTCxRQUFRLEVBQ1IsU0FBUyxFQUNULElBQUksRUFFTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsT0FBTyxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBYyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsY0FBYyxFQUFFLGFBQWEsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBTTFFLE1BQU0sT0FBTyxjQUNYLFNBQVEsT0FBTztJQU9mLFlBQzhCLFNBQW9CLEVBQzVCLGNBQThCLEVBQ2xELEVBQWMsRUFDZCxRQUFtQjtRQUVuQixLQUFLLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUxSLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDNUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBTjNDLFdBQU0sR0FBVyxTQUFTLENBQUM7UUFDSCxjQUFTLEdBQVksS0FBSyxDQUFDO1FBVTFELElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDM0M7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO2dCQUN0QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQ2pELENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBR0QsWUFBWTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBc0IsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUM5RCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLEtBQUssYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUNuRCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7OztZQWxFRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFdBQVc7YUFDdEI7OztZQU5vQixTQUFTLHVCQWdCekIsUUFBUSxZQUFJLElBQUk7WUFmYixjQUFjLHVCQWdCakIsUUFBUTtZQTlCWCxVQUFVO1lBUVYsU0FBUzs7O3FCQWdCUixLQUFLO3dCQUNMLFdBQVcsU0FBQyxrQkFBa0I7MkJBdUM5QixZQUFZLFNBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBSZW5kZXJlcjIsXG4gIFNlbGYsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FwcGxpZXIsIFNpemluZ30gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgTmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0NvbnRyb2xTZXJ2aWNlLCBDb250cm9sU3RhdHVzfSBmcm9tICcuLi9zZXJ2aWNlcy9jb250cm9sLnNlcnZpY2UnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbaG1JbnB1dF0nXG59KVxuZXhwb3J0IGNsYXNzIElucHV0RGlyZWN0aXZlXG4gIGV4dGVuZHMgQXBwbGllclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVjaywgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KCkgc2l6aW5nOiBTaXppbmcgPSB1bmRlZmluZWQ7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtaW52YWxpZCcpIGlzSW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHJpdmF0ZSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xTZXJ2aWNlOiBDb250cm9sU2VydmljZSxcbiAgICBlbDogRWxlbWVudFJlZixcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge1xuICAgIHN1cGVyKGVsLCByZW5kZXJlciwgJ2Zvcm0tY29udHJvbCcpO1xuICAgIHRoaXMuYWRkQ2xhc3MoJ2Zvcm0tY29udHJvbCcsIHRoaXMuZWwpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cENvbnRyb2xTZXJ2aWNlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuc2l6aW5nKSB7XG4gICAgICB0aGlzLmFwcGx5Q2hhbmdlKGNoYW5nZXMuc2l6aW5nLCB0aGlzLmVsKTtcbiAgICB9XG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2xTZXJ2aWNlICYmIHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9ICEhKFxuICAgICAgICB0aGlzLm5nQ29udHJvbC5pbnZhbGlkICYmXG4gICAgICAgICh0aGlzLm5nQ29udHJvbC50b3VjaGVkIHx8IHRoaXMubmdDb250cm9sLmRpcnR5KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgY2hhbmdlU3RhdHVzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250cm9sU2VydmljZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY29udHJvbFNlcnZpY2UudHJpZ2dlclN0YXR1c0NoYW5nZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cENvbnRyb2xTZXJ2aWNlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250cm9sU2VydmljZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbnRyb2xTZXJ2aWNlLmluaXQodGhpcy5uZ0NvbnRyb2wuY29udHJvbCBhcyBGb3JtQ29udHJvbCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xTZXJ2aWNlLmN1cnJlbnRTdGF0dXMkLnN1YnNjcmliZShcbiAgICAgICh2YWx1ZSkgPT4ge1xuICAgICAgICB0aGlzLmlzSW52YWxpZCA9IHZhbHVlID09PSBDb250cm9sU3RhdHVzLklOVkFMSUQ7XG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuIl19