UNPKG

angular-dynamic-forms-lite

Version:
146 lines 10.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { DynamicController } from "../dynamic-controller"; import { ArrayRenderer } from "./array-renderer"; /** * @template M, CM */ export class DynamicArrayController extends DynamicController { /** * @param {?} parentFieldFactory */ constructor(parentFieldFactory) { super(); this.parentFieldFactory = parentFieldFactory; this.subscriptions = []; } /** * @param {?} context * @return {?} */ onInit(context) { this.arrayContext = context; this.renderer = new ArrayRenderer(this.parentFieldFactory, this.arrayRoot); this.paginator.updateTotalSize(this.children.length); this.subscriptions.push(this.paginator.onPageEvent().subscribe((/** * @param {?} event * @return {?} */ event => this.renderPage(event)))); } /** * @return {?} */ get paginator() { return this.setting.renderStrategy.paginator; } /** * @private * @return {?} */ get children() { return (/** @type {?} */ (this.arrayContext.children)); } /** * @private * @return {?} */ get formArray() { return this.arrayContext.formControl; } /** * @private * @return {?} */ get setting() { return (/** @type {?} */ (this.arrayContext.setting)); } /** * @private * @return {?} */ get settings() { return this.arrayContext.settings; } /** * @param {?} value * @return {?} */ push(value) { /** @type {?} */ const newChildContext = this.parentFieldFactory.create({ setting: this.setting.childSetting, settings: this.settings, initialValue: value }); this.children.push(newChildContext); this.parentFieldFactory.updateChildren(this.arrayContext); this.paginator.updateTotalSize(this.children.length); this.renderPage(); } /** * @param {?} index * @return {?} */ removeAt(index) { if (index >= this.children.length || index < 0) { return false; } this.children.splice(index, 1); this.parentFieldFactory.updateChildren(this.arrayContext); this.paginator.updateTotalSize(this.children.length); this.renderPage(); return true; } /** * @protected * @return {?} */ destory() { this.subscriptions.forEach((/** * @param {?} s * @return {?} */ s => s.unsubscribe())); } /** * @private * @param {?=} pageEvent * @return {?} */ renderPage(pageEvent = this.paginator.currentPage) { return this.renderer.render(this.arrayContext, pageEvent); } /** * @private * @return {?} */ get arrayRoot() { return ((/** @type {?} */ (this._componentRef.instance))).formRoot; } } if (false) { /** * @type {?} * @private */ DynamicArrayController.prototype.arrayContext; /** * @type {?} * @private */ DynamicArrayController.prototype.subscriptions; /** * @type {?} * @private */ DynamicArrayController.prototype.renderer; /** * @type {?} * @private */ DynamicArrayController.prototype.parentFieldFactory; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1hcnJheS1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1keW5hbWljLWZvcm1zLWxpdGUvIiwic291cmNlcyI6WyJsaWIvZm9ybS1maWVsZC9hcnJheS9keW5hbWljLWFycmF5LWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBTzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQUdqRCxNQUFNLE9BQU8sc0JBQXdDLFNBQVEsaUJBQWlCOzs7O0lBSzVFLFlBQW9CLGtCQUFzQztRQUN4RCxLQUFLLEVBQUUsQ0FBQztRQURVLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFIbEQsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO0lBSzNDLENBQUM7Ozs7O0lBRU0sTUFBTSxDQUFDLE9BQWtDO1FBQzlDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUzRSxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUzs7OztRQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLENBQUM7SUFDbkcsQ0FBQzs7OztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztJQUMvQyxDQUFDOzs7OztJQUVELElBQVksUUFBUTtRQUNsQixPQUFPLG1CQUFBLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFxQixDQUFDO0lBQ3pELENBQUM7Ozs7O0lBRUQsSUFBWSxTQUFTO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7SUFDdkMsQ0FBQzs7Ozs7SUFFRCxJQUFZLE9BQU87UUFDakIsT0FBTyxtQkFBQSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBZ0MsQ0FBQztJQUNuRSxDQUFDOzs7OztJQUVELElBQVksUUFBUTtRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQ3BDLENBQUM7Ozs7O0lBRU0sSUFBSSxDQUFDLEtBQVU7O2NBQ2QsZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7WUFDckQsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWTtZQUNsQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7Ozs7O0lBRU0sUUFBUSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUM5QyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRS9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7Ozs7SUFFUyxPQUFPO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUMsQ0FBQztJQUNuRCxDQUFDOzs7Ozs7SUFFTyxVQUFVLENBQUMsWUFBdUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM1RCxDQUFDOzs7OztJQUVELElBQVksU0FBUztRQUNuQixPQUFPLENBQUMsbUJBQUEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQTJCLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDM0UsQ0FBQztDQUNGOzs7Ozs7SUExRUMsOENBQWdEOzs7OztJQUNoRCwrQ0FBMkM7Ozs7O0lBQzNDLDBDQUFnQzs7Ozs7SUFFcEIsb0RBQThDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUZpZWxkU2V0dGluZ3MgfSBmcm9tIFwiLi4vLi4vZm9ybS1zZXR0aW5ncy9mb3JtLWZpZWxkLXNldHRpbmdzXCI7XG5pbXBvcnQgeyBQYXJlbnRGaWVsZEZhY3RvcnkgfSBmcm9tIFwiLi4vZmllbGQtZmFjdG9yeVwiO1xuaW1wb3J0IHsgRHluYW1pY0NvbnRyb2xsZXIgfSBmcm9tIFwiLi4vZHluYW1pYy1jb250cm9sbGVyXCI7XG5pbXBvcnQgeyBBcnJheUZvcm1GaWVsZFNldHRpbmcgfSBmcm9tIFwiLi9hcnJheS1mb3JtLWZpZWxkLXNldHRpbmdcIjtcbmltcG9ydCB7IEZvcm1GaWVsZEFycmF5Q29tcG9uZW50IH0gZnJvbSBcIi4vZm9ybS1maWVsZC1hcnJheS1jb21wb25lbnRcIjtcbmltcG9ydCB7IEZvcm1Sb290RGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2Zvcm0vZm9ybS1yb290LmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgUGFnaW5hdG9yLCBQYWdlRXZlbnQgfSBmcm9tIFwiLi9wYWdpbmF0b3JcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBGb3JtQ29udGV4dCB9IGZyb20gXCIuLi8uLi9mb3JtL2Zvcm0tY29udGV4dFwiO1xuaW1wb3J0IHsgQXJyYXlSZW5kZXJlciB9IGZyb20gXCIuL2FycmF5LXJlbmRlcmVyXCI7XG5pbXBvcnQgeyBGb3JtQXJyYXkgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuZXhwb3J0IGNsYXNzIER5bmFtaWNBcnJheUNvbnRyb2xsZXI8TSA9IHt9LCBDTSA9IHt9PiBleHRlbmRzIER5bmFtaWNDb250cm9sbGVyIHtcbiAgcHJpdmF0ZSBhcnJheUNvbnRleHQ6IEZvcm1Db250ZXh0PE0sIEZvcm1BcnJheT47XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSByZW5kZXJlcjogQXJyYXlSZW5kZXJlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmVudEZpZWxkRmFjdG9yeTogUGFyZW50RmllbGRGYWN0b3J5KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkluaXQoY29udGV4dDogRm9ybUNvbnRleHQ8TSwgRm9ybUFycmF5Pikge1xuICAgIHRoaXMuYXJyYXlDb250ZXh0ID0gY29udGV4dDtcbiAgICB0aGlzLnJlbmRlcmVyID0gbmV3IEFycmF5UmVuZGVyZXIodGhpcy5wYXJlbnRGaWVsZEZhY3RvcnksIHRoaXMuYXJyYXlSb290KTtcblxuICAgIHRoaXMucGFnaW5hdG9yLnVwZGF0ZVRvdGFsU2l6ZSh0aGlzLmNoaWxkcmVuLmxlbmd0aCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5wYWdpbmF0b3Iub25QYWdlRXZlbnQoKS5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy5yZW5kZXJQYWdlKGV2ZW50KSkpO1xuICB9XG5cbiAgcHVibGljIGdldCBwYWdpbmF0b3IoKTogUGFnaW5hdG9yIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nLnJlbmRlclN0cmF0ZWd5LnBhZ2luYXRvcjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGNoaWxkcmVuKCk6IEZvcm1Db250ZXh0PENNPltdIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheUNvbnRleHQuY2hpbGRyZW4gYXMgRm9ybUNvbnRleHQ8Q00+W107XG4gIH1cblxuICBwcml2YXRlIGdldCBmb3JtQXJyYXkoKTogRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5hcnJheUNvbnRleHQuZm9ybUNvbnRyb2w7XG4gIH1cblxuICBwcml2YXRlIGdldCBzZXR0aW5nKCk6IEFycmF5Rm9ybUZpZWxkU2V0dGluZzxNLCBDTT4ge1xuICAgIHJldHVybiB0aGlzLmFycmF5Q29udGV4dC5zZXR0aW5nIGFzIEFycmF5Rm9ybUZpZWxkU2V0dGluZzxNLCBDTT47XG4gIH1cblxuICBwcml2YXRlIGdldCBzZXR0aW5ncygpOiBGb3JtRmllbGRTZXR0aW5ncyB7XG4gICAgcmV0dXJuIHRoaXMuYXJyYXlDb250ZXh0LnNldHRpbmdzO1xuICB9XG5cbiAgcHVibGljIHB1c2godmFsdWU6IGFueSkge1xuICAgIGNvbnN0IG5ld0NoaWxkQ29udGV4dCA9IHRoaXMucGFyZW50RmllbGRGYWN0b3J5LmNyZWF0ZSh7XG4gICAgICBzZXR0aW5nOiB0aGlzLnNldHRpbmcuY2hpbGRTZXR0aW5nLFxuICAgICAgc2V0dGluZ3M6IHRoaXMuc2V0dGluZ3MsXG4gICAgICBpbml0aWFsVmFsdWU6IHZhbHVlXG4gICAgfSk7XG5cbiAgICB0aGlzLmNoaWxkcmVuLnB1c2gobmV3Q2hpbGRDb250ZXh0KTtcbiAgICB0aGlzLnBhcmVudEZpZWxkRmFjdG9yeS51cGRhdGVDaGlsZHJlbih0aGlzLmFycmF5Q29udGV4dCk7XG4gICAgdGhpcy5wYWdpbmF0b3IudXBkYXRlVG90YWxTaXplKHRoaXMuY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICB0aGlzLnJlbmRlclBhZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVBdChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKGluZGV4ID49IHRoaXMuY2hpbGRyZW4ubGVuZ3RoIHx8IGluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIHRoaXMucGFyZW50RmllbGRGYWN0b3J5LnVwZGF0ZUNoaWxkcmVuKHRoaXMuYXJyYXlDb250ZXh0KTtcbiAgICB0aGlzLnBhZ2luYXRvci51cGRhdGVUb3RhbFNpemUodGhpcy5jaGlsZHJlbi5sZW5ndGgpO1xuXG4gICAgdGhpcy5yZW5kZXJQYWdlKCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVzdG9yeSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclBhZ2UocGFnZUV2ZW50OiBQYWdlRXZlbnQgPSB0aGlzLnBhZ2luYXRvci5jdXJyZW50UGFnZSkge1xuICAgIHJldHVybiB0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLmFycmF5Q29udGV4dCwgcGFnZUV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGFycmF5Um9vdCgpOiBGb3JtUm9vdERpcmVjdGl2ZSB7XG4gICAgcmV0dXJuICh0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgRm9ybUZpZWxkQXJyYXlDb21wb25lbnQpLmZvcm1Sb290O1xuICB9XG59XG4iXX0=