@elderbyte/ngx-starter 15.17.3 → 15.18.0

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.
Files changed (46) hide show
  1. package/esm2020/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +2 -2
  2. package/esm2020/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +6 -6
  3. package/esm2020/lib/components/data-view/master-detail/elder-detail.directive.mjs +8 -6
  4. package/esm2020/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +26 -11
  5. package/esm2020/lib/components/data-view/master-detail/elder-master-detail-activation-event.mjs +12 -0
  6. package/esm2020/lib/components/data-view/master-detail/elder-master-detail-provider.mjs +7 -7
  7. package/esm2020/lib/components/data-view/master-detail/elder-master-detail.component.mjs +8 -8
  8. package/esm2020/lib/components/data-view/master-detail/elder-master-detail.module.mjs +3 -2
  9. package/esm2020/lib/components/data-view/master-detail/elder-master-detail.service.mjs +73 -0
  10. package/esm2020/lib/components/data-view/table/activation/activation-event-source.mjs +7 -0
  11. package/esm2020/lib/components/data-view/table/activation/active-item-event.mjs +9 -0
  12. package/esm2020/lib/components/data-view/table/activation/elder-activation-context.mjs +2 -0
  13. package/esm2020/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +3 -3
  14. package/esm2020/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +27 -17
  15. package/esm2020/lib/components/data-view/table/activation/item-activation-options.mjs +7 -0
  16. package/esm2020/lib/components/data-view/table/activation/public_api.mjs +8 -0
  17. package/esm2020/lib/components/data-view/table/elder-table/elder-table.component.mjs +6 -3
  18. package/esm2020/lib/components/data-view/table/elder-table-row.directive.mjs +28 -15
  19. package/esm2020/lib/components/data-view/table/elder-table.module.mjs +6 -8
  20. package/fesm2015/elderbyte-ngx-starter.mjs +151 -82
  21. package/fesm2015/elderbyte-ngx-starter.mjs.map +1 -1
  22. package/fesm2020/elderbyte-ngx-starter.mjs +151 -82
  23. package/fesm2020/elderbyte-ngx-starter.mjs.map +1 -1
  24. package/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.d.ts +2 -2
  25. package/lib/components/data-view/master-detail/elder-detail.directive.d.ts +2 -2
  26. package/lib/components/data-view/master-detail/elder-master-activation.directive.d.ts +11 -4
  27. package/lib/components/data-view/master-detail/elder-master-detail-activation-event.d.ts +8 -0
  28. package/lib/components/data-view/master-detail/elder-master-detail-provider.d.ts +5 -5
  29. package/lib/components/data-view/master-detail/elder-master-detail.component.d.ts +2 -2
  30. package/lib/components/data-view/master-detail/elder-master-detail.module.d.ts +2 -1
  31. package/lib/components/data-view/master-detail/{master-detail.service.d.ts → elder-master-detail.service.d.ts} +8 -7
  32. package/lib/components/data-view/table/activation/activation-event-source.d.ts +5 -0
  33. package/lib/components/data-view/table/activation/active-item-event.d.ts +8 -0
  34. package/lib/components/data-view/table/activation/elder-activation-context.d.ts +7 -0
  35. package/lib/components/data-view/table/activation/elder-table-activation.directive.d.ts +10 -5
  36. package/lib/components/data-view/table/activation/item-activation-options.d.ts +6 -0
  37. package/lib/components/data-view/table/activation/public_api.d.ts +7 -0
  38. package/lib/components/data-view/table/elder-table/elder-table.component.d.ts +1 -0
  39. package/lib/components/data-view/table/elder-table-row.directive.d.ts +5 -5
  40. package/lib/components/data-view/table/elder-table.module.d.ts +5 -7
  41. package/package.json +1 -1
  42. package/src/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.scss +0 -3
  43. package/src/lib/components/data-view/table/elder-table/elder-table.component.scss +1 -1
  44. package/esm2020/lib/components/data-view/master-detail/master-detail.service.mjs +0 -70
  45. package/esm2020/lib/components/data-view/table/activation/elder-item-activator.mjs +0 -2
  46. package/lib/components/data-view/table/activation/elder-item-activator.d.ts +0 -3
@@ -13281,10 +13281,10 @@ class DataContextStateIndicatorComponent {
13281
13281
  }
13282
13282
  }
13283
13283
  DataContextStateIndicatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataContextStateIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13284
- DataContextStateIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DataContextStateIndicatorComponent, selector: "elder-data-context-state-indicator", inputs: { dataContext: "dataContext" }, ngImport: i0, template: "<ng-container *ngIf=\"dataContext$ | async as dataContext\">\n\n <ng-container *ngIf=\"dataContext else noDataContext\">\n\n <ng-container *ngIf=\"(dataContext.isStarted$ | async) else dataContextNotStarted\">\n\n <ng-container *ngIf=\"!(dataContext?.status | async)?.hasError else dataContextHasError\">\n\n <ng-container *ngIf=\"(dataContext?.data | async)?.length === 0\">\n <ng-template [ngTemplateOutlet]=\"dataContextNoData\"></ng-template>\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n</ng-container>\n\n<ng-template #noDataContext>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'warning', text: 'No data context'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #dataContextNotStarted>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'warning', text: 'Data context not started'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #dataContextHasError>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'warning', iconColor: 'warn', text: 'Error while loading data'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #dataContextNoData>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'info', text: 'No data available'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #indicator let-icon=\"icon\" let-iconColor=\"iconColor\" let-text=\"text\">\n\n <div class=\"layout-col place-center-center full elder-dc-indicator-container mat-body-2\">\n <div class=\"layout-row place-center-center gap-lg\">\n <mat-icon [color]=\"iconColor\">{{icon}}</mat-icon>\n <span class=\"hint mat-body-2\">{{text | translate}}</span>\n </div>\n </div>\n\n</ng-template>\n", styles: [".elder-dc-indicator-container{color:gray;padding-top:96px;padding-bottom:96px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13284
+ DataContextStateIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DataContextStateIndicatorComponent, selector: "elder-data-context-state-indicator", inputs: { dataContext: "dataContext" }, ngImport: i0, template: "<ng-container *ngIf=\"dataContext$ | async as dataContext\">\n\n <ng-container *ngIf=\"dataContext else noDataContext\">\n\n <ng-container *ngIf=\"(dataContext.isStarted$ | async) else dataContextNotStarted\">\n\n <ng-container *ngIf=\"!(dataContext?.status | async)?.hasError else dataContextHasError\">\n\n <ng-container *ngIf=\"(dataContext?.data | async)?.length === 0\">\n <ng-template [ngTemplateOutlet]=\"dataContextNoData\"></ng-template>\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n</ng-container>\n\n<ng-template #noDataContext>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'warning', text: 'No data context'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #dataContextNotStarted>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'warning', text: 'Data context not started'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #dataContextHasError>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'warning', iconColor: 'warn', text: 'Error while loading data'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #dataContextNoData>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'info', text: 'No data available'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #indicator let-icon=\"icon\" let-iconColor=\"iconColor\" let-text=\"text\">\n\n <div class=\"layout-col place-center-center full elder-dc-indicator-container mat-body-2\">\n <div class=\"layout-row place-center-center gap-lg\">\n <mat-icon [color]=\"iconColor\">{{icon}}</mat-icon>\n <span class=\"hint mat-body-2\">{{text | translate}}</span>\n </div>\n </div>\n\n</ng-template>\n", styles: [".elder-dc-indicator-container{color:gray}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13285
13285
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataContextStateIndicatorComponent, decorators: [{
13286
13286
  type: Component,
13287
- args: [{ selector: 'elder-data-context-state-indicator', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"dataContext$ | async as dataContext\">\n\n <ng-container *ngIf=\"dataContext else noDataContext\">\n\n <ng-container *ngIf=\"(dataContext.isStarted$ | async) else dataContextNotStarted\">\n\n <ng-container *ngIf=\"!(dataContext?.status | async)?.hasError else dataContextHasError\">\n\n <ng-container *ngIf=\"(dataContext?.data | async)?.length === 0\">\n <ng-template [ngTemplateOutlet]=\"dataContextNoData\"></ng-template>\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n</ng-container>\n\n<ng-template #noDataContext>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'warning', text: 'No data context'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #dataContextNotStarted>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'warning', text: 'Data context not started'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #dataContextHasError>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'warning', iconColor: 'warn', text: 'Error while loading data'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #dataContextNoData>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'info', text: 'No data available'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #indicator let-icon=\"icon\" let-iconColor=\"iconColor\" let-text=\"text\">\n\n <div class=\"layout-col place-center-center full elder-dc-indicator-container mat-body-2\">\n <div class=\"layout-row place-center-center gap-lg\">\n <mat-icon [color]=\"iconColor\">{{icon}}</mat-icon>\n <span class=\"hint mat-body-2\">{{text | translate}}</span>\n </div>\n </div>\n\n</ng-template>\n", styles: [".elder-dc-indicator-container{color:gray;padding-top:96px;padding-bottom:96px}\n"] }]
13287
+ args: [{ selector: 'elder-data-context-state-indicator', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"dataContext$ | async as dataContext\">\n\n <ng-container *ngIf=\"dataContext else noDataContext\">\n\n <ng-container *ngIf=\"(dataContext.isStarted$ | async) else dataContextNotStarted\">\n\n <ng-container *ngIf=\"!(dataContext?.status | async)?.hasError else dataContextHasError\">\n\n <ng-container *ngIf=\"(dataContext?.data | async)?.length === 0\">\n <ng-template [ngTemplateOutlet]=\"dataContextNoData\"></ng-template>\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n</ng-container>\n\n<ng-template #noDataContext>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'warning', text: 'No data context'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #dataContextNotStarted>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'warning', text: 'Data context not started'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #dataContextHasError>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'warning', iconColor: 'warn', text: 'Error while loading data'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #dataContextNoData>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'info', text: 'No data available'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #indicator let-icon=\"icon\" let-iconColor=\"iconColor\" let-text=\"text\">\n\n <div class=\"layout-col place-center-center full elder-dc-indicator-container mat-body-2\">\n <div class=\"layout-row place-center-center gap-lg\">\n <mat-icon [color]=\"iconColor\">{{icon}}</mat-icon>\n <span class=\"hint mat-body-2\">{{text | translate}}</span>\n </div>\n </div>\n\n</ng-template>\n", styles: [".elder-dc-indicator-container{color:gray}\n"] }]
13288
13288
  }], ctorParameters: function () { return []; }, propDecorators: { dataContext: [{
13289
13289
  type: Input
13290
13290
  }] } });
@@ -13424,6 +13424,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
13424
13424
  }]
13425
13425
  }] });
13426
13426
 
