UNPKG

ng-halfmoon

Version:

Angular Library to build upon the halfmoon-framework

66 lines 7.37 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 SelectDirective 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.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; }); } } SelectDirective.decorators = [ { type: Directive, args: [{ selector: '[hmSelect]' },] } ]; SelectDirective.ctorParameters = () => [ { type: NgControl, decorators: [{ type: Optional }, { type: Self }] }, { type: ControlService, decorators: [{ type: Optional }] }, { type: ElementRef }, { type: Renderer2 } ]; SelectDirective.propDecorators = { sizing: [{ type: Input }], isInvalid: [{ type: HostBinding, args: ['class.is-invalid',] }], changeStatus: [{ type: HostListener, args: ['blur',] }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWhhbGZtb29uL3NyYy9saWIvZm9ybS9zZWxlY3Qvc2VsZWN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFJTCxRQUFRLEVBQ1IsU0FBUyxFQUNULElBQUksRUFFTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsT0FBTyxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBYyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUMsY0FBYyxFQUFFLGFBQWEsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBTTFFLE1BQU0sT0FBTyxlQUNYLFNBQVEsT0FBTztJQVFmLFlBQzZCLFNBQW9CLEVBQzNCLGNBQThCLEVBQ2xELEVBQWMsRUFDZCxRQUFtQjtRQUVuQixLQUFLLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUxULGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBUDNDLFdBQU0sR0FBVyxTQUFTLENBQUM7UUFDSCxjQUFTLEdBQVksS0FBSyxDQUFDO1FBVzFELElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDM0M7SUFDSCxDQUFDO0lBQ0QsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU87Z0JBQ3RCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FDakQsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFHRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFzQixDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQzlELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssS0FBSyxhQUFhLENBQUMsT0FBTyxDQUFDO1FBQ25ELENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7O1lBbEVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsWUFBWTthQUN2Qjs7O1lBTm9CLFNBQVMsdUJBaUJ6QixRQUFRLFlBQUksSUFBSTtZQWhCYixjQUFjLHVCQWlCakIsUUFBUTtZQS9CWCxVQUFVO1lBUVYsU0FBUzs7O3FCQWdCUixLQUFLO3dCQUNMLFdBQVcsU0FBQyxrQkFBa0I7MkJBdUM5QixZQUFZLFNBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBSZW5kZXJlcjIsXG4gIFNlbGYsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FwcGxpZXIsIFNpemluZ30gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgTmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0NvbnRyb2xTZXJ2aWNlLCBDb250cm9sU3RhdHVzfSBmcm9tICcuLi9zZXJ2aWNlcy9jb250cm9sLnNlcnZpY2UnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbaG1TZWxlY3RdJ1xufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3REaXJlY3RpdmVcbiAgZXh0ZW5kcyBBcHBsaWVyXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIERvQ2hlY2ssIE9uRGVzdHJveVxue1xuICBASW5wdXQoKSBzaXppbmc6IFNpemluZyA9IHVuZGVmaW5lZDtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1pbnZhbGlkJykgaXNJbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xTZXJ2aWNlOiBDb250cm9sU2VydmljZSxcbiAgICBlbDogRWxlbWVudFJlZixcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge1xuICAgIHN1cGVyKGVsLCByZW5kZXJlciwgJ2Zvcm0tY29udHJvbCcpO1xuICAgIHRoaXMuYWRkQ2xhc3MoJ2Zvcm0tY29udHJvbCcsIHRoaXMuZWwpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cENvbnRyb2xTZXJ2aWNlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuc2l6aW5nKSB7XG4gICAgICB0aGlzLmFwcGx5Q2hhbmdlKGNoYW5nZXMuc2l6aW5nLCB0aGlzLmVsKTtcbiAgICB9XG4gIH1cbiAgbmdEb0NoZWNrKCkge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgdGhpcy5pc0ludmFsaWQgPSAhIShcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wuaW52YWxpZCAmJlxuICAgICAgICAodGhpcy5uZ0NvbnRyb2wudG91Y2hlZCB8fCB0aGlzLm5nQ29udHJvbC5kaXJ0eSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpXG4gIGNoYW5nZVN0YXR1cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbFNlcnZpY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2xTZXJ2aWNlLnRyaWdnZXJTdGF0dXNDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBDb250cm9sU2VydmljZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbFNlcnZpY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jb250cm9sU2VydmljZS5pbml0KHRoaXMubmdDb250cm9sLmNvbnRyb2wgYXMgRm9ybUNvbnRyb2wpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jb250cm9sU2VydmljZS5jdXJyZW50U3RhdHVzJC5zdWJzY3JpYmUoXG4gICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5pc0ludmFsaWQgPSB2YWx1ZSA9PT0gQ29udHJvbFN0YXR1cy5JTlZBTElEO1xuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiJdfQ==