@coolon/angular-ui-powerups 16.1.0-aplpha.52 → 16.1.0-aplpha.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -38,8 +38,10 @@ import * as i2$6 from '@angular/material/table';
38
38
  import { MatTableModule } from '@angular/material/table';
39
39
  import * as i4$1 from '@angular/material/tooltip';
40
40
  import { MatTooltipModule } from '@angular/material/tooltip';
41
+ import * as i4$5 from 'ng-table-virtual-scroll';
42
+ import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table-virtual-scroll';
41
43
  import * as i1$3 from '@coolon/pectin';
42
- import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, Logger, proxify, ValueModel, Proxify, StoreInValueModel, Command, MutableListModel, StoreInListModel, Disposable, DelegatingListModel, MutableValueModel, DelegateToValueModel, FocusManager, EventListenerList, Guard, DelegatingFormListModel, Binding, DebugContext, DelegateToListModel, DelegatingFormValueModel, ListModel, Functions, PageController, SelectionModel, CanProxy, MultipleSelectionModel, WatchList, DirtyTrackingForm, ProxyRegistry, DelegatingCommand, PagedListModel, ComputedListModel, Deferred, ReducingValueModel, AndValueModel } from '@coolon/pectin';
44
+ import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, Logger, proxify, ValueModel, Proxify, StoreInValueModel, Command, MutableListModel, StoreInListModel, Disposable, DelegatingListModel, MutableValueModel, DelegateToValueModel, FocusManager, EventListenerList, Guard, DelegatingFormListModel, Binding, DebugContext, DelegateToListModel, DelegatingFormValueModel, ListModel, Functions, PageController, SelectionModel, CanProxy, MultipleSelectionModel, WatchList, DirtyTrackingForm, ProxyRegistry, TransactionObserver, DelegatingCommand, ComputedListModel, Deferred, ReducingValueModel, AndValueModel } from '@coolon/pectin';
43
45
  import { __decorate, __param, __metadata } from 'tslib';
44
46
  import * as i1 from '@angular/platform-browser';
45
47
  import escapeStringRegexp from 'escape-string-regexp';
@@ -570,7 +572,7 @@ const markdownPillExtension = (renderPill) => {
570
572
  return index;
571
573
  },
572
574
  tokenizer: function (src) {
573
- const rule = /^(\(\((([^)])+)\)\))/; // Regex for the complete tok`en
575
+ const rule = /^(\(\((([^)])+)\)\))/; // Regex for the complete token
574
576
  const match = rule.exec(src);