13427
+ class ItemActivationOptions {
13428
+ constructor(source, focus) {
13429
+ this.source = source;
13430
+ this.focus = focus;
13431
+ }
13432
+ }
13433
+
13434
+ var ActivationEventSource;
13435
+ (function (ActivationEventSource) {
13436
+ ActivationEventSource["USER_MOUSE_CLICK"] = "USER_MOUSE_CLICK";
13437
+ ActivationEventSource["USER_KEYBOARD"] = "USER_KEYBOARD";
13438
+ ActivationEventSource["SYSTEM"] = "SYSTEM";
13439
+ })(ActivationEventSource || (ActivationEventSource = {}));
13440
+
13427
13441
  class ElderTableRowDirective {
13428
13442
  /***************************************************************************
13429
13443
  * *
@@ -13440,7 +13454,13 @@ class ElderTableRowDirective {
13440
13454
  **************************************************************************/
13441
13455
  this.logger = LoggerFactory.getLogger(this.constructor.name);
13442
13456
  this._activated = false;
13457
+ this._activationDir$ = new BehaviorSubject(null);
13443
13458
  this.focused$ = new BehaviorSubject(false);
13459
+ this._activationDir$.pipe(filter(x => x !== null), switchMap$1(provider => provider.activeItemEventChange), filter(e => e.item == this.model), filter(e => e.focus)).subscribe({
13460
+ next: focusMe => {
13461
+ this.focus();
13462
+ }
13463
+ });
13444
13464
  }
13445
13465
  /***************************************************************************
13446
13466
  * *
@@ -13449,13 +13469,15 @@ class ElderTableRowDirective {
13449
13469
  **************************************************************************/
13450
13470
  onFocus(event) {
13451
13471
  this.focused$.next(true);
13452
- if (this.tableActivation) {
13453
- this.tableActivation.activate(this._model);
13454
- }
13455
13472
  }
13456
13473
  onBlur(event) {
13457
13474
  this.focused$.next(false);
13458
13475
  }
13476
+ onClick() {
13477
+ this.logger.debug('row clicked');
13478
+ const activation = this._activationDir$.getValue();
13479
+ activation.activate(this._model, new ItemActivationOptions(ActivationEventSource.USER_MOUSE_CLICK, true));
13480
+ }
13459
13481
  /***************************************************************************
13460
13482
  * *
13461
13483
  * Host Bindings *
@@ -13481,9 +13503,6 @@ class ElderTableRowDirective {
13481
13503
  get model() {
13482
13504
  return this._model;
13483
13505
  }
13484
- get tableActivation() {
13485
- return this._tableActivation;
13486
- }
13487
13506
  get hasFocus() {
13488
13507
  return this.focused$.getValue();
13489
13508
  }
@@ -13492,11 +13511,12 @@ class ElderTableRowDirective {
13492
13511
  * Public API *
13493
13512
  * *
13494
13513
  **************************************************************************/
