angular-dynamic-forms-lite
Version:
Efficient dynamic and customizable Angular 7+ forms.
68 lines • 5.26 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export class ArrayRenderer {
// TODO is arrayRoot needed
/**
* @param {?} parentFieldFactory
* @param {?} arrayRoot
*/
constructor(parentFieldFactory, arrayRoot) {
this.parentFieldFactory = parentFieldFactory;
this.arrayRoot = arrayRoot;
}
/**
* @param {?} context
* @param {?} pageEvent
* @return {?}
*/
render(context, pageEvent) {
this.renderChildren(this.arrayRoot, this.getChildrenToRender((/** @type {?} */ (context.children)), pageEvent));
}
/**
* @private
* @param {?} arrayRoot
* @param {?} contexts
* @return {?}
*/
renderChildren(arrayRoot, contexts) {
arrayRoot.clearView();
contexts.forEach((/**
* @param {?} context
* @return {?}
*/
context => {
if (context.componentRef.hostView.destroyed) {
// recreate the view if it is destroyed
/** @type {?} */
const newContext = this.parentFieldFactory.create(context);
this.parentFieldFactory.render(arrayRoot, newContext);
return;
}
this.parentFieldFactory.render(arrayRoot, context);
}));
}
/**
* @private
* @param {?} children
* @param {?} pageEvent
* @return {?}
*/
getChildrenToRender(children, pageEvent) {
return children.slice(pageEvent.pageIndex * pageEvent.pageSize, (pageEvent.pageIndex + 1) * pageEvent.pageSize);
}
}
if (false) {
/**
* @type {?}
* @private
*/
ArrayRenderer.prototype.parentFieldFactory;
/**
* @type {?}
* @private
*/
ArrayRenderer.prototype.arrayRoot;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktcmVuZGVyZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLWR5bmFtaWMtZm9ybXMtbGl0ZS8iLCJzb3VyY2VzIjpbImxpYi9mb3JtLWZpZWxkL2FycmF5L2FycmF5LXJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFNQSxNQUFNLE9BQU8sYUFBYTs7Ozs7O0lBRXhCLFlBQW9CLGtCQUFzQyxFQUFVLFNBQTRCO1FBQTVFLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFtQjtJQUFHLENBQUM7Ozs7OztJQUU3RixNQUFNLENBQUMsT0FBb0MsRUFBRSxTQUFvQjtRQUN0RSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG1CQUFBLE9BQU8sQ0FBQyxRQUFRLEVBQXNCLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNuSCxDQUFDOzs7Ozs7O0lBRU8sY0FBYyxDQUFDLFNBQTRCLEVBQUUsUUFBNEI7UUFDL0UsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRXRCLFFBQVEsQ0FBQyxPQUFPOzs7O1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDekIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUU7OztzQkFFckMsVUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQU0sT0FBTyxDQUFDO2dCQUUvRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDdEQsT0FBTzthQUNSO1lBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckQsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7Ozs7O0lBRU8sbUJBQW1CLENBQUMsUUFBaUMsRUFBRSxTQUFvQjtRQUNqRixPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEgsQ0FBQztDQUNGOzs7Ozs7SUF6QmEsMkNBQThDOzs7OztJQUFFLGtDQUFvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gXCIuL3BhZ2luYXRvclwiO1xuaW1wb3J0IHsgRm9ybVJvb3REaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZm9ybS9mb3JtLXJvb3QuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBGb3JtQ29udGV4dCB9IGZyb20gXCIuLi8uLi9mb3JtL2Zvcm0tY29udGV4dFwiO1xuaW1wb3J0IHsgUGFyZW50RmllbGRGYWN0b3J5IH0gZnJvbSBcIi4uL2ZpZWxkLWZhY3RvcnlcIjtcbmltcG9ydCB7IEZvcm1BcnJheSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5leHBvcnQgY2xhc3MgQXJyYXlSZW5kZXJlciB7XG4gIC8vIFRPRE8gaXMgYXJyYXlSb290IG5lZWRlZFxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcmVudEZpZWxkRmFjdG9yeTogUGFyZW50RmllbGRGYWN0b3J5LCBwcml2YXRlIGFycmF5Um9vdDogRm9ybVJvb3REaXJlY3RpdmUpIHt9XG5cbiAgcHVibGljIHJlbmRlcihjb250ZXh0OiBGb3JtQ29udGV4dDxhbnksIEZvcm1BcnJheT4sIHBhZ2VFdmVudDogUGFnZUV2ZW50KSB7XG4gICAgdGhpcy5yZW5kZXJDaGlsZHJlbih0aGlzLmFycmF5Um9vdCwgdGhpcy5nZXRDaGlsZHJlblRvUmVuZGVyKGNvbnRleHQuY2hpbGRyZW4gYXMgRm9ybUNvbnRleHQ8YW55PltdLCBwYWdlRXZlbnQpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyQ2hpbGRyZW4oYXJyYXlSb290OiBGb3JtUm9vdERpcmVjdGl2ZSwgY29udGV4dHM6IEZvcm1Db250ZXh0PGFueT5bXSk6IHZvaWQge1xuICAgIGFycmF5Um9vdC5jbGVhclZpZXcoKTtcblxuICAgIGNvbnRleHRzLmZvckVhY2goY29udGV4dCA9PiB7XG4gICAgICBpZiAoY29udGV4dC5jb21wb25lbnRSZWYuaG9zdFZpZXcuZGVzdHJveWVkKSB7XG4gICAgICAgIC8vIHJlY3JlYXRlIHRoZSB2aWV3IGlmIGl0IGlzIGRlc3Ryb3llZFxuICAgICAgICBjb25zdCBuZXdDb250ZXh0ID0gdGhpcy5wYXJlbnRGaWVsZEZhY3RvcnkuY3JlYXRlPGFueT4oY29udGV4dCk7XG5cbiAgICAgICAgdGhpcy5wYXJlbnRGaWVsZEZhY3RvcnkucmVuZGVyKGFycmF5Um9vdCwgbmV3Q29udGV4dCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wYXJlbnRGaWVsZEZhY3RvcnkucmVuZGVyKGFycmF5Um9vdCwgY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENoaWxkcmVuVG9SZW5kZXIoY2hpbGRyZW46IEZvcm1Db250ZXh0PGFueSwgYW55PltdLCBwYWdlRXZlbnQ6IFBhZ2VFdmVudCkge1xuICAgIHJldHVybiBjaGlsZHJlbi5zbGljZShwYWdlRXZlbnQucGFnZUluZGV4ICogcGFnZUV2ZW50LnBhZ2VTaXplLCAocGFnZUV2ZW50LnBhZ2VJbmRleCArIDEpICogcGFnZUV2ZW50LnBhZ2VTaXplKTtcbiAgfVxufVxuIl19