UNPKG

@zodiac-ui/formula

Version:

Formula is a powerful form generator built for Angular. Inspired by Angular Router, Formula provides a declarative interface for building reactive forms.

81 lines 7.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { ChangeDetectionStrategy, Component, Inject, Optional, SkipSelf, ViewChild, } from "@angular/core"; import { FormulaContext } from "../interfaces"; import { NgForm } from "@angular/forms"; import { isFormArray, isFormGroup } from "../node/utils"; import { FORMULA_OUTLET } from "../constants"; export class FormComponent { /** * @param {?} ctx * @param {?} outlet * @param {?} parent */ constructor(ctx, outlet, parent) { if (isFormGroup(ctx.model) || isFormArray(ctx.model)) { this.model = ctx.model; } else { throw new Error("<z-form> only accepts FormGroup or FormArray"); } this.ngFormOptions = ctx.data.ngFormOptions || {}; this.outlet = outlet.root; this.parent = parent; } /** * @return {?} */ ngAfterViewInit() { if (!this.parent) { this.outlet.setForm(this.form); } } } FormComponent.decorators = [ { type: Component, args: [{ selector: "z-form", template: ` <ng-container *ngIf="parent; then: ngForm; else: form"></ng-container> <ng-template #form> <form [ngFormOptions]="ngFormOptions"> <ng-container [ngTemplateOutlet]="content"></ng-container> </form> </ng-template> <ng-template #ngForm> <ng-form [ngFormOptions]="ngFormOptions"> <ng-container [ngTemplateOutlet]="content"></ng-container> </ng-form> </ng-template> <ng-template #content> <ng-content></ng-content> </ng-template> `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%}"] }] } ]; /** @nocollapse */ FormComponent.ctorParameters = () => [ { type: FormulaContext }, { type: undefined, decorators: [{ type: Inject, args: [FORMULA_OUTLET,] }] }, { type: FormComponent, decorators: [{ type: Optional }, { type: SkipSelf }] } ]; FormComponent.propDecorators = { form: [{ type: ViewChild, args: [NgForm,] }] }; if (false) { /** @type {?} */ FormComponent.prototype.form; /** @type {?} */ FormComponent.prototype.parent; /** @type {?} */ FormComponent.prototype.model; /** @type {?} */ FormComponent.prototype.ngFormOptions; /** * @type {?} * @private */ FormComponent.prototype.outlet; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Aem9kaWFjLXVpL2Zvcm11bGEvIiwic291cmNlcyI6WyJsaWIvZm9ybS9mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLFFBQVEsRUFDUixRQUFRLEVBQ1IsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxjQUFjLEVBQThCLE1BQU0sZUFBZSxDQUFBO0FBQzFFLE9BQU8sRUFBd0IsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQXFCN0MsTUFBTSxPQUFPLGFBQWE7Ozs7OztJQVV0QixZQUNJLEdBQW1CLEVBQ0ssTUFBcUIsRUFDckIsTUFBcUI7UUFFN0MsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFBO1NBQ3pCO2FBQU07WUFDSCxNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUE7U0FDbEU7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQTtRQUNqRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUE7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7SUFDeEIsQ0FBQzs7OztJQUVNLGVBQWU7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FDakM7SUFDTCxDQUFDOzs7WUFoREosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7S0FhVDtnQkFFRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDbEQ7Ozs7WUF2QlEsY0FBYzs0Q0FvQ2QsTUFBTSxTQUFDLGNBQWM7WUFDVSxhQUFhLHVCQUE1QyxRQUFRLFlBQUksUUFBUTs7O21CQVp4QixTQUFTLFNBQUMsTUFBTTs7OztJQUFqQiw2QkFDbUI7O0lBRW5CLCtCQUE0Qjs7SUFDNUIsOEJBQW1DOztJQUNuQyxzQ0FBeUI7Ozs7O0lBRXpCLCtCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlclZpZXdJbml0LFxyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBJbmplY3QsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIFNraXBTZWxmLFxyXG4gICAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcclxuaW1wb3J0IHsgRm9ybXVsYUNvbnRleHQsIEZvcm11bGFPdXRsZXQsIEZvcm11bGFSb290IH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIlxyXG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Hcm91cCwgTmdGb3JtIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCJcclxuaW1wb3J0IHsgaXNGb3JtQXJyYXksIGlzRm9ybUdyb3VwIH0gZnJvbSBcIi4uL25vZGUvdXRpbHNcIlxyXG5pbXBvcnQgeyBGT1JNVUxBX09VVExFVCB9IGZyb20gXCIuLi9jb25zdGFudHNcIlxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJ6LWZvcm1cIixcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhcmVudDsgdGhlbjogbmdGb3JtOyBlbHNlOiBmb3JtXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNmb3JtPlxyXG4gICAgICAgICAgICA8Zm9ybSBbbmdGb3JtT3B0aW9uc109XCJuZ0Zvcm1PcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNuZ0Zvcm0+XHJcbiAgICAgICAgICAgIDxuZy1mb3JtIFtuZ0Zvcm1PcHRpb25zXT1cIm5nRm9ybU9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWZvcm0+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2NvbnRlbnQ+IDxuZy1jb250ZW50PjwvbmctY29udGVudD4gPC9uZy10ZW1wbGF0ZT5cclxuICAgIGAsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vZm9ybS5jb21wb25lbnQuc2Nzc1wiXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gICAgQFZpZXdDaGlsZChOZ0Zvcm0pXHJcbiAgICBwdWJsaWMgZm9ybTogTmdGb3JtXHJcblxyXG4gICAgcHVibGljIHBhcmVudDogRm9ybUNvbXBvbmVudFxyXG4gICAgcHVibGljIG1vZGVsOiBGb3JtR3JvdXAgfCBGb3JtQXJyYXlcclxuICAgIHB1YmxpYyBuZ0Zvcm1PcHRpb25zOiBhbnlcclxuXHJcbiAgICBwcml2YXRlIG91dGxldDogRm9ybXVsYVJvb3RcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBjdHg6IEZvcm11bGFDb250ZXh0LFxyXG4gICAgICAgIEBJbmplY3QoRk9STVVMQV9PVVRMRVQpIG91dGxldDogRm9ybXVsYU91dGxldCxcclxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwYXJlbnQ6IEZvcm1Db21wb25lbnQsXHJcbiAgICApIHtcclxuICAgICAgICBpZiAoaXNGb3JtR3JvdXAoY3R4Lm1vZGVsKSB8fCBpc0Zvcm1BcnJheShjdHgubW9kZWwpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBjdHgubW9kZWxcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCI8ei1mb3JtPiBvbmx5IGFjY2VwdHMgRm9ybUdyb3VwIG9yIEZvcm1BcnJheVwiKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5nRm9ybU9wdGlvbnMgPSBjdHguZGF0YS5uZ0Zvcm1PcHRpb25zIHx8IHt9XHJcbiAgICAgICAgdGhpcy5vdXRsZXQgPSBvdXRsZXQucm9vdFxyXG4gICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMucGFyZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMub3V0bGV0LnNldEZvcm0odGhpcy5mb3JtKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=