UNPKG

ng-halfmoon

Version:

Angular Library to build upon the halfmoon-framework

48 lines 5.95 kB
import { ContentChild, Directive, ElementRef, HostBinding, Injector, Renderer2 } from '@angular/core'; import { InputDirective } from '../input/input.directive'; import { ControlService, ControlStatus } from '../services/control.service'; export class FormGroupDirective { constructor(el, renderer, injector) { this.el = el; this.renderer = renderer; this.injector = injector; this.baseClass = true; this.isInvalid = false; this.controlService = injector.get(ControlService); this.subscription = this.controlService.currentStatus$.subscribe((status) => { this.isInvalid = status === ControlStatus.INVALID; }); } ngOnInit() { this.controlLabel = this.el.nativeElement.firstChild; } ngOnDestroy() { this.subscription.unsubscribe(); } updateLabelPostfix(isRequired) { if (isRequired && !this.controlLabel.classList.contains('required')) { this.renderer.addClass(this.controlLabel, 'required'); } else if (!isRequired && this.controlLabel.classList.contains('required')) { this.renderer.removeClass(this.controlLabel, 'required'); } } get canShowError() { return this.isInvalid; } } FormGroupDirective.decorators = [ { type: Directive } ]; FormGroupDirective.ctorParameters = () => [ { type: ElementRef }, { type: Renderer2 }, { type: Injector } ]; FormGroupDirective.propDecorators = { baseClass: [{ type: HostBinding, args: ['class.form-group',] }], isInvalid: [{ type: HostBinding, args: ['class.is-invalid',] }], input: [{ type: ContentChild, args: [InputDirective,] }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1ncm91cC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1oYWxmbW9vbi9zcmMvbGliL2Zvcm0vZm9ybS1ncm91cC9mb3JtLWdyb3VwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFFBQVEsRUFHUixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxjQUFjLEVBQUUsYUFBYSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFJMUUsTUFBTSxPQUFnQixrQkFBa0I7SUFVdEMsWUFDWSxFQUFjLEVBQ2QsUUFBbUIsRUFDbkIsUUFBa0I7UUFGbEIsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQVpHLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQWFqRCxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQzlELENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDVCxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sS0FBSyxhQUFhLENBQUMsT0FBTyxDQUFDO1FBQ3BELENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztJQUN2RCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELGtCQUFrQixDQUFDLFVBQW1CO1FBQ3BDLElBQUksVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ25FLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDdkQ7YUFBTSxJQUNMLENBQUMsVUFBVTtZQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFDaEQ7WUFDQSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQzFEO0lBQ0gsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDOzs7WUE3Q0YsU0FBUzs7O1lBWFIsVUFBVTtZQUtWLFNBQVM7WUFIVCxRQUFROzs7d0JBV1AsV0FBVyxTQUFDLGtCQUFrQjt3QkFDOUIsV0FBVyxTQUFDLGtCQUFrQjtvQkFHOUIsWUFBWSxTQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb250ZW50Q2hpbGQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdG9yLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJbnB1dERpcmVjdGl2ZX0gZnJvbSAnLi4vaW5wdXQvaW5wdXQuZGlyZWN0aXZlJztcbmltcG9ydCB7Q29udHJvbFNlcnZpY2UsIENvbnRyb2xTdGF0dXN9IGZyb20gJy4uL3NlcnZpY2VzL2NvbnRyb2wuc2VydmljZSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZvcm1Hcm91cERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mb3JtLWdyb3VwJykgYmFzZUNsYXNzID0gdHJ1ZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1pbnZhbGlkJykgaXNJbnZhbGlkID0gZmFsc2U7XG4gIGNvbnRyb2xMYWJlbDogSFRNTExhYmVsRWxlbWVudDtcblxuICBAQ29udGVudENoaWxkKElucHV0RGlyZWN0aXZlKSBpbnB1dDogSW5wdXREaXJlY3RpdmU7XG5cbiAgcHJpdmF0ZSBjb250cm9sU2VydmljZTogQ29udHJvbFNlcnZpY2U7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBlbDogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge1xuICAgIHRoaXMuY29udHJvbFNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQ29udHJvbFNlcnZpY2UpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jb250cm9sU2VydmljZS5jdXJyZW50U3RhdHVzJC5zdWJzY3JpYmUoXG4gICAgICAoc3RhdHVzKSA9PiB7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gc3RhdHVzID09PSBDb250cm9sU3RhdHVzLklOVkFMSUQ7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbExhYmVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmZpcnN0Q2hpbGQ7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgdXBkYXRlTGFiZWxQb3N0Zml4KGlzUmVxdWlyZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNSZXF1aXJlZCAmJiAhdGhpcy5jb250cm9sTGFiZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdyZXF1aXJlZCcpKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuY29udHJvbExhYmVsLCAncmVxdWlyZWQnKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgIWlzUmVxdWlyZWQgJiZcbiAgICAgIHRoaXMuY29udHJvbExhYmVsLmNsYXNzTGlzdC5jb250YWlucygncmVxdWlyZWQnKVxuICAgICkge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmNvbnRyb2xMYWJlbCwgJ3JlcXVpcmVkJyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNhblNob3dFcnJvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0ludmFsaWQ7XG4gIH1cbn1cbiJdfQ==