@elderbyte/ngx-starter 21.13.0 → 21.14.0-beta.2

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.
@@ -35,7 +35,7 @@ import { MatButtonModule, MatIconButton, MatButton, MatIconAnchor, MatAnchor } f
35
35
  import * as i1$8 from '@angular/material/autocomplete';
36
36
  import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
37
37
  import { MatChipGrid, MatChipRow, MatChipRemove, MatChipInput, MatChipsModule, MatChipSet, MatChipAvatar, MatChipTrailingIcon, MatChipListbox, MatChipOption, MatChip } from '@angular/material/chips';
38
- import * as i2$3 from '@angular/material/input';
38
+ import * as i2$2 from '@angular/material/input';
39
39
  import { MatInput, MatInputModule } from '@angular/material/input';
40
40
  import { MatList, MatListSubheaderCssMatStyler, MatListItem, MatListModule } from '@angular/material/list';
41
41
  import { MatProgressBar, MatProgressBarModule } from '@angular/material/progress-bar';
@@ -53,11 +53,11 @@ import * as i1$a from '@angular/material/checkbox';
53
53
  import { MatCheckbox, MatCheckboxModule } from '@angular/material/checkbox';
54
54
  import { MatTooltipModule, MatTooltip } from '@angular/material/tooltip';
55
55
  import { MatSelect, MatOption as MatOption$1, MatSelectModule } from '@angular/material/select';
56
- import { MatColumnDef, MatRowDef, MatTable, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell, MatFooterCellDef, MatFooterCell, MatHeaderRowDef, MatHeaderRow, MatRow, MatFooterRowDef, MatFooterRow, MatTableModule } from '@angular/material/table';
56
+ import { MatTable, MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell, MatFooterCellDef, MatFooterCell, MatHeaderRowDef, MatHeaderRow, MatRowDef, MatRow, MatFooterRowDef, MatFooterRow, MatTableModule } from '@angular/material/table';
57
57
  import * as i1$7 from '@angular/cdk/table';
58
58
  import { CdkTableModule } from '@angular/cdk/table';
59
59
  import { MatPaginator, MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';
60
- import * as i2$2 from '@angular/material/sort';
60
+ import * as i4 from '@angular/material/sort';
61
61
  import { MatSortModule, MatSort, MatSortHeader } from '@angular/material/sort';
62
62
  import { __decorate, __param } from 'tslib';
63
63
  import { CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf, ScrollingModule } from '@angular/cdk/scrolling';
@@ -17157,6 +17157,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
17157
17157
  args: ['click', ['$event']]
17158
17158
  }] } });
17159
17159
 
17160
+ /**
17161
+ * Determines merge order for table column contributor groups (ascending): lower values are merged first.
17162
+ * BASE groups are laid out first, PROJECTED groups are merged afterwards.
17163
+ */
17164
+ var ElderTableGroupLayer;
17165
+ (function (ElderTableGroupLayer) {
17166
+ ElderTableGroupLayer[ElderTableGroupLayer["BASE"] = 0] = "BASE";
17167
+ ElderTableGroupLayer[ElderTableGroupLayer["PROJECTED"] = 1] = "PROJECTED";
17168
+ })(ElderTableGroupLayer || (ElderTableGroupLayer = {}));
17160
17169
  class ColumnPositionSpec {
17161
17170
  static relativeToColumn(col, position) {
17162
17171
  return new ColumnPositionSpec(position, col);
@@ -17170,8 +17179,8 @@ class ColumnPositionSpec {
17170
17179
  }
17171
17180
  }
17172
17181
  class ElderColumnGroup {
17173
- constructor(groupIndex, columnsPosition, columns) {
17174
- this.groupIndex = groupIndex;
17182
+ constructor(groupLayer, columnsPosition, columns) {
17183
+ this.groupLayer = groupLayer;
17175
17184
  this.columnsPosition = columnsPosition;
17176
17185
  this.columns = columns;
17177
17186
  }
@@ -17202,7 +17211,7 @@ class ElderColumnLayout {
17202
17211
  * *
17203
17212
  **************************************************************************/
17204
17213
  renderColumns(colGroups) {
17205
- const groupHierarchy = this.sortGroupsByIndex(colGroups);
17214
+ const groupHierarchy = this.sortGroupsByTableGroupLayer(colGroups);
17206
17215
  const sorted = [];
17207
17216
  // Now we can insert groups in defined order
17208
17217
  let previousIndex = {
@@ -17256,25 +17265,21 @@ class ElderColumnLayout {
17256
17265
  return previousGroup.startIndex;
17257
17266
  }
17258
17267
  }
17259
- sortGroupsByIndex(colGroups) {
17260
- return colGroups
17261
- .sort((a, b) => {
17262
- return naturalValueComparator(a.groupIndex, b.groupIndex);
17263
- })
17264
- .reverse();
17268
+ sortGroupsByTableGroupLayer(colGroups) {
17269
+ return colGroups.sort((a, b) => naturalValueComparator(a.groupLayer, b.groupLayer));
17265
17270
  }
17266
17271
  }
17267
17272
 
17268
17273
  class ElderTableGroup {
17269
- static create(groupIndex) {
17270
- return ElderTableGroup.of(UuidUtil.weakUuid4(), groupIndex);
17274
+ static create(groupLayer) {
17275
+ return ElderTableGroup.of(UuidUtil.weakUuid4(), groupLayer);
17271
17276
  }
17272
- static of(id, groupIndex) {
17273
- return new ElderTableGroup(id, groupIndex);
17277
+ static of(id, groupLayer) {
17278
+ return new ElderTableGroup(id, groupLayer);
17274
17279
  }
17275
- constructor(id, index) {
17280
+ constructor(id, groupLayer) {
17276
17281
  this.id = id;
17277
- this.index = index;
17282
+ this.groupLayer = groupLayer;
17278
17283
  }
17279
17284
  }
17280
17285
  class ElderTableModel {
@@ -17305,8 +17310,12 @@ class ElderTableModel {
17305
17310
  * end([])
17306
17311
  * @private
17307
17312
  */
17308
- this.displayedColumns$ = new BehaviorSubject(undefined);
17309
- this.displayedColumnsInner$ = this.renderDisplayedColumns(this.displayedColumns$, this.columnDefs$, this.selectionVisible$);
17313
+ this.manualColumns$ = new BehaviorSubject(undefined);
17314
+ this.displayedColumnsInner$ = combineLatest([
17315
+ this.manualColumns$,
17316
+ this.columnDefs$,
17317
+ this.selectionVisible$,
17318
+ ]).pipe(map(([manualColumns, columnDefs, selectionVisible]) => this.buildDisplayedColumns(manualColumns, columnDefs, selectionVisible)));
17310
17319
  }
17311
17320
  /***************************************************************************
17312
17321
  * *
@@ -17320,10 +17329,10 @@ class ElderTableModel {
17320
17329
  return this.selectionVisible$.getValue();
17321
17330
  }
17322
17331
  set displayedColumns(columns) {
17323
- this.displayedColumns$.next(columns);
17332
+ this.manualColumns$.next(columns);
17324
17333
  }
17325
17334
  get displayedColumns() {
17326
- return this.displayedColumns$.getValue();
17335
+ return this.manualColumns$.getValue();
17327
17336
  }
17328
17337
  /***************************************************************************
17329
17338
  * *
@@ -17340,17 +17349,17 @@ class ElderTableModel {
17340
17349
  return this._sortGroups.values$;
17341
17350
  }
17342
17351
  // ---
17343
- valuesSortedByGroupIndex(myMap, groups) {
17352
+ valuesSortedByTableGroupLayer(myMap, groups) {
17344
17353
  return Array.from(myMap.entries())
17345
17354
  .sort(([a_key], [b_key]) => {
17346
- const grpAIndex = groups.get(a_key)?.index ?? 0;
17347
- const grpBIndex = groups.get(b_key)?.index ?? 0;
17348
- return naturalValueComparator(grpAIndex, grpBIndex);
17355
+ const grpAGroupLayer = groups.get(a_key)?.groupLayer ?? ElderTableGroupLayer.PROJECTED;
17356
+ const grpBGroupLayer = groups.get(b_key)?.groupLayer ?? ElderTableGroupLayer.PROJECTED;
17357
+ return naturalValueComparator(grpAGroupLayer, grpBGroupLayer);
17349
17358
  })
17350
17359
  .map(([a_key, a_value]) => a_value);
17351
17360
  }
17352
17361
  sortAndFlatten(reactMap) {
17353
- return reactMap.map$.pipe(map((myMap) => this.valuesSortedByGroupIndex(myMap, this._groups)), map((columns) => CollectionUtil.flatten(columns)));
17362
+ return reactMap.map$.pipe(map((myMap) => this.valuesSortedByTableGroupLayer(myMap, this._groups)), map((columns) => CollectionUtil.flatten(columns)));
17354
17363
  }
17355
17364
  /*
17356
17365
  public get sortHeaders$(): Observable<MatSortHeader[]> {
@@ -17396,24 +17405,22 @@ class ElderTableModel {
17396
17405
  * Private methods *
17397
17406
  * *
17398
17407
  **************************************************************************/
17399
- renderDisplayedColumns(userDefinedColumns$, columnDefs$, selectionVisible$) {
17400
- return combineLatest([userDefinedColumns$, columnDefs$, selectionVisible$]).pipe(map(([displayedColumns, columnDefs, selectionVisible]) => {
17401
- let columns = displayedColumns;
17402
- if (!columns) {
17403
- columns = [];
17404
- // If the user did not define columns to display
17405
- // Assume he wants all his own columns in given order
17406
- if (columnDefs) {
17407
- columnDefs.forEach((col) => {
17408
- columns.push(col.name);
17409
- });
17410
- }
17411
- }
17412
- if (this.selectionVisible) {
17413
- columns = ['select', ...columns];
17408
+ buildDisplayedColumns(manualColumns, columnDefs, selectionVisible) {
17409
+ let columns = manualColumns;
17410
+ if (!columns) {
17411
+ columns = [];
17412
+ // If the user did not define manual columns to display
17413
+ // Assume he wants all his own columns in given order
17414
+ if (columnDefs) {
17415
+ columnDefs.forEach((col) => {
17416
+ columns.push(col.name);
17417
+ });
17414
17418
  }
17415
- return columns;
17416
- }));
17419
+ }
17420
+ if (selectionVisible) {
17421
+ columns = ['select', ...columns];
17422
+ }
17423
+ return columns;
17417
17424
  }
17418
17425
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderTableModel, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
17419
17426
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderTableModel }); }
@@ -17563,8 +17570,8 @@ class ElderTableModelQueryGroup {
17563
17570
  * Static Builder *
17564
17571
  * *
17565
17572
  **************************************************************************/
17566
- static start(tableModel, groupIndex) {
17567
- return new ElderTableModelQueryGroup(tableModel, ElderTableGroup.create(groupIndex));
17573
+ static start(tableModel, groupLayer) {
17574
+ return new ElderTableModelQueryGroup(tableModel, ElderTableGroup.create(groupLayer));
17568
17575
  }
17569
17576
  /***************************************************************************
17570
17577
  * *
@@ -17633,7 +17640,7 @@ class ElderTableModelQueryGroup {
17633
17640
  return columns.map((c) => new ElderTableColumnDirective(c));
17634
17641
  }
17635
17642
  updateColumnDefs(columns) {
17636
- this.tableModel.updateColumnGroup(this.group, new ElderColumnGroup(this.group.index, this.columnsPosition, columns));
17643
+ this.tableModel.updateColumnGroup(this.group, new ElderColumnGroup(this.group.groupLayer, this.columnsPosition, columns));
17637
17644
  }
17638
17645
  updateRowDefs(rows) {
17639
17646
  this.tableModel.updateRowDefs(this.group, rows);
@@ -17989,86 +17996,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
17989
17996
  args: [{ selector: 'elder-data-navigation', imports: [ElderContinuatorComponent, MatPaginator], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"elder-data-navigation-bar layout-row flex-none place-end-center gap-md\">\n @if (isContinuable) {\n <elder-continuator\n [loadedCount]=\"viewData()?.length\"\n [total]=\"total()\"\n [canLoadMore]=\"canLoadMore()\"\n [chunkSizeOptions]=\"pageSizeOptions()\"\n [chunkSize]=\"currentChunkSize()\"\n (loadMoreRequested)=\"loadMore()\"\n ></elder-continuator>\n } @else if (isActivePaged) {\n @if (currentPage(); as page) {\n <mat-paginator\n class=\"flex-none\"\n [length]=\"total()\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n >\n </mat-paginator>\n }\n } @else {\n <span class=\"mat-caption noselect pr-md\" style=\"color: var(--md-sys-color-outline)\">\n {{ viewData()?.length }}\n </span>\n }\n</div>\n", styles: [".elder-data-navigation-bar{height:var(--elder-data-element-footer-height);overflow:hidden}\n"] }]
17990
17997
  }], ctorParameters: () => [], propDecorators: { matPaginator: [{ type: i0.ViewChild, args: [i0.forwardRef(() => MatPaginator), { isSignal: true }] }], elderContinuator: [{ type: i0.ViewChild, args: [i0.forwardRef(() => ElderContinuatorComponent), { isSignal: true }] }] } });
17991
17998
 
17992
- /**
17993
- * Allows to extend an ElderTable from a parent component.
17994
- *
17995
- */
17996
- class ElderTableExtensionDirective {
17997
- /***************************************************************************
17998
- * *
17999
- * Constructor *
18000
- * *
18001
- **************************************************************************/
18002
- constructor(tableModel, _matSort, parentExtension) {
18003
- this.tableModel = tableModel;
18004
- this._matSort = _matSort;
18005
- this.parentExtension = parentExtension;
18006
- /***************************************************************************
18007
- * *
18008
- * Fields *
18009
- * *
18010
- **************************************************************************/
18011
- this.logger = LoggerFactory.getLogger(this.constructor.name);
18012
- this.columnsPosition = ColumnPositionSpec.relativeToPrevGroup('start');
18013
- this.destroy$ = new Subject();
18014
- this._extensionGroupIndex = (parentExtension?.extensionGroupIndex ?? 0) + 1;
18015
- if (this._matSort) {
18016
- this._matSort.disableClear = true;
18017
- }
18018
- }
18019
- /***************************************************************************
18020
- * *
18021
- * Life Cycle *
18022
- * *
18023
- **************************************************************************/
18024
- ngAfterContentInit() {
18025
- ElderTableModelQueryGroup.start(this.tableModel, this.extensionGroupIndex)
18026
- .withColumnsPosition(this.columnsPosition)
18027
- .withColumnDefs(this.columnDefsQuery, this.elderColumnsQuery)
18028
- .withRowDefs(this.rowDefsQuery)
18029
- .withSort(this._matSort)
18030
- .bindUntil(this.destroy$);
18031
- }
18032
- ngOnDestroy() {
18033
- this.destroy$.next();
18034
- this.destroy$.complete();
18035
- }
18036
- /***************************************************************************
18037
- * *
18038
- * Properties *
18039
- * *
18040
- **************************************************************************/
18041
- get extensionGroupIndex() {
18042
- return this._extensionGroupIndex;
18043
- }
18044
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderTableExtensionDirective, deps: [{ token: ElderTableModel }, { token: i2$2.MatSort, optional: true }, { token: ElderTableExtensionDirective, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }
18045
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.15", type: ElderTableExtensionDirective, isStandalone: true, selector: "[elderTableExtension]", inputs: { columnsPosition: "columnsPosition" }, providers: [ElderTableProviders.ExistingOrNewTableModel], queries: [{ propertyName: "columnDefsQuery", predicate: MatColumnDef }, { propertyName: "elderColumnsQuery", predicate: ElderTableColumnDirective }, { propertyName: "rowDefsQuery", predicate: MatRowDef }], ngImport: i0 }); }
18046
- }
18047
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderTableExtensionDirective, decorators: [{
18048
- type: Directive,
18049
- args: [{
18050
- selector: '[elderTableExtension]',
18051
- providers: [ElderTableProviders.ExistingOrNewTableModel],
18052
- }]
18053
- }], ctorParameters: () => [{ type: ElderTableModel }, { type: i2$2.MatSort, decorators: [{
18054
- type: Optional
18055
- }] }, { type: ElderTableExtensionDirective, decorators: [{
18056
- type: Optional
18057
- }, {
18058
- type: SkipSelf
18059
- }] }], propDecorators: { columnDefsQuery: [{
18060
- type: ContentChildren,
18061
- args: [MatColumnDef]
18062
- }], elderColumnsQuery: [{
18063
- type: ContentChildren,
18064
- args: [ElderTableColumnDirective]
18065
- }], rowDefsQuery: [{
18066
- type: ContentChildren,
18067
- args: [MatRowDef]
18068
- }], columnsPosition: [{
18069
- type: Input
18070
- }] } });
18071
-
18072
17999
  /**
18073
18000
  * The table navigation bar, typically located below the table,
18074
18001
  * containing the pagination control and other table controls.
@@ -18094,10 +18021,9 @@ class ElderTableComponent extends ElderDataViewBaseComponent {
18094
18021
  * Constructor *
18095
18022
  * *
18096
18023
  **************************************************************************/
18097
- constructor(tableModel, selectionModel, dataViewOptionsProvider, matSort, parentExtension, zone, interactionController) {
18024
+ constructor(tableModel, selectionModel, dataViewOptionsProvider, matSort, zone, interactionController) {
18098
18025
  super(selectionModel, dataViewOptionsProvider, interactionController);
18099
18026
  this.tableModel = tableModel;
18100
- this.parentExtension = parentExtension;
18101
18027
  this.zone = zone;
18102
18028
  /***************************************************************************
18103
18029
  * *
@@ -18139,7 +18065,6 @@ class ElderTableComponent extends ElderDataViewBaseComponent {
18139
18065
  */
18140
18066
  this.rows$ = new BehaviorSubject([]);
18141
18067
  this._matSort = matSort;
18142
- this._extensionGroupIndex = (parentExtension?.extensionGroupIndex ?? 0) + 1;
18143
18068
  if (this._matSort) {
18144
18069
  this._matSort.disableClear = true;
18145
18070
  }
@@ -18155,7 +18080,7 @@ class ElderTableComponent extends ElderDataViewBaseComponent {
18155
18080
  ElderTableModelCdkTableBinding.of(this.tableModel).table(this.matTable).bindUntil(this.destroy$);
18156
18081
  }
18157
18082
  ngAfterContentInit() {
18158
- ElderTableModelQueryGroup.start(this.tableModel, this._extensionGroupIndex)
18083
+ ElderTableModelQueryGroup.start(this.tableModel, ElderTableGroupLayer.BASE)
18159
18084
  .withColumnsPosition(ColumnPositionSpec.relativeToPrevGroup('start'))
18160
18085
  .withColumnDefs(this.columnDefs, this.elderColumns)
18161
18086
  .withRowDefs(this.rowDefs)
@@ -18288,7 +18213,7 @@ class ElderTableComponent extends ElderDataViewBaseComponent {
18288
18213
  const rows = this.rows$.getValue();
18289
18214
  return rows.find((r) => this.getId(untracked(r.entity)) === this.getId(item));
18290
18215
  }
18291
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderTableComponent, deps: [{ token: ElderTableModel }, { token: SelectionModel, optional: true }, { token: ElderDataViewOptionsProvider, optional: true, skipSelf: true }, { token: i2$2.MatSort, optional: true }, { token: ElderTableExtensionDirective, optional: true, skipSelf: true }, { token: i0.NgZone }, { token: DataViewInteractionControllerDirective }], target: i0.ɵɵFactoryTarget.Component }); }
18216
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderTableComponent, deps: [{ token: ElderTableModel }, { token: SelectionModel, optional: true }, { token: ElderDataViewOptionsProvider, optional: true, skipSelf: true }, { token: i4.MatSort, optional: true }, { token: i0.NgZone }, { token: DataViewInteractionControllerDirective }], target: i0.ɵɵFactoryTarget.Component }); }
18292
18217
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ElderTableComponent, isStandalone: true, selector: "elder-table", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, idField: { classPropertyName: "idField", publicName: "idField", isSignal: false, isRequired: false, transformFunction: null }, removingField: { classPropertyName: "removingField", publicName: "removingField", isSignal: false, isRequired: false, transformFunction: null }, hiddenField: { classPropertyName: "hiddenField", publicName: "hiddenField", isSignal: false, isRequired: false, transformFunction: null }, keepSelection: { classPropertyName: "keepSelection", publicName: "keepSelection", isSignal: true, isRequired: false, transformFunction: null }, showFooterRow: { classPropertyName: "showFooterRow", publicName: "showFooterRow", isSignal: true, isRequired: false, transformFunction: null }, denseHorizontal: { classPropertyName: "denseHorizontal", publicName: "denseHorizontal", isSignal: true, isRequired: false, transformFunction: null }, hideHeaderRow: { classPropertyName: "hideHeaderRow", publicName: "hideHeaderRow", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: false, isRequired: false, transformFunction: null }, displayedColumns: { classPropertyName: "displayedColumns", publicName: "displayedColumns", isSignal: false, isRequired: false, transformFunction: null }, selectionVisible: { classPropertyName: "selectionVisible", publicName: "selectionVisible", isSignal: false, isRequired: false, transformFunction: null } }, providers: [
18293
18218
  ElderTableProviders.ExistingOrNewTableModel,
18294
18219
  {
@@ -18338,12 +18263,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
18338
18263
  type: Optional
18339
18264
  }, {
18340
18265
  type: SkipSelf
18341
- }] }, { type: i2$2.MatSort, decorators: [{
18342
- type: Optional
18343
- }] }, { type: ElderTableExtensionDirective, decorators: [{
18266
+ }] }, { type: i4.MatSort, decorators: [{
18344
18267
  type: Optional
18345
- }, {
18346
- type: SkipSelf
18347
18268
  }] }, { type: i0.NgZone }, { type: DataViewInteractionControllerDirective }], propDecorators: { matTable: [{
18348
18269
  type: ViewChild,
18349
18270
  args: [MatTable, { static: true }]
@@ -20305,7 +20226,7 @@ class ElderNumberCellDirective {
20305
20226
  matSortHeader.arrowPosition = 'before';
20306
20227
  }
20307
20228
  }
20308
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderNumberCellDirective, deps: [{ token: i2$2.MatSortHeader, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
20229
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderNumberCellDirective, deps: [{ token: i4.MatSortHeader, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
20309
20230
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.15", type: ElderNumberCellDirective, isStandalone: true, selector: "[elderNumberCell]", host: { properties: { "class.elder-number-cell": "true" } }, ngImport: i0 }); }
20310
20231
  }
20311
20232
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderNumberCellDirective, decorators: [{
@@ -20316,7 +20237,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
20316
20237
  '[class.elder-number-cell]': 'true',
20317
20238
  },
20318
20239
  }]
20319
- }], ctorParameters: () => [{ type: i2$2.MatSortHeader, decorators: [{
20240
+ }], ctorParameters: () => [{ type: i4.MatSortHeader, decorators: [{
20320
20241
  type: Optional
20321
20242
  }] }] });
20322
20243
 
@@ -20373,6 +20294,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
20373
20294
  type: Input
20374
20295
  }] } });
