@dereekb/dbx-web 12.1.7 → 12.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/esm2022/lib/extension/download/text/download.text.component.mjs +18 -14
  2. package/esm2022/table/lib/index.mjs +4 -1
  3. package/esm2022/table/lib/table.cell.action.component.mjs +2 -2
  4. package/esm2022/table/lib/table.component.mjs +99 -8
  5. package/esm2022/table/lib/table.fullsummaryrow.component.mjs +34 -0
  6. package/esm2022/table/lib/table.group.directive.mjs +20 -0
  7. package/esm2022/table/lib/table.group.footer.component.mjs +35 -0
  8. package/esm2022/table/lib/table.group.header.component.mjs +35 -0
  9. package/esm2022/table/lib/table.item.action.component.mjs +4 -4
  10. package/esm2022/table/lib/table.item.cell.component.mjs +4 -4
  11. package/esm2022/table/lib/table.item.directive.mjs +7 -7
  12. package/esm2022/table/lib/table.item.header.component.mjs +4 -4
  13. package/esm2022/table/lib/table.mjs +10 -2
  14. package/esm2022/table/lib/table.module.mjs +4 -16
  15. package/esm2022/table/lib/table.store.mjs +16 -2
  16. package/fesm2022/dereekb-dbx-web-table.mjs +232 -27
  17. package/fesm2022/dereekb-dbx-web-table.mjs.map +1 -1
  18. package/fesm2022/dereekb-dbx-web.mjs +15 -11
  19. package/fesm2022/dereekb-dbx-web.mjs.map +1 -1
  20. package/lib/extension/download/text/download.text.component.d.ts +7 -9
  21. package/lib/extension/table/_table.scss +7 -0
  22. package/lib/layout/style/_style.scss +4 -0
  23. package/package.json +1 -1
  24. package/table/lib/date/daterange.table.cell.input.component.d.ts +1 -1
  25. package/table/lib/index.d.ts +3 -0
  26. package/table/lib/table.cell.action.component.d.ts +1 -1
  27. package/table/lib/table.cell.input.component.d.ts +1 -1
  28. package/table/lib/table.cell.summaryend.component.d.ts +1 -1
  29. package/table/lib/table.cell.summarystart.component.d.ts +1 -1
  30. package/table/lib/table.column.directive.d.ts +1 -1
  31. package/table/lib/table.component.d.ts +38 -15
  32. package/table/lib/table.d.ts +47 -7
  33. package/table/lib/table.directive.d.ts +2 -2
  34. package/table/lib/table.fullsummaryrow.component.d.ts +12 -0
  35. package/table/lib/table.group.directive.d.ts +14 -0
  36. package/table/lib/table.group.footer.component.d.ts +9 -0
  37. package/table/lib/table.group.header.component.d.ts +9 -0
  38. package/table/lib/table.item.action.component.d.ts +2 -2
  39. package/table/lib/table.item.cell.component.d.ts +2 -2
  40. package/table/lib/table.item.directive.d.ts +6 -6
  41. package/table/lib/table.item.header.component.d.ts +2 -2
  42. package/table/lib/table.module.d.ts +1 -13
  43. package/table/lib/table.store.d.ts +11 -9
@@ -1,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { signal, Component, ChangeDetectionStrategy, Injectable, inject, computed, NgModule, input, Directive, effect } from '@angular/core';
3
- import { DatePipe } from '@angular/common';
3
+ import { DatePipe, NgClass } from '@angular/common';
4
4
  import { isSameDateDay } from '@dereekb/date';
5
- import { filterMaybe, beginLoading, valueFromFinishedLoadingState, SubscriptionObject, maybeValueFromObservableOrValue, loadingStateContext } from '@dereekb/rxjs';
5
+ import { filterMaybe, beginLoading, valueFromFinishedLoadingState, mapLoadingStateValueWithOperator, asObservable, SubscriptionObject, maybeValueFromObservableOrValue, loadingStateContext } from '@dereekb/rxjs';
6
6
  import { ComponentStore } from '@ngrx/component-store';
7
7
  import { switchMap, first, tap, map, distinctUntilChanged, shareReplay, combineLatest, of, startWith, filter, throttleTime } from 'rxjs';
8
8
  import * as i1 from '@angular/material/datepicker';
@@ -19,6 +19,7 @@ import { DbxLoadingComponent } from '@dereekb/dbx-web';
19
19
  import { InfiniteScrollDirective } from 'ngx-infinite-scroll';
20
20
  import * as i1$1 from '@angular/material/table';
21
21
  import { MatTableModule } from '@angular/material/table';
22
+ import { pushArrayItemsIntoArray } from '@dereekb/util';
22
23
 
