UNPKG

@webdev-tools/ng-nested-reactive-forms

Version:
96 lines 10.4 kB
import { Directive, EventEmitter, HostListener, Input, Optional, Output, Renderer2, TemplateRef, ViewContainerRef, } from '@angular/core'; import { NrfFormContext } from './form-context.class'; import { NrfSubmitData } from './form-submit-data.class'; import { NrfFormService } from './form.service'; var NrfFormDirective = (function () { function NrfFormDirective(templateRef, viewContainerRef, formService, renderer) { this.templateRef = templateRef; this.viewContainerRef = viewContainerRef; this.formService = formService; this.renderer = renderer; if (!formService) { this.formService = new NrfFormService(); } } Object.defineProperty(NrfFormDirective.prototype, "nrfEntity", { get: function () { return this.formService.entity; }, set: function (entity) { this.formService.entity = entity; }, enumerable: true, configurable: true }); Object.defineProperty(NrfFormDirective.prototype, "formData", { get: function () { return this.formService.formData; }, enumerable: true, configurable: true }); Object.defineProperty(NrfFormDirective.prototype, "formGroup", { get: function () { return this.formService.formGroup; }, enumerable: true, configurable: true }); Object.defineProperty(NrfFormDirective.prototype, "nrfSubmit", { get: function () { return this.formService.submit$; }, enumerable: true, configurable: true }); NrfFormDirective.prototype.ngOnInit = function () { if (!this.nrfEntity) { this.nrfEntity = {}; } this.renderView(); }; NrfFormDirective.prototype.ngOnDestroy = function () { this.nrfSubmit.complete(); }; NrfFormDirective.prototype.renderView = function () { var _this = this; if (this.templateRef && this.viewContainerRef) { var embeddedViewRef = this.viewContainerRef.createEmbeddedView(this.templateRef, new NrfFormContext(this)); var formNative = embeddedViewRef.rootNodes[0]; this.renderer.listen(formNative, 'submit', function (event) { return _this.formSubmitWrapper(event); }); } }; NrfFormDirective.prototype.formSubmitWrapper = function ($event) { $event.preventDefault(); if (!this.formGroup.valid) { return; } this.nrfSubmit.emit(new NrfSubmitData(this, $event)); }; NrfFormDirective.decorators = [ { type: Directive, args: [{ selector: '[nrfForm]', exportAs: 'nrfForm', },] } ]; NrfFormDirective.ctorParameters = function () { return [ { type: TemplateRef, decorators: [{ type: Optional }] }, { type: ViewContainerRef, decorators: [{ type: Optional }] }, { type: NrfFormService, decorators: [{ type: Optional }] }, { type: Renderer2 } ]; }; NrfFormDirective.propDecorators = { nrfEntity: [{ type: Input }], nrfSubmit: [{ type: Output }], formSubmitWrapper: [{ type: HostListener, args: ['submit', ['$event'],] }] }; return NrfFormDirective; }()); export { NrfFormDirective }; if (false) { NrfFormDirective.prototype.templateRef; NrfFormDirective.prototype.viewContainerRef; NrfFormDirective.prototype.formService; NrfFormDirective.prototype.renderer; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ad2ViZGV2LXRvb2xzL25nLW5lc3RlZC1yZWFjdGl2ZS1mb3Jtcy8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL2Zvcm0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsV0FBVyxFQUNYLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWFoRDtJQVFFLDBCQUMrQixXQUE2QixFQUM3QixnQkFBa0MsRUFDbEMsV0FBMkIsRUFDdkMsUUFBbUI7UUFIUCxnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDdkMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUVwQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztTQUN6QztJQUNILENBQUM7SUFLRCxzQkFDSSx1Q0FBUzthQUdiO1lBQ0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUNqQyxDQUFDO2FBTkQsVUFDYyxNQUFXO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNuQyxDQUFDOzs7T0FBQTtJQUtELHNCQUFJLHNDQUFRO2FBQVo7WUFDRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBQ25DLENBQUM7OztPQUFBO0lBRUQsc0JBQUksdUNBQVM7YUFBYjtZQUNFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUM7UUFDcEMsQ0FBQzs7O09BQUE7SUFNRCxzQkFDSSx1Q0FBUzthQURiO1lBRUUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztRQUNsQyxDQUFDOzs7T0FBQTtJQU1ELG1DQUFRLEdBQVI7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztTQUNyQjtRQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBR0Qsc0NBQVcsR0FBWDtRQUNFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUdPLHFDQUFVLEdBQWxCO1FBQUEsaUJBTUM7UUFMQyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUN2QyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RHLFVBQVUsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQUEsS0FBSyxJQUFJLE9BQUEsS0FBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUE3QixDQUE2QixDQUFDLENBQUM7U0FDcEY7SUFDSCxDQUFDO0lBUUQsNENBQWlCLEdBRGpCLFVBQ2tCLE1BQWE7UUFDN0IsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXhCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRTtZQUN6QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDOztnQkF2RkYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixRQUFRLEVBQUUsU0FBUztpQkFDcEI7OztnQkF2QkMsV0FBVyx1QkE2QlIsUUFBUTtnQkE1QlgsZ0JBQWdCLHVCQTZCYixRQUFRO2dCQXZCSixjQUFjLHVCQXdCbEIsUUFBUTtnQkFoQ1gsU0FBUzs7OzRCQTJDUixLQUFLOzRCQW9CTCxNQUFNO29DQW9DTixZQUFZLFNBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDOztJQVVwQyx1QkFBQztDQUFBLEFBeEZELElBd0ZDO1NBcEZZLGdCQUFnQjs7SUFLekIsdUNBQTBEO0lBQzFELDRDQUErRDtJQUMvRCx1Q0FBd0Q7SUFDeEQsb0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTnJmRm9ybUNvbnRleHQgfSBmcm9tICcuL2Zvcm0tY29udGV4dC5jbGFzcyc7XG5pbXBvcnQgeyBOcmZTdWJtaXREYXRhIH0gZnJvbSAnLi9mb3JtLXN1Ym1pdC1kYXRhLmNsYXNzJztcbmltcG9ydCB7IE5yZkZvcm1TZXJ2aWNlIH0gZnJvbSAnLi9mb3JtLnNlcnZpY2UnO1xuXG4vKiB0c2xpbnQ6ZGlzYWJsZTogdGVyLXBhZGRlZC1ibG9ja3MgKi9cbi8qKlxuICogQSBjb21wb25lbnQgdG8gYWJzdHJhY3QgdGhlIGZvcm0gaW1wbGVtZW50YXRpb25cbiAqXG4gKiBJdCBob2xkcyB0aGUgdmFsaWRhdGlvbiBhbmQgdGhlIHN1Ym1pdCBsb2dpY1xuICpcbiAqIEBleGFtcGxlXG4gKiA8Zm9ybSBucmZGb3JtIChucmZTdWJtaXQpPVwiYUNhbGxiYWNrKCRldmVudClcIj5cbiAqICAvLyBJbnB1dHNcbiAqIDwvZm9ybT5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25yZkZvcm1dJyxcbiAgZXhwb3J0QXM6ICducmZGb3JtJyxcbn0pXG5leHBvcnQgY2xhc3MgTnJmRm9ybURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgZm9ybVNlcnZpY2U6IE5yZkZvcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgKSB7XG4gICAgaWYgKCFmb3JtU2VydmljZSkge1xuICAgICAgdGhpcy5mb3JtU2VydmljZSA9IG5ldyBOcmZGb3JtU2VydmljZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGFuIEVudGl0eSBNb2RlbCB0aGF0IGNvbWVzIGZyb20gRGF0YWJhc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBucmZFbnRpdHkoZW50aXR5OiBhbnkpIHtcbiAgICB0aGlzLmZvcm1TZXJ2aWNlLmVudGl0eSA9IGVudGl0eTtcbiAgfVxuICBnZXQgbnJmRW50aXR5KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybVNlcnZpY2UuZW50aXR5O1xuICB9XG5cbiAgZ2V0IGZvcm1EYXRhKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybVNlcnZpY2UuZm9ybURhdGE7XG4gIH1cblxuICBnZXQgZm9ybUdyb3VwKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybVNlcnZpY2UuZm9ybUdyb3VwO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBmb3JtIGlzIHZhbGlkIGFuZCBhIHN1Ym1pdCBldmVudCBpcyB0cmlnZ2VyZWRcbiAgICogYnkgYSBidXR0b24gY2xpY2sgb3IgcHJvZ3JhbW1hdGljYWxseS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBnZXQgbnJmU3VibWl0KCk6IEV2ZW50RW1pdHRlcjxOcmZTdWJtaXREYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybVNlcnZpY2Uuc3VibWl0JDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEluaXQgYW4gZW1wdHkgbnJmRW50aXR5LCBpbiBjYXNlIG5vbmUgd2hlcmUgcHJvdmlkZWQuXG4gICAqL1xuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMubnJmRW50aXR5KSB7XG4gICAgICB0aGlzLm5yZkVudGl0eSA9IHt9O1xuICAgIH1cblxuICAgIHRoaXMucmVuZGVyVmlldygpO1xuICB9XG5cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm5yZlN1Ym1pdC5jb21wbGV0ZSgpO1xuICB9XG5cblxuICBwcml2YXRlIHJlbmRlclZpZXcoKSB7XG4gICAgaWYgKHRoaXMudGVtcGxhdGVSZWYgJiYgdGhpcy52aWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICBjb25zdCBlbWJlZGRlZFZpZXdSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYsIG5ldyBOcmZGb3JtQ29udGV4dCh0aGlzKSk7XG4gICAgICBjb25zdCBmb3JtTmF0aXZlID0gZW1iZWRkZWRWaWV3UmVmLnJvb3ROb2Rlc1swXTtcbiAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKGZvcm1OYXRpdmUsICdzdWJtaXQnLCBldmVudCA9PiB0aGlzLmZvcm1TdWJtaXRXcmFwcGVyKGV2ZW50KSk7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogIyBTaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSFcbiAgICogVGhpcyBtZXRob2Qgd3JhcHMgdGhlIGZvcm0gdmFsaWRhdGlvbiBhbmQgY2FsbCBbbnJmU3VibWl0XXtAbGluayBOcmZGb3JtRGlyZWN0aXZlI25yZlN1Ym1pdH1cbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ3N1Ym1pdCcsIFsnJGV2ZW50J10pXG4gIGZvcm1TdWJtaXRXcmFwcGVyKCRldmVudDogRXZlbnQpIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGlmICghdGhpcy5mb3JtR3JvdXAudmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm5yZlN1Ym1pdC5lbWl0KG5ldyBOcmZTdWJtaXREYXRhKHRoaXMsICRldmVudCkpO1xuICB9XG59XG4iXX0=