20375
20296
 
20297
+ /**
20298
+ * Adds additonal columns into an ElderTable.
20299
+ */
20300
+ class ElderProjectedColumnsDirective {
20301
+ /***************************************************************************
20302
+ * *
20303
+ * Constructor *
20304
+ * *
20305
+ **************************************************************************/
20306
+ constructor(tableModel, _matSort) {
20307
+ this.tableModel = tableModel;
20308
+ this._matSort = _matSort;
20309
+ /***************************************************************************
20310
+ * *
20311
+ * Fields *
20312
+ * *
20313
+ **************************************************************************/
20314
+ this.logger = LoggerFactory.getLogger(this.constructor.name);
20315
+ this.columnsPosition = ColumnPositionSpec.relativeToPrevGroup('start');
20316
+ this.destroy$ = new Subject();
20317
+ if (this._matSort) {
20318
+ this._matSort.disableClear = true;
20319
+ }
20320
+ }
20321
+ /***************************************************************************
20322
+ * *
20323
+ * Life Cycle *
20324
+ * *
20325
+ **************************************************************************/
20326
+ ngAfterContentInit() {
20327
+ ElderTableModelQueryGroup.start(this.tableModel, ElderTableGroupLayer.PROJECTED)
20328
+ .withColumnsPosition(this.columnsPosition)
20329
+ .withColumnDefs(this.columnDefsQuery, this.elderColumnsQuery)
20330
+ .withRowDefs(this.rowDefsQuery)
20331
+ .withSort(this._matSort)
20332
+ .bindUntil(this.destroy$);
20333
+ }
20334
+ ngOnDestroy() {
20335
+ this.destroy$.next();
20336
+ this.destroy$.complete();
20337
+ }
20338
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderProjectedColumnsDirective, deps: [{ token: ElderTableModel }, { token: i4.MatSort, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
20339
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.15", type: ElderProjectedColumnsDirective, isStandalone: true, selector: "[elderProjectedColumns]", inputs: { columnsPosition: "columnsPosition" }, providers: [ElderTableProviders.ExistingOrNewTableModel], queries: [{ propertyName: "columnDefsQuery", predicate: MatColumnDef }, { propertyName: "elderColumnsQuery", predicate: ElderTableColumnDirective }, { propertyName: "rowDefsQuery", predicate: MatRowDef }], ngImport: i0 }); }
20340
+ }
20341
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderProjectedColumnsDirective, decorators: [{
20342
+ type: Directive,
20343
+ args: [{
20344
+ selector: '[elderProjectedColumns]',
20345
+ providers: [ElderTableProviders.ExistingOrNewTableModel],
20346
+ }]
20347
+ }], ctorParameters: () => [{ type: ElderTableModel }, { type: i4.MatSort, decorators: [{
20348
+ type: Optional
20349
+ }] }], propDecorators: { columnDefsQuery: [{
20350
+ type: ContentChildren,
20351
+ args: [MatColumnDef]
20352
+ }], elderColumnsQuery: [{
20353
+ type: ContentChildren,
20354
+ args: [ElderTableColumnDirective]
20355
+ }], rowDefsQuery: [{
20356
+ type: ContentChildren,
20357
+ args: [MatRowDef]
20358
+ }], columnsPosition: [{
20359
+ type: Input
20360
+ }] } });
20361
+
20376
20362
  /**
20377
20363
  * Forces a new Elder Table Model, thus breaking this component and its children from a potential parent elder-table.
20378
20364
  * With this, nested elder-tables are possible.
@@ -20548,7 +20534,7 @@ class ElderTableModule {
20548
20534
  ElderNumberCellDirective,
20549
20535
  ElderTableActivationDirective,
20550
20536
  ElderTableRowDirective,
20551
- ElderTableExtensionDirective,
20537
+ ElderProjectedColumnsDirective,
20552
20538
  ElderTableColumnDirective,
20553
20539
  ElderTableRootDirective,
20554
20540
  ElderDeleteActiveDirective,
@@ -20559,7 +20545,7 @@ class ElderTableModule {
20559
20545
  ElderCenterCellDirective,
20560
20546
  ElderNumberCellDirective,
20561
20547
  ElderTableActivationDirective,
20562
- ElderTableExtensionDirective,
20548
+ ElderProjectedColumnsDirective,
20563
20549
  ElderTableRootDirective,
20564
20550
  ElderDeleteActiveDirective,
20565
20551
  ElderTableDropListConnectorDirective] }); }
@@ -20628,7 +20614,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
20628
20614
  ElderNumberCellDirective,
20629
20615
  ElderTableActivationDirective,
20630
20616
  ElderTableRowDirective,
20631
- ElderTableExtensionDirective,
20617
+ ElderProjectedColumnsDirective,
20632
20618
  ElderTableColumnDirective,
20633
20619
  ElderTableRootDirective,
20634
20620
  ElderDeleteActiveDirective,
@@ -20642,7 +20628,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
20642
20628
  ElderCenterCellDirective,
20643
20629
  ElderNumberCellDirective,
20644
20630
  ElderTableActivationDirective,
20645
- ElderTableExtensionDirective,
20631
+ ElderProjectedColumnsDirective,
20646
20632
  ElderTableRootDirective,
20647
20633
  ElderDeleteActiveDirective,
20648
20634
  ElderTableDropListConnectorDirective,
@@ -29328,6 +29314,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
29328
29314
  }]
29329
29315
  }] });
29330
29316
 
29317
+ class ElderScrollbarScopeDirective {
29318
+ constructor() {
29319
+ /***************************************************************************
29320
+ * *
29321
+ * State *
29322
+ * *
29323
+ **************************************************************************/
29324
+ this._wideScrollbarMode = signal(false, ...(ngDevMode ? [{ debugName: "_wideScrollbarMode" }] : /* istanbul ignore next */ []));
29325
+ /***************************************************************************
29326
+ * *
29327
+ * Template bindings *
29328
+ * *
29329
+ **************************************************************************/
29330
+ this.wideScrollbarMode = this._wideScrollbarMode.asReadonly();
29331
+ }
29332
+ /***************************************************************************
29333
+ * *
29334
+ * Public API *
29335
+ * *
29336
+ **************************************************************************/
29337
+ activateWideScrollbarMode() {
29338
+ this._wideScrollbarMode.set(true);
29339
+ }
29340
+ deactivateWideScrollbarMode() {
29341
+ this._wideScrollbarMode.set(false);
29342
+ }
29343
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderScrollbarScopeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
29344
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.15", type: ElderScrollbarScopeDirective, isStandalone: true, selector: "[elderScrollbarScope]", host: { properties: { "class.elder-scrollbar-lg": "wideScrollbarMode()" } }, ngImport: i0 }); }
29345
+ }
29346
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderScrollbarScopeDirective, decorators: [{
29347
+ type: Directive,
29348
+ args: [{
29349
+ selector: '[elderScrollbarScope]',
29350
+ host: {
29351
+ '[class.elder-scrollbar-lg]': 'wideScrollbarMode()',
29352
+ },
29353
+ }]
29354
+ }] });
29355
+
29331
29356
  /**
29332
29357
  * Bootstrap service that initializes services on startup.
29333
29358
  */