575
577
  if (match) {
576
578
  const token = {
@@ -3104,12 +3106,17 @@ class AbstractTableComponent extends DisposableComponent {
3104
3106
  #showHeader_accessor_storage = true;
3105
3107
  get showHeader() { return this.#showHeader_accessor_storage; }
3106
3108
  set showHeader(value) { this.#showHeader_accessor_storage = value; }
3109
+ #enableScrolling$_accessor_storage = proxify((ValueModel));
3107
3110
  /**
3108
3111
  * Set to true to enable scrolling. Once enabled the table will have 0 implicit height. You will either
3109
3112
  * need to set it explicitly e.g. height: 400px; or by using flex or grid layout to make it fill it's
3110
3113
  * containment area.
3111
3114
  */
3112
- enableScrolling = false;
3115
+ get enableScrolling$() { return this.#enableScrolling$_accessor_storage; }
3116
+ set enableScrolling$(value) { this.#enableScrolling$_accessor_storage = value; }
3117
+ #enableScrolling_accessor_storage = false;
3118
+ get enableScrolling() { return this.#enableScrolling_accessor_storage; }
3119
+ set enableScrolling(value) { this.#enableScrolling_accessor_storage = value; }
3113
3120
  columns;
3114
3121
  columnIds;
3115
3122
  columnsById;
@@ -3164,7 +3171,7 @@ class AbstractTableComponent extends DisposableComponent {
3164
3171
  }
3165
3172
  }
3166
3173
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractTableComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
3167
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractTableComponent, selector: "aup-abstract-table", inputs: { showHeader$: "showHeader$", showHeader: "showHeader", enableScrolling: "enableScrolling" }, host: { properties: { "class": "this.baseCssClass" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
3174
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: AbstractTableComponent, selector: "aup-abstract-table", inputs: { showHeader$: "showHeader$", showHeader: "showHeader", enableScrolling$: "enableScrolling$", enableScrolling: "enableScrolling" }, host: { properties: { "class": "this.baseCssClass" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
3168
3175
  }
3169
3176
  __decorate([
3170
3177
  Proxify(),
@@ -3174,6 +3181,14 @@ __decorate([
3174
3181
  StoreInValueModel(),
3175
3182
  __metadata("design:type", Object)
3176
3183
  ], AbstractTableComponent.prototype, "showHeader", null);
3184
+ __decorate([
3185
+ Proxify(),
3186
+ __metadata("design:type", ValueModel)
3187
+ ], AbstractTableComponent.prototype, "enableScrolling$", null);
3188
+ __decorate([
3189
+ StoreInValueModel(),
3190
+ __metadata("design:type", Boolean)
3191
+ ], AbstractTableComponent.prototype, "enableScrolling", null);
3177
3192
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: AbstractTableComponent, decorators: [{
3178
3193
  type: Component,
3179
3194
  args: [{
@@ -3184,6 +3199,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
3184
3199
  type: Input
3185
3200
  }], showHeader: [{
3186
3201
  type: Input
3202
+ }], enableScrolling$: [{
3203
+ type: Input
3187
3204
  }], enableScrolling: [{
3188
3205
  type: Input
3189
3206
  }], baseCssClass: [{
@@ -4348,7 +4365,120 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
4348
4365
  args: ['class']
4349
4366
  }] } });
4350
4367
 
4368
+ // /**
4369
+ // * Virtual Scroll Strategy
4370
+ // */
4371
+ // export class CustomVirtualScrollStrategy extends FixedSizeVirtualScrollStrategy {
4372
+ // protected readonly garbage = new GarbageCollector();
4373
+ //
4374
+ // constructor(rowHeight$: ValueModel<number>, minBufferPx: number, maxBufferPx: number) {
4375
+ // super(rowHeight$.value, minBufferPx, maxBufferPx);
4376
+ // const {chain, when} = Dsl.disposeWith(this.garbage);
4377
+ // when(rowHeight$).changes(h => {
4378
+ // this.updateItemAndBufferSize(h, minBufferPx, maxBufferPx);
4379
+ // }, {initialValue: "triggerChangeUnlessNil"})
4380
+ // }
4381
+ // }
4382
+ // export class VirtualScrollDataSource<Row> extends DataSource<Row> implements Disposable, Disposable.Collector {
4383
+ //
4384
+ // private garbage = new GarbageCollector();
4385
+ //
4386
+ // readonly virtualScrollRowRange$: ValueModelChain<{ start: number; end: number }>;
4387
+ // readonly virtualScrollSpacerSize$: ValueModelChain<number>;
4388
+ // readonly totalContentSize$: ValueModelChain<number>;
4389
+ // readonly showVirtualScrollOffset: (index: number, rowData: any) => boolean;
4390
+ //
4391
+ // protected readonly virtualRowsObservable$ = new BehaviorSubject<readonly Row[]>([]);
4392
+ // private readonly virtualScrollPixelOffset$ = new MutableValueModel<number>(0);
4393
+ //
4394
+ //
4395
+ // constructor(readonly viewport: CdkVirtualScrollViewport, data$:ListModel<Row>, readonly rowHeight$:ValueModel<number>, pageSize$: ValueModel<number>) {
4396
+ // super();
4397
+ // const {chain, when, observe} = Dsl.disposeWith(this);
4398
+ //
4399
+ // observe.valuesFrom(viewport.elementScrolled()).subscribe((ev: Event) => {
4400
+ // this.virtualScrollPixelOffset$.value = (ev.currentTarget as any).scrollTop;
4401
+ // });
4402
+ //
4403
+ // this.virtualScrollRowRange$ = chain(this.virtualScrollPixelOffset$).map(rawPixelOffset => {
4404
+ // const startIndex = Math.floor(rawPixelOffset / this.rowHeight$.value);
4405
+ // console.log(rawPixelOffset, startIndex)
4406
+ // // const prevExtraData = startIndex > 5 ? 5 : 0;
4407
+ // const prevExtraData = 0;
4408
+ // // return rows.slice(startIndex - prevExtraData, startIndex + (pageSize$.value - prevExtraData));
4409
+ // return {
4410
+ // start: startIndex - prevExtraData,
4411
+ // end: startIndex + (pageSize$.value - prevExtraData)
4412
+ // }
4413
+ // }, {
4414
+ // dependsOn: [this.rowHeight$, pageSize$],
4415
+ // postponeWhile: chain.numericValue(pageSize$).isLessThan(1),
4416
+ // changed: (is, was) => {
4417
+ // return was?.start !== is?.start || was?.end !== is?.end
4418
+ // }
4419
+ // })
4420
+ //
4421
+ // this.virtualScrollSpacerSize$ = chain(this.virtualScrollRowRange$).map(range => {
4422
+ // const pixelOffset = this.rowHeight$.value * range.start;
4423
+ // return pixelOffset;
4424
+ // }, { dependsOn: this.rowHeight$})
4425
+ //
4426
+ // this.totalContentSize$ = chain(data$).count().map(rowCount => {
4427
+ // return this.rowHeight$.value * rowCount
4428
+ // }, {dependsOn: rowHeight$})
4429
+ //
4430
+ // chain(this.virtualScrollRowRange$).mapToList(range => {
4431
+ // return data$.value.slice(range.start, range.end);
4432
+ // }, {
4433
+ // dependsOn: data$
4434
+ // }).subscribe(visibleRows => {
4435
+ // console.log(visibleRows)
4436
+ // this.virtualRowsObservable$.next(visibleRows)
4437
+ // });
4438
+ //
4439
+ // when(this.virtualScrollSpacerSize$).changes(scrollTop => {
4440
+ // viewport.setRenderedContentOffset(scrollTop, "to-start");
4441
+ // }, {initialValue: "triggerChangeUnlessNil"});
4442
+ //
4443
+ // when(this.totalContentSize$).changes(totalSize => {
4444
+ // viewport.setTotalContentSize(totalSize);
4445
+ // }, {initialValue: "triggerChangeUnlessNil"});
4446
+ //
4447
+ //
4448
+ // this.showVirtualScrollOffset = (index: number, rowData: any): boolean => {
4449
+ // const haveScrolled = this.virtualScrollSpacerSize$.value > 0;
4450
+ // const firstRow = index === 0;
4451
+ // return index === 0 && haveScrolled
4452
+ // };
4453
+ //
4454
+ //
4455
+ //
4456
+ // }
4457
+ //
4458
+ //
4459
+ //
4460
+ // dispose(): void {
4461
+ // this.garbage.dispose();
4462
+ // }
4463
+ //
4464
+ // registerDisposable<T extends Disposable>(disposable: T): T {
4465
+ // return this.garbage.registerDisposable(disposable);
4466
+ // }
4467
+ //
4468
+ //
4469
+ // connect(collectionViewer: CollectionViewer): Observable<readonly Row[]> {
4470
+ // return this.virtualRowsObservable$;
4471
+ // }
4472
+ //
4473
+ // disconnect(collectionViewer: CollectionViewer): void {
4474
+ // // noop
4475
+ // }
4476
+ //
4477
+ //
4478
+ // }
4479
+ const AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER = new InjectionToken("AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER");
4351
4480
  class TableBodyComponent extends ResizeAwareComponent {
4481
+ bufferMultiplier;
4352
4482
  #data$_accessor_storage = proxify((ListModel));
4353
4483
  get data$() { return this.#data$_accessor_storage; }
4354
4484
  set data$(value) { this.#data$_accessor_storage = value; }
@@ -4361,44 +4491,52 @@ class TableBodyComponent extends ResizeAwareComponent {
4361
4491
  #showHeader_accessor_storage = true;
4362
4492
  get showHeader() { return this.#showHeader_accessor_storage; }
4363
4493
  set showHeader(value) { this.#showHeader_accessor_storage = value; }
4364
- visibleRowCount = new EventEmitter();
4365
4494
  trackBy;
4366
- /**
4367
- * Set to true to enable scrolling. Once enabled the table will have 0 implicit height. You will either
4368
- * need to set it explicitly e.g. height: 400px; or by using flex or grid layout to make it fill it's
4369
- * containment area.
4370
- */
4371
- enableScrolling = false;
4495
+ #scrollMode$_accessor_storage = proxify((ValueModel));
4496
+ get scrollMode$() { return this.#scrollMode$_accessor_storage; }
4497
+ set scrollMode$(value) { this.#scrollMode$_accessor_storage = value; }
4498
+ #scrollMode_accessor_storage = "none";
4499
+ get scrollMode() { return this.#scrollMode_accessor_storage; }
4500
+ set scrollMode(value) { this.#scrollMode_accessor_storage = value; }
4372
4501
  columns$;
4373
4502
  columnIds$;
4374
4503
  columnsById$;
4375
- _visibleRowCount$;
4376
4504
  // TODO: support user defined header and row heights via css vars.
4377
4505
  headerHeight$ = new MutableValueModel(29);
4378
4506
  rowHeight$ = new MutableValueModel(40);
4379
4507
  baseCssClass = "aup-table-component";
4380
- constructor() {
4508
+ virtualScrollDataSource = new TableVirtualScrollDataSource();
4509
+ constructor(bufferMultiplier = 1) {
4381
4510
  super();
4382
- const { chain, when } = Dsl.disposeWith(this);
4511
+ this.bufferMultiplier = bufferMultiplier;
4512
+ const { chain, when, observe } = Dsl.disposeWith(this);
4383
4513
  const actualHeaderHeight$ = chain(this.showHeader$).map(show => {
4384
4514
  return show ? this.headerHeight$.value : 0;
4385
4515
  }, { dependsOn: this.headerHeight$ });
4386
- this._visibleRowCount$ = chain(this.bounds$).map(bounds => {
4387
- // TODO: this doesn't take into account any css styling adjustments etc. Will investigate if it's an issue.
4388
- const rawRowCount = (bounds.height - actualHeaderHeight$.value) / this.rowHeight$.value;
4389
- return rawRowCount < 1 ? 0 : Math.floor(rawRowCount);
4390
- }, {
4391
- dependsOn: [actualHeaderHeight$, this.rowHeight$],
4392
- postponeWhile: chain(this.bounds$).pluckNumeric("height").isLessThan(1)
4516
+ // const visibleRowCount$ = chain(this.bounds$).map(bounds => {
4517
+ // // TODO: this doesn't take into account any css styling adjustments etc. Will investigate if it's an issue.
4518
+ // const rawRowCount = (bounds.height - actualHeaderHeight$.value) / this.rowHeight$.value;
4519
+ // return rawRowCount < 1 ? 0 : Math.floor(rawRowCount);
4520
+ // }, {
4521
+ // dependsOn: [actualHeaderHeight$, this.rowHeight$],
4522
+ // postponeWhile: chain(this.bounds$).pluckNumeric("height").isLessThan(1)
4523
+ // });
4524
+ //
4525
+ // // const pageSize$ = chain(visibleRowCount$)
4526
+ // // .map(count => 2 * count).otherwise(0)
4527
+ // const pageSize$ = ValueModel.constant(12)
4528
+ when(this.data$).changes(is => {
4529
+ this.virtualScrollDataSource.data = is;
4393
4530
  });
4394
- when(this._visibleRowCount$).changes(visibleRows => {
4395
- this.visibleRowCount.emit(visibleRows);
4396
- }, { initialValue: "triggerChangeUnlessNil" });
4397
4531
  this.onInit(() => {
4398
4532
  this.columns$ = chain(this.tableModel.columns);
4399
4533
  this.columnIds$ = chain(this.columns$).pluck("columnId");
4400
4534
  this.columnsById$ = chain(this.columns$).indexBy('columnId');
4401
4535
  });
4536
+ const txo = new TransactionObserver({ verbose: false }).onEvent(e => console.log(e.name, e.payload));
4537
+ // txo.observe('this.virtualScrollRowRange$', this.virtualScrollRowRange$);
4538
+ // txo.observe('this.virtualScrollSpacerSize$', this.virtualScrollSpacerSize$);
4539
+ // txo.observe('this.virtualRows$', this.virtualRows$);
4402
4540
  }
4403
4541
  get hideHeader() {
4404
4542
  return !this.showHeader;
@@ -4427,8 +4565,8 @@ class TableBodyComponent extends ResizeAwareComponent {
4427
4565
  }
4428
4566
  return classes;
4429
4567
  }
4430
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4431
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableBodyComponent, selector: "aup-table-body", inputs: { data$: "data$", tableModel: "tableModel", showHeader$: "showHeader$", showHeader: "showHeader", trackBy: "trackBy", enableScrolling: "enableScrolling" }, outputs: { visibleRowCount: "visibleRowCount" }, host: { properties: { "class.enable-scrolling": "this.enableScrolling", "class": "this.baseCssClass", "class.hide-header": "this.hideHeader" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"tableModel\"\n [editSession]=\"tableModel.getEditSessionFor(row)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host.enable-scrolling{min-height:0}:host.enable-scrolling .scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2$6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$6.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2$6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: TableCellComponent, selector: "aup-table-cell", inputs: ["row", "column", "editSession", "tableModel"] }, { kind: "component", type: TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: ["column"] }] });
4568
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableBodyComponent, deps: [{ token: AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
4569
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableBodyComponent, selector: "aup-table-body", inputs: { data$: "data$", tableModel: "tableModel", showHeader$: "showHeader$", showHeader: "showHeader", trackBy: "trackBy", scrollMode$: "scrollMode$", scrollMode: "scrollMode" }, host: { properties: { "attr.scrollMode": "this.scrollMode", "class": "this.baseCssClass", "class.hide-header": "this.hideHeader" } }, usesInheritance: true, ngImport: i0, template: "\n<div class=\"classic-scroll-container\" *ngIf=\"scrollMode$.value !== 'virtual'\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\" [multiTemplateDataRows]>\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n<cdk-virtual-scroll-viewport *ngIf=\"scrollMode$.value === 'virtual'\"\n [tvsItemSize]=\"rowHeight$.value\" [headerHeight]=\"headerHeight$.value\" [bufferMultiplier]=\"bufferMultiplier\">\n <table mat-table [dataSource]=\"virtualScrollDataSource\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</cdk-virtual-scroll-viewport>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host[scrollMode=virtual] cdk-virtual-scroll-viewport{flex:1}:host[scrollMode=classic]{min-height:0}:host[scrollMode=classic] .classic-scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$6.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2$6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i1$2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i4$5.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "component", type: TableCellComponent, selector: "aup-table-cell", inputs: ["row", "column", "editSession", "tableModel"] }, { kind: "component", type: TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: ["column"] }] });
4432
4570
  }
4433
4571
  __decorate([
4434
4572
  Proxify(),
@@ -4446,10 +4584,23 @@ __decorate([
4446
4584
  StoreInValueModel(),
4447
4585
  __metadata("design:type", Object)
4448
4586
  ], TableBodyComponent.prototype, "showHeader", null);
4587
+ __decorate([
4588
+ Proxify(),
4589
+ __metadata("design:type", ValueModel)
4590
+ ], TableBodyComponent.prototype, "scrollMode$", null);
4591
+ __decorate([
4592
+ StoreInValueModel(),
4593
+ __metadata("design:type", String)
4594
+ ], TableBodyComponent.prototype, "scrollMode", null);
4449
4595
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableBodyComponent, decorators: [{
4450
4596
  type: Component,
4451
- args: [{ selector: "aup-table-body", template: "<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"tableModel\"\n [editSession]=\"tableModel.getEditSessionFor(row)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host.enable-scrolling{min-height:0}:host.enable-scrolling .scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"] }]
4452
- }], ctorParameters: function () { return []; }, propDecorators: { data$: [{
4597
+ args: [{ selector: "aup-table-body", template: "\n<div class=\"classic-scroll-container\" *ngIf=\"scrollMode$.value !== 'virtual'\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\" [multiTemplateDataRows]>\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n<cdk-virtual-scroll-viewport *ngIf=\"scrollMode$.value === 'virtual'\"\n [tvsItemSize]=\"rowHeight$.value\" [headerHeight]=\"headerHeight$.value\" [bufferMultiplier]=\"bufferMultiplier\">\n <table mat-table [dataSource]=\"virtualScrollDataSource\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</cdk-virtual-scroll-viewport>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host[scrollMode=virtual] cdk-virtual-scroll-viewport{flex:1}:host[scrollMode=classic]{min-height:0}:host[scrollMode=classic] .classic-scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"] }]
4598
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
4599
+ type: Inject,
4600
+ args: [AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER]
4601
+ }, {
4602
+ type: Optional
4603
+ }] }]; }, propDecorators: { data$: [{
4453
4604
  type: Input
4454
4605
  }], tableModel: [{
4455
4606
  type: Input
@@ -4457,15 +4608,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
4457
4608
  type: Input
4458
4609
  }], showHeader: [{
4459
4610
  type: Input
4460
- }], visibleRowCount: [{
4461
- type: Output
4462
4611
  }], trackBy: [{
4463
4612
  type: Input
4464
- }], enableScrolling: [{
4613
+ }], scrollMode$: [{
4614
+ type: Input
4615
+ }], scrollMode: [{
4465
4616
  type: Input
4466
4617
  }, {
4467
4618
  type: HostBinding,
4468
- args: ["class.enable-scrolling"]
4619
+ args: ["attr.scrollMode"]
4469
4620
  }], baseCssClass: [{
4470
4621
  type: HostBinding,
4471
4622
  args: ["class"]
@@ -4801,28 +4952,13 @@ class TableComponent extends AbstractTableComponent {
4801
4952
  #filterModel_accessor_storage = proxify((TableFilterModel));
4802
4953
  get filterModel() { return this.#filterModel_accessor_storage; }
4803
4954
  set filterModel(value) { this.#filterModel_accessor_storage = value; }
4804
- #enablePaging$_accessor_storage = proxify((ValueModel));
4805
- get enablePaging$() { return this.#enablePaging$_accessor_storage; }
4806
- set enablePaging$(value) { this.#enablePaging$_accessor_storage = value; }
4807
- #enablePaging_accessor_storage = false;
4808
- get enablePaging() { return this.#enablePaging_accessor_storage; }
4809
- set enablePaging(value) { this.#enablePaging_accessor_storage = value; }
4810
- // enablePaging() {
4811
- // if (isNil(this.pageController)) {
4812
- // const pagedListModel = this.registerDisposable(PagedListModel.create(this._visibleRows$.getDelegate(), this._pageSize));
4813
- // this._visibleRows$.setDelegate(pagedListModel);
4814
- // this._pageController = pagedListModel.pageController;
4815
- // }
4816
- // }
4817
4955
  _footerContentAdded = false;
4818
4956
  _filteredRows$ = this.registerDisposable(new DelegatingListModel());
4819
- _pageSize = new MutableValueModel();
4820
- pagedListModel;
4957
+ scrollMode$;
4821
4958
  constructor(injector) {
4822
4959
  super(injector);
4823
- const { when } = Dsl.disposeWith(this);
4824
- this.onDispose(() => this.disposeOfPagedListModel());
4825
- when(this.enablePaging$).changes(enabled => this.configurePaging(enabled));
4960
+ const { chain, when } = Dsl.disposeWith(this);
4961
+ this.scrollMode$ = chain(this.enableScrolling$).map(enabled => enabled ? "virtual" : "none");
4826
4962
  }
4827
4963
  ngOnInit() {
4828
4964
  super.ngOnInit();
@@ -4834,76 +4970,37 @@ class TableComponent extends AbstractTableComponent {
4834
4970
  else {
4835
4971
  this._filteredRows$.setDelegate(this._dataSource$);
4836
4972
  }
4837
- this.configurePaging(this.enablePaging$.value);
4838
4973
  this.tableModel.bindToTable(this._filteredRows$, this._visibleRows$);
4839
4974
  }
4840
4975
  getModel() {
4841
4976
  return this.tableModel;
4842
4977
  }
4843
- get pageController() {
4844
- // TODO: need to support external page controllers if the paging occurs to our primary data source.
4845
- return this.pagedListModel.pageController;
4846
- }
4847
- configurePaging(enable) {
4848
- if (enable) {
4849
- if (!this.pagedListModel) {
4850
- this.pagedListModel = PagedListModel.create(this._filteredRows$, this._pageSize);
4851
- }
4852
- this._visibleRows$.setDelegate(this.pagedListModel);
4853
- }
4854
- else {
4855
- this.disposeOfPagedListModel();
4856
- this._visibleRows$.setDelegate(this._filteredRows$);
4857
- }
4858
- }
4859
- disposeOfPagedListModel() {
4860
- if (this.pagedListModel) {
4861
- this.pagedListModel.dispose();
4862
- this.pagedListModel = null;
4863
- }
4864
- }
4865
4978
  footerContentChanged($event) {
4866
4979
  // console.log($event);
4867
4980
  this._footerContentAdded = true;
4868
4981
  }
4869
- //@Trace()
4870
- updatePageSize(count) {
4871
- this._pageSize.value = count;
4872
- }
4873
4982
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
4874
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableComponent, selector: "aup-table", inputs: { tableModel: "tableModel", filterModel: "filterModel", enablePaging$: "enablePaging$", enablePaging: "enablePaging" }, providers: [
4983
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableComponent, selector: "aup-table", inputs: { tableModel: "tableModel", filterModel: "filterModel" }, providers: [
4875
4984
  { provide: AbstractTableComponent, useExisting: TableComponent }
4876
- ], usesInheritance: true, ngImport: i0, template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"tableModel\"\n [showHeader$]=\"showHeader$\"\n [enableScrolling]=\"enableScrolling\"\n [trackBy]=\"trackBy\"\n (visibleRowCount)=\"updatePageSize($event)\"\n [aupHighlightTextModel]=\"highlightText$\"\n></aup-table-body>\n<section class=\"table-footer\">\n <div class=\"footer-content\"><ng-content select=\"[footer]\"></ng-content></div>\n <aup-paginator *ngIf=\"enablePaging$.value\" [pageController]=\"pageController\"></aup-paginator>\n</section>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}aup-table-body{flex:1}.table-footer{display:flex;flex-direction:row;align-items:center}.table-footer .footer-content{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: HighlightTextModelDirective, selector: "[aupHighlightTextModel]", inputs: ["aupHighlightTextModel"] }, { kind: "component", type: PaginatorComponent, selector: "aup-paginator", inputs: ["pageController"] }, { kind: "component", type: TableBodyComponent, selector: "aup-table-body", inputs: ["data$", "tableModel", "showHeader$", "showHeader", "trackBy", "enableScrolling"], outputs: ["visibleRowCount"] }] });
4985
+ ], usesInheritance: true, ngImport: i0, template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"tableModel\"\n [showHeader$]=\"showHeader$\"\n [scrollMode$]=\"scrollMode$\"\n [trackBy]=\"trackBy\"\n [aupHighlightTextModel]=\"highlightText$\"\n></aup-table-body>\n<section class=\"table-footer\">\n <div class=\"footer-content\"><ng-content select=\"[footer]\"></ng-content></div>\n</section>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}aup-table-body{flex:1}.table-footer{display:flex;flex-direction:row;align-items:center}.table-footer .footer-content{flex:1}\n"], dependencies: [{ kind: "directive", type: HighlightTextModelDirective, selector: "[aupHighlightTextModel]", inputs: ["aupHighlightTextModel"] }, { kind: "component", type: TableBodyComponent, selector: "aup-table-body", inputs: ["data$", "tableModel", "showHeader$", "showHeader", "trackBy", "scrollMode$", "scrollMode"] }] });
4877
4986
  }
4878
4987
  __decorate([
4879
4988
  Proxify(),
4880
- __metadata("design:type", Object)
4989
+ __metadata("design:type", TableModel)
4881
4990
  ], TableComponent.prototype, "tableModel", null);
4882
4991
  __decorate([
4883
4992
  Proxify(),
4884
4993
  __metadata("design:type", Object)
4885
4994
  ], TableComponent.prototype, "filterModel", null);
4886
- __decorate([
4887
- Proxify(),
4888
- __metadata("design:type", Object)
4889
- ], TableComponent.prototype, "enablePaging$", null);
4890
- __decorate([
4891
- StoreInValueModel(),
4892
- __metadata("design:type", Object)
4893
- ], TableComponent.prototype, "enablePaging", null);
4894
4995
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableComponent, decorators: [{
4895
4996
  type: Component,
4896
4997
  args: [{ selector: 'aup-table', providers: [
4897
4998
  { provide: AbstractTableComponent, useExisting: TableComponent }
4898
- ], template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"tableModel\"\n [showHeader$]=\"showHeader$\"\n [enableScrolling]=\"enableScrolling\"\n [trackBy]=\"trackBy\"\n (visibleRowCount)=\"updatePageSize($event)\"\n [aupHighlightTextModel]=\"highlightText$\"\n></aup-table-body>\n<section class=\"table-footer\">\n <div class=\"footer-content\"><ng-content select=\"[footer]\"></ng-content></div>\n <aup-paginator *ngIf=\"enablePaging$.value\" [pageController]=\"pageController\"></aup-paginator>\n</section>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}aup-table-body{flex:1}.table-footer{display:flex;flex-direction:row;align-items:center}.table-footer .footer-content{flex:1}\n"] }]
4999
+ ], template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"tableModel\"\n [showHeader$]=\"showHeader$\"\n [scrollMode$]=\"scrollMode$\"\n [trackBy]=\"trackBy\"\n [aupHighlightTextModel]=\"highlightText$\"\n></aup-table-body>\n<section class=\"table-footer\">\n <div class=\"footer-content\"><ng-content select=\"[footer]\"></ng-content></div>\n</section>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}aup-table-body{flex:1}.table-footer{display:flex;flex-direction:row;align-items:center}.table-footer .footer-content{flex:1}\n"] }]
4899
5000
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { tableModel: [{
4900
5001
  type: Input
4901
5002
  }], filterModel: [{
4902
5003
  type: Input
4903
- }], enablePaging$: [{
4904
- type: Input
4905
- }], enablePaging: [{
4906
- type: Input
4907
5004
  }] } });
4908
5005
 
4909
5006
  const SVG_HEIGHT = 60;
@@ -5543,8 +5640,11 @@ class TreeTableComponent extends AbstractTableComponent {
5543
5640
  #expansionModel_accessor_storage = proxify((TreeExpansionModel));
5544
5641
  get expansionModel() { return this.#expansionModel_accessor_storage; }
5545
5642
  set expansionModel(value) { this.#expansionModel_accessor_storage = value; }
5643
+ scrollMode$;
5546
5644
  constructor(injector) {
5547
5645
  super(injector);
5646
+ const { chain } = Dsl.disposeWith(this);
5647
+ this.scrollMode$ = chain(this.enableScrolling$).map(enabled => enabled ? "virtual" : "none");
5548
5648
  }
5549
5649
  ngOnInit() {
5550
5650
  super.ngOnInit();
@@ -5564,7 +5664,7 @@ class TreeTableComponent extends AbstractTableComponent {
5564
5664
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TreeTableComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
5565
5665
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TreeTableComponent, selector: "aup-tree-table", inputs: { treeTableModel: "treeTableModel", expansionModel: "expansionModel" }, providers: [
5566
5666
  { provide: AbstractTableComponent, useExisting: TreeTableComponent }
5567
- ], usesInheritance: true, ngImport: i0, template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"treeTableModel\"\n [showHeader$]=\"showHeader$\"\n [enableScrolling]=\"enableScrolling\"\n [aupHighlightTextModel]=\"highlightText$\"\n [trackBy]=\"trackBy\"\n></aup-table-body>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host::ng-deep td.mat-mdc-cell{border-top-width:0!important;border-bottom-width:0!important}:host::ng-deep td.mat-column-tree-label{width:1px}:host::ng-deep aup-table-cell-renderer[column-id=tree-label]{padding-left:8px!important}:host::ng-deep aup-tree-label-cell-renderer{flex:1}aup-table-body{flex:1}\n"], dependencies: [{ kind: "directive", type: HighlightTextModelDirective, selector: "[aupHighlightTextModel]", inputs: ["aupHighlightTextModel"] }, { kind: "component", type: TableBodyComponent, selector: "aup-table-body", inputs: ["data$", "tableModel", "showHeader$", "showHeader", "trackBy", "enableScrolling"], outputs: ["visibleRowCount"] }] });
5667
+ ], usesInheritance: true, ngImport: i0, template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"treeTableModel\"\n [showHeader$]=\"showHeader$\"\n [scrollMode$]=\"scrollMode$\"\n [aupHighlightTextModel]=\"highlightText$\"\n [trackBy]=\"trackBy\"\n></aup-table-body>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host::ng-deep td.mat-mdc-cell{border-top-width:0!important;border-bottom-width:0!important}:host::ng-deep td.mat-column-tree-label{width:1px}:host::ng-deep aup-table-cell-renderer[column-id=tree-label]{padding-left:8px!important}:host::ng-deep aup-tree-label-cell-renderer{flex:1}aup-table-body{flex:1}\n"], dependencies: [{ kind: "directive", type: HighlightTextModelDirective, selector: "[aupHighlightTextModel]", inputs: ["aupHighlightTextModel"] }, { kind: "component", type: TableBodyComponent, selector: "aup-table-body", inputs: ["data$", "tableModel", "showHeader$", "showHeader", "trackBy", "scrollMode$", "scrollMode"] }] });
5568
5668
  }
5569
5669
  __decorate([
5570
5670
  Proxify(),
@@ -5578,7 +5678,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
5578
5678
  type: Component,
5579
5679
  args: [{ selector: 'aup-tree-table', providers: [
5580
5680
  { provide: AbstractTableComponent, useExisting: TreeTableComponent }
5581
- ], template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"treeTableModel\"\n [showHeader$]=\"showHeader$\"\n [enableScrolling]=\"enableScrolling\"\n [aupHighlightTextModel]=\"highlightText$\"\n [trackBy]=\"trackBy\"\n></aup-table-body>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host::ng-deep td.mat-mdc-cell{border-top-width:0!important;border-bottom-width:0!important}:host::ng-deep td.mat-column-tree-label{width:1px}:host::ng-deep aup-table-cell-renderer[column-id=tree-label]{padding-left:8px!important}:host::ng-deep aup-tree-label-cell-renderer{flex:1}aup-table-body{flex:1}\n"] }]
5681
+ ], template: "<aup-table-body [data$]=\"visibleRows$\"\n [tableModel]=\"treeTableModel\"\n [showHeader$]=\"showHeader$\"\n [scrollMode$]=\"scrollMode$\"\n [aupHighlightTextModel]=\"highlightText$\"\n [trackBy]=\"trackBy\"\n></aup-table-body>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host::ng-deep td.mat-mdc-cell{border-top-width:0!important;border-bottom-width:0!important}:host::ng-deep td.mat-column-tree-label{width:1px}:host::ng-deep aup-table-cell-renderer[column-id=tree-label]{padding-left:8px!important}:host::ng-deep aup-tree-label-cell-renderer{flex:1}aup-table-body{flex:1}\n"] }]
5582
5682
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { treeTableModel: [{
5583
5683
  type: Input
5584
5684
  }], expansionModel: [{
@@ -5814,7 +5914,8 @@ class ComponentsModule {
5814
5914
  MatDividerModule,
5815
5915
  MatProgressSpinnerModule,
5816
5916
  MatProgressBarModule,
5817
- ScrollingModule], exports: [NumberInputComponent,
5917
+ ScrollingModule,
5918
+ TableVirtualScrollModule], exports: [NumberInputComponent,
5818
5919
  StringInputComponent,
5819
5920
  TextInputComponent,
5820
5921
  PasswordInputComponent,
@@ -5877,7 +5978,8 @@ class ComponentsModule {
5877
5978
  MatDividerModule,
5878
5979
  MatProgressSpinnerModule,
5879
5980
  MatProgressBarModule,
5880
- ScrollingModule] });
5981
+ ScrollingModule,
5982
+ TableVirtualScrollModule] });
5881
5983
  }
5882
5984
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ComponentsModule, decorators: [{
5883
5985
  type: NgModule,
@@ -5903,7 +6005,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
5903
6005
  MatDividerModule,
5904
6006
  MatProgressSpinnerModule,
5905
6007
  MatProgressBarModule,
5906
- ScrollingModule
6008
+ ScrollingModule,
6009
+ TableVirtualScrollModule
5907
6010
  ],
5908
6011
  declarations: [
5909
6012
  AbstractInputComponent,
@@ -6150,7 +6253,7 @@ class ActivityActionsComponent extends DisposableComponent {
6150
6253
  this.cancelCommandComponent.requestFocus();
6151
6254
  }
6152
6255
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityActionsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
6153
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: { confirmCommand: "confirmCommand", cancelCommand: "cancelCommand", faces: "faces", confirmFace: "confirmFace", cancelFace: "cancelFace", style: "style", layout: "layout", align: "align" }, host: { properties: { "attr.layout": "this.layout", "attr.align": "this.align" } }, viewQueries: [{ propertyName: "confirmCommandComponent", first: true, predicate: ["confirmCommandComponent"], descendants: true }, { propertyName: "cancelCommandComponent", first: true, predicate: ["cancelCommandComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command #confirmCommandComponent class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command #cancelCommandComponent class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n", styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end;--resolved-activity-actions-gap: var(--activity-actions-gap, 8px)}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=start] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=end] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr}:host[layout=inline] .cancel{margin-left:var(--resolved-activity-actions-gap)}.cancel{grid-area:cancel}.confirm{grid-area:confirm}.content{grid-area:content;text-align:left}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }] });
6256
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: ActivityActionsComponent, selector: "aup-activity-actions", inputs: { confirmCommand: "confirmCommand", cancelCommand: "cancelCommand", faces: "faces", confirmFace: "confirmFace", cancelFace: "cancelFace", style: "style", layout: "layout", align: "align" }, host: { properties: { "attr.layout": "this.layout", "attr.align": "this.align" } }, viewQueries: [{ propertyName: "confirmCommandComponent", first: true, predicate: ["confirmCommandComponent"], descendants: true }, { propertyName: "cancelCommandComponent", first: true, predicate: ["cancelCommandComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command #cancelCommandComponent class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command #confirmCommandComponent class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n", styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end;--resolved-activity-actions-gap: var(--activity-actions-gap, 8px)}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=start] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=end] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr}:host[layout=inline] .cancel{margin-left:var(--resolved-activity-actions-gap)}.cancel{grid-area:cancel}.confirm{grid-area:confirm}.content{grid-area:content;text-align:left}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CommandComponent, selector: "aup-command", inputs: ["command", "face$", "face", "busyFace$", "busyFace", "alignFace"] }] });
6154
6257
  }
6155
6258
  __decorate([
6156
6259
  Proxify(),
@@ -6162,7 +6265,7 @@ __decorate([
6162
6265
  ], ActivityActionsComponent.prototype, "cancelCommand", null);
6163
6266
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: ActivityActionsComponent, decorators: [{
6164
6267
  type: Component,
6165
- args: [{ selector: 'aup-activity-actions', template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command #confirmCommandComponent class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command #cancelCommandComponent class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n", styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end;--resolved-activity-actions-gap: var(--activity-actions-gap, 8px)}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=start] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=end] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr}:host[layout=inline] .cancel{margin-left:var(--resolved-activity-actions-gap)}.cancel{grid-area:cancel}.confirm{grid-area:confirm}.content{grid-area:content;text-align:left}\n"] }]
6268
+ args: [{ selector: 'aup-activity-actions', template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command #cancelCommandComponent class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command #confirmCommandComponent class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n", styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end;--resolved-activity-actions-gap: var(--activity-actions-gap, 8px)}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=start] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=end] .confirm{margin-left:var(--resolved-activity-actions-gap)}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr}:host[layout=inline] .cancel{margin-left:var(--resolved-activity-actions-gap)}.cancel{grid-area:cancel}.confirm{grid-area:confirm}.content{grid-area:content;text-align:left}\n"] }]
6166
6269
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { confirmCommandComponent: [{
6167
6270
  type: ViewChild,
6168
6271
  args: ["confirmCommandComponent"]
@@ -11987,5 +12090,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
11987
12090
  * Generated bundle index. Do not edit.
11988
12091
  */
11989
12092
 
11990
- export { ACTIVITY_DATA, ALERT_CONFIG, AUP_PLACE_CONFIG, AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT, AbstractActivityTriggerComponent, AbstractCardContainerComponent, AbstractConfirmDialogComponent, AbstractDialogComponent, AbstractInputComponent, AbstractInteractionContext, AbstractListInputComponent, AbstractPlaceNavigationComponent, AbstractPopStateNavigation, AbstractPopupMenuComponent, AbstractTableComponent, AbstractTableModel, AbstractValueInputComponent, Activity, ActivityActionsComponent, ActivityBodyComponent, ActivityContainerComponent, ActivityOutletComponent, ActivityRef, ActivityTitleComponent, AddCardActivityComponent, AddItemInteractionContextComponent, Alert, AlertDialogComponent, AngularUiPowerupsModule, AutocompleteInputComponent, Bounds, BusyOverlayComponent, CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL, CardContainerComponent, CellEditorPortalRef, CellHeaderPortalRef, CellPortalRef, CellRendererPortalRef, CheckboxInputComponent, ColumnManager, ColumnModel, ColumnOrderManager, ColumnTemplateDirective, ColumnTextSearchFormatter, CommandComponent, CommandContainer, CommandDirective, CommandFace, CommandFaceComponent, ComponentCellRendererPortalRef, ComponentsModule, ConfirmThenDialogComponent, ConfirmThenExecuteDialogComponent, ConfirmationDialogComponent, ConsolidatedParameterMap, CustomTemplateColumnModel, CustomValueColumnModel, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DecoratedTreeNode, DefaultCellRendererComponent, DefaultHeaderCellRendererComponent, DialogInteractionContext, DialogInteractionContextFactory, Dimension, DirectivesModule, DisposableComponent, EditRowControlsComponent, EditSession, EditorControlColumnModel, EmptyStateComponent, EnableCellTextSearch, EventCleanUpSession, FlattenedTreeListModel, FlexComponent, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, Formatter, GarbageCollectorDirective, HEADER_CELL_RENDERER_PORTAL, HighlightPipe, HighlightTextModelDirective, HorizontalAlignment, IconComponent, InPlaceInteractionContextComponent, InlineActivityTriggerComponent, InlineEditorModel, InlineStringEditorComponent, InputActivity, InteractionContextTriggerForDirective, InteractionModule, InteractionService, InteractionServiceRoutingAdapter, Keys, LEFT_RIGHT_PLACE_ANIMATION, LabelledValueComponent, ListPlaceNavComponent, ListPropertyColumnModel, LoadableComponent, LoadingContainerComponent, MarkdownComponent, MarkdownService, ModalActivityTriggerComponent, ModalInteractionContextFactory, MoreMenuComponent, MultipleSelectInputComponent, Navigating, NavigatingDuringInteraction, NavigationContext, NavigationSession, NoopAuthGuard, NoopComponent, NotAuthorisedNoticeComponent, NumberInputComponent, POPUP_CONTAINER, PORTAL_EDITOR_COMPONENT, PORTAL_RENDERER_COMPONENT, PaginatorComponent, ParameterDefinition, PasswordInputComponent, Place, PlaceAccessGuard, PlaceAuthService, PlaceComponent, PlaceComponentDeactivationHandler, PlaceDefinition, PlaceGuard, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, PopStateDuringInteractionNavigation, PopStateNavigation, PopupActivityTriggerComponent, PopupAwareComponent, PopupInteractionContextComponent, PopupMenuComponent, PopupMenuRendererComponent, PropertyColumnModel, ROUTE_PARAMETER_LIST_KEY, RemoveLastInteractionFromUrlNavigationSession, ResizeAwareComponent, ResizeObserverDirective, RouteId, ScrollContainerComponent, SearchInputComponent, SectionHeaderComponent, SelectInputActivity, SelectInputComponent, SelectionCellComponent, SelectionColumnModel, SelectionHeaderCellComponent, SeparatorComponent, SidePlaceNavigationComponent, StringInputActivity, StringInputComponent, SwitchCaseComponent, SwitchCaseDefaultDirective, SwitchCaseOption, SwitchCaseWhenDirective, SynchroniseInteractionContextIdsWithRoute, TabbedPlaceNavigationComponent, TableBodyComponent, TableCellComponent, TableComponent, TableFilterModel, TableHeaderCellComponent, TableModel, TableMoreMenuComponent, TableMoreMenuPopupComponent, TableRowMenuComponent, TemplateCellRendererPortalRef, TextInputComponent, TextSearchContext, ToolBarComponent, Track, TreeExpansionModel, TreeInheritanceIconComponent, TreeLabelCellRendererComponent, TreeLabelColumnModel, TreeTableComponent, TreeTableModel, UrlService, UrlSnapshot, VerticalFocusContainerComponent, VisibilityService, Visit, VisitParameter, VisitParameterList, VisitSegment, VisitSegmentSanitiser, WaitUntilLeavingInteractionTransitionCancelled, WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined, WaitUntilPopStateDuringCanDeactivateInteractionFinishes, leftRightPlaceAnimation, markdownPillExtension, slideDownAndRightOnEnterAnimation, slideDownOnEnterAnimation, slideRightOnEnterAnimation, treeNodeDecorator };
12093
+ export { ACTIVITY_DATA, ALERT_CONFIG, AUP_PLACE_CONFIG, AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER, AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT, AbstractActivityTriggerComponent, AbstractCardContainerComponent, AbstractConfirmDialogComponent, AbstractDialogComponent, AbstractInputComponent, AbstractInteractionContext, AbstractListInputComponent, AbstractPlaceNavigationComponent, AbstractPopStateNavigation, AbstractPopupMenuComponent, AbstractTableComponent, AbstractTableModel, AbstractValueInputComponent, Activity, ActivityActionsComponent, ActivityBodyComponent, ActivityContainerComponent, ActivityOutletComponent, ActivityRef, ActivityTitleComponent, AddCardActivityComponent, AddItemInteractionContextComponent, Alert, AlertDialogComponent, AngularUiPowerupsModule, AutocompleteInputComponent, Bounds, BusyOverlayComponent, CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL, CardContainerComponent, CellEditorPortalRef, CellHeaderPortalRef, CellPortalRef, CellRendererPortalRef, CheckboxInputComponent, ColumnManager, ColumnModel, ColumnOrderManager, ColumnTemplateDirective, ColumnTextSearchFormatter, CommandComponent, CommandContainer, CommandDirective, CommandFace, CommandFaceComponent, ComponentCellRendererPortalRef, ComponentsModule, ConfirmThenDialogComponent, ConfirmThenExecuteDialogComponent, ConfirmationDialogComponent, ConsolidatedParameterMap, CustomTemplateColumnModel, CustomValueColumnModel, DEFINITION_META_DATA_KEY, DIALOG_INTERACTION_SERVICE_DEFAULTS, DecoratedTreeNode, DefaultCellRendererComponent, DefaultHeaderCellRendererComponent, DialogInteractionContext, DialogInteractionContextFactory, Dimension, DirectivesModule, DisposableComponent, EditRowControlsComponent, EditSession, EditorControlColumnModel, EmptyStateComponent, EnableCellTextSearch, EventCleanUpSession, FlattenedTreeListModel, FlexComponent, FocusBinding, FocusBindingDirective, FocusBindingFactory, FocusContainerComponent, FocusableComponent, Formatter, GarbageCollectorDirective, HEADER_CELL_RENDERER_PORTAL, HighlightPipe, HighlightTextModelDirective, HorizontalAlignment, IconComponent, InPlaceInteractionContextComponent, InlineActivityTriggerComponent, InlineEditorModel, InlineStringEditorComponent, InputActivity, InteractionContextTriggerForDirective, InteractionModule, InteractionService, InteractionServiceRoutingAdapter, Keys, LEFT_RIGHT_PLACE_ANIMATION, LabelledValueComponent, ListPlaceNavComponent, ListPropertyColumnModel, LoadableComponent, LoadingContainerComponent, MarkdownComponent, MarkdownService, ModalActivityTriggerComponent, ModalInteractionContextFactory, MoreMenuComponent, MultipleSelectInputComponent, Navigating, NavigatingDuringInteraction, NavigationContext, NavigationSession, NoopAuthGuard, NoopComponent, NotAuthorisedNoticeComponent, NumberInputComponent, POPUP_CONTAINER, PORTAL_EDITOR_COMPONENT, PORTAL_RENDERER_COMPONENT, PaginatorComponent, ParameterDefinition, PasswordInputComponent, Place, PlaceAccessGuard, PlaceAuthService, PlaceComponent, PlaceComponentDeactivationHandler, PlaceDefinition, PlaceGuard, PlaceHistory, PlaceModule, PlaceOutletComponent, PlaceRouter, Point, PopStateDuringInteractionNavigation, PopStateNavigation, PopupActivityTriggerComponent, PopupAwareComponent, PopupInteractionContextComponent, PopupMenuComponent, PopupMenuRendererComponent, PropertyColumnModel, ROUTE_PARAMETER_LIST_KEY, RemoveLastInteractionFromUrlNavigationSession, ResizeAwareComponent, ResizeObserverDirective, RouteId, ScrollContainerComponent, SearchInputComponent, SectionHeaderComponent, SelectInputActivity, SelectInputComponent, SelectionCellComponent, SelectionColumnModel, SelectionHeaderCellComponent, SeparatorComponent, SidePlaceNavigationComponent, StringInputActivity, StringInputComponent, SwitchCaseComponent, SwitchCaseDefaultDirective, SwitchCaseOption, SwitchCaseWhenDirective, SynchroniseInteractionContextIdsWithRoute, TabbedPlaceNavigationComponent, TableBodyComponent, TableCellComponent, TableComponent, TableFilterModel, TableHeaderCellComponent, TableModel, TableMoreMenuComponent, TableMoreMenuPopupComponent, TableRowMenuComponent, TemplateCellRendererPortalRef, TextInputComponent, TextSearchContext, ToolBarComponent, Track, TreeExpansionModel, TreeInheritanceIconComponent, TreeLabelCellRendererComponent, TreeLabelColumnModel, TreeTableComponent, TreeTableModel, UrlService, UrlSnapshot, VerticalFocusContainerComponent, VisibilityService, Visit, VisitParameter, VisitParameterList, VisitSegment, VisitSegmentSanitiser, WaitUntilLeavingInteractionTransitionCancelled, WaitUntilLinkTriggeredNavigationInteractionCancellationTypeDetermined, WaitUntilPopStateDuringCanDeactivateInteractionFinishes, leftRightPlaceAnimation, markdownPillExtension, slideDownAndRightOnEnterAnimation, slideDownOnEnterAnimation, slideRightOnEnterAnimation, treeNodeDecorator };
11991
12094
  //# sourceMappingURL=coolon-angular-ui-powerups.mjs.map