angular-dynamic-forms-lite
Version:
Efficient dynamic and customizable Angular 7+ forms.
146 lines • 10.8 kB
JavaScript
/**
* @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=