@@ -29954,7 +29979,7 @@ class ElderShellComponent {
29954
29979
  return false;
29955
29980
  }
29956
29981
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderShellComponent, deps: [{ token: ElderServicesBootstrap }, { token: ElderShellService }, { token: ElderRouteOutletDrawerService }, { token: i0.ChangeDetectorRef }, { token: GlobalDragDropService }, { token: i0.Renderer2 }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
29957
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ElderShellComponent, isStandalone: true, selector: "elder-shell", inputs: { sideNavToggleEnabled: { classPropertyName: "sideNavToggleEnabled", publicName: "sideNavToggleEnabled", isSignal: true, isRequired: false, transformFunction: null }, leftSideAutoFocus: { classPropertyName: "leftSideAutoFocus", publicName: "leftSideAutoFocus", isSignal: true, isRequired: false, transformFunction: null }, rightSideAutoFocus: { classPropertyName: "rightSideAutoFocus", publicName: "rightSideAutoFocus", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, navMenuSvgIcon: { classPropertyName: "navMenuSvgIcon", publicName: "navMenuSvgIcon", isSignal: true, isRequired: false, transformFunction: null }, menuColor: { classPropertyName: "menuColor", publicName: "menuColor", isSignal: true, isRequired: false, transformFunction: null }, menuIconColor: { classPropertyName: "menuIconColor", publicName: "menuIconColor", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "sideContentLeft", first: true, predicate: ElderShellSideLeftDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "sideContentRight", first: true, predicate: ElderShellSideRightDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "centerContent", first: true, predicate: ElderShellCenterDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "staticNavContent", first: true, predicate: ElderShellStaticNavSlotDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "rightSideDrawer", first: true, predicate: ["rightSideDetail"], descendants: true, static: true }], ngImport: i0, template: "<mat-sidenav-container\n elderThemeApplier\n class=\"full-width\"\n (backdropClick)=\"onBackdropClick($event)\"\n>\n <!-- Left Side Nav -->\n <mat-sidenav\n position=\"start\"\n mode=\"over\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"leftSideAutoFocus()\"\n [opened]=\"leftSideContentOpen()\"\n (closedStart)=\"blurNavIconFocus()\"\n (closed)=\"closeLeftSideContent()\"\n restoreFocus=\"false\"\n >\n <div class=\"layout-col full elder-side-nav\">\n <ng-container *ngTemplateOutlet=\"sideContentLeft || fallbackSideContentLeft\"></ng-container>\n </div>\n </mat-sidenav>\n\n <!-- Main Content -->\n <mat-sidenav-content>\n <div class=\"layout-col full\">\n <ng-container *ngTemplateOutlet=\"centerContent || fallbackCenterContent\"></ng-container>\n </div>\n </mat-sidenav-content>\n\n <!-- Right Side Detail -->\n <mat-sidenav\n mode=\"over\"\n #rightSideDetail\n id=\"elder-right-side-detail\"\n position=\"end\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"rightSideAutoFocus()\"\n [disableClose]=\"true\"\n (keydown.escape)=\"onEscapeRightSide($event)\"\n >\n <div class=\"layout-col full\">\n <ng-container *ngTemplateOutlet=\"sideContentRight || fallbackSideContentRight\"></ng-container>\n </div>\n </mat-sidenav>\n</mat-sidenav-container>\n\n<ng-template #fallbackSideContentLeft>\n <div class=\"layout-col flex\">\n <p class=\"noselect\">No Left Side Content Defined!</p>\n </div>\n</ng-template>\n\n<ng-template #fallbackSideContentRight>\n <router-outlet name=\"side\" class=\"router-flex\"></router-outlet>\n</ng-template>\n\n<ng-template #fallbackCenterContent>\n <div class=\"layout-col full\">\n <!-- Header -->\n <ng-container *ngTemplateOutlet=\"headerTemplate() || defaultHeaderTemplate\"></ng-container>\n\n <!-- Center -->\n <div class=\"layout-row flex\">\n <!-- Static Nav -->\n <ng-container\n *ngTemplateOutlet=\"staticNavTemplate() || defaultStaticNavTemplate\"\n ></ng-container>\n <div class=\"layout-col flex\">\n <!-- Main Content -->\n <ng-container *ngTemplateOutlet=\"centerTemplate() || defaultCenterTemplate\"></ng-container>\n </div>\n </div>\n\n <!-- Footer -->\n <ng-container *ngTemplateOutlet=\"footerTemplate() || defaultFooterTemplate\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #defaultHeaderTemplate>\n <elder-toolbar\n [color]=\"color()\"\n class=\"elder-main-toolbar flex-none\"\n style=\"max-width: 100%; min-width: 100%\"\n >\n <!-- Toolbar Prefix: Sidenav Toggle -->\n @if (sideNavToggleEnabled()) {\n <mat-toolbar\n [color]=\"menuColor()\"\n class=\"flex-none elder-toolbar-main-nav-button-container pl-lg\"\n style=\"width: auto\"\n >\n <button\n class=\"elder-logo-btn elder-toolbar-main-nav-button\"\n mat-icon-button\n [color]=\"menuIconColor()\"\n type=\"button\"\n (click)=\"toggleSideNav()\"\n [class.elder-logo-btn]=\"!!navMenuSvgIcon\"\n >\n @if (navMenuSvgIcon()) {\n <mat-icon [svgIcon]=\"navMenuSvgIcon()\"></mat-icon>\n } @else {\n <mat-icon>menu</mat-icon>\n }\n </button>\n </mat-toolbar>\n }\n </elder-toolbar>\n</ng-template>\n\n<ng-template #defaultStaticNavTemplate>\n @if (staticNavOpen()) {\n <div class=\"layout-col elder-static-nav-container\">\n <ng-container *ngTemplateOutlet=\"staticNavContent\"></ng-container>\n </div>\n }\n</ng-template>\n\n<ng-template #defaultCenterTemplate>\n <div class=\"flex layout-row\">\n <!-- Primary Router Outlet -->\n <router-outlet class=\"router-flex\"></router-outlet>\n </div>\n</ng-template>\n\n<ng-template #defaultFooterTemplate>\n <!-- Default Footer is empty -->\n</ng-template>\n", styles: ["mat-sidenav{margin:0;height:100%;overflow:hidden}mat-sidenav .elder-side-nav{min-width:350px}mat-sidenav-container{margin:0;width:100%;height:100%;overflow:hidden}.elder-logo-btn{display:flex;justify-content:center;align-items:center;padding:0!important}.elder-logo-btn .mat-icon{--mat-icon-button-icon-size: 48px !important;height:var(--mat-icon-button-icon-size);width:var(--mat-icon-button-icon-size)}\n"], dependencies: [{ kind: "component", type: MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "directive", type: ElderThemeApplierDirective, selector: "[elderThemeApplier]" }, { kind: "component", type: MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: ElderToolbarComponent, selector: "elder-toolbar", inputs: ["color"] }, { kind: "component", type: MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29982
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ElderShellComponent, isStandalone: true, selector: "elder-shell", inputs: { sideNavToggleEnabled: { classPropertyName: "sideNavToggleEnabled", publicName: "sideNavToggleEnabled", isSignal: true, isRequired: false, transformFunction: null }, leftSideAutoFocus: { classPropertyName: "leftSideAutoFocus", publicName: "leftSideAutoFocus", isSignal: true, isRequired: false, transformFunction: null }, rightSideAutoFocus: { classPropertyName: "rightSideAutoFocus", publicName: "rightSideAutoFocus", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, navMenuSvgIcon: { classPropertyName: "navMenuSvgIcon", publicName: "navMenuSvgIcon", isSignal: true, isRequired: false, transformFunction: null }, menuColor: { classPropertyName: "menuColor", publicName: "menuColor", isSignal: true, isRequired: false, transformFunction: null }, menuIconColor: { classPropertyName: "menuIconColor", publicName: "menuIconColor", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "sideContentLeft", first: true, predicate: ElderShellSideLeftDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "sideContentRight", first: true, predicate: ElderShellSideRightDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "centerContent", first: true, predicate: ElderShellCenterDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "staticNavContent", first: true, predicate: ElderShellStaticNavSlotDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "rightSideDrawer", first: true, predicate: ["rightSideDetail"], descendants: true, static: true }], hostDirectives: [{ directive: ElderScrollbarScopeDirective }], ngImport: i0, template: "<mat-sidenav-container\n elderThemeApplier\n class=\"full-width\"\n (backdropClick)=\"onBackdropClick($event)\"\n>\n <!-- Left Side Nav -->\n <mat-sidenav\n position=\"start\"\n mode=\"over\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"leftSideAutoFocus()\"\n [opened]=\"leftSideContentOpen()\"\n (closedStart)=\"blurNavIconFocus()\"\n (closed)=\"closeLeftSideContent()\"\n restoreFocus=\"false\"\n >\n <div class=\"layout-col full elder-side-nav\">\n <ng-container *ngTemplateOutlet=\"sideContentLeft || fallbackSideContentLeft\"></ng-container>\n </div>\n </mat-sidenav>\n\n <!-- Main Content -->\n <mat-sidenav-content>\n <div class=\"layout-col full\">\n <ng-container *ngTemplateOutlet=\"centerContent || fallbackCenterContent\"></ng-container>\n </div>\n </mat-sidenav-content>\n\n <!-- Right Side Detail -->\n <mat-sidenav\n mode=\"over\"\n #rightSideDetail\n id=\"elder-right-side-detail\"\n position=\"end\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"rightSideAutoFocus()\"\n [disableClose]=\"true\"\n (keydown.escape)=\"onEscapeRightSide($event)\"\n >\n <div class=\"layout-col full\">\n <ng-container *ngTemplateOutlet=\"sideContentRight || fallbackSideContentRight\"></ng-container>\n </div>\n </mat-sidenav>\n</mat-sidenav-container>\n\n<ng-template #fallbackSideContentLeft>\n <div class=\"layout-col flex\">\n <p class=\"noselect\">No Left Side Content Defined!</p>\n </div>\n</ng-template>\n\n<ng-template #fallbackSideContentRight>\n <router-outlet name=\"side\" class=\"router-flex\"></router-outlet>\n</ng-template>\n\n<ng-template #fallbackCenterContent>\n <div class=\"layout-col full\">\n <!-- Header -->\n <ng-container *ngTemplateOutlet=\"headerTemplate() || defaultHeaderTemplate\"></ng-container>\n\n <!-- Center -->\n <div class=\"layout-row flex\">\n <!-- Static Nav -->\n <ng-container\n *ngTemplateOutlet=\"staticNavTemplate() || defaultStaticNavTemplate\"\n ></ng-container>\n <div class=\"layout-col flex\">\n <!-- Main Content -->\n <ng-container *ngTemplateOutlet=\"centerTemplate() || defaultCenterTemplate\"></ng-container>\n </div>\n </div>\n\n <!-- Footer -->\n <ng-container *ngTemplateOutlet=\"footerTemplate() || defaultFooterTemplate\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #defaultHeaderTemplate>\n <elder-toolbar\n [color]=\"color()\"\n class=\"elder-main-toolbar flex-none\"\n style=\"max-width: 100%; min-width: 100%\"\n >\n <!-- Toolbar Prefix: Sidenav Toggle -->\n @if (sideNavToggleEnabled()) {\n <mat-toolbar\n [color]=\"menuColor()\"\n class=\"flex-none elder-toolbar-main-nav-button-container pl-lg\"\n style=\"width: auto\"\n >\n <button\n class=\"elder-logo-btn elder-toolbar-main-nav-button\"\n mat-icon-button\n [color]=\"menuIconColor()\"\n type=\"button\"\n (click)=\"toggleSideNav()\"\n [class.elder-logo-btn]=\"!!navMenuSvgIcon\"\n >\n @if (navMenuSvgIcon()) {\n <mat-icon [svgIcon]=\"navMenuSvgIcon()\"></mat-icon>\n } @else {\n <mat-icon>menu</mat-icon>\n }\n </button>\n </mat-toolbar>\n }\n </elder-toolbar>\n</ng-template>\n\n<ng-template #defaultStaticNavTemplate>\n @if (staticNavOpen()) {\n <div class=\"layout-col elder-static-nav-container\">\n <ng-container *ngTemplateOutlet=\"staticNavContent\"></ng-container>\n </div>\n }\n</ng-template>\n\n<ng-template #defaultCenterTemplate>\n <div class=\"flex layout-row\">\n <!-- Primary Router Outlet -->\n <router-outlet class=\"router-flex\"></router-outlet>\n </div>\n</ng-template>\n\n<ng-template #defaultFooterTemplate>\n <!-- Default Footer is empty -->\n</ng-template>\n", styles: ["mat-sidenav{margin:0;height:100%;overflow:hidden}mat-sidenav .elder-side-nav{min-width:350px}mat-sidenav-container{margin:0;width:100%;height:100%;overflow:hidden}.elder-logo-btn{display:flex;justify-content:center;align-items:center;padding:0!important}.elder-logo-btn .mat-icon{--mat-icon-button-icon-size: 48px !important;height:var(--mat-icon-button-icon-size);width:var(--mat-icon-button-icon-size)}\n"], dependencies: [{ kind: "component", type: MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "directive", type: ElderThemeApplierDirective, selector: "[elderThemeApplier]" }, { kind: "component", type: MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: ElderToolbarComponent, selector: "elder-toolbar", inputs: ["color"] }, { kind: "component", type: MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29958
29983
  }
29959
29984
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderShellComponent, decorators: [{
29960
29985
  type: Component,
@@ -29969,7 +29994,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
29969
29994
  MatToolbar,
29970
29995
  MatIconButton,
29971
29996
  MatIcon,
29972
- ], template: "<mat-sidenav-container\n elderThemeApplier\n class=\"full-width\"\n (backdropClick)=\"onBackdropClick($event)\"\n>\n <!-- Left Side Nav -->\n <mat-sidenav\n position=\"start\"\n mode=\"over\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"leftSideAutoFocus()\"\n [opened]=\"leftSideContentOpen()\"\n (closedStart)=\"blurNavIconFocus()\"\n (closed)=\"closeLeftSideContent()\"\n restoreFocus=\"false\"\n >\n <div class=\"layout-col full elder-side-nav\">\n <ng-container *ngTemplateOutlet=\"sideContentLeft || fallbackSideContentLeft\"></ng-container>\n </div>\n </mat-sidenav>\n\n <!-- Main Content -->\n <mat-sidenav-content>\n <div class=\"layout-col full\">\n <ng-container *ngTemplateOutlet=\"centerContent || fallbackCenterContent\"></ng-container>\n </div>\n </mat-sidenav-content>\n\n <!-- Right Side Detail -->\n <mat-sidenav\n mode=\"over\"\n #rightSideDetail\n id=\"elder-right-side-detail\"\n position=\"end\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"rightSideAutoFocus()\"\n [disableClose]=\"true\"\n (keydown.escape)=\"onEscapeRightSide($event)\"\n >\n <div class=\"layout-col full\">\n <ng-container *ngTemplateOutlet=\"sideContentRight || fallbackSideContentRight\"></ng-container>\n </div>\n </mat-sidenav>\n</mat-sidenav-container>\n\n<ng-template #fallbackSideContentLeft>\n <div class=\"layout-col flex\">\n <p class=\"noselect\">No Left Side Content Defined!</p>\n </div>\n</ng-template>\n\n<ng-template #fallbackSideContentRight>\n <router-outlet name=\"side\" class=\"router-flex\"></router-outlet>\n</ng-template>\n\n<ng-template #fallbackCenterContent>\n <div class=\"layout-col full\">\n <!-- Header -->\n <ng-container *ngTemplateOutlet=\"headerTemplate() || defaultHeaderTemplate\"></ng-container>\n\n <!-- Center -->\n <div class=\"layout-row flex\">\n <!-- Static Nav -->\n <ng-container\n *ngTemplateOutlet=\"staticNavTemplate() || defaultStaticNavTemplate\"\n ></ng-container>\n <div class=\"layout-col flex\">\n <!-- Main Content -->\n <ng-container *ngTemplateOutlet=\"centerTemplate() || defaultCenterTemplate\"></ng-container>\n </div>\n </div>\n\n <!-- Footer -->\n <ng-container *ngTemplateOutlet=\"footerTemplate() || defaultFooterTemplate\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #defaultHeaderTemplate>\n <elder-toolbar\n [color]=\"color()\"\n class=\"elder-main-toolbar flex-none\"\n style=\"max-width: 100%; min-width: 100%\"\n >\n <!-- Toolbar Prefix: Sidenav Toggle -->\n @if (sideNavToggleEnabled()) {\n <mat-toolbar\n [color]=\"menuColor()\"\n class=\"flex-none elder-toolbar-main-nav-button-container pl-lg\"\n style=\"width: auto\"\n >\n <button\n class=\"elder-logo-btn elder-toolbar-main-nav-button\"\n mat-icon-button\n [color]=\"menuIconColor()\"\n type=\"button\"\n (click)=\"toggleSideNav()\"\n [class.elder-logo-btn]=\"!!navMenuSvgIcon\"\n >\n @if (navMenuSvgIcon()) {\n <mat-icon [svgIcon]=\"navMenuSvgIcon()\"></mat-icon>\n } @else {\n <mat-icon>menu</mat-icon>\n }\n </button>\n </mat-toolbar>\n }\n </elder-toolbar>\n</ng-template>\n\n<ng-template #defaultStaticNavTemplate>\n @if (staticNavOpen()) {\n <div class=\"layout-col elder-static-nav-container\">\n <ng-container *ngTemplateOutlet=\"staticNavContent\"></ng-container>\n </div>\n }\n</ng-template>\n\n<ng-template #defaultCenterTemplate>\n <div class=\"flex layout-row\">\n <!-- Primary Router Outlet -->\n <router-outlet class=\"router-flex\"></router-outlet>\n </div>\n</ng-template>\n\n<ng-template #defaultFooterTemplate>\n <!-- Default Footer is empty -->\n</ng-template>\n", styles: ["mat-sidenav{margin:0;height:100%;overflow:hidden}mat-sidenav .elder-side-nav{min-width:350px}mat-sidenav-container{margin:0;width:100%;height:100%;overflow:hidden}.elder-logo-btn{display:flex;justify-content:center;align-items:center;padding:0!important}.elder-logo-btn .mat-icon{--mat-icon-button-icon-size: 48px !important;height:var(--mat-icon-button-icon-size);width:var(--mat-icon-button-icon-size)}\n"] }]
29997
+ ], hostDirectives: [ElderScrollbarScopeDirective], template: "<mat-sidenav-container\n elderThemeApplier\n class=\"full-width\"\n (backdropClick)=\"onBackdropClick($event)\"\n>\n <!-- Left Side Nav -->\n <mat-sidenav\n position=\"start\"\n mode=\"over\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"leftSideAutoFocus()\"\n [opened]=\"leftSideContentOpen()\"\n (closedStart)=\"blurNavIconFocus()\"\n (closed)=\"closeLeftSideContent()\"\n restoreFocus=\"false\"\n >\n <div class=\"layout-col full elder-side-nav\">\n <ng-container *ngTemplateOutlet=\"sideContentLeft || fallbackSideContentLeft\"></ng-container>\n </div>\n </mat-sidenav>\n\n <!-- Main Content -->\n <mat-sidenav-content>\n <div class=\"layout-col full\">\n <ng-container *ngTemplateOutlet=\"centerContent || fallbackCenterContent\"></ng-container>\n </div>\n </mat-sidenav-content>\n\n <!-- Right Side Detail -->\n <mat-sidenav\n mode=\"over\"\n #rightSideDetail\n id=\"elder-right-side-detail\"\n position=\"end\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"rightSideAutoFocus()\"\n [disableClose]=\"true\"\n (keydown.escape)=\"onEscapeRightSide($event)\"\n >\n <div class=\"layout-col full\">\n <ng-container *ngTemplateOutlet=\"sideContentRight || fallbackSideContentRight\"></ng-container>\n </div>\n </mat-sidenav>\n</mat-sidenav-container>\n\n<ng-template #fallbackSideContentLeft>\n <div class=\"layout-col flex\">\n <p class=\"noselect\">No Left Side Content Defined!</p>\n </div>\n</ng-template>\n\n<ng-template #fallbackSideContentRight>\n <router-outlet name=\"side\" class=\"router-flex\"></router-outlet>\n</ng-template>\n\n<ng-template #fallbackCenterContent>\n <div class=\"layout-col full\">\n <!-- Header -->\n <ng-container *ngTemplateOutlet=\"headerTemplate() || defaultHeaderTemplate\"></ng-container>\n\n <!-- Center -->\n <div class=\"layout-row flex\">\n <!-- Static Nav -->\n <ng-container\n *ngTemplateOutlet=\"staticNavTemplate() || defaultStaticNavTemplate\"\n ></ng-container>\n <div class=\"layout-col flex\">\n <!-- Main Content -->\n <ng-container *ngTemplateOutlet=\"centerTemplate() || defaultCenterTemplate\"></ng-container>\n </div>\n </div>\n\n <!-- Footer -->\n <ng-container *ngTemplateOutlet=\"footerTemplate() || defaultFooterTemplate\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #defaultHeaderTemplate>\n <elder-toolbar\n [color]=\"color()\"\n class=\"elder-main-toolbar flex-none\"\n style=\"max-width: 100%; min-width: 100%\"\n >\n <!-- Toolbar Prefix: Sidenav Toggle -->\n @if (sideNavToggleEnabled()) {\n <mat-toolbar\n [color]=\"menuColor()\"\n class=\"flex-none elder-toolbar-main-nav-button-container pl-lg\"\n style=\"width: auto\"\n >\n <button\n class=\"elder-logo-btn elder-toolbar-main-nav-button\"\n mat-icon-button\n [color]=\"menuIconColor()\"\n type=\"button\"\n (click)=\"toggleSideNav()\"\n [class.elder-logo-btn]=\"!!navMenuSvgIcon\"\n >\n @if (navMenuSvgIcon()) {\n <mat-icon [svgIcon]=\"navMenuSvgIcon()\"></mat-icon>\n } @else {\n <mat-icon>menu</mat-icon>\n }\n </button>\n </mat-toolbar>\n }\n </elder-toolbar>\n</ng-template>\n\n<ng-template #defaultStaticNavTemplate>\n @if (staticNavOpen()) {\n <div class=\"layout-col elder-static-nav-container\">\n <ng-container *ngTemplateOutlet=\"staticNavContent\"></ng-container>\n </div>\n }\n</ng-template>\n\n<ng-template #defaultCenterTemplate>\n <div class=\"flex layout-row\">\n <!-- Primary Router Outlet -->\n <router-outlet class=\"router-flex\"></router-outlet>\n </div>\n</ng-template>\n\n<ng-template #defaultFooterTemplate>\n <!-- Default Footer is empty -->\n</ng-template>\n", styles: ["mat-sidenav{margin:0;height:100%;overflow:hidden}mat-sidenav .elder-side-nav{min-width:350px}mat-sidenav-container{margin:0;width:100%;height:100%;overflow:hidden}.elder-logo-btn{display:flex;justify-content:center;align-items:center;padding:0!important}.elder-logo-btn .mat-icon{--mat-icon-button-icon-size: 48px !important;height:var(--mat-icon-button-icon-size);width:var(--mat-icon-button-icon-size)}\n"] }]
29973
29998
  }], ctorParameters: () => [{ type: ElderServicesBootstrap }, { type: ElderShellService }, { type: ElderRouteOutletDrawerService }, { type: i0.ChangeDetectorRef }, { type: GlobalDragDropService }, { type: i0.Renderer2 }, { type: i0.DestroyRef }], propDecorators: { sideNavToggleEnabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "sideNavToggleEnabled", required: false }] }], leftSideAutoFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "leftSideAutoFocus", required: false }] }], rightSideAutoFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "rightSideAutoFocus", required: false }] }], sideContentLeft: [{
29974
29999
  type: ContentChild,
29975
30000
  args: [ElderShellSideLeftDirective, { read: TemplateRef, static: true }]
@@ -32407,7 +32432,7 @@ class ElderIntervalPickerComponent {
32407
32432
  }
32408
32433
  }
32409
32434
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderIntervalPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32410
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ElderIntervalPickerComponent, isStandalone: true, selector: "elder-interval-picker", inputs: { emitType: { classPropertyName: "emitType", publicName: "emitType", isSignal: true, isRequired: false, transformFunction: null }, autoEmitMode: { classPropertyName: "autoEmitMode", publicName: "autoEmitMode", isSignal: true, isRequired: false, transformFunction: null }, intervalInputMode: { classPropertyName: "intervalInputMode", publicName: "intervalInputMode", isSignal: true, isRequired: false, transformFunction: null }, showAnchor: { classPropertyName: "showAnchor", publicName: "showAnchor", isSignal: true, isRequired: false, transformFunction: null }, anchorReadOnly: { classPropertyName: "anchorReadOnly", publicName: "anchorReadOnly", isSignal: true, isRequired: false, transformFunction: null }, externalAnchorDateTime: { classPropertyName: "externalAnchorDateTime", publicName: "externalAnchorDateTime", isSignal: true, isRequired: false, transformFunction: null }, externalInterval: { classPropertyName: "externalInterval", publicName: "externalInterval", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { intervalChange: "intervalChange" }, providers: [{ provide: DateAdapter, useClass: CustomDateAdapter }], viewQueries: [{ propertyName: "calendarStart", first: true, predicate: ["rangeCalendarStart"], descendants: true }, { propertyName: "calendarEnd", first: true, predicate: ["rangeCalendarEnd"], descendants: true }, { propertyName: "calendarStartElRef", first: true, predicate: ["rangeCalendarStart"], descendants: true, read: ElementRef }, { propertyName: "calendarEndElRef", first: true, predicate: ["rangeCalendarEnd"], descendants: true, read: ElementRef }, { propertyName: "startDateInput", first: true, predicate: ["startDateInput"], descendants: true }, { propertyName: "endDateInput", first: true, predicate: ["endDateInput"], descendants: true }], ngImport: i0, template: "<div class=\"interval-picker-component p-md layout-col gap-xxl\">\n <div class=\"layout-row gap-xxl place-between-start\" style=\"gap: 5%\">\n <div class=\"layout-col gap-md pt-xs\">\n <div class=\"layout-col\">\n <div class=\"layout-row select-buttons-container gap-sm\">\n <div class=\"layout-col gap-xs place-start-stretch\">\n <button mat-button type=\"button\" (click)=\"controller.select.selectCurrentDay()\">\n @if (presenter.isFixedAnchorDateSet()) {\n {{ 'intervalPicker.anchorDay' | translate }}\n } @else {\n {{ 'intervalPicker.today' | translate }}\n }\n </button>\n <button mat-button type=\"button\" (click)=\"controller.select.selectYesterday()\">\n @if (presenter.isFixedAnchorDateSet()) {\n {{ 'intervalPicker.last' | translate }} 1 {{ 'intervalPicker.day' | translate }}\n } @else {\n {{ 'intervalPicker.yesterday' | translate }}\n }\n </button>\n <button\n mat-button\n type=\"button\"\n (click)=\"controller.select.selectLastSevenDaysIncludingToday()\"\n >\n {{ 'intervalPicker.last' | translate }} 7\n {{ 'intervalPicker.days' | translate }}\n </button>\n <button\n mat-button\n type=\"button\"\n (click)=\"controller.select.selectLastThirtyDaysIncludingToday()\"\n >\n {{ 'intervalPicker.last' | translate }} 30\n {{ 'intervalPicker.days' | translate }}\n </button>\n <button\n mat-button\n type=\"button\"\n (click)=\"controller.select.selectLast365daysIncludingToday()\"\n >\n {{ 'intervalPicker.last' | translate }} 365\n {{ 'intervalPicker.days' | translate }}\n </button>\n @if (intervalInputMode() === 'date-time-range') {\n <div class=\"pt-sm\"></div>\n <button mat-button type=\"button\" (click)=\"controller.select.selectLastFiveMinutes()\">\n {{ 'intervalPicker.last' | translate }} 5\n {{ 'intervalPicker.minutes' | translate }}\n </button>\n <button mat-button type=\"button\" (click)=\"controller.select.selectLastHour()\">\n {{ 'intervalPicker.last' | translate }} {{ 'intervalPicker.hour' | translate }}\n </button>\n <button mat-button type=\"button\" (click)=\"controller.select.selectLast24Hours()\">\n {{ 'intervalPicker.last' | translate }} 24\n {{ 'intervalPicker.hours' | translate }}\n </button>\n }\n </div>\n </div>\n </div>\n </div>\n <div class=\"layout-col\">\n <!-- smart shift -->\n <div class=\"layout-row place-around-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.smartShift(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-smart-shift-left\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ presenter.smartShiftMessage() }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.smartShift(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-smart-shift-right\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <!-- calendars and input controls -->\n <div\n class=\"layout-row place-around-center\"\n style=\"align-items: flex-start; min-height: 280px\"\n >\n <mat-calendar\n #rangeCalendarStart\n style=\"width: 210px; max-width: 100%\"\n [selected]=\"presenter.dateRangeForCalendar()\"\n (selectedChange)=\"controller.calendar.setStartDateFromJSDate($event)\"\n [maxDate]=\"presenter.endDateTimeAsJSDate()\"\n [dateClass]=\"presenter.calendarAnchorDateCssClassFn\"\n >\n </mat-calendar>\n <mat-calendar\n #rangeCalendarEnd\n style=\"width: 210px; max-width: 100%\"\n [selected]=\"presenter.dateRangeForCalendar()\"\n (selectedChange)=\"controller.calendar.setEndDateFromJSDate($event)\"\n [minDate]=\"presenter.startDateTimeAsJSDate()\"\n [dateClass]=\"presenter.calendarAnchorDateCssClassFn\"\n >\n </mat-calendar>\n </div>\n <div class=\"layout-row place-around-center gap-xl pt-sm\">\n <div class=\"layout-row place-around-center\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.startDate' | translate }}</mat-label>\n <input\n #startDateInput\n name=\"startDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.startDateHtmlString()\"\n (ngModelChange)=\"controller.form.setStartDateFromString($event)\"\n />\n </mat-form-field>\n </div>\n <div class=\"layout-row place-around-center\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.endDate' | translate }}</mat-label>\n <input\n #endDateInput\n name=\"endDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.endDateHtmlString()\"\n (ngModelChange)=\"controller.form.setEndDateFromString($event)\"\n />\n </mat-form-field>\n </div>\n </div>\n @if (intervalInputMode() === 'date-time-range') {\n <div class=\"layout-row place-around-center gap-xl pt-sm\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.startTime' | translate }}</mat-label>\n <input\n name=\"startTimeInput\"\n matInput\n type=\"time\"\n #startTimeControl=\"ngModel\"\n step=\"1\"\n [ngModel]=\"presenter.startTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setStartTimeFromString($event)\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"controller.clearStartTime()\"\n [disabled]=\"!presenter.isStartTimeSetAndNotMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.endTime' | translate }}</mat-label>\n <input\n name=\"endTimeInput\"\n matInput\n type=\"time\"\n #endTimeControl=\"ngModel\"\n step=\"1\"\n [ngModel]=\"presenter.endTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setEndTimeFromString($event)\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"controller.clearEndTime()\"\n [disabled]=\"!presenter.isEndTimeSetAndNotMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n }\n <br />\n </div>\n <div class=\"pt-xs\" style=\"width: 25%\">\n <div class=\"layout-col gap-lg\">\n <div class=\"layout-col gap-xs place-start-start\">\n <!-- select current -->\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentWeek()\">\n {{ 'intervalPicker.currentPeriod.week' | translate }}\n </button>\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentMonth()\">\n {{ 'intervalPicker.currentPeriod.month' | translate }}\n </button>\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentQuarter()\">\n {{ 'intervalPicker.currentPeriod.quarter' | translate }}\n </button>\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentYear()\">\n {{ 'intervalPicker.currentPeriod.year' | translate }}\n </button>\n </div>\n <div class=\"fixed-shifts-container\">\n <div class=\"layout-col place-start-stretch\">\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftDay(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-day-left\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.day' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftDay(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-day-right\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMonth(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-month-left\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.month' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMonth(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-month-right\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftYear(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-year-left\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.year' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftYear(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-year-right\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n\n @if (true) {\n <!-- shift minute -->\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMinute(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-minute-left\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.minute' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMinute(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-minute-right\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <!-- shift hour -->\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftHour(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-hour-left\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.hour' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftHour(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-hour-right\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"layout-row place-between-center gap-xxl pt-sm\">\n <div>\n @if (showAnchor()) {\n <div class=\"layout-row flex-none gap-md\">\n <mat-menu #anchorMenu=\"matMenu\">\n @if (presenter.startDateHtmlString()) {\n <button\n type=\"button\"\n mat-menu-item\n (click)=\"controller.anchor.setFixedAnchorPointToEndDateTime()\"\n [disabled]=\"!presenter.startDateHtmlString()\"\n >\n <mat-icon class=\"material-symbols-outlined\">login</mat-icon>\n <span>{{ 'intervalPicker.endDate' | translate }}</span>\n </button>\n }\n @if (presenter.endDateHtmlString()) {\n <button\n type=\"button\"\n mat-menu-item\n (click)=\"controller.anchor.setFixedAnchorPointToStartDateTime()\"\n [disabled]=\"!presenter.endDateHtmlString()\"\n >\n <mat-icon class=\"material-symbols-outlined\">logout</mat-icon>\n <span>{{ 'intervalPicker.startDate' | translate }}</span>\n </button>\n }\n @if (presenter.isFixedAnchorDateSet()) {\n <button\n type=\"button\"\n mat-menu-item\n (click)=\"controller.anchor.resetAnchor()\"\n [disabled]=\"!presenter.isFixedAnchorDateSet() || anchorReadOnly()\"\n >\n <mat-icon>close</mat-icon>\n <span>{{ 'intervalPicker.clear' | translate }}</span>\n </button>\n }\n </mat-menu>\n\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.anchorDate' | translate }}</mat-label>\n <input\n #startDateInput\n name=\"anchorDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.anchorDateHtmlString()\"\n (ngModelChange)=\"controller.form.setAnchorDateFromString($event)\"\n [readonly]=\"anchorReadOnly()\"\n />\n @if (!anchorReadOnly()) {\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n [matMenuTriggerFor]=\"anchorMenu\"\n [disabled]=\"presenter.isAnchorMenuDisabled()\"\n >\n <mat-icon class=\"material-symbols-outlined\">more_horiz</mat-icon>\n </button>\n }\n </mat-form-field>\n @if (intervalInputMode() === 'date-time-range') {\n <mat-form-field class=\"input-control-container-short\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.anchorTime' | translate }}</mat-label>\n <input\n matInput\n name=\"anchorTimeInput\"\n type=\"time\"\n #anchorTimeControl=\"ngModel\"\n step=\"1\"\n [readonly]=\"anchorReadOnly()\"\n [ngModel]=\"presenter.anchorTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setAnchorTimeFromString($event)\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"controller.anchor.resetAnchorTime()\"\n [disabled]=\"anchorReadOnly() || presenter.isAnchorTimeMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n }\n </div>\n }\n </div>\n <!-- result interval -->\n <div class=\"layout-col place-center-center\">\n <div class=\"date-interval mat-caption pt-xs\">\n @if (presenter.startDateTimeAsJSDate()) {\n {{ presenter.startDateTimeAsJSDate() | date: 'dd.MM. y, HH:mm:ss' }}\n } @else {\n {{ 'intervalPicker.startDateNotSet' | translate }}\n }\n <span> - </span>\n @if (presenter.endDateTimeAsJSDate()) {\n {{ presenter.endDateTimeAsJSDate() | date: 'dd.MM. y, HH:mm:ss' }}\n } @else {\n {{ 'intervalPicker.endDateNotSet' | translate }}\n }\n </div>\n <div>\n <span class=\"mat-caption\">{{ presenter.deltaHumanReadable() || '&nbsp;' }}</span>\n </div>\n </div>\n <div class=\"layout-row gap-lg\">\n <button\n type=\"button\"\n mat-flat-button\n color=\"primary\"\n (click)=\"controller.clearInterval()\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n {{ 'intervalPicker.clear' | translate }}\n </button>\n\n @if (!this.autoEmitMode()) {\n <button type=\"button\" color=\"primary\" mat-flat-button (click)=\"controller.manualEmit()\">\n {{ 'actions.ok' | translate }}\n </button>\n }\n </div>\n</div>\n", styles: [".interval-picker-component{min-width:840px;max-width:100%}.fixed-shifts-container{max-width:160px}.input-control-container{width:192px;max-width:100%}.input-control-container-short{width:140px;max-width:100%}.select-buttons-container button{white-space:nowrap;text-align:left;justify-content:flex-start}::ng-deep .interval-picker-component .mat-calendar-body-cell.elder-custom-anchor-date .mat-calendar-body-cell-content{border-radius:50%;background-color:#def;background-color:#b4d2ebbf}\n"], dependencies: [{ kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1$d.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$e.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
32435
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ElderIntervalPickerComponent, isStandalone: true, selector: "elder-interval-picker", inputs: { emitType: { classPropertyName: "emitType", publicName: "emitType", isSignal: true, isRequired: false, transformFunction: null }, autoEmitMode: { classPropertyName: "autoEmitMode", publicName: "autoEmitMode", isSignal: true, isRequired: false, transformFunction: null }, intervalInputMode: { classPropertyName: "intervalInputMode", publicName: "intervalInputMode", isSignal: true, isRequired: false, transformFunction: null }, showAnchor: { classPropertyName: "showAnchor", publicName: "showAnchor", isSignal: true, isRequired: false, transformFunction: null }, anchorReadOnly: { classPropertyName: "anchorReadOnly", publicName: "anchorReadOnly", isSignal: true, isRequired: false, transformFunction: null }, externalAnchorDateTime: { classPropertyName: "externalAnchorDateTime", publicName: "externalAnchorDateTime", isSignal: true, isRequired: false, transformFunction: null }, externalInterval: { classPropertyName: "externalInterval", publicName: "externalInterval", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { intervalChange: "intervalChange" }, providers: [{ provide: DateAdapter, useClass: CustomDateAdapter }], viewQueries: [{ propertyName: "calendarStart", first: true, predicate: ["rangeCalendarStart"], descendants: true }, { propertyName: "calendarEnd", first: true, predicate: ["rangeCalendarEnd"], descendants: true }, { propertyName: "calendarStartElRef", first: true, predicate: ["rangeCalendarStart"], descendants: true, read: ElementRef }, { propertyName: "calendarEndElRef", first: true, predicate: ["rangeCalendarEnd"], descendants: true, read: ElementRef }, { propertyName: "startDateInput", first: true, predicate: ["startDateInput"], descendants: true }, { propertyName: "endDateInput", first: true, predicate: ["endDateInput"], descendants: true }], ngImport: i0, template: "<div class=\"interval-picker-component p-md layout-col gap-xxl\">\n <div class=\"layout-row gap-xxl place-between-start\" style=\"gap: 5%\">\n <div class=\"layout-col gap-md pt-xs\">\n <div class=\"layout-col\">\n <div class=\"layout-row select-buttons-container gap-sm\">\n <div class=\"layout-col gap-xs place-start-stretch\">\n <button mat-button type=\"button\" (click)=\"controller.select.selectCurrentDay()\">\n @if (presenter.isFixedAnchorDateSet()) {\n {{ 'intervalPicker.anchorDay' | translate }}\n } @else {\n {{ 'intervalPicker.today' | translate }}\n }\n </button>\n <button mat-button type=\"button\" (click)=\"controller.select.selectYesterday()\">\n @if (presenter.isFixedAnchorDateSet()) {\n {{ 'intervalPicker.last' | translate }} 1 {{ 'intervalPicker.day' | translate }}\n } @else {\n {{ 'intervalPicker.yesterday' | translate }}\n }\n </button>\n <button\n mat-button\n type=\"button\"\n (click)=\"controller.select.selectLastSevenDaysIncludingToday()\"\n >\n {{ 'intervalPicker.last' | translate }} 7\n {{ 'intervalPicker.days' | translate }}\n </button>\n <button\n mat-button\n type=\"button\"\n (click)=\"controller.select.selectLastThirtyDaysIncludingToday()\"\n >\n {{ 'intervalPicker.last' | translate }} 30\n {{ 'intervalPicker.days' | translate }}\n </button>\n <button\n mat-button\n type=\"button\"\n (click)=\"controller.select.selectLast365daysIncludingToday()\"\n >\n {{ 'intervalPicker.last' | translate }} 365\n {{ 'intervalPicker.days' | translate }}\n </button>\n @if (intervalInputMode() === 'date-time-range') {\n <div class=\"pt-sm\"></div>\n <button mat-button type=\"button\" (click)=\"controller.select.selectLastFiveMinutes()\">\n {{ 'intervalPicker.last' | translate }} 5\n {{ 'intervalPicker.minutes' | translate }}\n </button>\n <button mat-button type=\"button\" (click)=\"controller.select.selectLastHour()\">\n {{ 'intervalPicker.last' | translate }} {{ 'intervalPicker.hour' | translate }}\n </button>\n <button mat-button type=\"button\" (click)=\"controller.select.selectLast24Hours()\">\n {{ 'intervalPicker.last' | translate }} 24\n {{ 'intervalPicker.hours' | translate }}\n </button>\n }\n </div>\n </div>\n </div>\n </div>\n <div class=\"layout-col\">\n <!-- smart shift -->\n <div class=\"layout-row place-around-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.smartShift(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-smart-shift-left\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ presenter.smartShiftMessage() }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.smartShift(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-smart-shift-right\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <!-- calendars and input controls -->\n <div\n class=\"layout-row place-around-center\"\n style=\"align-items: flex-start; min-height: 280px\"\n >\n <mat-calendar\n #rangeCalendarStart\n style=\"width: 210px; max-width: 100%\"\n [selected]=\"presenter.dateRangeForCalendar()\"\n (selectedChange)=\"controller.calendar.setStartDateFromJSDate($event)\"\n [maxDate]=\"presenter.endDateTimeAsJSDate()\"\n [dateClass]=\"presenter.calendarAnchorDateCssClassFn\"\n >\n </mat-calendar>\n <mat-calendar\n #rangeCalendarEnd\n style=\"width: 210px; max-width: 100%\"\n [selected]=\"presenter.dateRangeForCalendar()\"\n (selectedChange)=\"controller.calendar.setEndDateFromJSDate($event)\"\n [minDate]=\"presenter.startDateTimeAsJSDate()\"\n [dateClass]=\"presenter.calendarAnchorDateCssClassFn\"\n >\n </mat-calendar>\n </div>\n <div class=\"layout-row place-around-center gap-xl pt-sm\">\n <div class=\"layout-row place-around-center\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.startDate' | translate }}</mat-label>\n <input\n #startDateInput\n name=\"startDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.startDateHtmlString()\"\n (ngModelChange)=\"controller.form.setStartDateFromString($event)\"\n />\n </mat-form-field>\n </div>\n <div class=\"layout-row place-around-center\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.endDate' | translate }}</mat-label>\n <input\n #endDateInput\n name=\"endDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.endDateHtmlString()\"\n (ngModelChange)=\"controller.form.setEndDateFromString($event)\"\n />\n </mat-form-field>\n </div>\n </div>\n @if (intervalInputMode() === 'date-time-range') {\n <div class=\"layout-row place-around-center gap-xl pt-sm\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.startTime' | translate }}</mat-label>\n <input\n name=\"startTimeInput\"\n matInput\n type=\"time\"\n #startTimeControl=\"ngModel\"\n step=\"1\"\n [ngModel]=\"presenter.startTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setStartTimeFromString($event)\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"controller.clearStartTime()\"\n [disabled]=\"!presenter.isStartTimeSetAndNotMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.endTime' | translate }}</mat-label>\n <input\n name=\"endTimeInput\"\n matInput\n type=\"time\"\n #endTimeControl=\"ngModel\"\n step=\"1\"\n [ngModel]=\"presenter.endTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setEndTimeFromString($event)\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"controller.clearEndTime()\"\n [disabled]=\"!presenter.isEndTimeSetAndNotMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n }\n <br />\n </div>\n <div class=\"pt-xs\" style=\"width: 25%\">\n <div class=\"layout-col gap-lg\">\n <div class=\"layout-col gap-xs place-start-start\">\n <!-- select current -->\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentWeek()\">\n {{ 'intervalPicker.currentPeriod.week' | translate }}\n </button>\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentMonth()\">\n {{ 'intervalPicker.currentPeriod.month' | translate }}\n </button>\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentQuarter()\">\n {{ 'intervalPicker.currentPeriod.quarter' | translate }}\n </button>\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentYear()\">\n {{ 'intervalPicker.currentPeriod.year' | translate }}\n </button>\n </div>\n <div class=\"fixed-shifts-container\">\n <div class=\"layout-col place-start-stretch\">\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftDay(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-day-left\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.day' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftDay(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-day-right\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMonth(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-month-left\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.month' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMonth(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-month-right\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftYear(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-year-left\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.year' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftYear(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-year-right\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n\n @if (true) {\n <!-- shift minute -->\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMinute(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-minute-left\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.minute' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMinute(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-minute-right\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <!-- shift hour -->\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftHour(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-hour-left\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.hour' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftHour(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n data-testid=\"interval-picker-shift-hour-right\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"layout-row place-between-center gap-xxl pt-sm\">\n <div>\n @if (showAnchor()) {\n <div class=\"layout-row flex-none gap-md\">\n <mat-menu #anchorMenu=\"matMenu\">\n @if (presenter.startDateHtmlString()) {\n <button\n type=\"button\"\n mat-menu-item\n (click)=\"controller.anchor.setFixedAnchorPointToEndDateTime()\"\n [disabled]=\"!presenter.startDateHtmlString()\"\n >\n <mat-icon class=\"material-symbols-outlined\">login</mat-icon>\n <span>{{ 'intervalPicker.endDate' | translate }}</span>\n </button>\n }\n @if (presenter.endDateHtmlString()) {\n <button\n type=\"button\"\n mat-menu-item\n (click)=\"controller.anchor.setFixedAnchorPointToStartDateTime()\"\n [disabled]=\"!presenter.endDateHtmlString()\"\n >\n <mat-icon class=\"material-symbols-outlined\">logout</mat-icon>\n <span>{{ 'intervalPicker.startDate' | translate }}</span>\n </button>\n }\n @if (presenter.isFixedAnchorDateSet()) {\n <button\n type=\"button\"\n mat-menu-item\n (click)=\"controller.anchor.resetAnchor()\"\n [disabled]=\"!presenter.isFixedAnchorDateSet() || anchorReadOnly()\"\n >\n <mat-icon>close</mat-icon>\n <span>{{ 'intervalPicker.clear' | translate }}</span>\n </button>\n }\n </mat-menu>\n\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.anchorDate' | translate }}</mat-label>\n <input\n #startDateInput\n name=\"anchorDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.anchorDateHtmlString()\"\n (ngModelChange)=\"controller.form.setAnchorDateFromString($event)\"\n [readonly]=\"anchorReadOnly()\"\n />\n @if (!anchorReadOnly()) {\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n [matMenuTriggerFor]=\"anchorMenu\"\n [disabled]=\"presenter.isAnchorMenuDisabled()\"\n >\n <mat-icon class=\"material-symbols-outlined\">more_horiz</mat-icon>\n </button>\n }\n </mat-form-field>\n @if (intervalInputMode() === 'date-time-range') {\n <mat-form-field class=\"input-control-container-short\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.anchorTime' | translate }}</mat-label>\n <input\n matInput\n name=\"anchorTimeInput\"\n type=\"time\"\n #anchorTimeControl=\"ngModel\"\n step=\"1\"\n [readonly]=\"anchorReadOnly()\"\n [ngModel]=\"presenter.anchorTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setAnchorTimeFromString($event)\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"controller.anchor.resetAnchorTime()\"\n [disabled]=\"anchorReadOnly() || presenter.isAnchorTimeMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n }\n </div>\n }\n </div>\n <!-- result interval -->\n <div class=\"layout-col place-center-center\">\n <div class=\"date-interval mat-caption pt-xs\">\n @if (presenter.startDateTimeAsJSDate()) {\n {{ presenter.startDateTimeAsJSDate() | date: 'dd.MM. y, HH:mm:ss' }}\n } @else {\n {{ 'intervalPicker.startDateNotSet' | translate }}\n }\n <span> - </span>\n @if (presenter.endDateTimeAsJSDate()) {\n {{ presenter.endDateTimeAsJSDate() | date: 'dd.MM. y, HH:mm:ss' }}\n } @else {\n {{ 'intervalPicker.endDateNotSet' | translate }}\n }\n </div>\n <div>\n <span class=\"mat-caption\">{{ presenter.deltaHumanReadable() || '&nbsp;' }}</span>\n </div>\n </div>\n <div class=\"layout-row gap-lg\">\n <button\n type=\"button\"\n mat-flat-button\n color=\"primary\"\n (click)=\"controller.clearInterval()\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n {{ 'intervalPicker.clear' | translate }}\n </button>\n\n @if (!this.autoEmitMode()) {\n <button type=\"button\" color=\"primary\" mat-flat-button (click)=\"controller.manualEmit()\">\n {{ 'actions.ok' | translate }}\n </button>\n }\n </div>\n</div>\n", styles: [".interval-picker-component{min-width:840px;max-width:100%}.fixed-shifts-container{max-width:160px}.input-control-container{width:192px;max-width:100%}.input-control-container-short{width:140px;max-width:100%}.select-buttons-container button{white-space:nowrap;text-align:left;justify-content:flex-start}::ng-deep .interval-picker-component .mat-calendar-body-cell.elder-custom-anchor-date .mat-calendar-body-cell-content{border-radius:50%;background-color:#def;background-color:#b4d2ebbf}\n"], dependencies: [{ kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1$d.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$e.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
32411
32436
  }
32412
32437
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderIntervalPickerComponent, decorators: [{
32413
32438
  type: Component,
@@ -33840,6 +33865,7 @@ class ElderSearchPanelComponent {
33840
33865
  this.overlay = signal(undefined, ...(ngDevMode ? [{ debugName: "overlay" }] : /* istanbul ignore next */ []));
33841
33866
  const overlay$ = toObservable(this.overlay).pipe(filter((overlay) => !!overlay));
33842
33867
  this.open$ = overlay$.pipe(switchMap((overlay) => overlay.attachedChange.pipe(startWith(overlay.attached))));
33868
+ this.isOpen = toSignal(this.open$);
33843
33869
  }
33844
33870
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderSearchPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33845
33871
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.15", type: ElderSearchPanelComponent, isStandalone: true, selector: "elder-search-panel", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -35530,74 +35556,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
35530
35556
  }] });
35531
35557
 
35532
35558
  /**
35533
- * Set scrollbar width. Will only work in webkit-based browsers.
35559
+ * Directive that activates wide scrollbar mode.
35560
+ * Typically the ScrollbarScope is the global scope on the elder-shell,
35561
+ * but alternatively an ElderWideScrollbarDirective can be used to activate
35562
+ * targeted wide scrollbar.
35534
35563
  */
35535
- class ElderScrollbarDirective extends ElderClassHostBindingBase {
35536
- static { this.DEFAULT_WIDTH = 'lg'; }
35537
- /***************************************************************************
35538
- * *
35539
- * Constructor *
35540
- * *
35541
- **************************************************************************/
35564
+ class ElderWideScrollbarDirective {
35542
35565
  constructor() {
35543
- super(ElderScrollbarDirective.buildClass(ElderScrollbarDirective.DEFAULT_WIDTH));
35544
- /***************************************************************************
35545
- * *
35546
- * Fields *
35547
- * *
35548
- **************************************************************************/
35549
- this._size = ElderScrollbarDirective.DEFAULT_WIDTH;
35550
- this.enabled = true; // no size input is needed, we have a default
35551
- }
35552
- /***************************************************************************
35553
- * *
35554
- * Properties *
35555
- * *
35556
- **************************************************************************/
35557
- /**
35558
- * Optional input to select a specific {@link ElderSize}
35559
- * @return size with default value lg
35560
- */
35561
- get size() {
35562
- return this._size;
35563
- }
35564
- set size(value) {
35565
- this._size = value;
35566
- this.elementClass = this.buildClass(value);
35566
+ this.scrollbarScope = inject(ElderScrollbarScopeDirective);
35567
35567
  }
35568
35568
  /***************************************************************************
35569
35569
  * *
35570
- * Private Methods *
35570
+ * Lifecycle methods *
35571
35571
  * *
35572
35572
  **************************************************************************/
35573
- buildClass(size) {
35574
- return ElderScrollbarDirective.buildClass(size);
35573
+ ngOnInit() {
35574
+ this.scrollbarScope.activateWideScrollbarMode();
35575
35575
  }
35576
- static buildClass(size) {
35577
- return `scrollbar-${size}`;
35576
+ ngOnDestroy() {
35577
+ this.scrollbarScope.deactivateWideScrollbarMode();
35578
35578
  }
35579
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderScrollbarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
35580
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.15", type: ElderScrollbarDirective, isStandalone: true, selector: "[elderScrollbar]", inputs: { size: "size" }, usesInheritance: true, ngImport: i0 }); }
35579
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderWideScrollbarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
35580
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.15", type: ElderWideScrollbarDirective, isStandalone: true, selector: "[elderWideScrollbar]", ngImport: i0 }); }
35581
35581
  }
35582
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderScrollbarDirective, decorators: [{
35582
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderWideScrollbarDirective, decorators: [{
35583
35583
  type: Directive,
35584
35584
  args: [{
35585
- selector: '[elderScrollbar]',
35586
- }]
35587
- }], ctorParameters: () => [], propDecorators: { size: [{
35588
- type: Input
35589
- }] } });
35590
-
35591
- class ElderScrollbarModule {
35592
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderScrollbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
35593
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.15", ngImport: i0, type: ElderScrollbarModule, imports: [ElderScrollbarDirective], exports: [ElderScrollbarDirective] }); }
35594
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderScrollbarModule }); }
35595
- }
35596
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ElderScrollbarModule, decorators: [{
35597
- type: NgModule,
35598
- args: [{
35599
- imports: [ElderScrollbarDirective],
35600
- exports: [ElderScrollbarDirective],
35585
+ selector: '[elderWideScrollbar]',
35601
35586
  }]
35602
35587
  }] });
35603
35588
 
@@ -39625,5 +39610,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
39625
39610
  * Generated bundle index. Do not edit.
39626
39611
  */
39627
39612
 
39628
- export { ActivationEventSource, ActivationModel, Arrays, AuditedEntity, AutoStartSpec, Batcher, BlobUrl, BytesFormat, BytesPerSecondFormat, BytesPipe, CardDropEvent, CardOrganizerData, CardStack, CollectionUtil, CommonValidationMessageStrategy, ComparatorBuilder, CompositeSort, ConfirmDialogConfig, ContinuableListing, CountryPhoneFormatService, CsvColumnSpec, CsvSerializer, CsvSpec, CsvStreamExporter, CsvStreamExporterBuilder, CsvStreamExporterBuilderService, CuratedDataSource, CuratedListDataSource, CuratedPagedDataSource, Currency, CurrencyCode, CurrencyFormatUtil, CurrencyUnit, CurrencyUnitRegistry, CustomDateAdapter, CustomMatcherSpec, DataContextActivePage, DataContextAutoStarter, DataContextBase, DataContextBuilder, DataContextContinuableBase, DataContextContinuablePaged, DataContextContinuableToken, DataContextLifeCycleBinding, DataContextRange, DataContextSelectionDirective, DataContextSimple, DataContextSnapshot, DataContextSourceEventBinding, DataContextStateIndicatorComponent, DataContextStatus, DataSelectionController, DataSourceAdapter, DataSourceBase, DataSourceChangeEvent, DataSourceEntityPatch, DataSourceProcessor, DataTransferFactory, DataTransferProgress, DataTransferProgressAggregate, DataTransferState, DataTransferStatus, DataViewActivationController, DataViewDndControllerService, DataViewDndGroupControllerService, DataViewDndModelUtil, DataViewDragEnteredEvent, DataViewDragExitedEvent, DataViewIframeAdapterDirective, DataViewIframeComponent, DataViewInteractionControllerDirective, DataViewItemDropEvent, DataViewMessage, DataViewMessageTypeValues, DataViewOptionsProviderBinding, DataViewSelection, DataViewSelectionInit, DateUtil, DelegateContinuableDataSource, DelegateDataSource, DelegateListDataSource, DelegatePagedDataSource, Dimensions, DomUtil, DrawerOutletBinding, DurationBucket, DurationFormat, DurationFormatUtil, DynamicValidationMessageStrategy, ELDER_DATA_VIEW, ELDER_SELECT_BASE, ElderAccessDeniedComponent, ElderAccessDeniedModule, ElderAppHeaderComponent, ElderAppearanceSettingsComponent, ElderAuditModule, ElderAuditedEntityComponent, ElderAutoSelectFirstDirective, ElderAutoSelectSuggestFirstDirective, ElderAutocompleteDirective, ElderAutocompleteModule, ElderBadgeDirective, ElderBasicPaneLayoutComponent, ElderBlobViewerComponent, ElderBreadCrumbsComponent, ElderBreadCrumbsModule, ElderButtonGroupComponent, ElderButtonGroupModule, ElderCardComponent, ElderCardContentDirective, ElderCardHeaderActionsDirective, ElderCardHeaderComponent, ElderCardModule, ElderCardOrganizerComponent, ElderCardOrganizerModule, ElderCardPanelComponent, ElderCardStackComponent, ElderCardSubtitleDirective, ElderCardTitleDirective, ElderCenterCellDirective, ElderChipLabelDirective, ElderChipListSelectComponent, ElderChipListSelectModule, ElderChipsIncludeExcludeDirective, ElderChipsModule, ElderClearSelectDirective, ElderClipboardPutDirective, ElderClipboardService, ElderCompositeSortComponent, ElderCompositeSortDcDirective, ElderConfirmDialogComponent, ElderConnectivityModule, ElderConnectivityService, ElderContainersModule, ElderContinuatorComponent, ElderCsvExportBtnComponent, ElderCsvModule, ElderCurrencyModule, ElderCurrencyPipe, ElderDataActivationDirective, ElderDataCommonModule, ElderDataToolbarComponent, ElderDataTransferModule, ElderDataTransferService, ElderDataViewBaseComponent, ElderDataViewDndDirective, ElderDataViewDndGroupDirective, ElderDataViewItemDragDirective, 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, ElderFilterChipTemplateComponent, ElderFormFieldControlBase, ElderFormFieldDenseDirective, ElderFormFieldLabelDirective, ElderFormFieldNoHintDirective, ElderFormFieldNoSpinnerDirective, ElderFormsDirectivesModule, ElderFormsModule, ElderFromFieldBase, ElderFromFieldEntityBase, ElderFromFieldMultiEntityBase, ElderGenericResizableLayoutComponent, ElderGridActivationDirective, ElderGridComponent, ElderGridModule, ElderGridNavigationBarDirective, ElderGridTileDirective, ElderGridToolbarDirective, ElderHeaderComponent, ElderHeaderModule, ElderI18nEntitiesModule, ElderIFrameModule, ElderInfiniteAutocompleteDirective, ElderInfiniteScrollDirective, ElderInfiniteScrollModule, ElderInputPatternDirective, ElderIntervalInputComponent, ElderIntervalPickerBindingDirective, ElderIntervalPickerComponent, ElderIntervalPickerToggleComponent, ElderKeyEventDirective, ElderLabelInputComponent, ElderLabelsModule, ElderLanguageConfig, ElderLanguageInterceptor, ElderLanguageService, ElderLanguageSwitcherComponent, ElderLocalDateInputComponent, ElderLocalDndSupportDirective, ElderLocalTimeInputComponent, ElderLocalesDeChModule, ElderLocalizedInputComponent, ElderLocalizedInputDialogComponent, ElderLocalizedInputDialogService, ElderLocalizedInputTableComponent, ElderLocalizedTextColumnDirective, ElderLocalizedTextsDirective, ElderLock, ElderLockContext, ElderLockContextDirective, ElderLockManagerService, ElderLockWarningService, ElderMasterActivationDirective, ElderMasterDetailComponent, ElderMasterDetailModule, ElderMasterDetailService, ElderMasterDirective, ElderMaxValidator, ElderMeasuresModule, ElderMinValidator, ElderMultiEntityValueAccessorUtil, ElderMultiSelectAllInitialDirective, ElderMultiSelectBase, ElderMultiSelectChipOptionsComponent, ElderMultiSelectChipsComponent, ElderMultiSelectChipsOptionsDirective, ElderMultiSelectFormField, ElderMultiTranslateHttpLoader, ElderMultipleOfUtil, ElderMultipleOfValidator, ElderNavGroupComponent, ElderNavLinkComponent, ElderNavListComponent, ElderNavModule, ElderNextFocusableDirective, ElderNumberCellDirective, ElderOfflineIndicatorComponent, ElderOverlayComponent, ElderOverlayModule, ElderOverlayOriginDirective, ElderOverlayRef, ElderOverlayTriggerDirective, ElderPaddingDirective, ElderPaneActionsComponent, ElderPaneComponent, ElderPaneContentComponent, ElderPaneHeaderComponent, ElderPaneSubtitleComponent, ElderPaneTitleComponent, ElderPanelModule, ElderPeriodInputComponent, ElderPipesModule, ElderPlugParentFormDirective, ElderPopoverComponent, ElderPopoverContentDirective, ElderPopoverTriggerDirective, ElderProgressBarComponent, ElderProgressBarModule, ElderQuantityFormFieldComponent, ElderQuantityInputControlComponent, ElderQuantityPipe, ElderQuantityRangeValidator, ElderQuantityService, ElderQuantityTransformPipe, ElderQuestionDialogComponent, ElderRailNavDirective, ElderRepeatPipe, ElderRequiredDimensionsValidator, ElderRequiredIgnoreZeroValidator, ElderRequiredQuantityValidator, ElderResizableDirective, ElderResizablePaneLayoutComponent, ElderResizeBehaviorDirective, ElderResizeContainerComponent, ElderRoundPipe, ElderRouteOutletDrawerService, ElderRouterOutletService, ElderRouterService, ElderSafeUrlPipe, ElderScrollContainerComponent, ElderScrollbarDirective, ElderScrollbarModule, ElderSearchBoxComponent, ElderSearchContextDirective, ElderSearchIncludeExcludeDirective, ElderSearchInputDirective, ElderSearchModule, ElderSearchPanelComponent, ElderSearchUrlDirective, ElderSelectBase, ElderSelectChipAvatarDirective, ElderSelectChipDirective, ElderSelectComponent, ElderSelectComponentState, ElderSelectCustomInputDirective, ElderSelectFormField, ElderSelectModule, ElderSelectOnTabDirective, ElderSelectOptionComponent, ElderSelectValueDirective, ElderSelectionDialogComponent, ElderSelectionDialogDirective, ElderSelectionMasterCheckboxComponent, ElderSelectionPopupTriggerAdapterDirective, ElderShellCenterDirective, ElderShellComponent, ElderShellModule, ElderShellNavigationToggleComponent, ElderShellService, ElderShellSideLeftDirective, ElderShellSideRightDirective, ElderShellSlotDirective, ElderShellStaticNavSlotDirective, ElderSinglePaneWrapperComponent, ElderSingleStateCheckboxDirective, ElderStackCardDirective, ElderStaticNavToggleComponent, ElderStopEventPropagationDirective, ElderSuggestionPanelComponent, ElderTabDirective, ElderTabFocusTrapDirective, ElderTabGroupRoutingDirective, ElderTabModule, ElderTableActivationDirective, ElderTableComponent, ElderTableDropListConnectorDirective, ElderTableExtensionDirective, ElderTableGroup, ElderTableModel, ElderTableModelCdkTableBinding, ElderTableModelQueryGroup, ElderTableModule, ElderTableNavigationBarDirective, ElderTableProviders, ElderTableRootDirective, ElderTableSelectionCellComponent, ElderTableSortDirective, ElderTableToolbarDirective, ElderThemeApplierDirective, ElderThemeDirective, ElderThemeModule, ElderThemePreferenceService, ElderThemeService, ElderThemeToggleComponent, ElderTileComponent, ElderTimeModule, ElderToastModule, ElderToastService, ElderTogglePanelComponent, ElderTogglePanelPrimaryDirective, ElderTogglePanelSecondaryDirective, ElderTogglePanelTriggerDirective, ElderToggleTextInputDirective, ElderToolbarColumnDirective, ElderToolbarComponent, ElderToolbarContentDirective, ElderToolbarModule, ElderToolbarService, ElderToolbarTitleComponent, ElderToolbarTitleService, ElderTouchedDirective, ElderTranslatePipe, ElderTranslateService, ElderTripleStateCheckboxDirective, ElderTruncatePipe, ElderUnitSelectDirective, ElderUnitService, ElderUrlFragment, ElderUrlFragmentModule, ElderUrlFragmentParamsService, ElderUrlFragmentSwitcherComponent, ElderValidationErrorDirective, ElderWordAutocompleteDirective, EntitiesChangeEvent, EntityDelta, EntityIdUtil, EntitySetPatch, ErrorUtil, ExceptionDetailCtx, FallbackValidationMessageStrategy, FileEntry, FileListingRx, FileUploadClient, Filter, FilterContext, FilterUtil, FocusUtil, FormFieldBaseComponent, GlobalDragDropService, HttpClientPristine, HttpDataTransfer, HttpDataTransferAggregateComponent, HttpDataTransferComponent, HttpDataTransferIndicatorComponent, HttpDataTransferOverviewComponent, HttpParamsBuilder, I18nBase, I18nPickAsyncPipe, I18nPickPipe, I18nText, IFrameState, IframeCloseDirective, IframeDialogComponent, IframeHostComponent, IframeService, IframeSideContentComponent, IncludeExcludeSelectionModel, IncludeExcludeState, IncludeExcludeValue, IndexedEntities, InternalRestClientConfig, Interval, IsoDurationPipe, IsoIntervalFormatUtil, IsoIntervalParsePipe, IsoIntervalPipe, ItemActivationEvent, ItemActivationOptions, ItemModel, JsonMapUtil, KafentConfig, KafentEvent, KafentEventService, KafentEventStream, KafentEventStreamDisabled, KafentEventStreamSse, KafentEventTransport, KafentModule, KafentSseEventChannel, KafentTokenProvider, KafentTokenProviderSessionStorage, KafentTopicSse, KnownElderThemes, KnownLocaleTags, LocalDataFilter, LocalListDataSource, LocalPagedDataSource, Locale, LocalisationPickerService, MasterDetailActivationEvent, MasterSelectionState, MatTableDataContextBinding, MatTableDataContextBindingBuilder, ModifierKeyService, ModifierKeyState, MultiModelBaseComponent, NamedColorDirective, NamedColorSelectDirective, NamedColorSelectValueComponent, NextNumberUtil, ObjectFieldMatcher, ObjectPathResolver, Objects, OnlineStatus, Page, PageRequest, Pageable, ParseUtil, Path, PathNode, PeriodBucket, PeriodDuration, PeriodFormat, PhoneFormatService, PhonePipe, ProcessIterationContext, ProcessState, PropertyPathUtil, Quantity, QueryListBinding, QuestionDialogConfig, ReactiveEventSource, ReactiveEventSourceState, ReactiveFetchEventSource, ReactiveFetchEventSourceService, ReactiveMap, ReactiveSSeMessage, RefreshingEntity, ResizeObserverDirective, RestClient, RestClientConfig, RestClientContinuable, RestClientList, RestClientPaged, RoutedTabActivationFailed, SearchInputState, SelectChipSpecUtil, SelectOptionChipSpecUtil, SelectionChangedEvent, SelectionEventSource, SelectionModel, SelectionModelPopupDirective, Sets, SimpleLocalisationPicker, SimpleSearchInput, Sort, SortUtil, StandardToastComponent, SubBar, SuggestionProvider, TargetValue, TemplateCompositeControl, TemplatedSelectionDialogComponent, TemporalPlainDateInterval, TemporalUtil, ThemeSpec, TimeAgoPipe, TimeDurationPipe, TimeUtil, ToIsoDateStringPipe, ToastType, TokenChunkRequest, ToolbarHeader, Translated, TranslatedConverter, TranslatedEnumValue, TranslatedText, TypedEventMessage, Unit, UnitDimension, UnitDimensionInfo, UnitInfo, UnitRegistry, UnreachableCaseError, UrlBuilder, UrlQueryParams, UuidUtil, ValueAccessorBase, ValueChangeEvent, ValueWrapper, ViewDropModelUpdateInstruction, ViewProviders, WebLocalStorage, WebSessionStorage, WebappDomainFragmentSpec, WebappDomainSpec, WebappDomainSpecService, WebappDomainSwitcherDirective, WebappUrlFragmentSwitcherConfig, WeightPipe, alphaNumStringComparator, booleanTransformFn, buildFormIntegrationProviders, coerceInterval, coerceIntervalIsoStr, createDataOptionsProvider, createElderDefaultTranslateLoader, createSelectionModel, elderChipColorLevels, elderChipColorStates, elderNamedColorRoles, elderNamedColorToken, elderNamedColors, existingOrNewElderTableModel, initSearchUrlService, isActivePagedDataContext, isContinuableDataContext, isContinuableDataSource, isDataContext, isDataSource, isDataViewMessageType, isElderEntityValueAccessor, isElderMultiEntityValueAccessor, isListDataSource, isLocalDataSource, isLocalListDataSource, isLocalPagedDataSource, isPagedDataSource, lazySample, lazySampleTime, naturalValueComparator, newElderTableModel, provideElderBrandAssets, provideElderDefaults, provideElderLanguage, provideElderTranslate, proxyControlContainer, registerLocale, runInZone, someSignal, themeInit };
39613
+ export { ActivationEventSource, ActivationModel, Arrays, AuditedEntity, AutoStartSpec, Batcher, BlobUrl, BytesFormat, BytesPerSecondFormat, BytesPipe, CardDropEvent, CardOrganizerData, CardStack, CollectionUtil, CommonValidationMessageStrategy, ComparatorBuilder, CompositeSort, ConfirmDialogConfig, ContinuableListing, CountryPhoneFormatService, CsvColumnSpec, CsvSerializer, CsvSpec, CsvStreamExporter, CsvStreamExporterBuilder, CsvStreamExporterBuilderService, CuratedDataSource, CuratedListDataSource, CuratedPagedDataSource, Currency, CurrencyCode, CurrencyFormatUtil, CurrencyUnit, CurrencyUnitRegistry, CustomDateAdapter, CustomMatcherSpec, DataContextActivePage, DataContextAutoStarter, DataContextBase, DataContextBuilder, DataContextContinuableBase, DataContextContinuablePaged, DataContextContinuableToken, DataContextLifeCycleBinding, DataContextRange, DataContextSelectionDirective, DataContextSimple, DataContextSnapshot, DataContextSourceEventBinding, DataContextStateIndicatorComponent, DataContextStatus, DataSelectionController, DataSourceAdapter, DataSourceBase, DataSourceChangeEvent, DataSourceEntityPatch, DataSourceProcessor, DataTransferFactory, DataTransferProgress, DataTransferProgressAggregate, DataTransferState, DataTransferStatus, DataViewActivationController, DataViewDndControllerService, DataViewDndGroupControllerService, DataViewDndModelUtil, DataViewDragEnteredEvent, DataViewDragExitedEvent, DataViewIframeAdapterDirective, DataViewIframeComponent, DataViewInteractionControllerDirective, DataViewItemDropEvent, DataViewMessage, DataViewMessageTypeValues, DataViewOptionsProviderBinding, DataViewSelection, DataViewSelectionInit, DateUtil, DelegateContinuableDataSource, DelegateDataSource, DelegateListDataSource, DelegatePagedDataSource, Dimensions, DomUtil, DrawerOutletBinding, DurationBucket, DurationFormat, DurationFormatUtil, DynamicValidationMessageStrategy, ELDER_DATA_VIEW, ELDER_SELECT_BASE, ElderAccessDeniedComponent, ElderAccessDeniedModule, ElderAppHeaderComponent, ElderAppearanceSettingsComponent, ElderAuditModule, ElderAuditedEntityComponent, ElderAutoSelectFirstDirective, ElderAutoSelectSuggestFirstDirective, ElderAutocompleteDirective, ElderAutocompleteModule, ElderBadgeDirective, ElderBasicPaneLayoutComponent, ElderBlobViewerComponent, ElderBreadCrumbsComponent, ElderBreadCrumbsModule, ElderButtonGroupComponent, ElderButtonGroupModule, ElderCardComponent, ElderCardContentDirective, ElderCardHeaderActionsDirective, ElderCardHeaderComponent, ElderCardModule, ElderCardOrganizerComponent, ElderCardOrganizerModule, ElderCardPanelComponent, ElderCardStackComponent, ElderCardSubtitleDirective, ElderCardTitleDirective, ElderCenterCellDirective, ElderChipLabelDirective, ElderChipListSelectComponent, ElderChipListSelectModule, ElderChipsIncludeExcludeDirective, ElderChipsModule, ElderClearSelectDirective, ElderClipboardPutDirective, ElderClipboardService, ElderCompositeSortComponent, ElderCompositeSortDcDirective, ElderConfirmDialogComponent, ElderConnectivityModule, ElderConnectivityService, ElderContainersModule, ElderContinuatorComponent, ElderCsvExportBtnComponent, ElderCsvModule, ElderCurrencyModule, ElderCurrencyPipe, ElderDataActivationDirective, ElderDataCommonModule, ElderDataToolbarComponent, ElderDataTransferModule, ElderDataTransferService, ElderDataViewBaseComponent, ElderDataViewDndDirective, ElderDataViewDndGroupDirective, ElderDataViewItemDragDirective, 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, ElderFilterChipTemplateComponent, ElderFormFieldControlBase, ElderFormFieldDenseDirective, ElderFormFieldLabelDirective, ElderFormFieldNoHintDirective, ElderFormFieldNoSpinnerDirective, ElderFormsDirectivesModule, ElderFormsModule, ElderFromFieldBase, ElderFromFieldEntityBase, ElderFromFieldMultiEntityBase, ElderGenericResizableLayoutComponent, ElderGridActivationDirective, ElderGridComponent, ElderGridModule, ElderGridNavigationBarDirective, ElderGridTileDirective, ElderGridToolbarDirective, ElderHeaderComponent, ElderHeaderModule, ElderI18nEntitiesModule, ElderIFrameModule, ElderInfiniteAutocompleteDirective, ElderInfiniteScrollDirective, ElderInfiniteScrollModule, ElderInputPatternDirective, ElderIntervalInputComponent, ElderIntervalPickerBindingDirective, ElderIntervalPickerComponent, ElderIntervalPickerToggleComponent, ElderKeyEventDirective, ElderLabelInputComponent, ElderLabelsModule, ElderLanguageConfig, ElderLanguageInterceptor, ElderLanguageService, ElderLanguageSwitcherComponent, ElderLocalDateInputComponent, ElderLocalDndSupportDirective, ElderLocalTimeInputComponent, ElderLocalesDeChModule, ElderLocalizedInputComponent, ElderLocalizedInputDialogComponent, ElderLocalizedInputDialogService, ElderLocalizedInputTableComponent, ElderLocalizedTextColumnDirective, ElderLocalizedTextsDirective, ElderLock, ElderLockContext, ElderLockContextDirective, ElderLockManagerService, ElderLockWarningService, ElderMasterActivationDirective, ElderMasterDetailComponent, ElderMasterDetailModule, ElderMasterDetailService, ElderMasterDirective, ElderMaxValidator, ElderMeasuresModule, ElderMinValidator, ElderMultiEntityValueAccessorUtil, ElderMultiSelectAllInitialDirective, ElderMultiSelectBase, ElderMultiSelectChipOptionsComponent, ElderMultiSelectChipsComponent, ElderMultiSelectChipsOptionsDirective, ElderMultiSelectFormField, ElderMultiTranslateHttpLoader, ElderMultipleOfUtil, ElderMultipleOfValidator, ElderNavGroupComponent, ElderNavLinkComponent, ElderNavListComponent, ElderNavModule, ElderNextFocusableDirective, ElderNumberCellDirective, ElderOfflineIndicatorComponent, ElderOverlayComponent, ElderOverlayModule, ElderOverlayOriginDirective, ElderOverlayRef, ElderOverlayTriggerDirective, ElderPaddingDirective, ElderPaneActionsComponent, ElderPaneComponent, ElderPaneContentComponent, ElderPaneHeaderComponent, ElderPaneSubtitleComponent, ElderPaneTitleComponent, ElderPanelModule, ElderPeriodInputComponent, ElderPipesModule, ElderPlugParentFormDirective, ElderPopoverComponent, ElderPopoverContentDirective, ElderPopoverTriggerDirective, ElderProgressBarComponent, ElderProgressBarModule, ElderProjectedColumnsDirective, ElderQuantityFormFieldComponent, ElderQuantityInputControlComponent, ElderQuantityPipe, ElderQuantityRangeValidator, ElderQuantityService, ElderQuantityTransformPipe, ElderQuestionDialogComponent, ElderRailNavDirective, ElderRepeatPipe, ElderRequiredDimensionsValidator, ElderRequiredIgnoreZeroValidator, ElderRequiredQuantityValidator, ElderResizableDirective, ElderResizablePaneLayoutComponent, ElderResizeBehaviorDirective, ElderResizeContainerComponent, ElderRoundPipe, ElderRouteOutletDrawerService, ElderRouterOutletService, ElderRouterService, ElderSafeUrlPipe, ElderScrollContainerComponent, ElderScrollbarScopeDirective, ElderSearchBoxComponent, ElderSearchContextDirective, ElderSearchIncludeExcludeDirective, ElderSearchInputDirective, ElderSearchModule, ElderSearchPanelComponent, ElderSearchUrlDirective, ElderSelectBase, ElderSelectChipAvatarDirective, ElderSelectChipDirective, ElderSelectComponent, ElderSelectComponentState, ElderSelectCustomInputDirective, ElderSelectFormField, ElderSelectModule, ElderSelectOnTabDirective, ElderSelectOptionComponent, ElderSelectValueDirective, ElderSelectionDialogComponent, ElderSelectionDialogDirective, ElderSelectionMasterCheckboxComponent, ElderSelectionPopupTriggerAdapterDirective, ElderShellCenterDirective, ElderShellComponent, ElderShellModule, ElderShellNavigationToggleComponent, ElderShellService, ElderShellSideLeftDirective, ElderShellSideRightDirective, ElderShellSlotDirective, ElderShellStaticNavSlotDirective, ElderSinglePaneWrapperComponent, ElderSingleStateCheckboxDirective, ElderStackCardDirective, ElderStaticNavToggleComponent, ElderStopEventPropagationDirective, ElderSuggestionPanelComponent, ElderTabDirective, ElderTabFocusTrapDirective, ElderTabGroupRoutingDirective, ElderTabModule, ElderTableActivationDirective, ElderTableComponent, ElderTableDropListConnectorDirective, ElderTableGroup, ElderTableModel, ElderTableModelCdkTableBinding, ElderTableModelQueryGroup, ElderTableModule, ElderTableNavigationBarDirective, ElderTableProviders, ElderTableRootDirective, ElderTableSelectionCellComponent, ElderTableSortDirective, ElderTableToolbarDirective, ElderThemeApplierDirective, ElderThemeDirective, ElderThemeModule, ElderThemePreferenceService, ElderThemeService, ElderThemeToggleComponent, ElderTileComponent, ElderTimeModule, ElderToastModule, ElderToastService, ElderTogglePanelComponent, ElderTogglePanelPrimaryDirective, ElderTogglePanelSecondaryDirective, ElderTogglePanelTriggerDirective, ElderToggleTextInputDirective, ElderToolbarColumnDirective, ElderToolbarComponent, ElderToolbarContentDirective, ElderToolbarModule, ElderToolbarService, ElderToolbarTitleComponent, ElderToolbarTitleService, ElderTouchedDirective, ElderTranslatePipe, ElderTranslateService, ElderTripleStateCheckboxDirective, ElderTruncatePipe, ElderUnitSelectDirective, ElderUnitService, ElderUrlFragment, ElderUrlFragmentModule, ElderUrlFragmentParamsService, ElderUrlFragmentSwitcherComponent, ElderValidationErrorDirective, ElderWideScrollbarDirective, ElderWordAutocompleteDirective, EntitiesChangeEvent, EntityDelta, EntityIdUtil, EntitySetPatch, ErrorUtil, ExceptionDetailCtx, FallbackValidationMessageStrategy, FileEntry, FileListingRx, FileUploadClient, Filter, FilterContext, FilterUtil, FocusUtil, FormFieldBaseComponent, GlobalDragDropService, HttpClientPristine, HttpDataTransfer, HttpDataTransferAggregateComponent, HttpDataTransferComponent, HttpDataTransferIndicatorComponent, HttpDataTransferOverviewComponent, HttpParamsBuilder, I18nBase, I18nPickAsyncPipe, I18nPickPipe, I18nText, IFrameState, IframeCloseDirective, IframeDialogComponent, IframeHostComponent, IframeService, IframeSideContentComponent, IncludeExcludeSelectionModel, IncludeExcludeState, IncludeExcludeValue, IndexedEntities, InternalRestClientConfig, Interval, IsoDurationPipe, IsoIntervalFormatUtil, IsoIntervalParsePipe, IsoIntervalPipe, ItemActivationEvent, ItemActivationOptions, ItemModel, JsonMapUtil, KafentConfig, KafentEvent, KafentEventService, KafentEventStream, KafentEventStreamDisabled, KafentEventStreamSse, KafentEventTransport, KafentModule, KafentSseEventChannel, KafentTokenProvider, KafentTokenProviderSessionStorage, KafentTopicSse, KnownElderThemes, KnownLocaleTags, LocalDataFilter, LocalListDataSource, LocalPagedDataSource, Locale, LocalisationPickerService, MasterDetailActivationEvent, MasterSelectionState, MatTableDataContextBinding, MatTableDataContextBindingBuilder, ModifierKeyService, ModifierKeyState, MultiModelBaseComponent, NamedColorDirective, NamedColorSelectDirective, NamedColorSelectValueComponent, NextNumberUtil, ObjectFieldMatcher, ObjectPathResolver, Objects, OnlineStatus, Page, PageRequest, Pageable, ParseUtil, Path, PathNode, PeriodBucket, PeriodDuration, PeriodFormat, PhoneFormatService, PhonePipe, ProcessIterationContext, ProcessState, PropertyPathUtil, Quantity, QueryListBinding, QuestionDialogConfig, ReactiveEventSource, ReactiveEventSourceState, ReactiveFetchEventSource, ReactiveFetchEventSourceService, ReactiveMap, ReactiveSSeMessage, RefreshingEntity, ResizeObserverDirective, RestClient, RestClientConfig, RestClientContinuable, RestClientList, RestClientPaged, RoutedTabActivationFailed, SearchInputState, SelectChipSpecUtil, SelectOptionChipSpecUtil, SelectionChangedEvent, SelectionEventSource, SelectionModel, SelectionModelPopupDirective, Sets, SimpleLocalisationPicker, SimpleSearchInput, Sort, SortUtil, StandardToastComponent, SubBar, SuggestionProvider, TargetValue, TemplateCompositeControl, TemplatedSelectionDialogComponent, TemporalPlainDateInterval, TemporalUtil, ThemeSpec, TimeAgoPipe, TimeDurationPipe, TimeUtil, ToIsoDateStringPipe, ToastType, TokenChunkRequest, ToolbarHeader, Translated, TranslatedConverter, TranslatedEnumValue, TranslatedText, TypedEventMessage, Unit, UnitDimension, UnitDimensionInfo, UnitInfo, UnitRegistry, UnreachableCaseError, UrlBuilder, UrlQueryParams, UuidUtil, ValueAccessorBase, ValueChangeEvent, ValueWrapper, ViewDropModelUpdateInstruction, ViewProviders, WebLocalStorage, WebSessionStorage, WebappDomainFragmentSpec, WebappDomainSpec, WebappDomainSpecService, WebappDomainSwitcherDirective, WebappUrlFragmentSwitcherConfig, WeightPipe, alphaNumStringComparator, booleanTransformFn, buildFormIntegrationProviders, coerceInterval, coerceIntervalIsoStr, createDataOptionsProvider, createElderDefaultTranslateLoader, createSelectionModel, elderChipColorLevels, elderChipColorStates, elderNamedColorRoles, elderNamedColorToken, elderNamedColors, existingOrNewElderTableModel, initSearchUrlService, isActivePagedDataContext, isContinuableDataContext, isContinuableDataSource, isDataContext, isDataSource, isDataViewMessageType, isElderEntityValueAccessor, isElderMultiEntityValueAccessor, isListDataSource, isLocalDataSource, isLocalListDataSource, isLocalPagedDataSource, isPagedDataSource, lazySample, lazySampleTime, naturalValueComparator, newElderTableModel, provideElderBrandAssets, provideElderDefaults, provideElderLanguage, provideElderTranslate, proxyControlContainer, registerLocale, runInZone, someSignal, themeInit };
39629
39614
  //# sourceMappingURL=elderbyte-ngx-starter.mjs.map