UNPKG

ngrx-forms

Version:

Proper integration of forms in Angular 4 applications using ngrx

50 lines 6.28 kB
import { Directive, Host, Input, Optional, } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "./select"; import * as i2 from "./select-multiple"; // tslint:disable:directive-class-suffix const NULL_RENDERER = { setProperty: () => void 0, }; /** * This directive is necessary to restore the default behaviour of Angular * when an `option` is used without an **ngrx-forms** form state. Since it * is not possible to select an element with a selector that considers its * parent the `option` directives for `select` and `select[multiple]` will * always be applied and therefore overriding the `[value]` binding which * disabled Angular's normal behaviour. This directive restores this * behaviour if no `select` or `select[multiple]` view adapter is found. * This is not a perfect solution since it may interfere with other * directives that try to set the `[value]` but that is very unlikely. */ export class NgrxFallbackSelectOption { constructor(element, renderer, viewAdapter, multipleViewAdapter) { this.element = element; this.renderer = renderer; this.renderer = viewAdapter || multipleViewAdapter ? NULL_RENDERER : renderer; } set value(value) { this.renderer.setProperty(this.element.nativeElement, 'value', value); } } NgrxFallbackSelectOption.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: NgrxFallbackSelectOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.NgrxSelectViewAdapter, host: true, optional: true }, { token: i2.NgrxSelectMultipleViewAdapter, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); NgrxFallbackSelectOption.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: NgrxFallbackSelectOption, selector: "option", inputs: { value: "value" }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: NgrxFallbackSelectOption, decorators: [{ type: Directive, args: [{ // tslint:disable-next-line:directive-selector selector: 'option', }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.NgrxSelectViewAdapter, decorators: [{ type: Host }, { type: Optional }] }, { type: i2.NgrxSelectMultipleViewAdapter, decorators: [{ type: Host }, { type: Optional }] }]; }, propDecorators: { value: [{ type: Input, args: ['value'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3ZpZXctYWRhcHRlci9vcHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxJQUFJLEVBQ0osS0FBSyxFQUNMLFFBQVEsR0FFVCxNQUFNLGVBQWUsQ0FBQzs7OztBQUt2Qix3Q0FBd0M7QUFFeEMsTUFBTSxhQUFhLEdBQWM7SUFDL0IsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztDQUNuQixDQUFDO0FBRVQ7Ozs7Ozs7Ozs7R0FVRztBQUtILE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsWUFDVSxPQUFtQixFQUNuQixRQUFtQixFQUNQLFdBQWtDLEVBQ2xDLG1CQUFrRDtRQUg5RCxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFJM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLElBQUksbUJBQW1CLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ2hGLENBQUM7SUFFRCxJQUNJLEtBQUssQ0FBQyxLQUFVO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4RSxDQUFDOztzSEFiVSx3QkFBd0I7MEdBQXhCLHdCQUF3Qjs0RkFBeEIsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNULDhDQUE4QztvQkFDOUMsUUFBUSxFQUFFLFFBQVE7aUJBQ25COzswQkFLSSxJQUFJOzswQkFBSSxRQUFROzswQkFDaEIsSUFBSTs7MEJBQUksUUFBUTs0Q0FNZixLQUFLO3NCQURSLEtBQUs7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdCxcclxuICBJbnB1dCxcclxuICBPcHRpb25hbCxcclxuICBSZW5kZXJlcjIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBOZ3J4U2VsZWN0Vmlld0FkYXB0ZXIgfSBmcm9tICcuL3NlbGVjdCc7XHJcbmltcG9ydCB7IE5ncnhTZWxlY3RNdWx0aXBsZVZpZXdBZGFwdGVyIH0gZnJvbSAnLi9zZWxlY3QtbXVsdGlwbGUnO1xyXG5cclxuLy8gdHNsaW50OmRpc2FibGU6ZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxyXG5cclxuY29uc3QgTlVMTF9SRU5ERVJFUjogUmVuZGVyZXIyID0ge1xyXG4gIHNldFByb3BlcnR5OiAoKSA9PiB2b2lkIDAsXHJcbn0gYXMgYW55O1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgZGlyZWN0aXZlIGlzIG5lY2Vzc2FyeSB0byByZXN0b3JlIHRoZSBkZWZhdWx0IGJlaGF2aW91ciBvZiBBbmd1bGFyXHJcbiAqIHdoZW4gYW4gYG9wdGlvbmAgaXMgdXNlZCB3aXRob3V0IGFuICoqbmdyeC1mb3JtcyoqIGZvcm0gc3RhdGUuIFNpbmNlIGl0XHJcbiAqIGlzIG5vdCBwb3NzaWJsZSB0byBzZWxlY3QgYW4gZWxlbWVudCB3aXRoIGEgc2VsZWN0b3IgdGhhdCBjb25zaWRlcnMgaXRzXHJcbiAqIHBhcmVudCB0aGUgYG9wdGlvbmAgZGlyZWN0aXZlcyBmb3IgYHNlbGVjdGAgYW5kIGBzZWxlY3RbbXVsdGlwbGVdYCB3aWxsXHJcbiAqIGFsd2F5cyBiZSBhcHBsaWVkIGFuZCB0aGVyZWZvcmUgb3ZlcnJpZGluZyB0aGUgYFt2YWx1ZV1gIGJpbmRpbmcgd2hpY2hcclxuICogZGlzYWJsZWQgQW5ndWxhcidzIG5vcm1hbCBiZWhhdmlvdXIuIFRoaXMgZGlyZWN0aXZlIHJlc3RvcmVzIHRoaXNcclxuICogYmVoYXZpb3VyIGlmIG5vIGBzZWxlY3RgIG9yIGBzZWxlY3RbbXVsdGlwbGVdYCB2aWV3IGFkYXB0ZXIgaXMgZm91bmQuXHJcbiAqIFRoaXMgaXMgbm90IGEgcGVyZmVjdCBzb2x1dGlvbiBzaW5jZSBpdCBtYXkgaW50ZXJmZXJlIHdpdGggb3RoZXJcclxuICogZGlyZWN0aXZlcyB0aGF0IHRyeSB0byBzZXQgdGhlIGBbdmFsdWVdYCBidXQgdGhhdCBpcyB2ZXJ5IHVubGlrZWx5LlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmRpcmVjdGl2ZS1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnb3B0aW9uJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5ncnhGYWxsYmFja1NlbGVjdE9wdGlvbiB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBASG9zdCgpIEBPcHRpb25hbCgpIHZpZXdBZGFwdGVyOiBOZ3J4U2VsZWN0Vmlld0FkYXB0ZXIsXHJcbiAgICBASG9zdCgpIEBPcHRpb25hbCgpIG11bHRpcGxlVmlld0FkYXB0ZXI6IE5ncnhTZWxlY3RNdWx0aXBsZVZpZXdBZGFwdGVyLFxyXG4gICkge1xyXG4gICAgdGhpcy5yZW5kZXJlciA9IHZpZXdBZGFwdGVyIHx8IG11bHRpcGxlVmlld0FkYXB0ZXIgPyBOVUxMX1JFTkRFUkVSIDogcmVuZGVyZXI7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ3ZhbHVlJylcclxuICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xyXG4gIH1cclxufVxyXG4iXX0=