@ascentgl/ads-ui 21.116.0 → 21.118.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Input, Component, NgModule, input, output, computed, ChangeDetectionStrategy, inject, model, signal, viewChild, effect, HostListener, ElementRef, ViewChild, Directive, EventEmitter, Output, InjectionToken, DestroyRef, HostBinding, Pipe, contentChild, TemplateRef, Inject, Optional, ChangeDetectorRef, Injectable, Renderer2, ViewChildren } from '@angular/core';
|
|
3
3
|
import * as i1 from '@ascentgl/ads-icons';
|
|
4
4
|
import { AdsIconModule, AdsIconRegistry } from '@ascentgl/ads-icons';
|
|
5
|
-
import { adsIconUserCircle, adsIconBell, adsIconChevronRight, adsIconCross, adsIconPlus, adsIconWarning, adsIconLock, adsIconPlusCircle, adsIconSearch, adsIconSortDescending, adsIconCheckCircleFilled, adsIconVisibilityEye, adsIconVisibilityEyeNone, adsIconStatusProcessing, adsIconInformation, adsIconChevronDown, adsIconLoading, adsIconDatepicker, adsIconTimepicker, adsIconCheck, adsIconDropdownArrow, adsIconChevronUp, adsIconSortDownToUp, adsIconSortUpToDown, adsIconMenuFilters, adsIconSortingArrowUp, adsIconSortingArrowDown, adsIconDrag, adsIconFilter, adsIconArrowUpAndDown, adsIconListView, adsIconGridView, adsIconMenuMoreInfo, adsIconHamburgerMenu, adsIconChevronLeft, adsIconStatusNew } from '@ascentgl/ads-icons/icons';
|
|
5
|
+
import { adsIconUserCircle, adsIconBell, adsIconChevronRight, adsIconCross, adsIconPlus, adsIconWarning, adsIconLock, adsIconPlusCircle, adsIconSearch, adsIconSortDescending, adsIconCheckCircleFilled, adsIconVisibilityEye, adsIconVisibilityEyeNone, adsIconStatusProcessing, adsIconInformation, adsIconChevronDown, adsIconLoading, adsIconDatepicker, adsIconTimepicker, adsIconCheck, adsIconDropdownArrow, adsIconChevronUp, adsIconSortDownToUp, adsIconSortUpToDown, adsIconMenuFilters, adsIconSortingArrowUp, adsIconSortingArrowDown, adsIconTableFilter, adsIconDrag, adsIconFilter, adsIconArrowUpAndDown, adsIconListView, adsIconGridView, adsIconMenuMoreInfo, adsIconHamburgerMenu, adsIconChevronLeft, adsIconStatusNew } from '@ascentgl/ads-icons/icons';
|
|
6
6
|
import * as i1$1 from '@angular/common';
|
|
7
7
|
import { CommonModule, NgOptimizedImage, NgTemplateOutlet, NgClass, NgStyle, DOCUMENT } from '@angular/common';
|
|
8
8
|
import * as i2 from '@angular/material/badge';
|
|
@@ -8017,15 +8017,29 @@ class AdsCustomHeaderComponent {
|
|
|
8017
8017
|
constructor(registry) {
|
|
8018
8018
|
this.registry = registry;
|
|
8019
8019
|
this.menuOpen = false;
|
|
8020
|
-
this.registry.register([adsIconMenuFilters, adsIconSortingArrowUp, adsIconSortingArrowDown]);
|
|
8020
|
+
this.registry.register([adsIconMenuFilters, adsIconSortingArrowUp, adsIconSortingArrowDown, adsIconTableFilter]);
|
|
8021
8021
|
}
|
|
8022
|
+
static { this.ACTIVE_CLASS = 'ag-header-cell--active'; }
|
|
8022
8023
|
agInit(params) {
|
|
8023
8024
|
this.params = params;
|
|
8025
|
+
this.updateHeaderCellClass();
|
|
8024
8026
|
}
|
|
8025
8027
|
refresh(params) {
|
|
8026
8028
|
this.params = params;
|
|
8029
|
+
this.updateHeaderCellClass();
|
|
8027
8030
|
return true;
|
|
8028
8031
|
}
|
|
8032
|
+
updateHeaderCellClass() {
|
|
8033
|
+
const el = this.params.eGridHeader;
|
|
8034
|
+
if (!el)
|
|
8035
|
+
return;
|
|
8036
|
+
if (this.isActive) {
|
|
8037
|
+
el.classList.add(AdsCustomHeaderComponent.ACTIVE_CLASS);
|
|
8038
|
+
}
|
|
8039
|
+
else {
|
|
8040
|
+
el.classList.remove(AdsCustomHeaderComponent.ACTIVE_CLASS);
|
|
8041
|
+
}
|
|
8042
|
+
}
|
|
8029
8043
|
get displayName() {
|
|
8030
8044
|
return this.params.displayName || '';
|
|
8031
8045
|
}
|
|
@@ -8047,12 +8061,18 @@ class AdsCustomHeaderComponent {
|
|
|
8047
8061
|
get isColumnSorted() {
|
|
8048
8062
|
return this.params.isColumnSorted?.(this.field) ?? false;
|
|
8049
8063
|
}
|
|
8064
|
+
get sortOrder() {
|
|
8065
|
+
return this.params.getColumnSortOrder?.(this.field) ?? 0;
|
|
8066
|
+
}
|
|
8050
8067
|
get isColumnFiltered() {
|
|
8051
8068
|
return this.params.isColumnFiltered?.(this.field) ?? false;
|
|
8052
8069
|
}
|
|
8053
8070
|
get isActive() {
|
|
8054
8071
|
return this.isColumnSorted || this.isColumnFiltered;
|
|
8055
8072
|
}
|
|
8073
|
+
get sortArrowColor() {
|
|
8074
|
+
return this.isActive ? 'secondary' : 'iconPrimary';
|
|
8075
|
+
}
|
|
8056
8076
|
get isLastColumn() {
|
|
8057
8077
|
const allColumns = this.params.api.getAllDisplayedColumns();
|
|
8058
8078
|
const lastColumn = allColumns[allColumns.length - 1];
|
|
@@ -8060,9 +8080,11 @@ class AdsCustomHeaderComponent {
|
|
|
8060
8080
|
}
|
|
8061
8081
|
onSortChanged(event) {
|
|
8062
8082
|
this.params.onSortChanged?.(event);
|
|
8083
|
+
this.updateHeaderCellClass();
|
|
8063
8084
|
}
|
|
8064
8085
|
onFilterChanged(event) {
|
|
8065
8086
|
this.params.onFilterChanged?.(event);
|
|
8087
|
+
this.updateHeaderCellClass();
|
|
8066
8088
|
}
|
|
8067
8089
|
onHideColumn(field) {
|
|
8068
8090
|
this.params.onHideColumn?.(field);
|
|
@@ -8077,11 +8099,11 @@ class AdsCustomHeaderComponent {
|
|
|
8077
8099
|
this.params.onMenuClosed?.();
|
|
8078
8100
|
}
|
|
8079
8101
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AdsCustomHeaderComponent, deps: [{ token: i1.AdsIconRegistry }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8080
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: AdsCustomHeaderComponent, isStandalone: false, selector: "ads-custom-header", ngImport: i0, template: "<div class=\"ads-custom-header\">\n <span\n class=\"menu-trigger-anchor\"\n [class.align-right]=\"isLastColumn\"\n #menuTrigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"sortFilterMenu\"\n (menuOpened)=\"menuOpen = true\"\n (menuClosed)=\"closeMenu()\"\n ></span>\n\n <span class=\"header-text\">{{ displayName }}</span>\n\n @if (hasSortFilterConfig) {\n <button\n class=\"header-menu-button\"\n [class.active]=\"isActive\"\n (click)=\"menuTrigger.openMenu(); $event.stopPropagation()\"\n >\n @if (sortDirection === 'asc') {\n <ads-icon name=\"sorting_arrow_up\" theme=\"
|
|
8102
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: AdsCustomHeaderComponent, isStandalone: false, selector: "ads-custom-header", ngImport: i0, template: "<div class=\"ads-custom-header\">\n <span\n class=\"menu-trigger-anchor\"\n [class.align-right]=\"isLastColumn\"\n #menuTrigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"sortFilterMenu\"\n (menuOpened)=\"menuOpen = true\"\n (menuClosed)=\"closeMenu()\"\n ></span>\n\n <span class=\"header-text\" [class.header-text--filtered]=\"isColumnFiltered\" [class.header-text--sorted]=\"isColumnSorted\">\n @if (isColumnSorted) {\n <div class=\"sort-order-badge\">\n <span>{{ sortOrder }}</span>\n </div>\n }\n @if (isColumnFiltered) {\n <ads-icon name=\"table_filter\" size=\"xxs_16\" stroke=\"secondary\" />\n }\n {{ displayName }}\n </span>\n\n @if (hasSortFilterConfig) {\n <button\n class=\"header-menu-button\"\n [class.active]=\"isActive\"\n (click)=\"menuTrigger.openMenu(); $event.stopPropagation()\"\n >\n @if (sortDirection === 'asc') {\n <ads-icon name=\"sorting_arrow_up\" [theme]=\"sortArrowColor\" [stroke]=\"sortArrowColor\" size=\"auto\" />\n } @else if (sortDirection === 'desc') {\n <ads-icon name=\"sorting_arrow_down\" [theme]=\"sortArrowColor\" [stroke]=\"sortArrowColor\" size=\"auto\" />\n } @else {\n <ads-icon name=\"menu_filters\" [theme]=\"sortArrowColor\" [stroke]=\"sortArrowColor\" size=\"auto\" />\n }\n </button>\n }\n</div>\n\n<mat-menu #sortFilterMenu=\"matMenu\" class=\"column-sort-filter-panel\" [xPosition]=\"isLastColumn ? 'before' : 'after'\">\n @if (sortFilterConfig) {\n <ads-column-sort-filter-menu\n [config]=\"sortFilterConfig\"\n [currentSortDirection]=\"sortDirection\"\n [selectedFilterValues]=\"filterValues\"\n (sortChanged)=\"onSortChanged($event)\"\n (filterChanged)=\"onFilterChanged($event)\"\n (hideColumn)=\"onHideColumn($event)\"\n />\n }\n</mat-menu>\n\n", styles: [":host{display:block;width:100%;height:100%}.ads-custom-header{display:flex;align-items:center;justify-content:flex-start;width:100%;height:100%;position:relative}.ads-custom-header .menu-trigger-anchor{position:absolute;left:0;bottom:0;width:1px;height:1px;pointer-events:none}.ads-custom-header .menu-trigger-anchor.align-right{left:auto;right:0}.ads-custom-header .header-text{font-weight:600;font-size:16px;line-height:21px;color:var(--color-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ads-custom-header .header-text--filtered,.ads-custom-header .header-text--sorted{display:flex;align-items:center;gap:8px;overflow:visible;color:var(--color-secondary)}.ads-custom-header .header-text .sort-order-badge{display:flex;width:20px;height:20px;flex-direction:column;justify-content:center;align-items:center;border-radius:100px;background:var(--color-secondary)}.ads-custom-header .header-text .sort-order-badge span{color:var(--color-white);text-align:center;font-size:12px;font-weight:600;line-height:16px}.ads-custom-header .header-menu-button{display:flex;align-items:center;justify-content:center;gap:2px;padding:4px;background:transparent;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s ease;flex-shrink:0}::ng-deep .column-sort-filter-panel{margin-top:1px}::ng-deep .column-sort-filter-panel .mat-mdc-menu-content{padding:0}\n"], dependencies: [{ kind: "component", type: i1.AdsIconComponent, selector: "ads-icon", inputs: ["size", "name", "color", "theme", "stroke"] }, { kind: "component", type: i4$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i4$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: AdsColumnSortFilterMenuComponent, selector: "ads-column-sort-filter-menu", inputs: ["config", "currentSortDirection", "selectedFilterValues"], outputs: ["sortChanged", "filterChanged", "hideColumn"] }] }); }
|
|
8081
8103
|
}
|
|
8082
8104
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AdsCustomHeaderComponent, decorators: [{
|
|
8083
8105
|
type: Component,
|
|
8084
|
-
args: [{ selector: 'ads-custom-header', standalone: false, template: "<div class=\"ads-custom-header\">\n <span\n class=\"menu-trigger-anchor\"\n [class.align-right]=\"isLastColumn\"\n #menuTrigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"sortFilterMenu\"\n (menuOpened)=\"menuOpen = true\"\n (menuClosed)=\"closeMenu()\"\n ></span>\n\n <span class=\"header-text\">{{ displayName }}</span>\n\n @if (hasSortFilterConfig) {\n <button\n class=\"header-menu-button\"\n [class.active]=\"isActive\"\n (click)=\"menuTrigger.openMenu(); $event.stopPropagation()\"\n >\n @if (sortDirection === 'asc') {\n <ads-icon name=\"sorting_arrow_up\" theme=\"
|
|
8106
|
+
args: [{ selector: 'ads-custom-header', standalone: false, template: "<div class=\"ads-custom-header\">\n <span\n class=\"menu-trigger-anchor\"\n [class.align-right]=\"isLastColumn\"\n #menuTrigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"sortFilterMenu\"\n (menuOpened)=\"menuOpen = true\"\n (menuClosed)=\"closeMenu()\"\n ></span>\n\n <span class=\"header-text\" [class.header-text--filtered]=\"isColumnFiltered\" [class.header-text--sorted]=\"isColumnSorted\">\n @if (isColumnSorted) {\n <div class=\"sort-order-badge\">\n <span>{{ sortOrder }}</span>\n </div>\n }\n @if (isColumnFiltered) {\n <ads-icon name=\"table_filter\" size=\"xxs_16\" stroke=\"secondary\" />\n }\n {{ displayName }}\n </span>\n\n @if (hasSortFilterConfig) {\n <button\n class=\"header-menu-button\"\n [class.active]=\"isActive\"\n (click)=\"menuTrigger.openMenu(); $event.stopPropagation()\"\n >\n @if (sortDirection === 'asc') {\n <ads-icon name=\"sorting_arrow_up\" [theme]=\"sortArrowColor\" [stroke]=\"sortArrowColor\" size=\"auto\" />\n } @else if (sortDirection === 'desc') {\n <ads-icon name=\"sorting_arrow_down\" [theme]=\"sortArrowColor\" [stroke]=\"sortArrowColor\" size=\"auto\" />\n } @else {\n <ads-icon name=\"menu_filters\" [theme]=\"sortArrowColor\" [stroke]=\"sortArrowColor\" size=\"auto\" />\n }\n </button>\n }\n</div>\n\n<mat-menu #sortFilterMenu=\"matMenu\" class=\"column-sort-filter-panel\" [xPosition]=\"isLastColumn ? 'before' : 'after'\">\n @if (sortFilterConfig) {\n <ads-column-sort-filter-menu\n [config]=\"sortFilterConfig\"\n [currentSortDirection]=\"sortDirection\"\n [selectedFilterValues]=\"filterValues\"\n (sortChanged)=\"onSortChanged($event)\"\n (filterChanged)=\"onFilterChanged($event)\"\n (hideColumn)=\"onHideColumn($event)\"\n />\n }\n</mat-menu>\n\n", styles: [":host{display:block;width:100%;height:100%}.ads-custom-header{display:flex;align-items:center;justify-content:flex-start;width:100%;height:100%;position:relative}.ads-custom-header .menu-trigger-anchor{position:absolute;left:0;bottom:0;width:1px;height:1px;pointer-events:none}.ads-custom-header .menu-trigger-anchor.align-right{left:auto;right:0}.ads-custom-header .header-text{font-weight:600;font-size:16px;line-height:21px;color:var(--color-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ads-custom-header .header-text--filtered,.ads-custom-header .header-text--sorted{display:flex;align-items:center;gap:8px;overflow:visible;color:var(--color-secondary)}.ads-custom-header .header-text .sort-order-badge{display:flex;width:20px;height:20px;flex-direction:column;justify-content:center;align-items:center;border-radius:100px;background:var(--color-secondary)}.ads-custom-header .header-text .sort-order-badge span{color:var(--color-white);text-align:center;font-size:12px;font-weight:600;line-height:16px}.ads-custom-header .header-menu-button{display:flex;align-items:center;justify-content:center;gap:2px;padding:4px;background:transparent;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s ease;flex-shrink:0}::ng-deep .column-sort-filter-panel{margin-top:1px}::ng-deep .column-sort-filter-panel .mat-mdc-menu-content{padding:0}\n"] }]
|
|
8085
8107
|
}], ctorParameters: () => [{ type: i1.AdsIconRegistry }] });
|
|
8086
8108
|
|
|
8087
8109
|
class AdsColumnSortFilterMenuModule {
|
|
@@ -8877,6 +8899,7 @@ class AdsTableComponent {
|
|
|
8877
8899
|
getFilterValues: this.getColumnFilterValues.bind(this),
|
|
8878
8900
|
isColumnSorted: this.isColumnSorted.bind(this),
|
|
8879
8901
|
isColumnFiltered: this.isColumnFiltered.bind(this),
|
|
8902
|
+
getColumnSortOrder: this.getColumnSortOrder.bind(this),
|
|
8880
8903
|
},
|
|
8881
8904
|
sortable: true, // Enable AG Grid sorting
|
|
8882
8905
|
comparator: comparator,
|
|
@@ -9118,11 +9141,28 @@ class AdsTableComponent {
|
|
|
9118
9141
|
if (hiddenCount === 0) {
|
|
9119
9142
|
return 'Hide Column';
|
|
9120
9143
|
}
|
|
9121
|
-
else
|
|
9122
|
-
return
|
|
9144
|
+
else {
|
|
9145
|
+
return `Hidden Column (${hiddenCount})`;
|
|
9146
|
+
}
|
|
9147
|
+
}
|
|
9148
|
+
/** @ignore */
|
|
9149
|
+
get filterButtonLabel() {
|
|
9150
|
+
const filteredCount = this.filteredColumns().length;
|
|
9151
|
+
if (filteredCount === 0) {
|
|
9152
|
+
return 'Filter';
|
|
9153
|
+
}
|
|
9154
|
+
else {
|
|
9155
|
+
return `Filter (${filteredCount})`;
|
|
9156
|
+
}
|
|
9157
|
+
}
|
|
9158
|
+
/** @ignore */
|
|
9159
|
+
get sortButtonLabel() {
|
|
9160
|
+
const sortedCount = this.sortedColumns.length;
|
|
9161
|
+
if (sortedCount === 0) {
|
|
9162
|
+
return 'Sort';
|
|
9123
9163
|
}
|
|
9124
9164
|
else {
|
|
9125
|
-
return
|
|
9165
|
+
return `Sort (${sortedCount})`;
|
|
9126
9166
|
}
|
|
9127
9167
|
}
|
|
9128
9168
|
/** @ignore */
|
|
@@ -9150,8 +9190,9 @@ class AdsTableComponent {
|
|
|
9150
9190
|
if (this.gridApi) {
|
|
9151
9191
|
this.gridApi.onFilterChanged();
|
|
9152
9192
|
this.updateFilteringState();
|
|
9193
|
+
// Refresh headers immediately to apply active class
|
|
9153
9194
|
if (this.enableCustomSortFilter) {
|
|
9154
|
-
this.
|
|
9195
|
+
this.gridApi.refreshHeader();
|
|
9155
9196
|
}
|
|
9156
9197
|
}
|
|
9157
9198
|
// Emit event for external listeners
|
|
@@ -9168,8 +9209,9 @@ class AdsTableComponent {
|
|
|
9168
9209
|
if (this.gridApi) {
|
|
9169
9210
|
this.gridApi.onFilterChanged();
|
|
9170
9211
|
this.updateFilteringState();
|
|
9212
|
+
// Refresh headers immediately to remove active class
|
|
9171
9213
|
if (this.enableCustomSortFilter) {
|
|
9172
|
-
this.
|
|
9214
|
+
this.gridApi.refreshHeader();
|
|
9173
9215
|
}
|
|
9174
9216
|
}
|
|
9175
9217
|
// Emit event for each removed field
|
|
@@ -9193,6 +9235,14 @@ class AdsTableComponent {
|
|
|
9193
9235
|
onSortMenuSortChanged(event) {
|
|
9194
9236
|
if (!this.gridApi)
|
|
9195
9237
|
return;
|
|
9238
|
+
// Update columnSortStates signal so custom headers reflect the active state
|
|
9239
|
+
const newSortStates = new Map();
|
|
9240
|
+
event.sorts.forEach(s => {
|
|
9241
|
+
if (s.direction) {
|
|
9242
|
+
newSortStates.set(s.field, s.direction);
|
|
9243
|
+
}
|
|
9244
|
+
});
|
|
9245
|
+
this.columnSortStates.set(newSortStates);
|
|
9196
9246
|
// Build column state for AG Grid with sort indexes
|
|
9197
9247
|
const sortState = event.sorts.map((s, index) => ({
|
|
9198
9248
|
colId: s.field,
|
|
@@ -9205,11 +9255,19 @@ class AdsTableComponent {
|
|
|
9205
9255
|
defaultState: { sort: null },
|
|
9206
9256
|
});
|
|
9207
9257
|
this.updateSortingState();
|
|
9258
|
+
// Refresh headers to apply active class
|
|
9259
|
+
if (this.enableCustomSortFilter) {
|
|
9260
|
+
this.gridApi.refreshHeader();
|
|
9261
|
+
}
|
|
9208
9262
|
}
|
|
9209
9263
|
/** @ignore - Handle sort removal from sort menu */
|
|
9210
9264
|
onSortMenuSortsRemoved(fields) {
|
|
9211
9265
|
if (!this.gridApi)
|
|
9212
9266
|
return;
|
|
9267
|
+
// Update columnSortStates signal
|
|
9268
|
+
const newStates = new Map(this.columnSortStates());
|
|
9269
|
+
fields.forEach(field => newStates.delete(field));
|
|
9270
|
+
this.columnSortStates.set(newStates);
|
|
9213
9271
|
// Clear sort for the removed fields
|
|
9214
9272
|
const clearState = fields.map(field => ({
|
|
9215
9273
|
colId: field,
|
|
@@ -9217,6 +9275,10 @@ class AdsTableComponent {
|
|
|
9217
9275
|
}));
|
|
9218
9276
|
this.gridApi.applyColumnState({ state: clearState });
|
|
9219
9277
|
this.updateSortingState();
|
|
9278
|
+
// Refresh headers to remove active class
|
|
9279
|
+
if (this.enableCustomSortFilter) {
|
|
9280
|
+
this.gridApi.refreshHeader();
|
|
9281
|
+
}
|
|
9220
9282
|
}
|
|
9221
9283
|
/** @ignore */
|
|
9222
9284
|
updateFilteringState() {
|
|
@@ -9646,6 +9708,11 @@ class AdsTableComponent {
|
|
|
9646
9708
|
return this.columnSortStates().get(field) !== null && this.columnSortStates().get(field) !== undefined;
|
|
9647
9709
|
}
|
|
9648
9710
|
/** @ignore */
|
|
9711
|
+
getColumnSortOrder(field) {
|
|
9712
|
+
const index = this.sortedColumns.indexOf(field);
|
|
9713
|
+
return index === -1 ? 0 : index + 1;
|
|
9714
|
+
}
|
|
9715
|
+
/** @ignore */
|
|
9649
9716
|
isColumnFiltered(field) {
|
|
9650
9717
|
// Use base config to get all possible options (not filtered options)
|
|
9651
9718
|
const config = this.getBaseColumnSortFilterConfig(field);
|
|
@@ -9821,15 +9888,33 @@ class AdsTableComponent {
|
|
|
9821
9888
|
});
|
|
9822
9889
|
// Remove filters for hidden columns
|
|
9823
9890
|
if (columnsBeingHidden.length > 0) {
|
|
9891
|
+
// Clear AG Grid native filter model
|
|
9824
9892
|
const updatedFilterModel = { ...currentFilterModel };
|
|
9825
9893
|
columnsBeingHidden.forEach(colId => {
|
|
9826
9894
|
delete updatedFilterModel[colId];
|
|
9827
9895
|
});
|
|
9828
9896
|
this.gridApi.setFilterModel(updatedFilterModel);
|
|
9897
|
+
// Clear custom column filter states for hidden columns
|
|
9898
|
+
const newFilterStates = new Map(this.columnFilterStates());
|
|
9899
|
+
columnsBeingHidden.forEach(colId => {
|
|
9900
|
+
newFilterStates.delete(colId);
|
|
9901
|
+
});
|
|
9902
|
+
this.columnFilterStates.set(newFilterStates);
|
|
9903
|
+
this.invalidateFilterCache();
|
|
9904
|
+
// Re-evaluate external filters so grid rows update immediately
|
|
9905
|
+
this.gridApi.onFilterChanged();
|
|
9906
|
+
// Emit columnFilterChanged for each cleared column so external listeners (e.g. header dropdowns) can sync
|
|
9907
|
+
columnsBeingHidden.forEach(colId => {
|
|
9908
|
+
this.columnFilterChanged.emit({ field: colId, values: [] });
|
|
9909
|
+
});
|
|
9829
9910
|
}
|
|
9830
9911
|
// Update internal state tracking
|
|
9831
9912
|
this.updateSortingState();
|
|
9832
9913
|
this.updateFilteringState();
|
|
9914
|
+
// Refresh headers so remaining columns reflect updated sort/filter state
|
|
9915
|
+
if (this.enableCustomSortFilter) {
|
|
9916
|
+
this.gridApi.refreshHeader();
|
|
9917
|
+
}
|
|
9833
9918
|
// Fit columns to grid width after visibility changes (only when grid is visible)
|
|
9834
9919
|
setTimeout(() => {
|
|
9835
9920
|
if (!this.isListView()) {
|
|
@@ -10104,11 +10189,11 @@ class AdsTableComponent {
|
|
|
10104
10189
|
return options.map((v) => this.serializeCellValue(v));
|
|
10105
10190
|
}
|
|
10106
10191
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AdsTableComponent, deps: [{ token: i0.ElementRef }, { token: i1.AdsIconRegistry }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10107
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: AdsTableComponent, isStandalone: false, selector: "ads-table", inputs: { width: "width", height: "height", headerTemplate: "headerTemplate", gridOptions: "gridOptions", rowData: "rowData", columnDefs: "columnDefs", icons: "icons", defaultColDef: "defaultColDef", loading: "loading", columnDefsByBreakpoint: "columnDefsByBreakpoint", showHeaderActions: "showHeaderActions", showChangeViewButton: "showChangeViewButton", defaultViewMode: "defaultViewMode", listItemTemplate: "listItemTemplate", listBatchSize: "listBatchSize", enableCustomSortFilter: "enableCustomSortFilter", mobileHeaderView: "mobileHeaderView", showBorder: "showBorder", columnSortFilterConfigs: "columnSortFilterConfigs" }, outputs: { filtersCleared: "filtersCleared", columnFilterChanged: "columnFilterChanged", viewChanged: "viewChanged" }, viewQueries: [{ propertyName: "virtualScrollViewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }, { propertyName: "menuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"ads-table-container\" [style.width]=\"width\" [class.with-header]=\"showHeaderActions\" [class.no-border]=\"!showBorder\">\n @if (showHeaderActions) {\n <div class=\"table-header\">\n <div class=\"header-template-container\">\n @if (showChangeViewButton) {\n <div class=\"change-view-button\" (click)=\"toggleView()\">\n @if (isListView()) {\n <ads-icon name=\"grid_view\" size=\"xxxs\" stroke=\"iconPrimary\" />\n } @else {\n <ads-icon name=\"list_view\" size=\"xxxs\" stroke=\"iconPrimary\" />\n }\n </div>\n }\n <div class=\"header-template\">\n @if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate\" />\n }\n </div>\n\n </div>\n\n <div class=\"header-actions\">\n @if (!isListView()) {\n <ads-table-button\n id=\"show-hide-columns-button\"\n [matMenuTriggerFor]=\"columnVisibilityMenu\"\n (menuOpened)=\"openColumnVisibilityMenu()\"\n (menuClosed)=\"onColumnVisibilityMenuClosed()\"\n >\n <ads-icon\n name=\"visibility_eye_none\"\n theme=\"secondary\"\n stroke=\"secondary\"\n size=\"xxxs\"\n />\n @if (!mobileHeaderView) {\n {{ hideColumnButtonLabel }}\n }\n </ads-table-button>\n }\n\n <ads-table-button\n id=\"filter-button\"\n [matMenuTriggerFor]=\"filterMenu\"\n (menuOpened)=\"openFilterMenu()\"\n (menuClosed)=\"onFilterMenuClosed()\"\n >\n <ads-icon\n name=\"filter\"\n theme=\"secondary\"\n size=\"xxxs\"\n />\n @if (!mobileHeaderView) {\n Filter\n }\n\n </ads-table-button>\n <ads-table-button\n id=\"sort-button\"\n [matMenuTriggerFor]=\"sortMenu\"\n >\n <ads-icon\n name=\"arrow_up_and_down\"\n theme=\"secondary\"\n size=\"xxxs\"\n />\n @if (!mobileHeaderView) {\n Sort\n }\n </ads-table-button>\n </div>\n </div>\n }\n\n <ag-grid-angular\n [ngStyle]=\"{ height: height }\"\n [style.display]=\"isListView() ? 'none' : ''\"\n [icons]=\"getAgGridIcons()\"\n class=\"ag-theme-quartz\"\n [gridOptions]=\"gridOptions\"\n [rowData]=\"rowData\"\n [columnDefs]=\"getProcessedColumnDefs()\"\n [defaultColDef]=\"getDefaultColDef()\"\n [components]=\"frameworkComponents\"\n [isExternalFilterPresent]=\"isExternalFilterPresent\"\n [doesExternalFilterPass]=\"doesExternalFilterPass\"\n (gridReady)=\"gridReady($event)\"\n (firstDataRendered)=\"firstDataRendered($event)\"\n (sortChanged)=\"sortChanged($event)\"\n (filterChanged)=\"filterChanged($event)\"\n [theme]=\"themeQuartz\"\n [loading]=\"loading\"\n [enableCellTextSelection]=\"true\"\n [ensureDomOrder]=\"true\"\n />\n\n @if (isListView()) {\n @if (loading) {\n <div class=\"list-view-container list-view-loading-container\" [ngStyle]=\"{ height: height }\">\n <div class=\"list-view-loading\">\n <ads-progress-spinner [size]=\"SpinnerSize.small\" />\n </div>\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"list-view-container\"\n [itemSize]=\"listItemHeight()\"\n [minBufferPx]=\"listItemHeight() * 4\"\n [maxBufferPx]=\"listItemHeight() * 8\"\n [ngStyle]=\"{ height: height }\"\n >\n <div\n *cdkVirtualFor=\"let row of listRowDataCache(); trackBy: listTrackBy\"\n class=\"list-view-item\"\n >\n @if (listItemTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"listItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row }\"\n />\n }\n </div>\n </cdk-virtual-scroll-viewport>\n }\n }\n\n <!-- Column Visibility Menu -->\n <mat-menu #columnVisibilityMenu=\"matMenu\" class=\"column-visibility-menu\" [class.has-header]=\"showHeaderActions\">\n <div class=\"menu-content\" (click)=\"$event.stopPropagation()\">\n <p class=\"dropdown-label\">Show/Hide Columns</p>\n <div class=\"dropdown-body\">\n @for (column of columnVisibilityList(); track $index) {\n <div class=\"column-row\">\n <span\n class=\"column-name\"\n [matTooltip]=\"column.headerName\"\n [matTooltipDisabled]=\"getTooltipDisabled(column.headerName)\"\n >\n {{ column.headerName }}\n </span>\n <div class=\"column-toggle\">\n <ads-slide-toggle\n [id]=\"'toggle-' + column.field\"\n [control]=\"column.control\"\n [showFooter]=\"false\"\n [customTitles]=\"['Show', 'Hide']\"\n />\n </div>\n </div>\n }\n </div>\n\n <ads-divider />\n\n <div class=\"dropdown-footer\">\n <ads-button\n [fullWidth]=\"true\"\n (click)=\"hideAllColumns()\"\n [disabled]=\"allColumnsHidden\"\n variant=\"tertiary\"\n id='hide-all-button'\n size=\"xs\"\n >\n Hide All\n </ads-button>\n <ads-button\n [fullWidth]=\"true\"\n (click)=\"showAllColumns()\"\n [disabled]=\"allColumnsVisible\"\n variant=\"tertiary\"\n id=\"show-all-button\"\n size=\"xs\"\n >\n Show All\n </ads-button>\n </div>\n </div>\n </mat-menu>\n\n <!-- Filter Menu -->\n <mat-menu #filterMenu=\"matMenu\" class=\"filter-menu-panel\" (closed)=\"filterMenuComponent.onMenuClosed()\">\n <ads-filter-menu\n #filterMenuComponent\n [columnSortFilterConfigs]=\"columnSortFilterConfigs\"\n [columnFilterStates]=\"columnFilterStates()\"\n [getFilterOptionsForField]=\"getFilterOptionsForFieldFn\"\n [getHierarchicalFilterOptionsForField]=\"getHierarchicalFilterOptionsForFieldFn\"\n [getFilterValuesForField]=\"getFilterValuesForFieldFn\"\n [isColumnFilteredFn]=\"isColumnFilteredFn\"\n [getFilterValueFormatterForField]=\"getFilterValueFormatterForFieldFn\"\n (filterChanged)=\"onFilterMenuFilterChanged($event)\"\n (filtersRemoved)=\"onFilterMenuFilterRemoved($event)\"\n />\n </mat-menu>\n\n <!-- Sort Menu -->\n <mat-menu #sortMenu=\"matMenu\" class=\"sort-menu-panel\">\n <ads-sort-menu\n [columnSortFilterConfigs]=\"columnSortFilterConfigs\"\n [columnSortStates]=\"columnSortStates()\"\n (sortChanged)=\"onSortMenuSortChanged($event)\"\n (sortsRemoved)=\"onSortMenuSortsRemoved($event)\"\n />\n </mat-menu>\n</div>\n", styles: [":host::ng-deep{--ag-wrapper-border-radius: 10px}:host::ng-deep ag-grid-angular{--ag-grid-size: 4px;--ag-border-radius: 5px;--ag-font-family: \"Roboto\";--ag-font-size: 16px;--ag-header-foreground-color: var(--color-medium);--ag-header-background-color: var(--color-light-30);--ag-background-color: var(--color-white);--ag-header-height: 45px;--ag-row-height: 45px;--ag-border-color: var(--color-light);--ag-foreground-color: var(--color-medium);--ag-spacing: 4px;--ag-inherited-accent-color: var(--color-secondary-hover)}:host::ng-deep ag-grid-angular .ag-overlay-no-matching-rows-wrapper{display:flex;justify-content:center;align-items:center;height:100%}:host::ng-deep ag-grid-angular .ag-overlay-no-matching-rows-wrapper .ag-overlay-no-matching-rows-center{color:var(--color-medium);font-family:Roboto,sans-serif;font-size:16px;border:none;padding:0;background:transparent}:host::ng-deep ag-grid-angular .ag-header-cell-text{font-weight:600;line-height:21px}:host::ng-deep ag-grid-angular .ag-cell:focus,:host::ng-deep ag-grid-angular .ag-cell-focus{outline:none!important;border:none!important;box-shadow:none!important}:host::ng-deep ag-grid-angular .ag-row,:host::ng-deep ag-grid-angular .ag-header,:host::ng-deep ag-grid-angular .ag-advanced-filter-header{border-bottom:none}:host::ng-deep ag-grid-angular .ag-row-even{background-color:var(--color-white)}:host::ng-deep ag-grid-angular .ag-row-odd{background-color:var(--color-white)}:host::ng-deep ag-grid-angular .ag-sort-indicator-container{min-width:fit-content}:host::ng-deep ag-grid-angular .ag-sort-indicator-icon>svg{fill:var(--color-medium);stroke:var(--color-medium)}:host::ng-deep ag-grid-angular .ag-header-cell-filter-button>svg{fill:var(--color-medium);stroke:var(--color-medium)}:host::ng-deep ag-grid-angular .ag-theme-quartz{--ag-background-color: var(--color-light-30);--ag-foreground-color: var(--color-black);--ag-input-border-color: var(--color-light);--ag-input-focus-border-color: var(--color-medium);--ag-input-focus-box-shadow: none}:host::ng-deep ag-grid-angular .ag-theme-quartz .ag-input-wrapper input::placeholder{color:var(--color-medium);opacity:1}:host::ng-deep ag-grid-angular .ag-theme-quartz .ag-input-wrapper:before{background-image:none;content:none}:host::ng-deep ag-grid-angular .ag-theme-quartz .ag-input-wrapper input{padding-left:8px!important}:host::ng-deep .ads-table-container{display:flex;flex-direction:column;width:100%;height:100%}:host::ng-deep .ads-table-container.no-border .table-header{border:none;border-radius:0}:host::ng-deep .ads-table-container.no-border::ng-deep ag-grid-angular .ag-root-wrapper{border:none;border-radius:0}:host::ng-deep .ads-table-container.no-border .list-view-container{border:none;border-radius:0}:host::ng-deep .ads-table-container.with-header::ng-deep ag-grid-angular .ag-root-wrapper{border-top:none;border-top-left-radius:0;border-top-right-radius:0}:host::ng-deep .ads-table-container.with-header .list-view-container{border-top:none;border-top-left-radius:0;border-top-right-radius:0}:host::ng-deep .ads-table-container .table-header{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:16px;background-color:var(--color-white);border:1px solid var(--color-light);border-top-left-radius:var(--ag-wrapper-border-radius);border-top-right-radius:var(--ag-wrapper-border-radius)}:host::ng-deep .ads-table-container .table-header .header-template-container{display:flex;align-items:center;gap:8px;min-width:0;flex:1 1 0}:host::ng-deep .ads-table-container .table-header .header-template-container .header-template{min-width:0;flex:1 1 0}:host::ng-deep .ads-table-container .table-header .header-actions{display:flex;gap:8px;flex-wrap:nowrap;flex-shrink:0;justify-content:flex-end}:host::ng-deep .ads-table-container .table-header .header-actions ads-table-button{display:flex}:host::ng-deep .ads-table-container .table-header .change-view-button{display:flex;height:30px;padding:0 12px;border-radius:100px;background-color:var(--color-muted);align-items:center;cursor:pointer;flex-shrink:0}:host::ng-deep .ads-table-container .table-header .change-view-button:hover{background-color:var(--color-secondary-hover)}:host::ng-deep .ads-table-container .table-header .change-view-button:hover ::ng-deep svg{stroke:var(--color-white)}:host::ng-deep .list-view-container{display:flex;flex-direction:column;border:1px solid var(--color-light);border-radius:var(--ag-wrapper-border-radius)}:host::ng-deep .list-view-container .list-view-item{flex-shrink:0}:host::ng-deep .list-view-container .list-view-loading{display:flex;justify-content:center;align-items:center;height:100%}:host::ng-deep .list-view-container .list-view-empty{display:flex;justify-content:center;align-items:center;height:100%;color:var(--color-medium)}:host::ng-deep .list-view-loading-container{overflow:hidden}:host::ng-deep cdk-virtual-scroll-viewport.list-view-container .cdk-virtual-scroll-content-wrapper{display:flex;flex-direction:column;width:100%}::ng-deep .column-visibility-menu{width:234px;max-width:498px;border-radius:5px;box-shadow:0 4px 12px #00000026;border:1px solid var(--color-light)}::ng-deep .column-visibility-menu .mat-mdc-menu-content{padding:0}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content{background-color:var(--color-white)}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-label{padding:12px 12px 0;color:var(--color-medium);font-size:12px;font-weight:600;line-height:16px}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body{overflow-y:auto}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body .column-row{display:flex;justify-content:space-between;align-items:center;padding:0 12px;height:45px;gap:12px}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body .column-row .column-name{font-size:16px;font-weight:400;color:var(--color-dark);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px;flex:1}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body .column-row .column-toggle{display:flex;justify-content:flex-end}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body .column-row .column-toggle ::ng-deep ads-slide-toggle .ads-toggle{height:45px!important}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-footer{display:flex;justify-content:space-between;gap:12px;padding:12px}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-footer ::ng-deep ads-button{flex:1}::ng-deep .filter-menu-panel{width:316px;border-radius:5px;box-shadow:0 4px 12px #00000026;border:1px solid var(--color-light)}::ng-deep .sort-menu-panel{width:316px;border-radius:5px;box-shadow:0 4px 12px #00000026;border:1px solid var(--color-light)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.ɵɵCdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i3.ɵɵCdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i3.ɵɵCdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: i1.AdsIconComponent, selector: "ads-icon", inputs: ["size", "name", "color", "theme", "stroke"] }, { kind: "component", type: i4$3.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "enableStrictPivotColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "hidePaddedHeaderRows", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressMoveWhenColumnDragging", "suppressDragLeaveHidesColumns", "suppressGroupChangesColumnVisibility", "suppressMakeColumnVisibleAfterUnGroup", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "animateColumnResizing", "components", "editType", "suppressStartEditOnTab", "getFullRowEditValidationErrors", "invalidEditValueMode", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "findSearchValue", "findOptions", "quickFilterText", "cacheQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "alwaysPassFilter", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "advancedFilterParams", "suppressAdvancedFilterEval", "suppressSetFilterByDefault", "enableFilterHandlers", "filterHandlers", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressTouch", "suppressFocusAfterRefresh", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "loading", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "suppressOverlays", "overlayComponent", "overlayComponentParams", "overlayComponentSelector", "activeOverlay", "activeOverlayParams", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "formulaDataSource", "formulaFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "cellFlashDuration", "cellFadeDuration", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableCellSpan", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "refreshAfterGroupEdit", "rowDragInsertDelay", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "dragAndDropImageComponent", "dragAndDropImageComponentParams", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupHideParentOfSingleChild", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "treeData", "treeDataChildrenField", "treeDataParentIdField", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "groupHierarchyConfig", "pinnedTopRowData", "pinnedBottomRowData", "enableRowPinning", "isRowPinnable", "isRowPinned", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "cellSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "selectionColumnDef", "rowNumbers", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "enableGroupEdit", "initialState", "theme", "loadThemeGoogleFonts", "themeCssLayer", "styleNonce", "themeStyleContainer", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "focusGridInnerElement", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "ssrmExpandAllAffectsAllRows", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow", "isRowValidDropPosition"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnsReset", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "bulkEditingStarted", "bulkEditingStopped", "batchEditingStarted", "batchEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "cellSelectionDeleteStart", "cellSelectionDeleteEnd", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "filterUiChanged", "floatingFilterUiChanged", "advancedFilterBuilderVisibleChanged", "findChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "dragCancelled", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "rowDragCancel", "rowResizeStarted", "rowResizeEnded", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "pinnedRowsChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "headerFocused", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "cellSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged"] }, { kind: "component", type: AdsSlideToggleComponent, selector: "ads-slide-toggle", inputs: ["enableYesOrNo", "customTitles", "control", "label", "id", "width"] }, { kind: "component", type: AdsButtonComponent, selector: "ads-button", inputs: ["id", "variant", "disabled", "size", "type", "fullWidth"] }, { kind: "component", type: AdsTableButtonComponent, selector: "ads-table-button", inputs: ["id", "disabled", "fullWidth", "matMenuTriggerFor"], outputs: ["menuOpened", "menuClosed"] }, { kind: "component", type: DividerComponent, selector: "ads-divider", inputs: ["margin", "color"] }, { kind: "directive", type: i13.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i4$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i4$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: AdsFilterMenuComponent, selector: "ads-filter-menu", inputs: ["columnSortFilterConfigs", "columnFilterStates", "getFilterOptionsForField", "getHierarchicalFilterOptionsForField", "getFilterValuesForField", "isColumnFilteredFn", "getFilterValueFormatterForField"], outputs: ["filterChanged", "filtersRemoved"] }, { kind: "component", type: AdsSortMenuComponent, selector: "ads-sort-menu", inputs: ["columnSortFilterConfigs", "columnSortStates"], outputs: ["sortChanged", "sortsRemoved"] }, { kind: "component", type: AdsProgressSpinnerComponent, selector: "ads-progress-spinner", inputs: ["zIndex", "scrollContainer", "size", "diameter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10192
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: AdsTableComponent, isStandalone: false, selector: "ads-table", inputs: { width: "width", height: "height", headerTemplate: "headerTemplate", gridOptions: "gridOptions", rowData: "rowData", columnDefs: "columnDefs", icons: "icons", defaultColDef: "defaultColDef", loading: "loading", columnDefsByBreakpoint: "columnDefsByBreakpoint", showHeaderActions: "showHeaderActions", showChangeViewButton: "showChangeViewButton", defaultViewMode: "defaultViewMode", listItemTemplate: "listItemTemplate", listBatchSize: "listBatchSize", enableCustomSortFilter: "enableCustomSortFilter", mobileHeaderView: "mobileHeaderView", showBorder: "showBorder", columnSortFilterConfigs: "columnSortFilterConfigs" }, outputs: { filtersCleared: "filtersCleared", columnFilterChanged: "columnFilterChanged", viewChanged: "viewChanged" }, viewQueries: [{ propertyName: "virtualScrollViewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }, { propertyName: "menuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"ads-table-container\" [style.width]=\"width\" [class.with-header]=\"showHeaderActions\" [class.no-border]=\"!showBorder\">\n @if (showHeaderActions) {\n <div class=\"table-header\">\n <div class=\"header-template-container\">\n @if (showChangeViewButton) {\n <div class=\"change-view-button\" (click)=\"toggleView()\">\n @if (isListView()) {\n <ads-icon name=\"grid_view\" size=\"xxxs\" stroke=\"iconPrimary\" />\n } @else {\n <ads-icon name=\"list_view\" size=\"xxxs\" stroke=\"iconPrimary\" />\n }\n </div>\n }\n <div class=\"header-template\">\n @if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate\" />\n }\n </div>\n\n </div>\n\n <div class=\"header-actions\">\n @if (!isListView()) {\n <ads-table-button\n id=\"show-hide-columns-button\"\n [matMenuTriggerFor]=\"columnVisibilityMenu\"\n (menuOpened)=\"openColumnVisibilityMenu()\"\n (menuClosed)=\"onColumnVisibilityMenuClosed()\"\n >\n <ads-icon\n name=\"visibility_eye_none\"\n theme=\"secondary\"\n stroke=\"secondary\"\n size=\"xxxs\"\n />\n @if (!mobileHeaderView) {\n {{ hideColumnButtonLabel }}\n }\n </ads-table-button>\n }\n\n <ads-table-button\n id=\"filter-button\"\n [matMenuTriggerFor]=\"filterMenu\"\n (menuOpened)=\"openFilterMenu()\"\n (menuClosed)=\"onFilterMenuClosed()\"\n >\n <ads-icon\n name=\"filter\"\n theme=\"secondary\"\n size=\"xxxs\"\n />\n @if (!mobileHeaderView) {\n {{ filterButtonLabel }}\n }\n\n </ads-table-button>\n <ads-table-button\n id=\"sort-button\"\n [matMenuTriggerFor]=\"sortMenu\"\n >\n <ads-icon\n name=\"arrow_up_and_down\"\n theme=\"secondary\"\n size=\"xxxs\"\n />\n @if (!mobileHeaderView) {\n {{ sortButtonLabel }}\n }\n </ads-table-button>\n </div>\n </div>\n }\n\n <ag-grid-angular\n [ngStyle]=\"{ height: height }\"\n [style.display]=\"isListView() ? 'none' : ''\"\n [icons]=\"getAgGridIcons()\"\n class=\"ag-theme-quartz\"\n [gridOptions]=\"gridOptions\"\n [rowData]=\"rowData\"\n [columnDefs]=\"getProcessedColumnDefs()\"\n [defaultColDef]=\"getDefaultColDef()\"\n [components]=\"frameworkComponents\"\n [isExternalFilterPresent]=\"isExternalFilterPresent\"\n [doesExternalFilterPass]=\"doesExternalFilterPass\"\n (gridReady)=\"gridReady($event)\"\n (firstDataRendered)=\"firstDataRendered($event)\"\n (sortChanged)=\"sortChanged($event)\"\n (filterChanged)=\"filterChanged($event)\"\n [theme]=\"themeQuartz\"\n [loading]=\"loading\"\n [enableCellTextSelection]=\"true\"\n [ensureDomOrder]=\"true\"\n />\n\n @if (isListView()) {\n @if (loading) {\n <div class=\"list-view-container list-view-loading-container\" [ngStyle]=\"{ height: height }\">\n <div class=\"list-view-loading\">\n <ads-progress-spinner [size]=\"SpinnerSize.small\" />\n </div>\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"list-view-container\"\n [itemSize]=\"listItemHeight()\"\n [minBufferPx]=\"listItemHeight() * 4\"\n [maxBufferPx]=\"listItemHeight() * 8\"\n [ngStyle]=\"{ height: height }\"\n >\n <div\n *cdkVirtualFor=\"let row of listRowDataCache(); trackBy: listTrackBy\"\n class=\"list-view-item\"\n >\n @if (listItemTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"listItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row }\"\n />\n }\n </div>\n </cdk-virtual-scroll-viewport>\n }\n }\n\n <!-- Column Visibility Menu -->\n <mat-menu #columnVisibilityMenu=\"matMenu\" class=\"column-visibility-menu\" [class.has-header]=\"showHeaderActions\">\n <div class=\"menu-content\" (click)=\"$event.stopPropagation()\">\n <p class=\"dropdown-label\">Show/Hide Columns</p>\n <div class=\"dropdown-body\">\n @for (column of columnVisibilityList(); track $index) {\n <div class=\"column-row\">\n <span\n class=\"column-name\"\n [matTooltip]=\"column.headerName\"\n [matTooltipDisabled]=\"getTooltipDisabled(column.headerName)\"\n >\n {{ column.headerName }}\n </span>\n <div class=\"column-toggle\">\n <ads-slide-toggle\n [id]=\"'toggle-' + column.field\"\n [control]=\"column.control\"\n [showFooter]=\"false\"\n [customTitles]=\"['Show', 'Hide']\"\n />\n </div>\n </div>\n }\n </div>\n\n <ads-divider />\n\n <div class=\"dropdown-footer\">\n <ads-button\n [fullWidth]=\"true\"\n (click)=\"hideAllColumns()\"\n [disabled]=\"allColumnsHidden\"\n variant=\"tertiary\"\n id='hide-all-button'\n size=\"xs\"\n >\n Hide All\n </ads-button>\n <ads-button\n [fullWidth]=\"true\"\n (click)=\"showAllColumns()\"\n [disabled]=\"allColumnsVisible\"\n variant=\"tertiary\"\n id=\"show-all-button\"\n size=\"xs\"\n >\n Show All\n </ads-button>\n </div>\n </div>\n </mat-menu>\n\n <!-- Filter Menu -->\n <mat-menu #filterMenu=\"matMenu\" class=\"filter-menu-panel\" (closed)=\"filterMenuComponent.onMenuClosed()\">\n <ads-filter-menu\n #filterMenuComponent\n [columnSortFilterConfigs]=\"columnSortFilterConfigs\"\n [columnFilterStates]=\"columnFilterStates()\"\n [getFilterOptionsForField]=\"getFilterOptionsForFieldFn\"\n [getHierarchicalFilterOptionsForField]=\"getHierarchicalFilterOptionsForFieldFn\"\n [getFilterValuesForField]=\"getFilterValuesForFieldFn\"\n [isColumnFilteredFn]=\"isColumnFilteredFn\"\n [getFilterValueFormatterForField]=\"getFilterValueFormatterForFieldFn\"\n (filterChanged)=\"onFilterMenuFilterChanged($event)\"\n (filtersRemoved)=\"onFilterMenuFilterRemoved($event)\"\n />\n </mat-menu>\n\n <!-- Sort Menu -->\n <mat-menu #sortMenu=\"matMenu\" class=\"sort-menu-panel\">\n <ads-sort-menu\n [columnSortFilterConfigs]=\"columnSortFilterConfigs\"\n [columnSortStates]=\"columnSortStates()\"\n (sortChanged)=\"onSortMenuSortChanged($event)\"\n (sortsRemoved)=\"onSortMenuSortsRemoved($event)\"\n />\n </mat-menu>\n</div>\n", styles: [":host::ng-deep{--ag-wrapper-border-radius: 10px}:host::ng-deep ag-grid-angular{--ag-grid-size: 4px;--ag-border-radius: 5px;--ag-font-family: \"Roboto\";--ag-font-size: 16px;--ag-header-foreground-color: var(--color-medium);--ag-header-background-color: var(--color-light-30);--ag-background-color: var(--color-white);--ag-header-height: 45px;--ag-row-height: 45px;--ag-border-color: var(--color-light);--ag-foreground-color: var(--color-medium);--ag-spacing: 4px;--ag-inherited-accent-color: var(--color-secondary-hover)}:host::ng-deep ag-grid-angular .ag-overlay-no-matching-rows-wrapper{display:flex;justify-content:center;align-items:center;height:100%}:host::ng-deep ag-grid-angular .ag-overlay-no-matching-rows-wrapper .ag-overlay-no-matching-rows-center{color:var(--color-medium);font-family:Roboto,sans-serif;font-size:16px;border:none;padding:0;background:transparent}:host::ng-deep ag-grid-angular .ag-header-cell-text{font-weight:600;line-height:21px}:host::ng-deep ag-grid-angular .ag-cell:focus,:host::ng-deep ag-grid-angular .ag-cell-focus{outline:none!important;border:none!important;box-shadow:none!important}:host::ng-deep ag-grid-angular .ag-row,:host::ng-deep ag-grid-angular .ag-header,:host::ng-deep ag-grid-angular .ag-advanced-filter-header{border-bottom:none}:host::ng-deep ag-grid-angular .ag-row-even{background-color:var(--color-white)}:host::ng-deep ag-grid-angular .ag-row-odd{background-color:var(--color-white)}:host::ng-deep ag-grid-angular .ag-sort-indicator-container{min-width:fit-content}:host::ng-deep ag-grid-angular .ag-sort-indicator-icon>svg{fill:var(--color-medium);stroke:var(--color-medium)}:host::ng-deep ag-grid-angular .ag-header-cell-filter-button>svg{fill:var(--color-medium);stroke:var(--color-medium)}:host::ng-deep ag-grid-angular .ag-header-cell--active{background-color:var(--color-secondary-10)!important}:host::ng-deep ag-grid-angular .ag-theme-quartz{--ag-background-color: var(--color-light-30);--ag-foreground-color: var(--color-black);--ag-input-border-color: var(--color-light);--ag-input-focus-border-color: var(--color-medium);--ag-input-focus-box-shadow: none}:host::ng-deep ag-grid-angular .ag-theme-quartz .ag-input-wrapper input::placeholder{color:var(--color-medium);opacity:1}:host::ng-deep ag-grid-angular .ag-theme-quartz .ag-input-wrapper:before{background-image:none;content:none}:host::ng-deep ag-grid-angular .ag-theme-quartz .ag-input-wrapper input{padding-left:8px!important}:host::ng-deep .ads-table-container{display:flex;flex-direction:column;width:100%;height:100%}:host::ng-deep .ads-table-container.no-border .table-header{border:none;border-radius:0}:host::ng-deep .ads-table-container.no-border::ng-deep ag-grid-angular .ag-root-wrapper{border:none;border-radius:0}:host::ng-deep .ads-table-container.no-border .list-view-container{border:none;border-radius:0}:host::ng-deep .ads-table-container.with-header::ng-deep ag-grid-angular .ag-root-wrapper{border-top:none;border-top-left-radius:0;border-top-right-radius:0}:host::ng-deep .ads-table-container.with-header .list-view-container{border-top:none;border-top-left-radius:0;border-top-right-radius:0}:host::ng-deep .ads-table-container .table-header{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:16px;background-color:var(--color-white);border:1px solid var(--color-light);border-top-left-radius:var(--ag-wrapper-border-radius);border-top-right-radius:var(--ag-wrapper-border-radius)}:host::ng-deep .ads-table-container .table-header .header-template-container{display:flex;align-items:center;gap:8px;min-width:0;flex:1 1 0}:host::ng-deep .ads-table-container .table-header .header-template-container .header-template{min-width:0;flex:1 1 0}:host::ng-deep .ads-table-container .table-header .header-actions{display:flex;gap:8px;flex-wrap:nowrap;flex-shrink:0;justify-content:flex-end}:host::ng-deep .ads-table-container .table-header .header-actions ads-table-button{display:flex}:host::ng-deep .ads-table-container .table-header .change-view-button{display:flex;height:30px;padding:0 12px;border-radius:100px;background-color:var(--color-muted);align-items:center;cursor:pointer;flex-shrink:0}:host::ng-deep .ads-table-container .table-header .change-view-button:hover{background-color:var(--color-secondary-hover)}:host::ng-deep .ads-table-container .table-header .change-view-button:hover ::ng-deep svg{stroke:var(--color-white)}:host::ng-deep .list-view-container{display:flex;flex-direction:column;border:1px solid var(--color-light);border-radius:var(--ag-wrapper-border-radius)}:host::ng-deep .list-view-container .list-view-item{flex-shrink:0}:host::ng-deep .list-view-container .list-view-loading{display:flex;justify-content:center;align-items:center;height:100%}:host::ng-deep .list-view-container .list-view-empty{display:flex;justify-content:center;align-items:center;height:100%;color:var(--color-medium)}:host::ng-deep .list-view-loading-container{overflow:hidden}:host::ng-deep cdk-virtual-scroll-viewport.list-view-container .cdk-virtual-scroll-content-wrapper{display:flex;flex-direction:column;width:100%}::ng-deep .column-visibility-menu{width:234px;max-width:498px;border-radius:5px;box-shadow:0 4px 12px #00000026;border:1px solid var(--color-light)}::ng-deep .column-visibility-menu .mat-mdc-menu-content{padding:0}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content{background-color:var(--color-white)}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-label{padding:12px 12px 0;color:var(--color-medium);font-size:12px;font-weight:600;line-height:16px}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body{overflow-y:auto}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body .column-row{display:flex;justify-content:space-between;align-items:center;padding:0 12px;height:45px;gap:12px}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body .column-row .column-name{font-size:16px;font-weight:400;color:var(--color-dark);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px;flex:1}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body .column-row .column-toggle{display:flex;justify-content:flex-end}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body .column-row .column-toggle ::ng-deep ads-slide-toggle .ads-toggle{height:45px!important}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-footer{display:flex;justify-content:space-between;gap:12px;padding:12px}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-footer ::ng-deep ads-button{flex:1}::ng-deep .filter-menu-panel{width:316px;border-radius:5px;box-shadow:0 4px 12px #00000026;border:1px solid var(--color-light)}::ng-deep .sort-menu-panel{width:316px;border-radius:5px;box-shadow:0 4px 12px #00000026;border:1px solid var(--color-light)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.ɵɵCdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i3.ɵɵCdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i3.ɵɵCdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: i1.AdsIconComponent, selector: "ads-icon", inputs: ["size", "name", "color", "theme", "stroke"] }, { kind: "component", type: i4$3.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "enableStrictPivotColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "hidePaddedHeaderRows", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressMoveWhenColumnDragging", "suppressDragLeaveHidesColumns", "suppressGroupChangesColumnVisibility", "suppressMakeColumnVisibleAfterUnGroup", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "animateColumnResizing", "components", "editType", "suppressStartEditOnTab", "getFullRowEditValidationErrors", "invalidEditValueMode", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "findSearchValue", "findOptions", "quickFilterText", "cacheQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "alwaysPassFilter", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "advancedFilterParams", "suppressAdvancedFilterEval", "suppressSetFilterByDefault", "enableFilterHandlers", "filterHandlers", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressTouch", "suppressFocusAfterRefresh", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "loading", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "suppressOverlays", "overlayComponent", "overlayComponentParams", "overlayComponentSelector", "activeOverlay", "activeOverlayParams", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "formulaDataSource", "formulaFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "cellFlashDuration", "cellFadeDuration", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableCellSpan", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "refreshAfterGroupEdit", "rowDragInsertDelay", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "dragAndDropImageComponent", "dragAndDropImageComponentParams", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupHideParentOfSingleChild", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "treeData", "treeDataChildrenField", "treeDataParentIdField", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "groupHierarchyConfig", "pinnedTopRowData", "pinnedBottomRowData", "enableRowPinning", "isRowPinnable", "isRowPinned", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "cellSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "selectionColumnDef", "rowNumbers", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "enableGroupEdit", "initialState", "theme", "loadThemeGoogleFonts", "themeCssLayer", "styleNonce", "themeStyleContainer", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "focusGridInnerElement", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "ssrmExpandAllAffectsAllRows", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow", "isRowValidDropPosition"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnsReset", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "bulkEditingStarted", "bulkEditingStopped", "batchEditingStarted", "batchEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "cellSelectionDeleteStart", "cellSelectionDeleteEnd", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "filterUiChanged", "floatingFilterUiChanged", "advancedFilterBuilderVisibleChanged", "findChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "dragCancelled", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "rowDragCancel", "rowResizeStarted", "rowResizeEnded", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "pinnedRowsChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "headerFocused", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "cellSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged"] }, { kind: "component", type: AdsSlideToggleComponent, selector: "ads-slide-toggle", inputs: ["enableYesOrNo", "customTitles", "control", "label", "id", "width"] }, { kind: "component", type: AdsButtonComponent, selector: "ads-button", inputs: ["id", "variant", "disabled", "size", "type", "fullWidth"] }, { kind: "component", type: AdsTableButtonComponent, selector: "ads-table-button", inputs: ["id", "disabled", "fullWidth", "matMenuTriggerFor"], outputs: ["menuOpened", "menuClosed"] }, { kind: "component", type: DividerComponent, selector: "ads-divider", inputs: ["margin", "color"] }, { kind: "directive", type: i13.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i4$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i4$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: AdsFilterMenuComponent, selector: "ads-filter-menu", inputs: ["columnSortFilterConfigs", "columnFilterStates", "getFilterOptionsForField", "getHierarchicalFilterOptionsForField", "getFilterValuesForField", "isColumnFilteredFn", "getFilterValueFormatterForField"], outputs: ["filterChanged", "filtersRemoved"] }, { kind: "component", type: AdsSortMenuComponent, selector: "ads-sort-menu", inputs: ["columnSortFilterConfigs", "columnSortStates"], outputs: ["sortChanged", "sortsRemoved"] }, { kind: "component", type: AdsProgressSpinnerComponent, selector: "ads-progress-spinner", inputs: ["zIndex", "scrollContainer", "size", "diameter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10108
10193
|
}
|
|
10109
10194
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AdsTableComponent, decorators: [{
|
|
10110
10195
|
type: Component,
|
|
10111
|
-
args: [{ selector: 'ads-table', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ads-table-container\" [style.width]=\"width\" [class.with-header]=\"showHeaderActions\" [class.no-border]=\"!showBorder\">\n @if (showHeaderActions) {\n <div class=\"table-header\">\n <div class=\"header-template-container\">\n @if (showChangeViewButton) {\n <div class=\"change-view-button\" (click)=\"toggleView()\">\n @if (isListView()) {\n <ads-icon name=\"grid_view\" size=\"xxxs\" stroke=\"iconPrimary\" />\n } @else {\n <ads-icon name=\"list_view\" size=\"xxxs\" stroke=\"iconPrimary\" />\n }\n </div>\n }\n <div class=\"header-template\">\n @if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate\" />\n }\n </div>\n\n </div>\n\n <div class=\"header-actions\">\n @if (!isListView()) {\n <ads-table-button\n id=\"show-hide-columns-button\"\n [matMenuTriggerFor]=\"columnVisibilityMenu\"\n (menuOpened)=\"openColumnVisibilityMenu()\"\n (menuClosed)=\"onColumnVisibilityMenuClosed()\"\n >\n <ads-icon\n name=\"visibility_eye_none\"\n theme=\"secondary\"\n stroke=\"secondary\"\n size=\"xxxs\"\n />\n @if (!mobileHeaderView) {\n {{ hideColumnButtonLabel }}\n }\n </ads-table-button>\n }\n\n <ads-table-button\n id=\"filter-button\"\n [matMenuTriggerFor]=\"filterMenu\"\n (menuOpened)=\"openFilterMenu()\"\n (menuClosed)=\"onFilterMenuClosed()\"\n >\n <ads-icon\n name=\"filter\"\n theme=\"secondary\"\n size=\"xxxs\"\n />\n @if (!mobileHeaderView) {\n Filter\n }\n\n </ads-table-button>\n <ads-table-button\n id=\"sort-button\"\n [matMenuTriggerFor]=\"sortMenu\"\n >\n <ads-icon\n name=\"arrow_up_and_down\"\n theme=\"secondary\"\n size=\"xxxs\"\n />\n @if (!mobileHeaderView) {\n Sort\n }\n </ads-table-button>\n </div>\n </div>\n }\n\n <ag-grid-angular\n [ngStyle]=\"{ height: height }\"\n [style.display]=\"isListView() ? 'none' : ''\"\n [icons]=\"getAgGridIcons()\"\n class=\"ag-theme-quartz\"\n [gridOptions]=\"gridOptions\"\n [rowData]=\"rowData\"\n [columnDefs]=\"getProcessedColumnDefs()\"\n [defaultColDef]=\"getDefaultColDef()\"\n [components]=\"frameworkComponents\"\n [isExternalFilterPresent]=\"isExternalFilterPresent\"\n [doesExternalFilterPass]=\"doesExternalFilterPass\"\n (gridReady)=\"gridReady($event)\"\n (firstDataRendered)=\"firstDataRendered($event)\"\n (sortChanged)=\"sortChanged($event)\"\n (filterChanged)=\"filterChanged($event)\"\n [theme]=\"themeQuartz\"\n [loading]=\"loading\"\n [enableCellTextSelection]=\"true\"\n [ensureDomOrder]=\"true\"\n />\n\n @if (isListView()) {\n @if (loading) {\n <div class=\"list-view-container list-view-loading-container\" [ngStyle]=\"{ height: height }\">\n <div class=\"list-view-loading\">\n <ads-progress-spinner [size]=\"SpinnerSize.small\" />\n </div>\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"list-view-container\"\n [itemSize]=\"listItemHeight()\"\n [minBufferPx]=\"listItemHeight() * 4\"\n [maxBufferPx]=\"listItemHeight() * 8\"\n [ngStyle]=\"{ height: height }\"\n >\n <div\n *cdkVirtualFor=\"let row of listRowDataCache(); trackBy: listTrackBy\"\n class=\"list-view-item\"\n >\n @if (listItemTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"listItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row }\"\n />\n }\n </div>\n </cdk-virtual-scroll-viewport>\n }\n }\n\n <!-- Column Visibility Menu -->\n <mat-menu #columnVisibilityMenu=\"matMenu\" class=\"column-visibility-menu\" [class.has-header]=\"showHeaderActions\">\n <div class=\"menu-content\" (click)=\"$event.stopPropagation()\">\n <p class=\"dropdown-label\">Show/Hide Columns</p>\n <div class=\"dropdown-body\">\n @for (column of columnVisibilityList(); track $index) {\n <div class=\"column-row\">\n <span\n class=\"column-name\"\n [matTooltip]=\"column.headerName\"\n [matTooltipDisabled]=\"getTooltipDisabled(column.headerName)\"\n >\n {{ column.headerName }}\n </span>\n <div class=\"column-toggle\">\n <ads-slide-toggle\n [id]=\"'toggle-' + column.field\"\n [control]=\"column.control\"\n [showFooter]=\"false\"\n [customTitles]=\"['Show', 'Hide']\"\n />\n </div>\n </div>\n }\n </div>\n\n <ads-divider />\n\n <div class=\"dropdown-footer\">\n <ads-button\n [fullWidth]=\"true\"\n (click)=\"hideAllColumns()\"\n [disabled]=\"allColumnsHidden\"\n variant=\"tertiary\"\n id='hide-all-button'\n size=\"xs\"\n >\n Hide All\n </ads-button>\n <ads-button\n [fullWidth]=\"true\"\n (click)=\"showAllColumns()\"\n [disabled]=\"allColumnsVisible\"\n variant=\"tertiary\"\n id=\"show-all-button\"\n size=\"xs\"\n >\n Show All\n </ads-button>\n </div>\n </div>\n </mat-menu>\n\n <!-- Filter Menu -->\n <mat-menu #filterMenu=\"matMenu\" class=\"filter-menu-panel\" (closed)=\"filterMenuComponent.onMenuClosed()\">\n <ads-filter-menu\n #filterMenuComponent\n [columnSortFilterConfigs]=\"columnSortFilterConfigs\"\n [columnFilterStates]=\"columnFilterStates()\"\n [getFilterOptionsForField]=\"getFilterOptionsForFieldFn\"\n [getHierarchicalFilterOptionsForField]=\"getHierarchicalFilterOptionsForFieldFn\"\n [getFilterValuesForField]=\"getFilterValuesForFieldFn\"\n [isColumnFilteredFn]=\"isColumnFilteredFn\"\n [getFilterValueFormatterForField]=\"getFilterValueFormatterForFieldFn\"\n (filterChanged)=\"onFilterMenuFilterChanged($event)\"\n (filtersRemoved)=\"onFilterMenuFilterRemoved($event)\"\n />\n </mat-menu>\n\n <!-- Sort Menu -->\n <mat-menu #sortMenu=\"matMenu\" class=\"sort-menu-panel\">\n <ads-sort-menu\n [columnSortFilterConfigs]=\"columnSortFilterConfigs\"\n [columnSortStates]=\"columnSortStates()\"\n (sortChanged)=\"onSortMenuSortChanged($event)\"\n (sortsRemoved)=\"onSortMenuSortsRemoved($event)\"\n />\n </mat-menu>\n</div>\n", styles: [":host::ng-deep{--ag-wrapper-border-radius: 10px}:host::ng-deep ag-grid-angular{--ag-grid-size: 4px;--ag-border-radius: 5px;--ag-font-family: \"Roboto\";--ag-font-size: 16px;--ag-header-foreground-color: var(--color-medium);--ag-header-background-color: var(--color-light-30);--ag-background-color: var(--color-white);--ag-header-height: 45px;--ag-row-height: 45px;--ag-border-color: var(--color-light);--ag-foreground-color: var(--color-medium);--ag-spacing: 4px;--ag-inherited-accent-color: var(--color-secondary-hover)}:host::ng-deep ag-grid-angular .ag-overlay-no-matching-rows-wrapper{display:flex;justify-content:center;align-items:center;height:100%}:host::ng-deep ag-grid-angular .ag-overlay-no-matching-rows-wrapper .ag-overlay-no-matching-rows-center{color:var(--color-medium);font-family:Roboto,sans-serif;font-size:16px;border:none;padding:0;background:transparent}:host::ng-deep ag-grid-angular .ag-header-cell-text{font-weight:600;line-height:21px}:host::ng-deep ag-grid-angular .ag-cell:focus,:host::ng-deep ag-grid-angular .ag-cell-focus{outline:none!important;border:none!important;box-shadow:none!important}:host::ng-deep ag-grid-angular .ag-row,:host::ng-deep ag-grid-angular .ag-header,:host::ng-deep ag-grid-angular .ag-advanced-filter-header{border-bottom:none}:host::ng-deep ag-grid-angular .ag-row-even{background-color:var(--color-white)}:host::ng-deep ag-grid-angular .ag-row-odd{background-color:var(--color-white)}:host::ng-deep ag-grid-angular .ag-sort-indicator-container{min-width:fit-content}:host::ng-deep ag-grid-angular .ag-sort-indicator-icon>svg{fill:var(--color-medium);stroke:var(--color-medium)}:host::ng-deep ag-grid-angular .ag-header-cell-filter-button>svg{fill:var(--color-medium);stroke:var(--color-medium)}:host::ng-deep ag-grid-angular .ag-theme-quartz{--ag-background-color: var(--color-light-30);--ag-foreground-color: var(--color-black);--ag-input-border-color: var(--color-light);--ag-input-focus-border-color: var(--color-medium);--ag-input-focus-box-shadow: none}:host::ng-deep ag-grid-angular .ag-theme-quartz .ag-input-wrapper input::placeholder{color:var(--color-medium);opacity:1}:host::ng-deep ag-grid-angular .ag-theme-quartz .ag-input-wrapper:before{background-image:none;content:none}:host::ng-deep ag-grid-angular .ag-theme-quartz .ag-input-wrapper input{padding-left:8px!important}:host::ng-deep .ads-table-container{display:flex;flex-direction:column;width:100%;height:100%}:host::ng-deep .ads-table-container.no-border .table-header{border:none;border-radius:0}:host::ng-deep .ads-table-container.no-border::ng-deep ag-grid-angular .ag-root-wrapper{border:none;border-radius:0}:host::ng-deep .ads-table-container.no-border .list-view-container{border:none;border-radius:0}:host::ng-deep .ads-table-container.with-header::ng-deep ag-grid-angular .ag-root-wrapper{border-top:none;border-top-left-radius:0;border-top-right-radius:0}:host::ng-deep .ads-table-container.with-header .list-view-container{border-top:none;border-top-left-radius:0;border-top-right-radius:0}:host::ng-deep .ads-table-container .table-header{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:16px;background-color:var(--color-white);border:1px solid var(--color-light);border-top-left-radius:var(--ag-wrapper-border-radius);border-top-right-radius:var(--ag-wrapper-border-radius)}:host::ng-deep .ads-table-container .table-header .header-template-container{display:flex;align-items:center;gap:8px;min-width:0;flex:1 1 0}:host::ng-deep .ads-table-container .table-header .header-template-container .header-template{min-width:0;flex:1 1 0}:host::ng-deep .ads-table-container .table-header .header-actions{display:flex;gap:8px;flex-wrap:nowrap;flex-shrink:0;justify-content:flex-end}:host::ng-deep .ads-table-container .table-header .header-actions ads-table-button{display:flex}:host::ng-deep .ads-table-container .table-header .change-view-button{display:flex;height:30px;padding:0 12px;border-radius:100px;background-color:var(--color-muted);align-items:center;cursor:pointer;flex-shrink:0}:host::ng-deep .ads-table-container .table-header .change-view-button:hover{background-color:var(--color-secondary-hover)}:host::ng-deep .ads-table-container .table-header .change-view-button:hover ::ng-deep svg{stroke:var(--color-white)}:host::ng-deep .list-view-container{display:flex;flex-direction:column;border:1px solid var(--color-light);border-radius:var(--ag-wrapper-border-radius)}:host::ng-deep .list-view-container .list-view-item{flex-shrink:0}:host::ng-deep .list-view-container .list-view-loading{display:flex;justify-content:center;align-items:center;height:100%}:host::ng-deep .list-view-container .list-view-empty{display:flex;justify-content:center;align-items:center;height:100%;color:var(--color-medium)}:host::ng-deep .list-view-loading-container{overflow:hidden}:host::ng-deep cdk-virtual-scroll-viewport.list-view-container .cdk-virtual-scroll-content-wrapper{display:flex;flex-direction:column;width:100%}::ng-deep .column-visibility-menu{width:234px;max-width:498px;border-radius:5px;box-shadow:0 4px 12px #00000026;border:1px solid var(--color-light)}::ng-deep .column-visibility-menu .mat-mdc-menu-content{padding:0}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content{background-color:var(--color-white)}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-label{padding:12px 12px 0;color:var(--color-medium);font-size:12px;font-weight:600;line-height:16px}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body{overflow-y:auto}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body .column-row{display:flex;justify-content:space-between;align-items:center;padding:0 12px;height:45px;gap:12px}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body .column-row .column-name{font-size:16px;font-weight:400;color:var(--color-dark);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px;flex:1}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body .column-row .column-toggle{display:flex;justify-content:flex-end}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body .column-row .column-toggle ::ng-deep ads-slide-toggle .ads-toggle{height:45px!important}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-footer{display:flex;justify-content:space-between;gap:12px;padding:12px}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-footer ::ng-deep ads-button{flex:1}::ng-deep .filter-menu-panel{width:316px;border-radius:5px;box-shadow:0 4px 12px #00000026;border:1px solid var(--color-light)}::ng-deep .sort-menu-panel{width:316px;border-radius:5px;box-shadow:0 4px 12px #00000026;border:1px solid var(--color-light)}\n"] }]
|
|
10196
|
+
args: [{ selector: 'ads-table', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ads-table-container\" [style.width]=\"width\" [class.with-header]=\"showHeaderActions\" [class.no-border]=\"!showBorder\">\n @if (showHeaderActions) {\n <div class=\"table-header\">\n <div class=\"header-template-container\">\n @if (showChangeViewButton) {\n <div class=\"change-view-button\" (click)=\"toggleView()\">\n @if (isListView()) {\n <ads-icon name=\"grid_view\" size=\"xxxs\" stroke=\"iconPrimary\" />\n } @else {\n <ads-icon name=\"list_view\" size=\"xxxs\" stroke=\"iconPrimary\" />\n }\n </div>\n }\n <div class=\"header-template\">\n @if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate\" />\n }\n </div>\n\n </div>\n\n <div class=\"header-actions\">\n @if (!isListView()) {\n <ads-table-button\n id=\"show-hide-columns-button\"\n [matMenuTriggerFor]=\"columnVisibilityMenu\"\n (menuOpened)=\"openColumnVisibilityMenu()\"\n (menuClosed)=\"onColumnVisibilityMenuClosed()\"\n >\n <ads-icon\n name=\"visibility_eye_none\"\n theme=\"secondary\"\n stroke=\"secondary\"\n size=\"xxxs\"\n />\n @if (!mobileHeaderView) {\n {{ hideColumnButtonLabel }}\n }\n </ads-table-button>\n }\n\n <ads-table-button\n id=\"filter-button\"\n [matMenuTriggerFor]=\"filterMenu\"\n (menuOpened)=\"openFilterMenu()\"\n (menuClosed)=\"onFilterMenuClosed()\"\n >\n <ads-icon\n name=\"filter\"\n theme=\"secondary\"\n size=\"xxxs\"\n />\n @if (!mobileHeaderView) {\n {{ filterButtonLabel }}\n }\n\n </ads-table-button>\n <ads-table-button\n id=\"sort-button\"\n [matMenuTriggerFor]=\"sortMenu\"\n >\n <ads-icon\n name=\"arrow_up_and_down\"\n theme=\"secondary\"\n size=\"xxxs\"\n />\n @if (!mobileHeaderView) {\n {{ sortButtonLabel }}\n }\n </ads-table-button>\n </div>\n </div>\n }\n\n <ag-grid-angular\n [ngStyle]=\"{ height: height }\"\n [style.display]=\"isListView() ? 'none' : ''\"\n [icons]=\"getAgGridIcons()\"\n class=\"ag-theme-quartz\"\n [gridOptions]=\"gridOptions\"\n [rowData]=\"rowData\"\n [columnDefs]=\"getProcessedColumnDefs()\"\n [defaultColDef]=\"getDefaultColDef()\"\n [components]=\"frameworkComponents\"\n [isExternalFilterPresent]=\"isExternalFilterPresent\"\n [doesExternalFilterPass]=\"doesExternalFilterPass\"\n (gridReady)=\"gridReady($event)\"\n (firstDataRendered)=\"firstDataRendered($event)\"\n (sortChanged)=\"sortChanged($event)\"\n (filterChanged)=\"filterChanged($event)\"\n [theme]=\"themeQuartz\"\n [loading]=\"loading\"\n [enableCellTextSelection]=\"true\"\n [ensureDomOrder]=\"true\"\n />\n\n @if (isListView()) {\n @if (loading) {\n <div class=\"list-view-container list-view-loading-container\" [ngStyle]=\"{ height: height }\">\n <div class=\"list-view-loading\">\n <ads-progress-spinner [size]=\"SpinnerSize.small\" />\n </div>\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"list-view-container\"\n [itemSize]=\"listItemHeight()\"\n [minBufferPx]=\"listItemHeight() * 4\"\n [maxBufferPx]=\"listItemHeight() * 8\"\n [ngStyle]=\"{ height: height }\"\n >\n <div\n *cdkVirtualFor=\"let row of listRowDataCache(); trackBy: listTrackBy\"\n class=\"list-view-item\"\n >\n @if (listItemTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"listItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row }\"\n />\n }\n </div>\n </cdk-virtual-scroll-viewport>\n }\n }\n\n <!-- Column Visibility Menu -->\n <mat-menu #columnVisibilityMenu=\"matMenu\" class=\"column-visibility-menu\" [class.has-header]=\"showHeaderActions\">\n <div class=\"menu-content\" (click)=\"$event.stopPropagation()\">\n <p class=\"dropdown-label\">Show/Hide Columns</p>\n <div class=\"dropdown-body\">\n @for (column of columnVisibilityList(); track $index) {\n <div class=\"column-row\">\n <span\n class=\"column-name\"\n [matTooltip]=\"column.headerName\"\n [matTooltipDisabled]=\"getTooltipDisabled(column.headerName)\"\n >\n {{ column.headerName }}\n </span>\n <div class=\"column-toggle\">\n <ads-slide-toggle\n [id]=\"'toggle-' + column.field\"\n [control]=\"column.control\"\n [showFooter]=\"false\"\n [customTitles]=\"['Show', 'Hide']\"\n />\n </div>\n </div>\n }\n </div>\n\n <ads-divider />\n\n <div class=\"dropdown-footer\">\n <ads-button\n [fullWidth]=\"true\"\n (click)=\"hideAllColumns()\"\n [disabled]=\"allColumnsHidden\"\n variant=\"tertiary\"\n id='hide-all-button'\n size=\"xs\"\n >\n Hide All\n </ads-button>\n <ads-button\n [fullWidth]=\"true\"\n (click)=\"showAllColumns()\"\n [disabled]=\"allColumnsVisible\"\n variant=\"tertiary\"\n id=\"show-all-button\"\n size=\"xs\"\n >\n Show All\n </ads-button>\n </div>\n </div>\n </mat-menu>\n\n <!-- Filter Menu -->\n <mat-menu #filterMenu=\"matMenu\" class=\"filter-menu-panel\" (closed)=\"filterMenuComponent.onMenuClosed()\">\n <ads-filter-menu\n #filterMenuComponent\n [columnSortFilterConfigs]=\"columnSortFilterConfigs\"\n [columnFilterStates]=\"columnFilterStates()\"\n [getFilterOptionsForField]=\"getFilterOptionsForFieldFn\"\n [getHierarchicalFilterOptionsForField]=\"getHierarchicalFilterOptionsForFieldFn\"\n [getFilterValuesForField]=\"getFilterValuesForFieldFn\"\n [isColumnFilteredFn]=\"isColumnFilteredFn\"\n [getFilterValueFormatterForField]=\"getFilterValueFormatterForFieldFn\"\n (filterChanged)=\"onFilterMenuFilterChanged($event)\"\n (filtersRemoved)=\"onFilterMenuFilterRemoved($event)\"\n />\n </mat-menu>\n\n <!-- Sort Menu -->\n <mat-menu #sortMenu=\"matMenu\" class=\"sort-menu-panel\">\n <ads-sort-menu\n [columnSortFilterConfigs]=\"columnSortFilterConfigs\"\n [columnSortStates]=\"columnSortStates()\"\n (sortChanged)=\"onSortMenuSortChanged($event)\"\n (sortsRemoved)=\"onSortMenuSortsRemoved($event)\"\n />\n </mat-menu>\n</div>\n", styles: [":host::ng-deep{--ag-wrapper-border-radius: 10px}:host::ng-deep ag-grid-angular{--ag-grid-size: 4px;--ag-border-radius: 5px;--ag-font-family: \"Roboto\";--ag-font-size: 16px;--ag-header-foreground-color: var(--color-medium);--ag-header-background-color: var(--color-light-30);--ag-background-color: var(--color-white);--ag-header-height: 45px;--ag-row-height: 45px;--ag-border-color: var(--color-light);--ag-foreground-color: var(--color-medium);--ag-spacing: 4px;--ag-inherited-accent-color: var(--color-secondary-hover)}:host::ng-deep ag-grid-angular .ag-overlay-no-matching-rows-wrapper{display:flex;justify-content:center;align-items:center;height:100%}:host::ng-deep ag-grid-angular .ag-overlay-no-matching-rows-wrapper .ag-overlay-no-matching-rows-center{color:var(--color-medium);font-family:Roboto,sans-serif;font-size:16px;border:none;padding:0;background:transparent}:host::ng-deep ag-grid-angular .ag-header-cell-text{font-weight:600;line-height:21px}:host::ng-deep ag-grid-angular .ag-cell:focus,:host::ng-deep ag-grid-angular .ag-cell-focus{outline:none!important;border:none!important;box-shadow:none!important}:host::ng-deep ag-grid-angular .ag-row,:host::ng-deep ag-grid-angular .ag-header,:host::ng-deep ag-grid-angular .ag-advanced-filter-header{border-bottom:none}:host::ng-deep ag-grid-angular .ag-row-even{background-color:var(--color-white)}:host::ng-deep ag-grid-angular .ag-row-odd{background-color:var(--color-white)}:host::ng-deep ag-grid-angular .ag-sort-indicator-container{min-width:fit-content}:host::ng-deep ag-grid-angular .ag-sort-indicator-icon>svg{fill:var(--color-medium);stroke:var(--color-medium)}:host::ng-deep ag-grid-angular .ag-header-cell-filter-button>svg{fill:var(--color-medium);stroke:var(--color-medium)}:host::ng-deep ag-grid-angular .ag-header-cell--active{background-color:var(--color-secondary-10)!important}:host::ng-deep ag-grid-angular .ag-theme-quartz{--ag-background-color: var(--color-light-30);--ag-foreground-color: var(--color-black);--ag-input-border-color: var(--color-light);--ag-input-focus-border-color: var(--color-medium);--ag-input-focus-box-shadow: none}:host::ng-deep ag-grid-angular .ag-theme-quartz .ag-input-wrapper input::placeholder{color:var(--color-medium);opacity:1}:host::ng-deep ag-grid-angular .ag-theme-quartz .ag-input-wrapper:before{background-image:none;content:none}:host::ng-deep ag-grid-angular .ag-theme-quartz .ag-input-wrapper input{padding-left:8px!important}:host::ng-deep .ads-table-container{display:flex;flex-direction:column;width:100%;height:100%}:host::ng-deep .ads-table-container.no-border .table-header{border:none;border-radius:0}:host::ng-deep .ads-table-container.no-border::ng-deep ag-grid-angular .ag-root-wrapper{border:none;border-radius:0}:host::ng-deep .ads-table-container.no-border .list-view-container{border:none;border-radius:0}:host::ng-deep .ads-table-container.with-header::ng-deep ag-grid-angular .ag-root-wrapper{border-top:none;border-top-left-radius:0;border-top-right-radius:0}:host::ng-deep .ads-table-container.with-header .list-view-container{border-top:none;border-top-left-radius:0;border-top-right-radius:0}:host::ng-deep .ads-table-container .table-header{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:16px;background-color:var(--color-white);border:1px solid var(--color-light);border-top-left-radius:var(--ag-wrapper-border-radius);border-top-right-radius:var(--ag-wrapper-border-radius)}:host::ng-deep .ads-table-container .table-header .header-template-container{display:flex;align-items:center;gap:8px;min-width:0;flex:1 1 0}:host::ng-deep .ads-table-container .table-header .header-template-container .header-template{min-width:0;flex:1 1 0}:host::ng-deep .ads-table-container .table-header .header-actions{display:flex;gap:8px;flex-wrap:nowrap;flex-shrink:0;justify-content:flex-end}:host::ng-deep .ads-table-container .table-header .header-actions ads-table-button{display:flex}:host::ng-deep .ads-table-container .table-header .change-view-button{display:flex;height:30px;padding:0 12px;border-radius:100px;background-color:var(--color-muted);align-items:center;cursor:pointer;flex-shrink:0}:host::ng-deep .ads-table-container .table-header .change-view-button:hover{background-color:var(--color-secondary-hover)}:host::ng-deep .ads-table-container .table-header .change-view-button:hover ::ng-deep svg{stroke:var(--color-white)}:host::ng-deep .list-view-container{display:flex;flex-direction:column;border:1px solid var(--color-light);border-radius:var(--ag-wrapper-border-radius)}:host::ng-deep .list-view-container .list-view-item{flex-shrink:0}:host::ng-deep .list-view-container .list-view-loading{display:flex;justify-content:center;align-items:center;height:100%}:host::ng-deep .list-view-container .list-view-empty{display:flex;justify-content:center;align-items:center;height:100%;color:var(--color-medium)}:host::ng-deep .list-view-loading-container{overflow:hidden}:host::ng-deep cdk-virtual-scroll-viewport.list-view-container .cdk-virtual-scroll-content-wrapper{display:flex;flex-direction:column;width:100%}::ng-deep .column-visibility-menu{width:234px;max-width:498px;border-radius:5px;box-shadow:0 4px 12px #00000026;border:1px solid var(--color-light)}::ng-deep .column-visibility-menu .mat-mdc-menu-content{padding:0}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content{background-color:var(--color-white)}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-label{padding:12px 12px 0;color:var(--color-medium);font-size:12px;font-weight:600;line-height:16px}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body{overflow-y:auto}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body .column-row{display:flex;justify-content:space-between;align-items:center;padding:0 12px;height:45px;gap:12px}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body .column-row .column-name{font-size:16px;font-weight:400;color:var(--color-dark);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px;flex:1}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body .column-row .column-toggle{display:flex;justify-content:flex-end}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-body .column-row .column-toggle ::ng-deep ads-slide-toggle .ads-toggle{height:45px!important}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-footer{display:flex;justify-content:space-between;gap:12px;padding:12px}::ng-deep .column-visibility-menu .mat-mdc-menu-content .menu-content .dropdown-footer ::ng-deep ads-button{flex:1}::ng-deep .filter-menu-panel{width:316px;border-radius:5px;box-shadow:0 4px 12px #00000026;border:1px solid var(--color-light)}::ng-deep .sort-menu-panel{width:316px;border-radius:5px;box-shadow:0 4px 12px #00000026;border:1px solid var(--color-light)}\n"] }]
|
|
10112
10197
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.AdsIconRegistry }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }], propDecorators: { width: [{
|
|
10113
10198
|
type: Input
|
|
10114
10199
|
}], height: [{
|