ng-halfmoon
Version:
Angular Library to build upon the halfmoon-framework
66 lines • 7.37 kB
JavaScript
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==