23
24
  /**
24
25
  * A table header component used for rendering date values on the header.
@@ -72,6 +73,16 @@ function dbxTableDateHeaderInjectionFactory() {
72
73
  };
73
74
  }
74
75
 
76
+ const NO_GROUPS_ID = 'none';
77
+ function defaultDbxTableItemGroup(items) {
78
+ return {
79
+ groupId: NO_GROUPS_ID,
80
+ items,
81
+ meta: undefined,
82
+ default: true
83
+ };
84
+ }
85
+
75
86
  class DbxTableStore extends ComponentStore {
76
87
  constructor() {
77
88
  super({
@@ -109,6 +120,19 @@ class DbxTableStore extends ComponentStore {
109
120
  columns$ = this.data$.pipe(map((x) => x.columns), shareReplay(1));
110
121
  itemsState$ = this.data$.pipe(switchMap((x) => x.items$), shareReplay(1));
111
122
  items$ = this.itemsState$.pipe(valueFromFinishedLoadingState(), filterMaybe(), shareReplay(1));
123
+ groupsState$ = this.itemsState$.pipe(mapLoadingStateValueWithOperator(switchMap((x) => {
124
+ return this.viewDelegate$.pipe(switchMap((viewDelegate) => {
125
+ let groups;
126
+ if (viewDelegate.groupBy) {
127
+ groups = asObservable(viewDelegate.groupBy(x));
128
+ }
129
+ else {
130
+ groups = of([defaultDbxTableItemGroup(x)]);
131
+ }
132
+ return groups;
133
+ }));
134
+ })), shareReplay(1));
135
+ groups$ = this.groupsState$.pipe(valueFromFinishedLoadingState(), filterMaybe(), shareReplay(1));
112
136
  // MARK: State Changes
113
137
  setInput = this.updater((state, input) => ({ ...state, input }));
114
138
  setDataDelegate = this.updater((state, dataDelegate) => ({ ...state, dataDelegate }));
@@ -276,7 +300,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
276
300
 
277
301
  class DbxTableActionCellComponent {
278
302
  tableStore = inject(DbxTableStore);
279
- config$ = this.tableStore.viewDelegate$.pipe(map((x) => x.summaryRowEnd), distinctUntilChanged());
303
+ config$ = this.tableStore.viewDelegate$.pipe(map((x) => x.actionHeader), distinctUntilChanged());
280
304
  configSignal = toSignal(this.config$);
281
305
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableActionCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
282
306
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DbxTableActionCellComponent, isStandalone: true, selector: "dbx-table-action-cell", ngImport: i0, template: `
@@ -443,20 +467,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
443
467
  /**
444
468
  * Abstract directive that has an element input.
445
469
  */
446
- class AbstractDbxTableElementDirective {
470
+ class AbstractDbxTableItemDirective {
447
471
  tableStore = inject((DbxTableStore));
448
- element = input();
449
- element$ = toObservable(this.element).pipe(filterMaybe(), distinctUntilChanged());
450
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxTableElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
451
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: AbstractDbxTableElementDirective, inputs: { element: { classPropertyName: "element", publicName: "element", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
472
+ item = input();
473
+ item$ = toObservable(this.item).pipe(filterMaybe(), distinctUntilChanged());
474
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxTableItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
475
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: AbstractDbxTableItemDirective, inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
452
476
  }
453
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxTableElementDirective, decorators: [{
477
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxTableItemDirective, decorators: [{
454
478
  type: Directive
455
479
  }] });
456
480
 
457
- class DbxTableItemCellComponent extends AbstractDbxTableElementDirective {
481
+ class DbxTableItemCellComponent extends AbstractDbxTableItemDirective {
458
482
  column = input();
459
- config$ = this.tableStore.viewDelegate$.pipe(switchMap((viewDelegate) => combineLatest([toObservable(this.column).pipe(filterMaybe()), this.element$]).pipe(map(([column, element]) => viewDelegate.itemCell(column, element)))), maybeValueFromObservableOrValue(), distinctUntilChanged());
483
+ config$ = this.tableStore.viewDelegate$.pipe(switchMap((viewDelegate) => combineLatest([toObservable(this.column).pipe(filterMaybe()), this.item$]).pipe(map(([column, item]) => viewDelegate.itemCell(column, item)))), maybeValueFromObservableOrValue(), distinctUntilChanged());
460
484
  configSignal = toSignal(this.config$);
461
485
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableItemCellComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
462
486
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: DbxTableItemCellComponent, isStandalone: true, selector: "dbx-table-item-cell", inputs: { column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
@@ -476,8 +500,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
476
500
  }]
477
501
  }] });
478
502
 
