UNPKG

@ngqp/core

Version:

Synchronizing form controls with the URL for Angular

45 lines 4.89 kB
import { Directive, ElementRef, Host, Input, Optional, Renderer2 } from '@angular/core'; import { SelectControlValueAccessorDirective } from './select-control-value-accessor.directive'; /** @ignore */ export class SelectOptionDirective { constructor(parent, renderer, elementRef) { this.parent = parent; this.renderer = renderer; this.elementRef = elementRef; this.id = null; if (this.parent) { this.id = this.parent.registerOption(); } } ngOnInit() { if (this.parent) { this.renderer.setProperty(this.elementRef.nativeElement, 'value', this.id); } } ngOnDestroy() { if (this.parent) { this.parent.deregisterOption(this.id); this.parent.writeValue(this.parent.value); } } set value(value) { if (this.parent) { this.parent.updateOptionValue(this.id, value); this.parent.writeValue(this.parent.value); } } } SelectOptionDirective.decorators = [ { type: Directive, args: [{ selector: 'option', },] } ]; SelectOptionDirective.ctorParameters = () => [ { type: SelectControlValueAccessorDirective, decorators: [{ type: Optional }, { type: Host }] }, { type: Renderer2 }, { type: ElementRef } ]; SelectOptionDirective.propDecorators = { value: [{ type: Input, args: ['value',] }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdxcC9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9hY2Nlc3NvcnMvc2VsZWN0LW9wdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVoRyxjQUFjO0FBSWQsTUFBTSxPQUFPLHFCQUFxQjtJQUk5QixZQUNnQyxNQUE4QyxFQUNsRSxRQUFtQixFQUNuQixVQUFzQjtRQUZGLFdBQU0sR0FBTixNQUFNLENBQXdDO1FBQ2xFLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUxqQixPQUFFLEdBQWtCLElBQUksQ0FBQztRQU90QyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDMUM7SUFDTCxDQUFDO0lBRU0sUUFBUTtRQUNYLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDOUU7SUFDTCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUcsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0M7SUFDTCxDQUFDO0lBRUQsSUFDVyxLQUFLLENBQUMsS0FBUTtRQUNyQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QztJQUNMLENBQUM7OztZQXBDSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFFBQVE7YUFDckI7OztZQUxRLG1DQUFtQyx1QkFXbkMsUUFBUSxZQUFJLElBQUk7WUFaaUQsU0FBUztZQUEvRCxVQUFVOzs7b0JBa0N6QixLQUFLLFNBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3RDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZSB9IGZyb20gJy4vc2VsZWN0LWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlJztcblxuLyoqIEBpZ25vcmUgKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnb3B0aW9uJyxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0T3B0aW9uRGlyZWN0aXZlPFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBwcml2YXRlIHBhcmVudDogU2VsZWN0Q29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VD4sXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaWQgPSB0aGlzLnBhcmVudC5yZWdpc3Rlck9wdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIHRoaXMuaWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LmRlcmVnaXN0ZXJPcHRpb24odGhpcy5pZCEpO1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQud3JpdGVWYWx1ZSh0aGlzLnBhcmVudC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoJ3ZhbHVlJylcbiAgICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBUKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQudXBkYXRlT3B0aW9uVmFsdWUodGhpcy5pZCEsIHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LndyaXRlVmFsdWUodGhpcy5wYXJlbnQudmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG59Il19