13495
- bindTableActivation(activation) {
13496
- if (this._tableActivation !== activation) {
13497
- this._tableActivation = activation;
13498
- this.enableRowFocus(!!this._tableActivation);
13499
- if (!activation) {
13514
+ bindTableActivation(activationDir) {
13515
+ const currentActivation = this._activationDir$.getValue();
13516
+ if (currentActivation !== activationDir) {
13517
+ this._activationDir$.next(activationDir);
13518
+ this.enableRowFocus(!!activationDir);
13519
+ if (!activationDir) {
13500
13520
  this.activated = false;
13501
13521
  }
13502
13522
  }
@@ -13509,7 +13529,8 @@ class ElderTableRowDirective {
13509
13529
  inline: 'nearest' // horizontal alignment
13510
13530
  });
13511
13531
  }
13512
- foucs() {
13532
+ focus() {
13533
+ this.logger.debug('focus initiated');
13513
13534
  const row = this.rowRef.nativeElement;
13514
13535
  row.focus();
13515
13536
  }
@@ -13538,7 +13559,7 @@ class ElderTableRowDirective {
13538
13559
  }
13539
13560
  }
13540
13561
  ElderTableRowDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderTableRowDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
13541
- ElderTableRowDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: ElderTableRowDirective, selector: "tr[elderTableRow]", inputs: { model: ["elderTableRow", "model"] }, host: { listeners: { "focus": "onFocus($event)", "blur": "onBlur($event)" } }, exportAs: ["elderTableRow"], ngImport: i0 });
13562
+ ElderTableRowDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: ElderTableRowDirective, selector: "tr[elderTableRow]", inputs: { model: ["elderTableRow", "model"] }, host: { listeners: { "focus": "onFocus($event)", "blur": "onBlur($event)", "click": "onClick($event)" } }, exportAs: ["elderTableRow"], ngImport: i0 });
13542
13563
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderTableRowDirective, decorators: [{
13543
13564
  type: Directive,
13544
13565
  args: [{
@@ -13551,6 +13572,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
13551
13572
  }], onBlur: [{
13552
13573
  type: HostListener,
13553
13574
  args: ['blur', ['$event']]
13575
+ }], onClick: [{
13576
+ type: HostListener,
13577
+ args: ['click', ['$event']]
13554
13578
  }], model: [{
13555
13579
  type: Input,
13556
13580
  args: ['elderTableRow']
@@ -14467,6 +14491,9 @@ class ElderTableComponent extends ElderDataViewBaseComponent {
14467
14491
  get trackByFn() {
14468
14492
  return (index, entity) => this.getId(entity);
14469
14493
  }
14494
+ isDataValid(data) {
14495
+ return data.length > 0;
14496
+ }
14470
14497
  /***************************************************************************
14471
14498
  * *
14472
14499
  * Private Methods *
@@ -14502,7 +14529,7 @@ ElderTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
14502
14529
  provide: ELDER_DATA_VIEW,
14503
14530
  useExisting: forwardRef(() => ElderTableComponent)
14504
14531
  }
14505
- ], queries: [{ propertyName: "columnDefs", predicate: MatColumnDef }, { propertyName: "elderColumns", predicate: ElderTableColumnDirective }, { propertyName: "rowDefs", predicate: MatRowDef }, { propertyName: "toolbarRowTemplateQuery", predicate: ElderTableToolbarDirective, read: TemplateRef }], viewQueries: [{ propertyName: "matTable", first: true, predicate: MatTable, descendants: true, static: true }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "rowsQuery", predicate: ElderTableRowDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-card class=\"full\"\n [class.embedded]=\"embedded\"\n [appearance]=\"appearance\"\n style=\"overflow: hidden\"\n>\n <div class=\"layout-col elder-table full\">\n <!-- Toolbar Rows -->\n <ng-container *ngFor=\"let toolbarRowTemplate of toolbarRowTemplates$ | async\">\n <ng-template *ngTemplateOutlet=\"toolbarRowTemplate; context: {$implicit: this}\">\n </ng-template>\n </ng-container>\n\n <!-- Scrollable Table -->\n <div class=\"layout-col scrollable elder-table-scroll\"\n elderInfiniteScroll\n [eventThrottle]=\"150\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"!isContinuable || !(canLoadMore$ | async)\"\n (closeToEnd)=\"requestMoreDataZoned($event)\"\n >\n <table\n mat-table\n class=\"elder-mat-inner-table\"\n [trackBy]=\"trackByFn\"\n [dataSource]=\"$any(dataContext$ | async)\"\n [elderDataContextSelection]=\"dataContext$ | async\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- selection Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef>\n <elder-selection-master-checkbox></elder-selection-master-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let entity\">\n <div class=\"layout-row place-start-center\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionModel.toggle(entity) : null\"\n [checked]=\"selectionModel.observeSelection(entity) | async\"\n [disabled]=\"!selectionModel.isSelectable(entity)\"\n class=\"elder-table-checkbox\"\n [class.elder-table-checkbox-visible]=\"(dataSelection.selectionState$ | async).anySelected\"\n >\n </mat-checkbox>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container *ngIf=\"(tableModel.displayedColumnsInner$ | async) as displayedColumnsInner\">\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n <tr mat-row class=\"elder-table-row\"\n *matRowDef=\"let entity; columns: displayedColumnsInner;\"\n [elderTableRow]=\"entity\"\n [class.dense]=\"dense\"\n [class.elder-row-hidden]=\"hiddenField && entity[hiddenField]\"\n [class.elder-row-removing]=\"removingField && entity[removingField]\"\n [class.elder-table-row-selected]=\"interactionMode === 'selection' && selectionModel.observeSelection(entity) | async\"\n (click)=\"onItemClick(entity)\"\n (dblclick)=\"onItemDoubleClick(entity)\"\n >\n </tr>\n <ng-container *ngIf=\"showFooter\">\n <tr mat-footer-row *matFooterRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n </ng-container>\n </ng-container>\n </table>\n </div>\n\n <elder-data-context-state-indicator class=\"flex-none\" [dataContext]=\"dataContext\">\n </elder-data-context-state-indicator>\n\n <mat-progress-bar class=\"flex-none\"\n [mode]=\"(dataContext?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"((dataContext?.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Optional Paginator Toolbar -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n class=\"flex-none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Optional Continuation Footer -->\n <div *ngIf=\"isContinuable\" class=\"layout-row flex-none place-end-center gap-md elder-table-footer\">\n\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataContext?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataContinuable.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n </div>\n</mat-card>\n", styles: [".elder-table-scroll{height:100%}.elder-mat-inner-table{width:100%}.elder-table-row.dense{height:42px!important}.elder-mat-table-container{border-radius:4px;overflow:hidden}.mat-column-select{overflow:initial;min-width:72px;max-width:5%;width:72px}.elder-row-removing{text-decoration:line-through}.elder-row-hidden{display:none}.elder-table-row{cursor:pointer}:host{min-width:0;min-height:0}.elder-table-hint{color:gray}.elder-table-footer{height:44px}.elder-table-checkbox{opacity:.25;transition:opacity .5s ease-in-out}.elder-table-row:hover .elder-table-checkbox{opacity:.9}.elder-table-checkbox-visible{opacity:1}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$8.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i11.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i11.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i11.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i11.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i11.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: i12.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: ElderSelectionMasterCheckboxComponent, selector: "elder-selection-master-checkbox" }, { kind: "directive", type: DataContextSelectionDirective, selector: "[elderDataContextSelection]", inputs: ["elderDataContextSelectionModel", "elderDataContextSelection"], exportAs: ["elderDataContextSelection"] }, { kind: "component", type: DataContextStateIndicatorComponent, selector: "elder-data-context-state-indicator", inputs: ["dataContext"] }, { kind: "directive", type: ElderInfiniteScrollDirective, selector: "[elderInfiniteScroll]", inputs: ["listenToHost", "eventThrottle", "offsetFactor", "ignoreScrollEvent", "containerId", "scrollContainer"], outputs: ["closeToEnd", "scrolling"] }, { kind: "component", type: i17.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: ElderTableRowDirective, selector: "tr[elderTableRow]", inputs: ["elderTableRow"], exportAs: ["elderTableRow"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14532
+ ], queries: [{ propertyName: "columnDefs", predicate: MatColumnDef }, { propertyName: "elderColumns", predicate: ElderTableColumnDirective }, { propertyName: "rowDefs", predicate: MatRowDef }, { propertyName: "toolbarRowTemplateQuery", predicate: ElderTableToolbarDirective, read: TemplateRef }], viewQueries: [{ propertyName: "matTable", first: true, predicate: MatTable, descendants: true, static: true }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "rowsQuery", predicate: ElderTableRowDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-card class=\"full\"\n [class.embedded]=\"embedded\"\n [appearance]=\"appearance\"\n style=\"overflow: hidden\"\n>\n <div class=\"layout-col elder-table full\">\n <!-- Toolbar Rows -->\n <ng-container *ngFor=\"let toolbarRowTemplate of toolbarRowTemplates$ | async\">\n <ng-template *ngTemplateOutlet=\"toolbarRowTemplate; context: {$implicit: this}\">\n </ng-template>\n </ng-container>\n\n <!-- Scrollable Table -->\n <div class=\"layout-col {{isDataValid(dataContext?.data | async) ? 'flex' : ''}} scrollable elder-table-scroll\"\n elderInfiniteScroll\n [eventThrottle]=\"150\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"!isContinuable || !(canLoadMore$ | async)\"\n (closeToEnd)=\"requestMoreDataZoned($event)\"\n >\n <table\n mat-table\n class=\"elder-mat-inner-table\"\n [trackBy]=\"trackByFn\"\n [dataSource]=\"$any(dataContext$ | async)\"\n [elderDataContextSelection]=\"dataContext$ | async\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- selection Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef>\n <elder-selection-master-checkbox></elder-selection-master-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let entity\">\n <div class=\"layout-row place-start-center\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionModel.toggle(entity) : null\"\n [checked]=\"selectionModel.observeSelection(entity) | async\"\n [disabled]=\"!selectionModel.isSelectable(entity)\"\n class=\"elder-table-checkbox\"\n [class.elder-table-checkbox-visible]=\"(dataSelection.selectionState$ | async).anySelected\"\n >\n </mat-checkbox>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container *ngIf=\"(tableModel.displayedColumnsInner$ | async) as displayedColumnsInner\">\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n <tr mat-row class=\"elder-table-row\"\n *matRowDef=\"let entity; columns: displayedColumnsInner;\"\n [elderTableRow]=\"entity\"\n [class.dense]=\"dense\"\n [class.elder-row-hidden]=\"hiddenField && entity[hiddenField]\"\n [class.elder-row-removing]=\"removingField && entity[removingField]\"\n [class.elder-table-row-selected]=\"interactionMode === 'selection' && selectionModel.observeSelection(entity) | async\"\n (click)=\"onItemClick(entity)\"\n (dblclick)=\"onItemDoubleClick(entity)\"\n >\n </tr>\n <ng-container *ngIf=\"showFooter\">\n <tr mat-footer-row *matFooterRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n </ng-container>\n </ng-container>\n </table>\n </div>\n\n <ng-container *ngIf=\"!isDataValid(dataContext?.data | async)\">\n <elder-data-context-state-indicator class=\"flex\" [dataContext]=\"dataContext\">\n </elder-data-context-state-indicator>\n </ng-container>\n\n <mat-progress-bar class=\"flex-none\"\n [mode]=\"(dataContext?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"((dataContext?.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Optional Paginator Toolbar -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n class=\"flex-none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Optional Continuation Footer -->\n <div *ngIf=\"isContinuable\" class=\"layout-row flex-none place-end-center gap-md elder-table-footer\">\n\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataContext?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataContinuable.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n </div>\n</mat-card>\n", styles: [".elder-mat-inner-table{width:100%}.elder-table-row.dense{height:42px!important}.elder-mat-table-container{border-radius:4px;overflow:hidden}.mat-column-select{overflow:initial;min-width:72px;max-width:5%;width:72px}.elder-row-removing{text-decoration:line-through}.elder-row-hidden{display:none}.elder-table-row{cursor:pointer}:host{min-width:0;min-height:0}.elder-table-hint{color:gray}.elder-table-footer{height:44px}.elder-table-checkbox{opacity:.25;transition:opacity .5s ease-in-out}.elder-table-row:hover .elder-table-checkbox{opacity:.9}.elder-table-checkbox-visible{opacity:1}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$8.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i11.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i11.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i11.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i11.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i11.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: i12.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: ElderSelectionMasterCheckboxComponent, selector: "elder-selection-master-checkbox" }, { kind: "directive", type: DataContextSelectionDirective, selector: "[elderDataContextSelection]", inputs: ["elderDataContextSelectionModel", "elderDataContextSelection"], exportAs: ["elderDataContextSelection"] }, { kind: "component", type: DataContextStateIndicatorComponent, selector: "elder-data-context-state-indicator", inputs: ["dataContext"] }, { kind: "directive", type: ElderInfiniteScrollDirective, selector: "[elderInfiniteScroll]", inputs: ["listenToHost", "eventThrottle", "offsetFactor", "ignoreScrollEvent", "containerId", "scrollContainer"], outputs: ["closeToEnd", "scrolling"] }, { kind: "component", type: i17.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: ElderTableRowDirective, selector: "tr[elderTableRow]", inputs: ["elderTableRow"], exportAs: ["elderTableRow"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14506
14533
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderTableComponent, decorators: [{
14507
14534
  type: Component,
14508
14535
  args: [{ selector: 'elder-table', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
@@ -14511,7 +14538,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
14511
14538
  provide: ELDER_DATA_VIEW,
14512
14539
  useExisting: forwardRef(() => ElderTableComponent)
14513
14540
  }
14514
- ], template: "<mat-card class=\"full\"\n [class.embedded]=\"embedded\"\n [appearance]=\"appearance\"\n style=\"overflow: hidden\"\n>\n <div class=\"layout-col elder-table full\">\n <!-- Toolbar Rows -->\n <ng-container *ngFor=\"let toolbarRowTemplate of toolbarRowTemplates$ | async\">\n <ng-template *ngTemplateOutlet=\"toolbarRowTemplate; context: {$implicit: this}\">\n </ng-template>\n </ng-container>\n\n <!-- Scrollable Table -->\n <div class=\"layout-col scrollable elder-table-scroll\"\n elderInfiniteScroll\n [eventThrottle]=\"150\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"!isContinuable || !(canLoadMore$ | async)\"\n (closeToEnd)=\"requestMoreDataZoned($event)\"\n >\n <table\n mat-table\n class=\"elder-mat-inner-table\"\n [trackBy]=\"trackByFn\"\n [dataSource]=\"$any(dataContext$ | async)\"\n [elderDataContextSelection]=\"dataContext$ | async\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- selection Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef>\n <elder-selection-master-checkbox></elder-selection-master-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let entity\">\n <div class=\"layout-row place-start-center\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionModel.toggle(entity) : null\"\n [checked]=\"selectionModel.observeSelection(entity) | async\"\n [disabled]=\"!selectionModel.isSelectable(entity)\"\n class=\"elder-table-checkbox\"\n [class.elder-table-checkbox-visible]=\"(dataSelection.selectionState$ | async).anySelected\"\n >\n </mat-checkbox>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container *ngIf=\"(tableModel.displayedColumnsInner$ | async) as displayedColumnsInner\">\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n <tr mat-row class=\"elder-table-row\"\n *matRowDef=\"let entity; columns: displayedColumnsInner;\"\n [elderTableRow]=\"entity\"\n [class.dense]=\"dense\"\n [class.elder-row-hidden]=\"hiddenField && entity[hiddenField]\"\n [class.elder-row-removing]=\"removingField && entity[removingField]\"\n [class.elder-table-row-selected]=\"interactionMode === 'selection' && selectionModel.observeSelection(entity) | async\"\n (click)=\"onItemClick(entity)\"\n (dblclick)=\"onItemDoubleClick(entity)\"\n >\n </tr>\n <ng-container *ngIf=\"showFooter\">\n <tr mat-footer-row *matFooterRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n </ng-container>\n </ng-container>\n </table>\n </div>\n\n <elder-data-context-state-indicator class=\"flex-none\" [dataContext]=\"dataContext\">\n </elder-data-context-state-indicator>\n\n <mat-progress-bar class=\"flex-none\"\n [mode]=\"(dataContext?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"((dataContext?.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Optional Paginator Toolbar -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n class=\"flex-none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Optional Continuation Footer -->\n <div *ngIf=\"isContinuable\" class=\"layout-row flex-none place-end-center gap-md elder-table-footer\">\n\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataContext?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataContinuable.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n </div>\n</mat-card>\n", styles: [".elder-table-scroll{height:100%}.elder-mat-inner-table{width:100%}.elder-table-row.dense{height:42px!important}.elder-mat-table-container{border-radius:4px;overflow:hidden}.mat-column-select{overflow:initial;min-width:72px;max-width:5%;width:72px}.elder-row-removing{text-decoration:line-through}.elder-row-hidden{display:none}.elder-table-row{cursor:pointer}:host{min-width:0;min-height:0}.elder-table-hint{color:gray}.elder-table-footer{height:44px}.elder-table-checkbox{opacity:.25;transition:opacity .5s ease-in-out}.elder-table-row:hover .elder-table-checkbox{opacity:.9}.elder-table-checkbox-visible{opacity:1}\n"] }]
14541
+ ], template: "<mat-card class=\"full\"\n [class.embedded]=\"embedded\"\n [appearance]=\"appearance\"\n style=\"overflow: hidden\"\n>\n <div class=\"layout-col elder-table full\">\n <!-- Toolbar Rows -->\n <ng-container *ngFor=\"let toolbarRowTemplate of toolbarRowTemplates$ | async\">\n <ng-template *ngTemplateOutlet=\"toolbarRowTemplate; context: {$implicit: this}\">\n </ng-template>\n </ng-container>\n\n <!-- Scrollable Table -->\n <div class=\"layout-col {{isDataValid(dataContext?.data | async) ? 'flex' : ''}} scrollable elder-table-scroll\"\n elderInfiniteScroll\n [eventThrottle]=\"150\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"!isContinuable || !(canLoadMore$ | async)\"\n (closeToEnd)=\"requestMoreDataZoned($event)\"\n >\n <table\n mat-table\n class=\"elder-mat-inner-table\"\n [trackBy]=\"trackByFn\"\n [dataSource]=\"$any(dataContext$ | async)\"\n [elderDataContextSelection]=\"dataContext$ | async\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- selection Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef>\n <elder-selection-master-checkbox></elder-selection-master-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let entity\">\n <div class=\"layout-row place-start-center\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionModel.toggle(entity) : null\"\n [checked]=\"selectionModel.observeSelection(entity) | async\"\n [disabled]=\"!selectionModel.isSelectable(entity)\"\n class=\"elder-table-checkbox\"\n [class.elder-table-checkbox-visible]=\"(dataSelection.selectionState$ | async).anySelected\"\n >\n </mat-checkbox>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container *ngIf=\"(tableModel.displayedColumnsInner$ | async) as displayedColumnsInner\">\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n <tr mat-row class=\"elder-table-row\"\n *matRowDef=\"let entity; columns: displayedColumnsInner;\"\n [elderTableRow]=\"entity\"\n [class.dense]=\"dense\"\n [class.elder-row-hidden]=\"hiddenField && entity[hiddenField]\"\n [class.elder-row-removing]=\"removingField && entity[removingField]\"\n [class.elder-table-row-selected]=\"interactionMode === 'selection' && selectionModel.observeSelection(entity) | async\"\n (click)=\"onItemClick(entity)\"\n (dblclick)=\"onItemDoubleClick(entity)\"\n >\n </tr>\n <ng-container *ngIf=\"showFooter\">\n <tr mat-footer-row *matFooterRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n </ng-container>\n </ng-container>\n </table>\n </div>\n\n <ng-container *ngIf=\"!isDataValid(dataContext?.data | async)\">\n <elder-data-context-state-indicator class=\"flex\" [dataContext]=\"dataContext\">\n </elder-data-context-state-indicator>\n </ng-container>\n\n <mat-progress-bar class=\"flex-none\"\n [mode]=\"(dataContext?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"((dataContext?.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Optional Paginator Toolbar -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n class=\"flex-none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Optional Continuation Footer -->\n <div *ngIf=\"isContinuable\" class=\"layout-row flex-none place-end-center gap-md elder-table-footer\">\n\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataContext?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataContinuable.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n </div>\n</mat-card>\n", styles: [".elder-mat-inner-table{width:100%}.elder-table-row.dense{height:42px!important}.elder-mat-table-container{border-radius:4px;overflow:hidden}.mat-column-select{overflow:initial;min-width:72px;max-width:5%;width:72px}.elder-row-removing{text-decoration:line-through}.elder-row-hidden{display:none}.elder-table-row{cursor:pointer}:host{min-width:0;min-height:0}.elder-table-hint{color:gray}.elder-table-footer{height:44px}.elder-table-checkbox{opacity:.25;transition:opacity .5s ease-in-out}.elder-table-row:hover .elder-table-checkbox{opacity:.9}.elder-table-checkbox-visible{opacity:1}\n"] }]
14515
14542
  }], ctorParameters: function () { return [{ type: ElderTableModel }, { type: SelectionModel, decorators: [{
14516
14543
  type: Optional
14517
14544
  }] }, { type: ElderDataViewOptionsProvider, decorators: [{
@@ -16289,6 +16316,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
16289
16316
  type: Optional
16290
16317
  }] }]; } });
16291
16318
 
16319
+ class ActiveItemEvent {
16320
+ constructor(item, source, focus, creating) {
16321
+ this.item = item;
16322
+ this.source = source;
16323
+ this.focus = focus;
16324
+ this.creating = creating;
16325
+ }
16326
+ }
16327
+
16292
16328
  class ElderTableActivationDirective {
16293
16329
  /***************************************************************************
16294
16330
  * *
@@ -16305,6 +16341,7 @@ class ElderTableActivationDirective {
16305
16341
  this.logger = LoggerFactory.getLogger(this.constructor.name);
16306
16342
  this.destroy$ = new Subject();
16307
16343
  this.activeItem$ = new BehaviorSubject(null);
16344
+ this.activeItemEvent$ = new Subject();
16308
16345
  this.activationOptions = {};
16309
16346
  this._data = [];
16310
16347
  this.rows$ = new BehaviorSubject([]);
@@ -16349,7 +16386,7 @@ class ElderTableActivationDirective {
16349
16386
  newActiveItem = this.previousRowItem();
16350
16387
  }
16351
16388
  if (newActiveItem) {
16352
- this.focusAndActivate(newActiveItem);
16389
+ this.activateAndFocus(newActiveItem);
16353
16390
  }
16354
16391
  const active = this.activeItem;
16355
16392
  if (active) {
@@ -16368,6 +16405,9 @@ class ElderTableActivationDirective {
16368
16405
  * Properties *
16369
16406
  * *
16370
16407
  **************************************************************************/
16408
+ get activeItemEventChange() {
16409
+ return this.activeItemEvent$;
16410
+ }
16371
16411
  get activeItemChange() {
16372
16412
  return this.activeItem$;
16373
16413
  }
@@ -16375,24 +16415,18 @@ class ElderTableActivationDirective {
16375
16415
  return this.activeItem$.getValue();
16376
16416
  }
16377
16417
  set activeItem(item) {
16378
- if (item !== this.activeItem) {
16379
- this.activeItem$.next(item);
16380
- this.logger.debug('Set active item to ', item);
16381
- }
16418
+ this.activate(item, new ItemActivationOptions(ActivationEventSource.SYSTEM, true));
16382
16419
  }
16383
16420
  /***************************************************************************
16384
16421
  * *
16385
16422
  * Public API *
16386
16423
  * *
16387
16424
  **************************************************************************/
16388
- activate(item) {
16389
- this.activeItem = item;
16425
+ activate(item, options) {
16426
+ this.updateActiveItem(item, options);
16390
16427
  }
16391
- focusAndActivate(item) {
16392
- const row = this.getRowForItem(item);
16393
- if (row) {
16394
- row.foucs(); // Focus will auto activate the row
16395
- }
16428
+ activateAndFocus(item) {
16429
+ this.activate(item, new ItemActivationOptions(ActivationEventSource.SYSTEM, true));
16396
16430
  }
16397
16431
  isItemActive(item) {
16398
16432
  if (this.activeItem) {
@@ -16418,6 +16452,13 @@ class ElderTableActivationDirective {
16418
16452
  * Private methods *
16419
16453
  * *
16420
16454
  **************************************************************************/
16455
+ updateActiveItem(item, options) {
16456
+ this.activeItemEvent$.next(new ActiveItemEvent(item, options.source, options.focus, false));
16457
+ if (item !== this.activeItem) {
16458
+ this.activeItem$.next(item);
16459
+ this.logger.debug('Set active item to ', item);
16460
+ }
16461
+ }
16421
16462
  updateRowsActivation(rows, activeItem) {
16422
16463
  const activeId = this.getId(activeItem);
16423
16464
  rows.forEach(row => {
@@ -16455,7 +16496,7 @@ class ElderTableActivationDirective {
16455
16496
  if (active) {
16456
16497
  const activeId = this.getId(active);
16457
16498
  if (activeId == id) {
16458
- this.activate(null);
16499
+ this.activate(null, new ItemActivationOptions(ActivationEventSource.SYSTEM, false));
16459
16500
  }
16460
16501
  }
16461
16502
  }
@@ -16483,14 +16524,14 @@ class ElderTableActivationDirective {
16483
16524
  activateFirst() {
16484
16525
  const item = this.getItemAtIndex(0);
16485
16526
  if (item) {
16486
- this.activate(item);
16527
+ this.activate(item, new ItemActivationOptions(ActivationEventSource.SYSTEM, false));
16487
16528
  }
16488
16529
  }
16489
16530
  activateLast() {
16490
16531
  if (this._data) {
16491
16532
  const item = this.getItemAtIndex(this._data.length - 1);
16492
16533
  if (item) {
16493
- this.activate(item);
16534
+ this.activate(item, new ItemActivationOptions(ActivationEventSource.SYSTEM, false));
16494
16535
  }
16495
16536
  }
16496
16537
  }
@@ -16553,7 +16594,7 @@ class ElderTableActivationDirective {
16553
16594
  }
16554
16595
  }
16555
16596
  ElderTableActivationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderTableActivationDirective, deps: [{ token: ElderTableComponent }], target: i0.ɵɵFactoryTarget.Directive });
16556
- ElderTableActivationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: ElderTableActivationDirective, selector: "elder-table[elderTableActivation]", inputs: { activationOptions: ["elderTableActivation", "activationOptions"], activeItem: "activeItem" }, outputs: { activeItemChange: "activeItemChange" }, host: { listeners: { "keydown": "onKeydown($event)" } }, exportAs: ["elderTableActivation"], ngImport: i0 });
16597
+ ElderTableActivationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: ElderTableActivationDirective, selector: "elder-table[elderTableActivation]", inputs: { activationOptions: ["elderTableActivation", "activationOptions"], activeItem: "activeItem" }, outputs: { activeItemEventChange: "activeItemEventChange", activeItemChange: "activeItemChange" }, host: { listeners: { "keydown": "onKeydown($event)" } }, exportAs: ["elderTableActivation"], ngImport: i0 });
16557
16598
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderTableActivationDirective, decorators: [{
16558
16599
  type: Directive,
16559
16600
  args: [{
@@ -16566,6 +16607,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
16566
16607
  }], onKeydown: [{
16567
16608
  type: HostListener,
16568
16609
  args: ['keydown', ['$event']]
16610
+ }], activeItemEventChange: [{
16611
+ type: Output
16569
16612
  }], activeItemChange: [{
16570
16613
  type: Output
16571
16614
  }], activeItem: [{
@@ -16665,7 +16708,7 @@ class ElderDeleteActiveDirective {
16665
16708
  this.logger.debug('Deleting current row was requested: ', active);
16666
16709
  this.emitDelete(active);
16667
16710
  }, () => {
16668
- this.activation.focusAndActivate(active);
16711
+ this.activation.activateAndFocus(active);
16669
16712
  });
16670
16713
  }
16671
16714
  }
@@ -16677,7 +16720,7 @@ class ElderDeleteActiveDirective {
16677
16720
  **************************************************************************/
16678
16721
  checkActivateNext() {
16679
16722
  if (this.latestDeleteRequest?.next) {
16680
- this.activation.focusAndActivate(this.latestDeleteRequest.next);
16723
+ this.activation.activateAndFocus(this.latestDeleteRequest.next);
16681
16724
  this.latestDeleteRequest = null;
16682
16725
  return true;
16683
16726
  }
@@ -17216,7 +17259,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
17216
17259
  }]
17217
17260
  }] });
17218
17261
 
17219
- class MasterDetailService {
17262
+ class ElderMasterDetailActivationEvent {
17263
+ constructor(item, creating, source) {
17264
+ this.item = item;
17265
+ this.creating = creating;
17266
+ this.source = source;
17267
+ this.deactivate = false;
17268
+ if (item == null) {
17269
+ this.deactivate = true;
17270
+ }
17271
+ }
17272
+ }
17273
+
17274
+ class ElderMasterDetailService {
17220
17275
  /***************************************************************************
17221
17276
  * *
17222
17277
  * Constructor *
@@ -17234,10 +17289,12 @@ class MasterDetailService {
17234
17289
  this._itemActivationRequest$ = new Subject();
17235
17290
  this._activeItem$ = new BehaviorSubject(null);
17236
17291
  this._creatingItem$ = new BehaviorSubject(null);
17237
- this._activeOrCreating$ = new BehaviorSubject(null);
17292
+ this._activationEvent$ = new BehaviorSubject(null);
17238
17293
  merge(this._creatingItem$, this._activeItem$)
17239
- .pipe(takeUntil(this.destroy$)).subscribe({
17240
- next: creatingOrActive => this._activeOrCreating$.next(creatingOrActive)
17294
+ .pipe(filter(event => event !== null), takeUntil(this.destroy$)).subscribe({
17295
+ next: creatingOrActive => {
17296
+ this._activationEvent$.next(new ElderMasterDetailActivationEvent(creatingOrActive?.item, creatingOrActive.creating, creatingOrActive.source));
17297
+ }
17241
17298
  });
17242
17299
  }
17243
17300
  /***************************************************************************
@@ -17254,30 +17311,28 @@ class MasterDetailService {
17254
17311
  * Properties *
17255
17312
  * *
17256
17313
  **************************************************************************/
17314
+ get activationEvent$() {
17315
+ return this._activationEvent$.asObservable();
17316
+ }
17257
17317
  get itemActivationRequested() {
17258
17318
  return this._itemActivationRequest$.asObservable();
17259
17319
  }
17260
- get activeOrCreatingItem$() {
17261
- return this._activeOrCreating$;
17262
- }
17263
- get activeItem$() {
17264
- return this._activeItem$;
17265
- }
17266
- onItemActivated(item) {
17267
- if (item !== this._activeItem$.getValue()) {
17268
- this._activeItem$.next(item);
17269
- }
17320
+ /* public get activeItem$(): Observable<T> {
17321
+ return this._activeItem$.pipe(map(active => active.item));
17322
+ }*/
17323
+ onItemActivated(event) {
17324
+ this._activeItem$.next(event);
17270
17325
  }
17271
17326
  requestItemActivation(item) {
17272
17327
  this._itemActivationRequest$.next(item);
17273
17328
  }
17274
17329
  activateCreatingItem(item) {
17275
- this._creatingItem$.next(item);
17330
+ this._creatingItem$.next(new ActiveItemEvent(item, ActivationEventSource.USER_MOUSE_CLICK, false, true));
17276
17331
  }
17277
17332
  }
17278
- MasterDetailService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: MasterDetailService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
17279
- MasterDetailService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: MasterDetailService });
17280
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: MasterDetailService, decorators: [{
17333
+ ElderMasterDetailService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderMasterDetailService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
17334
+ ElderMasterDetailService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderMasterDetailService });
17335
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderMasterDetailService, decorators: [{
17281
17336
  type: Injectable
17282
17337
  }], ctorParameters: function () { return []; } });
17283
17338
 
@@ -17298,19 +17353,21 @@ class ElderDetailDirective {
17298
17353
  **************************************************************************/
17299
17354
  this.log = LoggerFactory.getLogger(this.constructor.name);
17300
17355
  this.activeDetailItem$ = new BehaviorSubject(null);
17301
- this.masterDetailService?.activeOrCreatingItem$.subscribe({
17356
+ this.masterDetailService?.activationEvent$.subscribe({
17302
17357
  next: active => {
17303
- this.activeDetailItem$.next(active);
17358
+ if (active?.item) {
17359
+ this.activeDetailItem$.next(active.item);
17360
+ }
17304
17361
  }
17305
17362
  });
17306
17363
  }
17307
17364
  }
17308
- ElderDetailDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderDetailDirective, deps: [{ token: MasterDetailService }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
17365
+ ElderDetailDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderDetailDirective, deps: [{ token: ElderMasterDetailService }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
17309
17366
  ElderDetailDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: ElderDetailDirective, selector: "[elderDataDetail]", ngImport: i0 });
17310
17367
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderDetailDirective, decorators: [{
17311
17368
  type: Directive,
17312
17369
  args: [{ selector: '[elderDataDetail]' }]
17313
- }], ctorParameters: function () { return [{ type: MasterDetailService }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
17370
+ }], ctorParameters: function () { return [{ type: ElderMasterDetailService }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
17314
17371
 
17315
17372
  class ElderMasterDirective {
17316
17373
  /***************************************************************************
@@ -17920,10 +17977,10 @@ class ElderDetailDialogComponent {
17920
17977
  **************************************************************************/
17921
17978
  this.destroy$ = new Subject();
17922
17979
  this.entity$ = new BehaviorSubject(null);
17923
- this.masterDetailService.activeOrCreatingItem$
17980
+ this.masterDetailService.activationEvent$
17924
17981
  .pipe(takeUntil(this.destroy$))
17925
17982
  .subscribe({ next: active => {
17926
- this.entity$.next(active);
17983
+ this.entity$.next(active.item);
17927
17984
  } });
17928
17985
  }
17929
17986
  /***************************************************************************
@@ -17944,7 +18001,7 @@ class ElderDetailDialogComponent {
17944
18001
  this.dialogRef.close(this.entity$.getValue());
17945
18002
  }
17946
18003
  }
17947
- ElderDetailDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderDetailDialogComponent, deps: [{ token: i1$7.MatDialogRef, optional: true }, { token: MAT_DIALOG_DATA, optional: true }, { token: MasterDetailService }], target: i0.ɵɵFactoryTarget.Component });
18004
+ ElderDetailDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderDetailDialogComponent, deps: [{ token: i1$7.MatDialogRef, optional: true }, { token: MAT_DIALOG_DATA, optional: true }, { token: ElderMasterDetailService }], target: i0.ɵɵFactoryTarget.Component });
17948
18005
  ElderDetailDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ElderDetailDialogComponent, selector: "elder-detail-dialog", ngImport: i0, template: "<div class=\"layout-col full\">\n\n <span style=\"width: 100vw;\"></span>\n\n <!-- Header Section -->\n <elder-toolbar class=\"gap-md\" *ngIf=\"entity$ | async as entity\">\n <button (click)=\"close()\" mat-icon-button *elderToolbarColumn=\"'left.begin'\">\n <mat-icon>close</mat-icon>\n </button>\n </elder-toolbar>\n\n <div class=\"layout-row flex gap-md\">\n <ng-container *ngTemplateOutlet=\"data.detailTemplateRef\"></ng-container>\n </div>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: ElderToolbarComponent, selector: "elder-toolbar", inputs: ["color"] }, { kind: "directive", type: ElderToolbarColumnDirective, selector: "[elderToolbarColumn]", inputs: ["elderToolbarColumn", "elderToolbarDefault"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
17949
18006
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderDetailDialogComponent, decorators: [{
17950
18007
  type: Component,
@@ -17956,7 +18013,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
17956
18013
  }, {
17957
18014
  type: Inject,
17958
18015
  args: [MAT_DIALOG_DATA]
17959
- }] }, { type: MasterDetailService }]; } });
18016
+ }] }, { type: ElderMasterDetailService }]; } });
17960
18017
 
17961
18018
  var ElderMasterDetailMode;
17962
18019
  (function (ElderMasterDetailMode) {
@@ -17968,18 +18025,18 @@ function existingOrNewMasterDetailService(serviceProvider) {
17968
18025
  return serviceProvider ?? newMasterDetailService();
17969
18026
  }
17970
18027
  function newMasterDetailService() {
17971
- return new MasterDetailService();
18028
+ return new ElderMasterDetailService();
17972
18029
  }
17973
18030
  class ElderMasterDetailProvider {
17974
18031
  }
17975
18032
  /**
17976
- * Uses the existing MasterDetailService from a parent if available.
17977
- * Otherwise, creates a new MasterDetailService and provides it.
18033
+ * Uses the existing ElderMasterDetailService from a parent if available.
18034
+ * Otherwise, creates a new ElderMasterDetailService and provides it.
17978
18035
  */
17979
18036
  ElderMasterDetailProvider.ExistingOrNewMasterDetailService = {
17980
- provide: MasterDetailService,
18037
+ provide: ElderMasterDetailService,
17981
18038
  useFactory: existingOrNewMasterDetailService,
17982
- deps: [[new Optional(), new SkipSelf(), MasterDetailService]]
18039
+ deps: [[new Optional(), new SkipSelf(), ElderMasterDetailService]]
17983
18040
  };
17984
18041
 
17985
18042
  class ElderMasterDetailComponent {
@@ -18003,15 +18060,15 @@ class ElderMasterDetailComponent {
18003
18060
  this.ElderMasterDetailMode = ElderMasterDetailMode;
18004
18061
  this.mode$
18005
18062
  .pipe(takeUntil(this.destroy$))
18006
- .subscribe({ next: mode => this.masterDetailService.mode$.next(mode) });
18007
- this.masterDetailService.activeOrCreatingItem$
18063
+ .subscribe({ next: mode => { this.masterDetailService.mode$.next(mode); } });
18064
+ this.masterDetailService.activationEvent$
18008
18065
  .pipe(takeUntil(this.destroy$))
18009
18066
  .subscribe({
18010
18067
  next: active => {
18011
18068
  if (this.mode$.getValue() == ElderMasterDetailMode.DIALOG) {
18012
- if (active != null) {
18069
+ if (active.item) {
18013
18070
  this.closeDialog();
18014
- this.openDetailDialog(active);
18071
+ this.openDetailDialog(active?.item);
18015
18072
  }
18016
18073
  else {
18017
18074
  this.closeDialog();
@@ -18069,7 +18126,7 @@ class ElderMasterDetailComponent {
18069
18126
  }
18070
18127
  }
18071
18128
  }
18072
- ElderMasterDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderMasterDetailComponent, deps: [{ token: MasterDetailService }, { token: i1$7.MatDialog }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
18129
+ ElderMasterDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderMasterDetailComponent, deps: [{ token: ElderMasterDetailService }, { token: i1$7.MatDialog }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
18073
18130
  ElderMasterDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ElderMasterDetailComponent, selector: "elder-master-detail", inputs: { mode: "mode" }, providers: [
18074
18131
  ElderMasterDetailProvider.ExistingOrNewMasterDetailService
18075
18132
  ], queries: [{ propertyName: "master", first: true, predicate: ElderMasterDirective, descendants: true, read: TemplateRef }, { propertyName: "detail", first: true, predicate: ElderDetailDirective, descendants: true, read: TemplateRef }], ngImport: i0, template: "\n<div class=\"layout-row full\" *ngIf=\"mode$ | async as mode\">\n\n <div class=\"layout-row full\" *ngIf=\"mode == ElderMasterDetailMode.DIALOG\">\n <ng-container *ngTemplateOutlet=\"master\"></ng-container>\n </div>\n\n <div class=\"layout-row full gap-md\" *ngIf=\"mode == ElderMasterDetailMode.EMBEDDED\">\n <ng-container *ngTemplateOutlet=\"master\"></ng-container >\n <ng-container *ngTemplateOutlet=\"detail\"></ng-container>\n </div>\n\n\n</div>\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
@@ -18078,7 +18135,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
18078
18135
  args: [{ selector: 'elder-master-detail', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
18079
18136
  ElderMasterDetailProvider.ExistingOrNewMasterDetailService
18080
18137
  ], template: "\n<div class=\"layout-row full\" *ngIf=\"mode$ | async as mode\">\n\n <div class=\"layout-row full\" *ngIf=\"mode == ElderMasterDetailMode.DIALOG\">\n <ng-container *ngTemplateOutlet=\"master\"></ng-container>\n </div>\n\n <div class=\"layout-row full gap-md\" *ngIf=\"mode == ElderMasterDetailMode.EMBEDDED\">\n <ng-container *ngTemplateOutlet=\"master\"></ng-container >\n <ng-container *ngTemplateOutlet=\"detail\"></ng-container>\n </div>\n\n\n</div>\n\n\n" }]
18081
- }], ctorParameters: function () { return [{ type: MasterDetailService }, { type: i1$7.MatDialog }, { type: i0.ViewContainerRef }]; }, propDecorators: { master: [{
18138
+ }], ctorParameters: function () { return [{ type: ElderMasterDetailService }, { type: i1$7.MatDialog }, { type: i0.ViewContainerRef }]; }, propDecorators: { master: [{
18082
18139
  type: ContentChild,
18083
18140
  args: [ElderMasterDirective, { read: TemplateRef, static: false }]
18084
18141
  }], detail: [{
@@ -18103,6 +18160,7 @@ class ElderMasterActivationDirective {
18103
18160
  * Fields *
18104
18161
  * *
18105
18162
  **************************************************************************/
18163
+ this.destroy$ = new Subject();
18106
18164
  this.log = LoggerFactory.getLogger(this.constructor.name);
18107
18165
  }
18108
18166
  /***************************************************************************
@@ -18110,21 +18168,31 @@ class ElderMasterActivationDirective {
18110
18168
  * Life Cycle *
18111
18169
  * *
18112
18170
  **************************************************************************/
18171
+ ngOnDestroy() {
18172
+ this.destroy$.next();
18173
+ this.destroy$.complete();
18174
+ }
18113
18175
  ngOnInit() {
18114
- this.tableActivation.activeItem$.subscribe({
18115
- next: active => {
18116
- this.log.info('Table-Activation changed, setting master-detail active-item', active);
18117
- this.masterDetailService.onItemActivated(active);
18176
+ this.tableActivation.activeItemEventChange.pipe(takeUntil(this.destroy$)).subscribe({
18177
+ next: event => {
18178
+ this.log.debug('Table-Activation changed, notifying master-detail', event);
18179
+ this.masterDetailService.onItemActivated(event);
18118
18180
  },
18119
18181
  error: err => this.toastService.error("Failed to set active item", err)
18120
18182
  });
18121
- this.masterDetailService.itemActivationRequested.subscribe({
18183
+ this.masterDetailService.itemActivationRequested.pipe(takeUntil(this.destroy$)).subscribe({
18122
18184
  next: item => {
18123
- this.tableActivation.activate(item);
18185
+ this.tableActivation.activate(item, new ItemActivationOptions(ActivationEventSource.SYSTEM, true) // TODO keyboard, arrow?
18186
+ ); // Maybe support activationRequest.source and map
18124
18187
  }
18125
18188
  });
18126
- this.masterDetailService.mode$.subscribe({ next: mode => this.onModeChange(mode) });
18189
+ this.masterDetailService.mode$.pipe(takeUntil(this.destroy$)).subscribe({ next: mode => this.onModeChange(mode) });
18127
18190
  }
18191
+ /***************************************************************************
18192
+ * *
18193
+ * Private Methods *
18194
+ * *
18195
+ **************************************************************************/
18128
18196
  onModeChange(mode) {
18129
18197
  if (mode == ElderMasterDetailMode.EMBEDDED) {
18130
18198
  this.tableActivation.activationOptions = { mode: 'once', row: 'first' };
@@ -18134,14 +18202,14 @@ class ElderMasterActivationDirective {
18134
18202
  }
18135
18203
  }
18136
18204
  }
18137
- ElderMasterActivationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderMasterActivationDirective, deps: [{ token: ElderToastService }, { token: ElderTableActivationDirective }, { token: MasterDetailService }], target: i0.ɵɵFactoryTarget.Directive });
18205
+ ElderMasterActivationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderMasterActivationDirective, deps: [{ token: ElderToastService }, { token: ElderTableActivationDirective }, { token: ElderMasterDetailService }], target: i0.ɵɵFactoryTarget.Directive });
18138
18206
  ElderMasterActivationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: ElderMasterActivationDirective, selector: "[elderMasterActivation]", ngImport: i0 });
18139
18207
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ElderMasterActivationDirective, decorators: [{
18140
18208
  type: Directive,
18141
18209
  args: [{
18142
18210
  selector: '[elderMasterActivation]',
18143
18211
  }]
18144
- }], ctorParameters: function () { return [{ type: ElderToastService }, { type: ElderTableActivationDirective }, { type: MasterDetailService }]; } });
18212
+ }], ctorParameters: function () { return [{ type: ElderToastService }, { type: ElderTableActivationDirective }, { type: ElderMasterDetailService }]; } });
18145
18213
 
18146
18214
  class ElderFromFieldCustomizableBase extends ElderFromFieldBase {
18147
18215
  constructor() {
@@ -30143,5 +30211,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
30143
30211
  * Generated bundle index. Do not edit.
30144
30212
  */
30145
30213
 
30146
- export { Arrays, AuditedEntity, AutoStartSpec, BlobUrl, BytesFormat, BytesPerSecondFormat, BytesPipe, CardDropEvent, CardOrganizerData, CardStack, CollectionUtil, ComparatorBuilder, ConfirmDialogConfig, ContinuableListing, CsvColumnSpec, CsvSerializer, CsvSpec, CsvStreamExporter, CsvStreamExporterBuilder, CsvStreamExporterBuilderService, Currency, CurrencyCode, CurrencyUnit, CurrencyUnitRegistry, CustomDateAdapter, DataContextActivePage, DataContextAutoStarter, DataContextBase, DataContextBuilder, DataContextContinuableBase, DataContextContinuablePaged, DataContextContinuableToken, DataContextLifeCycleBinding, DataContextSelectionDirective, DataContextSimple, DataContextSnapshot, DataContextSourceEventBinding, DataContextStateIndicatorComponent, DataContextStatus, DataSourceAdapter, DataSourceBase, DataSourceChangeEvent, DataSourceChangeType, DataSourceProcessor, DataTransferFactory, DataTransferProgress, DataTransferProgressAggregate, DataTransferState, DataTransferStatus, DataViewIframeAdapterDirective, DataViewIframeComponent, DataViewMessage, DataViewMessageTypeValues, DataViewOptionsProviderBinding, DataViewSelection, DataViewSelectionInit, DateUtil, DelegateContinuableDataSource, DelegateDataSource, DelegateListDataSource, DelegatePagedDataSource, Dimensions, DrawerOutletBinding, DurationBucket, DurationFormat, ELDER_DATA_VIEW, ELDER_SELECT_BASE, ElderAccessDeniedComponent, ElderAccessDeniedModule, ElderAppHeaderComponent, ElderAuditModule, ElderAuditedEntityComponent, ElderAutoSelectFirstDirective, ElderAutocompleteComponent, ElderAutocompleteDirective, ElderAutocompleteManyDirective, ElderAutocompleteModule, ElderBadgeComponent, ElderBadgeDirective, ElderBadgeModule, ElderBlobViewerComponent, ElderBreadCrumbsComponent, ElderBreadCrumbsModule, ElderButtonGroupComponent, ElderButtonGroupModule, ElderCardComponent, ElderCardContentDirective, ElderCardHeaderActionsDirective, ElderCardHeaderComponent, ElderCardModule, ElderCardOrganizerComponent, ElderCardOrganizerModule, ElderCardPanelComponent, ElderCardStackComponent, ElderCardSubtitleDirective, ElderCardTitleDirective, ElderCheckboxState, ElderChipLabelDirective, ElderChipListSelectComponent, ElderChipListSelectModule, ElderChipsModule, ElderClearSelectDirective, ElderClipboardPutDirective, ElderClipboardService, ElderConfirmDialogComponent, ElderConnectivityModule, ElderConnectivityService, ElderContainersModule, ElderCsvExportBtnComponent, ElderCsvModule, ElderCurrencyModule, ElderCurrencyPipe, ElderDataCommonModule, ElderDataToolbarComponent, ElderDataTransferModule, ElderDataTransferService, ElderDataViewBaseComponent, ElderDataViewOptions, ElderDataViewOptionsProvider, ElderDateSwitcherComponent, ElderDateTimeInputComponent, ElderDelayedFocusDirective, ElderDeleteActiveDirective, ElderDetailDialogComponent, ElderDetailDirective, ElderDialogConfig, ElderDialogModule, ElderDialogPanelComponent, ElderDialogService, ElderDimensionsInputComponent, ElderDropZoneComponent, ElderDurationInputComponent, ElderEntityValueAccessorUtil, ElderEnumTranslationService, ElderErrorModule, ElderEventSourceService, ElderExceptionDetailComponent, ElderExpandToggleButtonComponent, ElderExpandToggleButtonModule, ElderFileDropZoneDirective, ElderFileModule, ElderFileSelectComponent, ElderFileSelectDirective, ElderFileUploadComponent, ElderFormFieldControlBase, ElderFormFieldDenseDirective, ElderFormFieldLabelDirective, ElderFormFieldNoHintDirective, ElderFormFieldNoSpinnerDirective, ElderFormsDirectivesModule, ElderFormsModule, ElderFromFieldBase, ElderFromFieldEntityBase, ElderFromFieldMultiEntityBase, ElderGlobalSearchComponent, ElderGlobalSearchModule, ElderGlobalSearchService, ElderGridComponent, ElderGridModule, ElderGridTileDirective, ElderGridToolbarDirective, ElderHeaderComponent, ElderHeaderModule, ElderHttpClient, ElderI18nEntitiesModule, ElderIFrameModule, ElderInfiniteAutocompleteDirective, ElderInfiniteScrollDirective, ElderInfiniteScrollModule, ElderInputPatternDirective, ElderIntervalInputComponent, ElderKeyEventDirective, ElderLabelInputComponent, ElderLabelsModule, ElderLanguageConfig, ElderLanguageInterceptor, ElderLanguageModule, ElderLanguageService, ElderLanguageSwitcherComponent, ElderLocalDateInputComponent, ElderLocalTimeInputComponent, ElderLocalesDeChModule, ElderLocalizedInputComponent, ElderLocalizedInputDialogComponent, ElderLocalizedInputDialogService, ElderLocalizedInputTableComponent, ElderLocalizedTextColumnDirective, ElderLocalizedTextsDirective, ElderMasterActivationDirective, ElderMasterDetailComponent, ElderMasterDetailMode, ElderMasterDetailModule, ElderMasterDirective, ElderMaxValidator, ElderMeasuresModule, ElderMinValidator, ElderMultiEntityValueAccessorUtil, ElderMultiSelectBase, ElderMultiSelectChipsComponent, ElderMultiSelectFormField, ElderMultipleOfUtil, ElderMultipleOfValidator, ElderNavGroupComponent, ElderNavLinkComponent, ElderNavListComponent, ElderNavModule, ElderNextFocusableDirective, ElderNumberCellDirective, ElderOfflineIndicatorComponent, ElderOverlayComponent, ElderOverlayModule, ElderOverlayOriginDirective, ElderOverlayTriggerDirective, ElderPaddingDirective, ElderPanelComponent, ElderPanelModule, ElderPeriodInputComponent, ElderPipesModule, ElderPlugParentFormDirective, ElderProgressBarComponent, ElderProgressBarModule, ElderQuantityFormFieldComponent, ElderQuantityInputControlComponent, ElderQuantityModule, ElderQuantityPipe, ElderQuantityRangeValidator, ElderQuantityService, ElderQuantityTransformPipe, ElderQuestionDialogComponent, ElderRepeatPipe, ElderRepeatPipeLegacy, ElderRequiredDimensionsValidator, ElderRequiredIgnoreZeroValidator, ElderRequiredQuantityValidator, ElderRoundPipe, ElderRouteOutletDrawerService, ElderRouterOutletService, ElderRouterService, ElderSafeUrlPipe, ElderScrollContainerComponent, ElderScrollbarDirective, ElderScrollbarModule, ElderSearchBoxComponent, ElderSearchContextDirective, ElderSearchInputDirective, ElderSearchModule, ElderSearchPanelComponent, ElderSelectBase, ElderSelectChipAvatarDirective, ElderSelectChipDirective, ElderSelectComponent, ElderSelectComponentState, ElderSelectCustomInputDirective, ElderSelectFormField, ElderSelectModule, ElderSelectOnTabDirective, ElderSelectValueDirective, ElderSelectionDialogComponent, ElderSelectionDialogDirective, ElderSelectionMasterCheckboxComponent, ElderSelectionPopupTriggerAdapterDirective, ElderShellCenterDirective, ElderShellComponent, ElderShellModule, ElderShellNavigationToggleComponent, ElderShellService, ElderShellSideLeftDirective, ElderShellSideRightDirective, ElderShellSlotDirective, ElderSimpleSelectionViewComponent, ElderSimpleSelectionViewModule, ElderSingleSortComponent, ElderStackCardDirective, ElderStopEventPropagationDirective, ElderSvgViewerComponent, ElderTabDirective, ElderTabFocusTrapDirective, ElderTabGroupRoutingDirective, ElderTabModule, ElderTableActivationDirective, ElderTableComponent, ElderTableExtensionDirective, ElderTableGroup, ElderTableModel, ElderTableModelCdkTableBinding, ElderTableModelQueryGroup, ElderTableModule, ElderTableProviders, ElderTableRootDirective, ElderTableSortDirective, ElderTableToolbarDirective, ElderThemeApplierDirective, ElderThemeDirective, ElderThemeModule, ElderThemePreferenceService, ElderThemeService, ElderThemeToggleComponent, ElderTimeModule, ElderToastModule, ElderToastService, ElderTogglePanelComponent, ElderTogglePanelPrimaryDirective, ElderTogglePanelSecondaryDirective, ElderTogglePanelTriggerDirective, ElderToolbarColumnDirective, ElderToolbarComponent, ElderToolbarContentDirective, ElderToolbarModule, ElderToolbarService, ElderToolbarTitleComponent, ElderToolbarTitleService, ElderTouchedDirective, ElderTrimPipe, ElderTripleStateCheckboxDirective, ElderTruncatePipe, ElderUnitSelectDirective, ElderUnitService, ElderUrlFragment, ElderUrlFragmentModule, ElderUrlFragmentParamsService, ElderUrlFragmentSwitcherComponent, ElderValidationErrorDirective, ElderViewersModule, EntitySetPatch, ErrorUtil, ExceptionDetailCtx, FileEntry, FileListingRx, FileUploadClient, Filter, FilterContext, FilterUtil, FormFieldBaseComponent, GlobalDragDropService, HttpClientBuilder, HttpClientPristine, HttpDataTransfer, HttpDataTransferAggregateComponent, HttpDataTransferComponent, HttpDataTransferIndicatorComponent, HttpDataTransferOverviewComponent, HttpParamsBuilder, I18nBase, I18nPickAsyncPipe, I18nPickPipe, I18nText, IFrameState, IframeCloseDirective, IframeDialogComponent, IframeHostComponent, IframeService, IframeSideContentComponent, IndexedEntities, InternalRestClientConfig, Interval, IsoDurationPipe, IsoIntervalParsePipe, IsoIntervalPipe, JsonMapUtil, KafentConfig, KafentEvent, KafentEventService, KafentEventStream, KafentEventStreamDisabled, KafentEventStreamSse, KafentEventTransport, KafentModule, KafentSseEventChannel, KafentTokenProvider, KafentTokenProviderSessionStorage, KafentTopicSse, KnownElderThemes, KnownLocaleTags, LocalListDataSource, LocalPagedDataSource, LocalisationPickerService, MasterDetailService, MasterSelectionState, MatTableDataContextBinding, MatTableDataContextBindingBuilder, MultiModelBaseComponent, NextNumberUtil, Objects, OnlineStatus, Page, PageRequest, Pageable, ParseUtil, Path, PathNode, PeriodBucket, PeriodDuration, PeriodFormat, ProcessIterationContext, ProcessState, PropertyPathUtil, Quantity, QueryListBinding, QuestionDialogConfig, ReactiveEventSource, ReactiveMap, RefreshingEntity, RestClient, RestClientConfig, RestClientContinuable, RestClientList, RestClientPaged, SearchQuery, SelectionModel, SelectionModelPopupDirective, Sets, SimpleLocalisationPicker, Sort, SortOption, SortUtil, StandardToastComponent, SubBar, SuggestionProvider, TemplateCompositeControl, TemplatedSelectionDialogComponent, ThemeSpec, TimeAgoPipe, TimeDurationPipe, TimeUtil, ToIsoDateStringPipe, ToastType, TokenChunkRequest, ToolbarHeader, Translated, TranslatedConverter, TranslatedEnumValue, TranslatedText, TypedEventMessage, Unit, UnitDimension, UnitDimensionInfo, UnitInfo, UnitRegistry, UrlBuilder, UrlQueryParams, UuidUtil, ValueAccessorBase, ValueWrapper, ViewProviders, WeightPipe, alphaNumStringComparator, buildFormIntegrationProviders, createDataOptionsProvider, createSelectionModel, existingOrNewElderTableModel, isActivePagedDataContext, isContinuableDataContext, isContinuableDataSource, isDataContext, isDataSource, isDataViewMessageType, isElderEntityValueAccessor, isElderMultiEntityValueAccessor, isListDataSource, isPagedDataSource, lazySample, lazySampleTime, naturalValueComparator, newElderTableModel, proxyControlContainer, registerLocale, runInZone, themeInit };
30214
+ export { ActivationEventSource, ActiveItemEvent, Arrays, AuditedEntity, AutoStartSpec, BlobUrl, BytesFormat, BytesPerSecondFormat, BytesPipe, CardDropEvent, CardOrganizerData, CardStack, CollectionUtil, ComparatorBuilder, ConfirmDialogConfig, ContinuableListing, CsvColumnSpec, CsvSerializer, CsvSpec, CsvStreamExporter, CsvStreamExporterBuilder, CsvStreamExporterBuilderService, Currency, CurrencyCode, CurrencyUnit, CurrencyUnitRegistry, CustomDateAdapter, DataContextActivePage, DataContextAutoStarter, DataContextBase, DataContextBuilder, DataContextContinuableBase, DataContextContinuablePaged, DataContextContinuableToken, DataContextLifeCycleBinding, DataContextSelectionDirective, DataContextSimple, DataContextSnapshot, DataContextSourceEventBinding, DataContextStateIndicatorComponent, DataContextStatus, DataSourceAdapter, DataSourceBase, DataSourceChangeEvent, DataSourceChangeType, DataSourceProcessor, DataTransferFactory, DataTransferProgress, DataTransferProgressAggregate, DataTransferState, DataTransferStatus, DataViewIframeAdapterDirective, DataViewIframeComponent, DataViewMessage, DataViewMessageTypeValues, DataViewOptionsProviderBinding, DataViewSelection, DataViewSelectionInit, DateUtil, DelegateContinuableDataSource, DelegateDataSource, DelegateListDataSource, DelegatePagedDataSource, Dimensions, DrawerOutletBinding, DurationBucket, DurationFormat, ELDER_DATA_VIEW, ELDER_SELECT_BASE, ElderAccessDeniedComponent, ElderAccessDeniedModule, ElderAppHeaderComponent, ElderAuditModule, ElderAuditedEntityComponent, ElderAutoSelectFirstDirective, ElderAutocompleteComponent, ElderAutocompleteDirective, ElderAutocompleteManyDirective, ElderAutocompleteModule, ElderBadgeComponent, ElderBadgeDirective, ElderBadgeModule, ElderBlobViewerComponent, ElderBreadCrumbsComponent, ElderBreadCrumbsModule, ElderButtonGroupComponent, ElderButtonGroupModule, ElderCardComponent, ElderCardContentDirective, ElderCardHeaderActionsDirective, ElderCardHeaderComponent, ElderCardModule, ElderCardOrganizerComponent, ElderCardOrganizerModule, ElderCardPanelComponent, ElderCardStackComponent, ElderCardSubtitleDirective, ElderCardTitleDirective, ElderCheckboxState, ElderChipLabelDirective, ElderChipListSelectComponent, ElderChipListSelectModule, ElderChipsModule, ElderClearSelectDirective, ElderClipboardPutDirective, ElderClipboardService, ElderConfirmDialogComponent, ElderConnectivityModule, ElderConnectivityService, ElderContainersModule, ElderCsvExportBtnComponent, ElderCsvModule, ElderCurrencyModule, ElderCurrencyPipe, ElderDataCommonModule, ElderDataToolbarComponent, ElderDataTransferModule, ElderDataTransferService, ElderDataViewBaseComponent, ElderDataViewOptions, ElderDataViewOptionsProvider, ElderDateSwitcherComponent, ElderDateTimeInputComponent, ElderDelayedFocusDirective, ElderDeleteActiveDirective, ElderDetailDialogComponent, ElderDetailDirective, ElderDialogConfig, ElderDialogModule, ElderDialogPanelComponent, ElderDialogService, ElderDimensionsInputComponent, ElderDropZoneComponent, ElderDurationInputComponent, ElderEntityValueAccessorUtil, ElderEnumTranslationService, ElderErrorModule, ElderEventSourceService, ElderExceptionDetailComponent, ElderExpandToggleButtonComponent, ElderExpandToggleButtonModule, ElderFileDropZoneDirective, ElderFileModule, ElderFileSelectComponent, ElderFileSelectDirective, ElderFileUploadComponent, ElderFormFieldControlBase, ElderFormFieldDenseDirective, ElderFormFieldLabelDirective, ElderFormFieldNoHintDirective, ElderFormFieldNoSpinnerDirective, ElderFormsDirectivesModule, ElderFormsModule, ElderFromFieldBase, ElderFromFieldEntityBase, ElderFromFieldMultiEntityBase, ElderGlobalSearchComponent, ElderGlobalSearchModule, ElderGlobalSearchService, ElderGridComponent, ElderGridModule, ElderGridTileDirective, ElderGridToolbarDirective, ElderHeaderComponent, ElderHeaderModule, ElderHttpClient, ElderI18nEntitiesModule, ElderIFrameModule, ElderInfiniteAutocompleteDirective, ElderInfiniteScrollDirective, ElderInfiniteScrollModule, ElderInputPatternDirective, ElderIntervalInputComponent, ElderKeyEventDirective, ElderLabelInputComponent, ElderLabelsModule, ElderLanguageConfig, ElderLanguageInterceptor, ElderLanguageModule, ElderLanguageService, ElderLanguageSwitcherComponent, ElderLocalDateInputComponent, ElderLocalTimeInputComponent, ElderLocalesDeChModule, ElderLocalizedInputComponent, ElderLocalizedInputDialogComponent, ElderLocalizedInputDialogService, ElderLocalizedInputTableComponent, ElderLocalizedTextColumnDirective, ElderLocalizedTextsDirective, ElderMasterActivationDirective, ElderMasterDetailActivationEvent, ElderMasterDetailComponent, ElderMasterDetailMode, ElderMasterDetailModule, ElderMasterDetailService, ElderMasterDirective, ElderMaxValidator, ElderMeasuresModule, ElderMinValidator, ElderMultiEntityValueAccessorUtil, ElderMultiSelectBase, ElderMultiSelectChipsComponent, ElderMultiSelectFormField, ElderMultipleOfUtil, ElderMultipleOfValidator, ElderNavGroupComponent, ElderNavLinkComponent, ElderNavListComponent, ElderNavModule, ElderNextFocusableDirective, ElderNumberCellDirective, ElderOfflineIndicatorComponent, ElderOverlayComponent, ElderOverlayModule, ElderOverlayOriginDirective, ElderOverlayTriggerDirective, ElderPaddingDirective, ElderPanelComponent, ElderPanelModule, ElderPeriodInputComponent, ElderPipesModule, ElderPlugParentFormDirective, ElderProgressBarComponent, ElderProgressBarModule, ElderQuantityFormFieldComponent, ElderQuantityInputControlComponent, ElderQuantityModule, ElderQuantityPipe, ElderQuantityRangeValidator, ElderQuantityService, ElderQuantityTransformPipe, ElderQuestionDialogComponent, ElderRepeatPipe, ElderRepeatPipeLegacy, ElderRequiredDimensionsValidator, ElderRequiredIgnoreZeroValidator, ElderRequiredQuantityValidator, ElderRoundPipe, ElderRouteOutletDrawerService, ElderRouterOutletService, ElderRouterService, ElderSafeUrlPipe, ElderScrollContainerComponent, ElderScrollbarDirective, ElderScrollbarModule, ElderSearchBoxComponent, ElderSearchContextDirective, ElderSearchInputDirective, ElderSearchModule, ElderSearchPanelComponent, ElderSelectBase, ElderSelectChipAvatarDirective, ElderSelectChipDirective, ElderSelectComponent, ElderSelectComponentState, ElderSelectCustomInputDirective, ElderSelectFormField, ElderSelectModule, ElderSelectOnTabDirective, ElderSelectValueDirective, ElderSelectionDialogComponent, ElderSelectionDialogDirective, ElderSelectionMasterCheckboxComponent, ElderSelectionPopupTriggerAdapterDirective, ElderShellCenterDirective, ElderShellComponent, ElderShellModule, ElderShellNavigationToggleComponent, ElderShellService, ElderShellSideLeftDirective, ElderShellSideRightDirective, ElderShellSlotDirective, ElderSimpleSelectionViewComponent, ElderSimpleSelectionViewModule, ElderSingleSortComponent, ElderStackCardDirective, ElderStopEventPropagationDirective, ElderSvgViewerComponent, ElderTabDirective, ElderTabFocusTrapDirective, ElderTabGroupRoutingDirective, ElderTabModule, ElderTableActivationDirective, ElderTableComponent, ElderTableExtensionDirective, ElderTableGroup, ElderTableModel, ElderTableModelCdkTableBinding, ElderTableModelQueryGroup, ElderTableModule, ElderTableProviders, ElderTableRootDirective, ElderTableSortDirective, ElderTableToolbarDirective, ElderThemeApplierDirective, ElderThemeDirective, ElderThemeModule, ElderThemePreferenceService, ElderThemeService, ElderThemeToggleComponent, ElderTimeModule, ElderToastModule, ElderToastService, ElderTogglePanelComponent, ElderTogglePanelPrimaryDirective, ElderTogglePanelSecondaryDirective, ElderTogglePanelTriggerDirective, ElderToolbarColumnDirective, ElderToolbarComponent, ElderToolbarContentDirective, ElderToolbarModule, ElderToolbarService, ElderToolbarTitleComponent, ElderToolbarTitleService, ElderTouchedDirective, ElderTrimPipe, ElderTripleStateCheckboxDirective, ElderTruncatePipe, ElderUnitSelectDirective, ElderUnitService, ElderUrlFragment, ElderUrlFragmentModule, ElderUrlFragmentParamsService, ElderUrlFragmentSwitcherComponent, ElderValidationErrorDirective, ElderViewersModule, EntitySetPatch, ErrorUtil, ExceptionDetailCtx, FileEntry, FileListingRx, FileUploadClient, Filter, FilterContext, FilterUtil, FormFieldBaseComponent, GlobalDragDropService, HttpClientBuilder, HttpClientPristine, HttpDataTransfer, HttpDataTransferAggregateComponent, HttpDataTransferComponent, HttpDataTransferIndicatorComponent, HttpDataTransferOverviewComponent, HttpParamsBuilder, I18nBase, I18nPickAsyncPipe, I18nPickPipe, I18nText, IFrameState, IframeCloseDirective, IframeDialogComponent, IframeHostComponent, IframeService, IframeSideContentComponent, IndexedEntities, InternalRestClientConfig, Interval, IsoDurationPipe, IsoIntervalParsePipe, IsoIntervalPipe, ItemActivationOptions, JsonMapUtil, KafentConfig, KafentEvent, KafentEventService, KafentEventStream, KafentEventStreamDisabled, KafentEventStreamSse, KafentEventTransport, KafentModule, KafentSseEventChannel, KafentTokenProvider, KafentTokenProviderSessionStorage, KafentTopicSse, KnownElderThemes, KnownLocaleTags, LocalListDataSource, LocalPagedDataSource, LocalisationPickerService, MasterSelectionState, MatTableDataContextBinding, MatTableDataContextBindingBuilder, MultiModelBaseComponent, NextNumberUtil, Objects, OnlineStatus, Page, PageRequest, Pageable, ParseUtil, Path, PathNode, PeriodBucket, PeriodDuration, PeriodFormat, ProcessIterationContext, ProcessState, PropertyPathUtil, Quantity, QueryListBinding, QuestionDialogConfig, ReactiveEventSource, ReactiveMap, RefreshingEntity, RestClient, RestClientConfig, RestClientContinuable, RestClientList, RestClientPaged, SearchQuery, SelectionModel, SelectionModelPopupDirective, Sets, SimpleLocalisationPicker, Sort, SortOption, SortUtil, StandardToastComponent, SubBar, SuggestionProvider, TemplateCompositeControl, TemplatedSelectionDialogComponent, ThemeSpec, TimeAgoPipe, TimeDurationPipe, TimeUtil, ToIsoDateStringPipe, ToastType, TokenChunkRequest, ToolbarHeader, Translated, TranslatedConverter, TranslatedEnumValue, TranslatedText, TypedEventMessage, Unit, UnitDimension, UnitDimensionInfo, UnitInfo, UnitRegistry, UrlBuilder, UrlQueryParams, UuidUtil, ValueAccessorBase, ValueWrapper, ViewProviders, WeightPipe, alphaNumStringComparator, buildFormIntegrationProviders, createDataOptionsProvider, createSelectionModel, existingOrNewElderTableModel, isActivePagedDataContext, isContinuableDataContext, isContinuableDataSource, isDataContext, isDataSource, isDataViewMessageType, isElderEntityValueAccessor, isElderMultiEntityValueAccessor, isListDataSource, isPagedDataSource, lazySample, lazySampleTime, naturalValueComparator, newElderTableModel, proxyControlContainer, registerLocale, runInZone, themeInit };
30215
+ //# sourceMappingURL=elderbyte-ngx-starter.mjs.map
30147
30216
  //# sourceMappingURL=elderbyte-ngx-starter.mjs.map