479
- class DbxTableItemHeaderComponent extends AbstractDbxTableElementDirective {
480
- config$ = this.tableStore.viewDelegate$.pipe(switchMap((viewDelegate) => this.element$.pipe(map((x) => viewDelegate.itemHeader(x)))), maybeValueFromObservableOrValue(), distinctUntilChanged());
503
+ class DbxTableItemHeaderComponent extends AbstractDbxTableItemDirective {
504
+ config$ = this.tableStore.viewDelegate$.pipe(switchMap((viewDelegate) => this.item$.pipe(map((x) => viewDelegate.itemHeader(x)))), maybeValueFromObservableOrValue(), distinctUntilChanged());
481
505
  configSignal = toSignal(this.config$);
482
506
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableItemHeaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
483
507
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DbxTableItemHeaderComponent, isStandalone: true, selector: "dbx-table-item-header", usesInheritance: true, ngImport: i0, template: `
@@ -497,12 +521,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
497
521
  }]
498
522
  }] });
499
523
 
500
- class DbxTableItemActionComponent extends AbstractDbxTableElementDirective {
524
+ class DbxTableItemActionComponent extends AbstractDbxTableItemDirective {
501
525
  config$ = this.tableStore.viewDelegate$.pipe(map((viewDelegate) => {
502
526
  const itemAction = viewDelegate.itemAction;
503
527
  let obs = undefined;
504
528
  if (itemAction) {
505
- obs = this.element$.pipe(map((x) => itemAction(x)));
529
+ obs = this.item$.pipe(map((x) => itemAction(x)));
506
530
  }
507
531
  return obs;
508
532
  }), maybeValueFromObservableOrValue(), distinctUntilChanged());
@@ -525,8 +549,112 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
525
549
  }]
526
550
  }] });
527
551
 
552
+ /**
553
+ * Abstract directive that has an element input.
554
+ */
555
+ class AbstractDbxTableGroupDirective {
556
+ tableStore = inject((DbxTableStore));
557
+ group = input();
558
+ group$ = toObservable(this.group).pipe(filterMaybe(), distinctUntilChanged());
559
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxTableGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
560
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: AbstractDbxTableGroupDirective, inputs: { group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
561
+ }
562
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxTableGroupDirective, decorators: [{
563
+ type: Directive
564
+ }] });
565
+
566
+ class DbxTableGroupHeaderComponent extends AbstractDbxTableGroupDirective {
567
+ config$ = this.tableStore.viewDelegate$.pipe(map((viewDelegate) => {
568
+ const groupHeader = viewDelegate.groupHeader;
569
+ let obs = undefined;
570
+ if (groupHeader) {
571
+ obs = this.group$.pipe(map((x) => groupHeader(x)));
572
+ }
573
+ return obs;
574
+ }), maybeValueFromObservableOrValue(), distinctUntilChanged());
575
+ configSignal = toSignal(this.config$);
576
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableGroupHeaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
577
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DbxTableGroupHeaderComponent, isStandalone: true, selector: "dbx-table-group-header", usesInheritance: true, ngImport: i0, template: `
578
+ <dbx-injection [config]="configSignal()"></dbx-injection>
579
+ `, isInline: true, dependencies: [{ kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
580
+ }
581
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableGroupHeaderComponent, decorators: [{
582
+ type: Component,
583
+ args: [{
584
+ selector: 'dbx-table-group-header',
585
+ template: `
586
+ <dbx-injection [config]="configSignal()"></dbx-injection>
587
+ `,
588
+ changeDetection: ChangeDetectionStrategy.OnPush,
589
+ imports: [DbxInjectionComponent],
590
+ standalone: true
591
+ }]
592
+ }] });
593
+
594
+ class DbxTableGroupFooterComponent extends AbstractDbxTableGroupDirective {
595
+ config$ = this.tableStore.viewDelegate$.pipe(map((viewDelegate) => {
596
+ const groupFooter = viewDelegate.groupFooter;
597
+ let obs = undefined;
598
+ if (groupFooter) {
599
+ obs = this.group$.pipe(map((x) => groupFooter(x)));
600
+ }
601
+ return obs;
602
+ }), maybeValueFromObservableOrValue(), distinctUntilChanged());
603
+ configSignal = toSignal(this.config$);
604
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableGroupFooterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
605
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DbxTableGroupFooterComponent, isStandalone: true, selector: "dbx-table-group-footer", usesInheritance: true, ngImport: i0, template: `
606
+ <dbx-injection [config]="configSignal()"></dbx-injection>
607
+ `, isInline: true, dependencies: [{ kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
608
+ }
609
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableGroupFooterComponent, decorators: [{
610
+ type: Component,
611
+ args: [{
612
+ selector: 'dbx-table-group-footer',
613
+ template: `
614
+ <dbx-injection [config]="configSignal()"></dbx-injection>
615
+ `,
616
+ changeDetection: ChangeDetectionStrategy.OnPush,
617
+ imports: [DbxInjectionComponent],
618
+ standalone: true
619
+ }]
620
+ }] });
621
+
622
+ /**
623
+ * A table header component used for injecting the input picker view.
624
+ */
625
+ class DbxTableFullSummaryRowComponent {
626
+ tableStore = inject(DbxTableStore);
627
+ config$ = this.tableStore.viewDelegate$.pipe(map((x) => x.fullSummaryRow), distinctUntilChanged());
628
+ configSignal = toSignal(this.config$);
629
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableFullSummaryRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
630
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DbxTableFullSummaryRowComponent, isStandalone: true, selector: "dbx-table-full-summary-row", host: { classAttribute: "dbx-h100 dbx-flex-bar" }, ngImport: i0, template: `
631
+ <dbx-injection [config]="configSignal()"></dbx-injection>
632
+ `, isInline: true, dependencies: [{ kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
633
+ }
634
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableFullSummaryRowComponent, decorators: [{
635
+ type: Component,
636
+ args: [{
637
+ selector: 'dbx-table-full-summary-row',
638
+ template: `
639
+ <dbx-injection [config]="configSignal()"></dbx-injection>
640
+ `,
641
+ changeDetection: ChangeDetectionStrategy.OnPush,
642
+ standalone: true,
643
+ imports: [DbxInjectionComponent],
644
+ host: {
645
+ class: 'dbx-h100 dbx-flex-bar'
646
+ }
647
+ }]
648
+ }] });
649
+
528
650
  const DBX_TABLE_ITEMS_COLUMN_NAME = '_items';
529
651
  const DBX_TABLE_ACTIONS_COLUMN_NAME = '_actions';
652
+ function isDbxTableViewGroupElement(element) {
653
+ return element.type === 'group';
654
+ }
655
+ function isDbxTableViewItemElement(element) {
656
+ return element.type === 'item';
657
+ }
530
658
  /**
531
659
  * A table with fixed content
532
660
  */
@@ -543,7 +671,48 @@ class DbxTableViewComponent {
543
671
  innerColumnNames$ = this.innerColumns$.pipe(map((x) => x.map((y) => y.columnName)), shareReplay(1));
544
672
  innerColumnsSignal = toSignal(this.innerColumns$);
545
673
  innerColumnNamesSignal = toSignal(this.innerColumnNames$);
546
- elements$ = this.tableStore.items$;
674
+ elementsState$ = this.tableStore.groupsState$.pipe(mapLoadingStateValueWithOperator(switchMap((groups) => {
675
+ return this.tableStore.viewDelegate$.pipe(map((viewDelegate) => {
676
+ const { groupHeader: inputGroupHeader, groupFooter: inputGroupFooter } = viewDelegate;
677
+ const hasGroupHeader = inputGroupHeader != null ? (group) => inputGroupHeader(group) != null : () => false;
678
+ const hasGroupFooter = inputGroupFooter != null ? (group) => inputGroupFooter(group) != null : () => false;
679
+ return groups
680
+ .map((group) => {
681
+ const { items } = group;
682
+ const itemElements = items.map((item) => ({
683
+ type: 'item',
684
+ item
685
+ }));
686
+ let elements;
687
+ if (group.default) {
688
+ elements = itemElements;
689
+ }
690
+ else {
691
+ const header = hasGroupHeader(group);
692
+ const footer = hasGroupFooter(group);
693
+ elements = [];
694
+ if (header) {
695
+ elements.push({
696
+ type: 'group',
697
+ location: 'header',
698
+ group
699
+ });
700
+ }
701
+ pushArrayItemsIntoArray(elements, itemElements);
702
+ if (footer) {
703
+ elements.push({
704
+ type: 'group',
705
+ location: 'footer',
706
+ group
707
+ });
708
+ }
709
+ }
710
+ return elements;
711
+ })
712
+ .flat();
713
+ }));
714
+ })), shareReplay(1));
715
+ elements$ = this.elementsState$.pipe(valueFromFinishedLoadingState([]), shareReplay(1));
547
716
  displayedColumns$ = this.innerColumnNames$.pipe(map((columnNames) => {
548
717
  return [this.itemsColumnName, ...columnNames, this.actionsColumnName];
549
718
  }), shareReplay(1));
@@ -551,21 +720,60 @@ class DbxTableViewComponent {
551
720
  const columnNames = this.innerColumnNamesSignal() || [];
552
721
  return [this.itemsColumnName, ...columnNames, this.actionsColumnName];
553
722
  });
723
+ visibleColumnsSignal = computed(() => {
724
+ const displayedColumns = this.displayedColumnsSignal();
725
+ // TODO: Every time the table is rendered/size changes/etc we should recompute width of the first n columns that span the viewport
726
+ // in order to calculate a colspan for the group header/footer that is not greater than span of the table for a given view size
727
+ // I.E. if the screen shrinks to only show the first 4 columns, then the colspan should be 4.
728
+ // as a temporary measure, we just show half the columns
729
+ return displayedColumns.length / 2;
730
+ });
554
731
  trackByFunction$ = this.tableStore.viewDelegate$.pipe(map((x) => x.trackBy ?? this.DEFAULT_TRACK_BY_FUNCTION), shareReplay(1));
555
- trackByFunctionSignal = toSignal(this.trackByFunction$, { initialValue: this.DEFAULT_TRACK_BY_FUNCTION });
732
+ inputTrackByFunctionSignal = toSignal(this.trackByFunction$, { initialValue: this.DEFAULT_TRACK_BY_FUNCTION });
733
+ trackElementByFunctionSignal = computed(() => {
734
+ const trackByFunction = this.inputTrackByFunctionSignal();
735
+ const fn = (index, element) => {
736
+ if (element.type === 'item') {
737
+ return `i_${trackByFunction(index, element.item)}`;
738
+ }
739
+ else {
740
+ return `g_${element.group.groupId}`;
741
+ }
742
+ };
743
+ return fn;
744
+ });
556
745
  context = loadingStateContext({ obs: this.tableStore.dataState$ });
557
- dataLoadingContext = loadingStateContext({ obs: this.tableStore.itemsState$ });
746
+ dataLoadingContext = loadingStateContext({ obs: this.elementsState$ });
558
747
  contextSignal = toSignal(this.context.state$);
559
748
  dataLoadingContextSignal = toSignal(this.dataLoadingContext.state$);
749
+ viewDelegateSignal = toSignal(this.tableStore.viewDelegate$);
560
750
  onScrollDown() {
561
751
  this.tableStore.loadMore();
562
752
  }
753
+ showItemRow(_, row) {
754
+ return row.type === 'item';
755
+ }
756
+ showGroupHeaderRow(_, row) {
757
+ return row.type === 'group' && row.location === 'header';
758
+ }
759
+ showGroupFooterRow(_, row) {
760
+ return row.type === 'group' && row.location === 'footer';
761
+ }
762
+ showFooterRowSignal = computed(() => {
763
+ const viewDelegate = this.viewDelegateSignal();
764
+ const showFooterRow = viewDelegate && (viewDelegate.summaryRowHeader != null || viewDelegate.columnFooter != null || viewDelegate.summaryRowEnd != null);
765
+ return showFooterRow;
766
+ });
767
+ showFullSummaryRowSignal = computed(() => {
768
+ const viewDelegate = this.viewDelegateSignal();
769
+ return viewDelegate?.fullSummaryRow != null;
770
+ });
563
771
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
564
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxTableViewComponent, isStandalone: true, selector: "dbx-table-view", inputs: { scrollDistance: { classPropertyName: "scrollDistance", publicName: "scrollDistance", isSignal: true, isRequired: false, transformFunction: null }, throttleScroll: { classPropertyName: "throttleScroll", publicName: "throttleScroll", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<dbx-loading [context]=\"context\">\n <dbx-loading class=\"dbx-table-view-loading\" [linear]=\"true\" [context]=\"dataLoadingContext\"></dbx-loading>\n <section class=\"dbx-table-view\" infinite-scroll [infiniteScrollDistance]=\"scrollDistance()\" [infiniteScrollThrottle]=\"throttleScroll()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\">\n <table class=\"dbx-table-view-table\" mat-table [dataSource]=\"elements$\" [trackBy]=\"trackByFunctionSignal() || DEFAULT_TRACK_BY_FUNCTION\">\n <!-- Header/Item column -->\n <ng-container [matColumnDef]=\"itemsColumnName\" [sticky]=\"true\">\n <th mat-header-cell *matHeaderCellDef>\n <dbx-table-input-cell></dbx-table-input-cell>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-header [element]=\"element\"></dbx-table-item-header>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-summary-start-cell></dbx-table-summary-start-cell>\n </td>\n </ng-container>\n\n <!-- Column Definitions -->\n @for (column of innerColumnsSignal(); track column.columnName) {\n <ng-container [matColumnDef]=\"column.columnName\" [sticky]=\"false\">\n <th mat-header-cell *matHeaderCellDef>\n <dbx-table-column-header [column]=\"column\"></dbx-table-column-header>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-cell [element]=\"element\" [column]=\"column\"></dbx-table-item-cell>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-column-footer [column]=\"column\"></dbx-table-column-footer>\n </td>\n </ng-container>\n }\n\n <!-- Tail/Action column -->\n <ng-container [matColumnDef]=\"actionsColumnName\" [stickyEnd]=\"true\">\n <th mat-header-cell *matHeaderCellDef>\n <dbx-table-action-cell></dbx-table-action-cell>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-action [element]=\"element\"></dbx-table-item-action>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-summary-end-cell></dbx-table-summary-end-cell>\n </td>\n </ng-container>\n\n <!-- Table View -->\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n\n <tr mat-row *matRowDef=\"let row; columns: displayedColumnsSignal()\"></tr>\n\n <tr mat-footer-row *matFooterRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n </table>\n </section>\n</dbx-loading>\n", dependencies: [{ kind: "component", type: DbxLoadingComponent, selector: "dbx-loading", inputs: ["padding", "show", "text", "mode", "color", "diameter", "linear", "loading", "error", "context"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i1$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$1.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i1$1.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i1$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i1$1.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i1$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i1$1.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: DbxTableInputCellComponent, selector: "dbx-table-input-cell" }, { kind: "component", type: DbxTableItemHeaderComponent, selector: "dbx-table-item-header" }, { kind: "component", type: DbxTableItemCellComponent, selector: "dbx-table-item-cell", inputs: ["column"] }, { kind: "component", type: DbxTableItemActionComponent, selector: "dbx-table-item-action" }, { kind: "component", type: DbxTableActionCellComponent, selector: "dbx-table-action-cell" }, { kind: "component", type: DbxTableColumnHeaderComponent, selector: "dbx-table-column-header" }, { kind: "component", type: DbxTableColumnFooterComponent, selector: "dbx-table-column-footer" }, { kind: "component", type: DbxTableSummaryStartCellComponent, selector: "dbx-table-summary-start-cell" }, { kind: "component", type: DbxTableSummaryEndCellComponent, selector: "dbx-table-summary-end-cell" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
772
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxTableViewComponent, isStandalone: true, selector: "dbx-table-view", inputs: { scrollDistance: { classPropertyName: "scrollDistance", publicName: "scrollDistance", isSignal: true, isRequired: false, transformFunction: null }, throttleScroll: { classPropertyName: "throttleScroll", publicName: "throttleScroll", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<dbx-loading [context]=\"context\">\n <dbx-loading class=\"dbx-table-view-loading\" [linear]=\"true\" [context]=\"dataLoadingContext\"></dbx-loading>\n <section class=\"dbx-table-view\" infinite-scroll [infiniteScrollDistance]=\"scrollDistance()\" [infiniteScrollThrottle]=\"throttleScroll()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\">\n <table class=\"dbx-table-view-table\" mat-table [dataSource]=\"elements$\" [trackBy]=\"trackElementByFunctionSignal()\" multiTemplateDataRows>\n <!-- Groups -->\n <!-- Group Header column -->\n <ng-container matColumnDef=\"groupHeaderColumn\" [sticky]=\"true\">\n <td mat-cell [attr.colspan]=\"visibleColumnsSignal()\" *matCellDef=\"let element\">\n <dbx-table-group-header [group]=\"element.group\"></dbx-table-group-header>\n </td>\n </ng-container>\n\n <!-- Group Footer column -->\n <ng-container matColumnDef=\"groupFooterColumn\" [sticky]=\"true\">\n <td mat-cell [attr.colspan]=\"visibleColumnsSignal()\" *matCellDef=\"let element\">\n <dbx-table-group-footer [group]=\"element.group\"></dbx-table-group-footer>\n </td>\n </ng-container>\n\n <!-- Items -->\n <!-- Header/Item column -->\n <ng-container [matColumnDef]=\"itemsColumnName\" [sticky]=\"true\">\n <th mat-header-cell *matHeaderCellDef>\n <dbx-table-input-cell></dbx-table-input-cell>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n @if (element.item) {\n <dbx-table-item-header [item]=\"element.item\"></dbx-table-item-header>\n }\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-summary-start-cell></dbx-table-summary-start-cell>\n </td>\n </ng-container>\n\n <!-- Column Definitions -->\n @for (column of innerColumnsSignal(); track column.columnName) {\n <ng-container [matColumnDef]=\"column.columnName\" [sticky]=\"false\">\n <th mat-header-cell *matHeaderCellDef>\n <dbx-table-column-header [column]=\"column\"></dbx-table-column-header>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n @if (element.item) {\n <dbx-table-item-cell [item]=\"element.item\" [column]=\"column\"></dbx-table-item-cell>\n }\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-column-footer [column]=\"column\"></dbx-table-column-footer>\n </td>\n </ng-container>\n }\n\n <!-- Tail/Action column -->\n <ng-container [matColumnDef]=\"actionsColumnName\" [stickyEnd]=\"true\">\n <th mat-header-cell *matHeaderCellDef>\n <dbx-table-action-cell></dbx-table-action-cell>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n @if (element.item) {\n <dbx-table-item-action [item]=\"element.item\"></dbx-table-item-action>\n }\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-summary-end-cell></dbx-table-summary-end-cell>\n </td>\n </ng-container>\n\n <!-- Table View -->\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n\n <tr mat-row *matRowDef=\"let row; columns: ['groupHeaderColumn']; when: showGroupHeaderRow\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumnsSignal(); when: showItemRow\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['groupFooterColumn']; when: showGroupFooterRow\"></tr>\n\n <tr [ngClass]=\"{ 'dbx-hide': !showFooterRowSignal() }\" mat-footer-row *matFooterRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n </table>\n </section>\n <!-- Full summary row -->\n @if (showFullSummaryRowSignal()) {\n <div class=\"mat-mdc-table dbx-table-view-full-summary-row-container\">\n <div class=\"mdc-data-table__cell mat-mdc-row\">\n <dbx-table-full-summary-row></dbx-table-full-summary-row>\n </div>\n </div>\n }\n</dbx-loading>\n", dependencies: [{ kind: "component", type: DbxLoadingComponent, selector: "dbx-loading", inputs: ["padding", "show", "text", "mode", "color", "diameter", "linear", "loading", "error", "context"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i1$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$1.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i1$1.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i1$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i1$1.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i1$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i1$1.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: DbxTableInputCellComponent, selector: "dbx-table-input-cell" }, { kind: "component", type: DbxTableItemHeaderComponent, selector: "dbx-table-item-header" }, { kind: "component", type: DbxTableItemCellComponent, selector: "dbx-table-item-cell", inputs: ["column"] }, { kind: "component", type: DbxTableItemActionComponent, selector: "dbx-table-item-action" }, { kind: "component", type: DbxTableActionCellComponent, selector: "dbx-table-action-cell" }, { kind: "component", type: DbxTableColumnHeaderComponent, selector: "dbx-table-column-header" }, { kind: "component", type: DbxTableColumnFooterComponent, selector: "dbx-table-column-footer" }, { kind: "component", type: DbxTableSummaryStartCellComponent, selector: "dbx-table-summary-start-cell" }, { kind: "component", type: DbxTableSummaryEndCellComponent, selector: "dbx-table-summary-end-cell" }, { kind: "component", type: DbxTableGroupHeaderComponent, selector: "dbx-table-group-header" }, { kind: "component", type: DbxTableGroupFooterComponent, selector: "dbx-table-group-footer" }, { kind: "component", type: DbxTableFullSummaryRowComponent, selector: "dbx-table-full-summary-row" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
565
773
  }
566
774
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableViewComponent, decorators: [{
567
775
  type: Component,
568
- args: [{ selector: 'dbx-table-view', imports: [DbxLoadingComponent, InfiniteScrollDirective, MatTableModule, DbxTableInputCellComponent, DbxTableItemHeaderComponent, DbxTableItemCellComponent, DbxTableItemActionComponent, DbxTableActionCellComponent, DbxTableColumnHeaderComponent, DbxTableColumnFooterComponent, DbxTableSummaryStartCellComponent, DbxTableSummaryEndCellComponent], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<dbx-loading [context]=\"context\">\n <dbx-loading class=\"dbx-table-view-loading\" [linear]=\"true\" [context]=\"dataLoadingContext\"></dbx-loading>\n <section class=\"dbx-table-view\" infinite-scroll [infiniteScrollDistance]=\"scrollDistance()\" [infiniteScrollThrottle]=\"throttleScroll()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\">\n <table class=\"dbx-table-view-table\" mat-table [dataSource]=\"elements$\" [trackBy]=\"trackByFunctionSignal() || DEFAULT_TRACK_BY_FUNCTION\">\n <!-- Header/Item column -->\n <ng-container [matColumnDef]=\"itemsColumnName\" [sticky]=\"true\">\n <th mat-header-cell *matHeaderCellDef>\n <dbx-table-input-cell></dbx-table-input-cell>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-header [element]=\"element\"></dbx-table-item-header>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-summary-start-cell></dbx-table-summary-start-cell>\n </td>\n </ng-container>\n\n <!-- Column Definitions -->\n @for (column of innerColumnsSignal(); track column.columnName) {\n <ng-container [matColumnDef]=\"column.columnName\" [sticky]=\"false\">\n <th mat-header-cell *matHeaderCellDef>\n <dbx-table-column-header [column]=\"column\"></dbx-table-column-header>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-cell [element]=\"element\" [column]=\"column\"></dbx-table-item-cell>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-column-footer [column]=\"column\"></dbx-table-column-footer>\n </td>\n </ng-container>\n }\n\n <!-- Tail/Action column -->\n <ng-container [matColumnDef]=\"actionsColumnName\" [stickyEnd]=\"true\">\n <th mat-header-cell *matHeaderCellDef>\n <dbx-table-action-cell></dbx-table-action-cell>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n <dbx-table-item-action [element]=\"element\"></dbx-table-item-action>\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-summary-end-cell></dbx-table-summary-end-cell>\n </td>\n </ng-container>\n\n <!-- Table View -->\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n\n <tr mat-row *matRowDef=\"let row; columns: displayedColumnsSignal()\"></tr>\n\n <tr mat-footer-row *matFooterRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n </table>\n </section>\n</dbx-loading>\n" }]
776
+ args: [{ selector: 'dbx-table-view', imports: [DbxLoadingComponent, NgClass, InfiniteScrollDirective, MatTableModule, DbxTableInputCellComponent, DbxTableItemHeaderComponent, DbxTableItemCellComponent, DbxTableItemActionComponent, DbxTableActionCellComponent, DbxTableColumnHeaderComponent, DbxTableColumnFooterComponent, DbxTableSummaryStartCellComponent, DbxTableSummaryEndCellComponent, DbxTableGroupHeaderComponent, DbxTableGroupFooterComponent, DbxTableFullSummaryRowComponent], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<dbx-loading [context]=\"context\">\n <dbx-loading class=\"dbx-table-view-loading\" [linear]=\"true\" [context]=\"dataLoadingContext\"></dbx-loading>\n <section class=\"dbx-table-view\" infinite-scroll [infiniteScrollDistance]=\"scrollDistance()\" [infiniteScrollThrottle]=\"throttleScroll()\" [scrollWindow]=\"false\" (scrolled)=\"onScrollDown()\">\n <table class=\"dbx-table-view-table\" mat-table [dataSource]=\"elements$\" [trackBy]=\"trackElementByFunctionSignal()\" multiTemplateDataRows>\n <!-- Groups -->\n <!-- Group Header column -->\n <ng-container matColumnDef=\"groupHeaderColumn\" [sticky]=\"true\">\n <td mat-cell [attr.colspan]=\"visibleColumnsSignal()\" *matCellDef=\"let element\">\n <dbx-table-group-header [group]=\"element.group\"></dbx-table-group-header>\n </td>\n </ng-container>\n\n <!-- Group Footer column -->\n <ng-container matColumnDef=\"groupFooterColumn\" [sticky]=\"true\">\n <td mat-cell [attr.colspan]=\"visibleColumnsSignal()\" *matCellDef=\"let element\">\n <dbx-table-group-footer [group]=\"element.group\"></dbx-table-group-footer>\n </td>\n </ng-container>\n\n <!-- Items -->\n <!-- Header/Item column -->\n <ng-container [matColumnDef]=\"itemsColumnName\" [sticky]=\"true\">\n <th mat-header-cell *matHeaderCellDef>\n <dbx-table-input-cell></dbx-table-input-cell>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n @if (element.item) {\n <dbx-table-item-header [item]=\"element.item\"></dbx-table-item-header>\n }\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-summary-start-cell></dbx-table-summary-start-cell>\n </td>\n </ng-container>\n\n <!-- Column Definitions -->\n @for (column of innerColumnsSignal(); track column.columnName) {\n <ng-container [matColumnDef]=\"column.columnName\" [sticky]=\"false\">\n <th mat-header-cell *matHeaderCellDef>\n <dbx-table-column-header [column]=\"column\"></dbx-table-column-header>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n @if (element.item) {\n <dbx-table-item-cell [item]=\"element.item\" [column]=\"column\"></dbx-table-item-cell>\n }\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-column-footer [column]=\"column\"></dbx-table-column-footer>\n </td>\n </ng-container>\n }\n\n <!-- Tail/Action column -->\n <ng-container [matColumnDef]=\"actionsColumnName\" [stickyEnd]=\"true\">\n <th mat-header-cell *matHeaderCellDef>\n <dbx-table-action-cell></dbx-table-action-cell>\n </th>\n <td mat-cell *matCellDef=\"let element\">\n @if (element.item) {\n <dbx-table-item-action [item]=\"element.item\"></dbx-table-item-action>\n }\n </td>\n <td mat-footer-cell *matFooterCellDef>\n <dbx-table-summary-end-cell></dbx-table-summary-end-cell>\n </td>\n </ng-container>\n\n <!-- Table View -->\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n\n <tr mat-row *matRowDef=\"let row; columns: ['groupHeaderColumn']; when: showGroupHeaderRow\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumnsSignal(); when: showItemRow\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['groupFooterColumn']; when: showGroupFooterRow\"></tr>\n\n <tr [ngClass]=\"{ 'dbx-hide': !showFooterRowSignal() }\" mat-footer-row *matFooterRowDef=\"displayedColumnsSignal(); sticky: true\"></tr>\n </table>\n </section>\n <!-- Full summary row -->\n @if (showFullSummaryRowSignal()) {\n <div class=\"mat-mdc-table dbx-table-view-full-summary-row-container\">\n <div class=\"mdc-data-table__cell mat-mdc-row\">\n <dbx-table-full-summary-row></dbx-table-full-summary-row>\n </div>\n </div>\n }\n</dbx-loading>\n" }]
569
777
  }] });
570
778
 
571
779
  /**
@@ -595,14 +803,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
595
803
  }]
596
804
  }] });
597
805
 
598
- const importsAndExports = [DbxTableDirective, DbxTableViewComponent, DbxTableColumnHeaderComponent, DbxTableColumnFooterComponent, DbxTableInputCellComponent, DbxTableActionCellComponent, DbxTableItemCellComponent, DbxTableItemHeaderComponent, DbxTableItemActionComponent, DbxTableSummaryStartCellComponent, DbxTableSummaryEndCellComponent];
599
- /**
600
- * @deprecated import DbxTableDirective and DbxTableViewComponent directly instead.
601
- */
806
+ const importsAndExports = [DbxTableDirective, DbxTableViewComponent];
602
807
  class DbxTableModule {
603
808
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
604
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DbxTableModule, imports: [DbxTableDirective, DbxTableViewComponent, DbxTableColumnHeaderComponent, DbxTableColumnFooterComponent, DbxTableInputCellComponent, DbxTableActionCellComponent, DbxTableItemCellComponent, DbxTableItemHeaderComponent, DbxTableItemActionComponent, DbxTableSummaryStartCellComponent, DbxTableSummaryEndCellComponent], exports: [DbxTableDirective, DbxTableViewComponent, DbxTableColumnHeaderComponent, DbxTableColumnFooterComponent, DbxTableInputCellComponent, DbxTableActionCellComponent, DbxTableItemCellComponent, DbxTableItemHeaderComponent, DbxTableItemActionComponent, DbxTableSummaryStartCellComponent, DbxTableSummaryEndCellComponent] });
605
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableModule, imports: [DbxTableViewComponent, DbxTableColumnHeaderComponent, DbxTableColumnFooterComponent, DbxTableInputCellComponent, DbxTableActionCellComponent, DbxTableItemCellComponent, DbxTableItemHeaderComponent, DbxTableItemActionComponent, DbxTableSummaryStartCellComponent, DbxTableSummaryEndCellComponent] });
809
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DbxTableModule, imports: [DbxTableDirective, DbxTableViewComponent], exports: [DbxTableDirective, DbxTableViewComponent] });
810
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableModule, imports: [DbxTableViewComponent] });
606
811
  }
607
812
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxTableModule, decorators: [{
608
813
  type: NgModule,
@@ -616,5 +821,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
616
821
  * Generated bundle index. Do not edit.
617
822
  */
618
823
 
619
- export { AbstractDbxTableColumnDirective, AbstractDbxTableElementDirective, DBX_TABLE_ACTIONS_COLUMN_NAME, DBX_TABLE_ITEMS_COLUMN_NAME, DEFAULT_DBX_TABLE_DATE_RANGE_DAY_BUTTON_FORMAT, DEFAULT_DBX_TABLE_DATE_RANGE_DAY_DISTIANCE_INPUT_CELL_COMPONENT_CONFIG, DbxTableActionCellComponent, DbxTableColumnFooterComponent, DbxTableColumnHeaderComponent, DbxTableDateHeaderComponent, DbxTableDateModule, DbxTableDateRangeDayDistanceInputCellInputComponent, DbxTableDateRangeDayDistanceInputCellInputRangeSelectionStrategy, DbxTableDirective, DbxTableInputCellComponent, DbxTableItemActionComponent, DbxTableItemCellComponent, DbxTableItemHeaderComponent, DbxTableModule, DbxTableStore, DbxTableSummaryEndCellComponent, DbxTableSummaryStartCellComponent, DbxTableViewComponent, dbxTableDateHeaderInjectionFactory, dbxTableDateRangeDayDistanceInputCellInput };
824
+ export { AbstractDbxTableColumnDirective, AbstractDbxTableGroupDirective, AbstractDbxTableItemDirective, DBX_TABLE_ACTIONS_COLUMN_NAME, DBX_TABLE_ITEMS_COLUMN_NAME, DEFAULT_DBX_TABLE_DATE_RANGE_DAY_BUTTON_FORMAT, DEFAULT_DBX_TABLE_DATE_RANGE_DAY_DISTIANCE_INPUT_CELL_COMPONENT_CONFIG, DbxTableActionCellComponent, DbxTableColumnFooterComponent, DbxTableColumnHeaderComponent, DbxTableDateHeaderComponent, DbxTableDateModule, DbxTableDateRangeDayDistanceInputCellInputComponent, DbxTableDateRangeDayDistanceInputCellInputRangeSelectionStrategy, DbxTableDirective, DbxTableGroupFooterComponent, DbxTableGroupHeaderComponent, DbxTableInputCellComponent, DbxTableItemActionComponent, DbxTableItemCellComponent, DbxTableItemHeaderComponent, DbxTableModule, DbxTableStore, DbxTableSummaryEndCellComponent, DbxTableSummaryStartCellComponent, DbxTableViewComponent, NO_GROUPS_ID, dbxTableDateHeaderInjectionFactory, dbxTableDateRangeDayDistanceInputCellInput, defaultDbxTableItemGroup, isDbxTableViewGroupElement, isDbxTableViewItemElement };
620
825
  //# sourceMappingURL=dereekb-dbx-web-table.mjs.map