basesite-shared-grid-lib 21.0.1-beta.4 → 21.0.1-beta.6

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.
@@ -25,10 +25,10 @@ class TokenSharingService {
25
25
  updateToken(newToken) {
26
26
  this.tokenSubject.next(newToken);
27
27
  }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TokenSharingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
29
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TokenSharingService, providedIn: 'root' }); }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: TokenSharingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
29
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: TokenSharingService, providedIn: 'root' }); }
30
30
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TokenSharingService, decorators: [{
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: TokenSharingService, decorators: [{
32
32
  type: Injectable,
33
33
  args: [{
34
34
  providedIn: 'root'
@@ -88,10 +88,10 @@ class GridLibraryService {
88
88
  getDataForExport(serverUrl) {
89
89
  return this.httpClient.get(`${serverUrl}`, { headers: this.getRequestHeader() });
90
90
  }
91
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: GridLibraryService, deps: [{ token: i1.HttpClient }, { token: TokenSharingService }], target: i0.ɵɵFactoryTarget.Injectable }); }
92
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: GridLibraryService, providedIn: 'root' }); }
91
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: GridLibraryService, deps: [{ token: i1.HttpClient }, { token: TokenSharingService }], target: i0.ɵɵFactoryTarget.Injectable }); }
92
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: GridLibraryService, providedIn: 'root' }); }
93
93
  }
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: GridLibraryService, decorators: [{
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: GridLibraryService, decorators: [{
95
95
  type: Injectable,
96
96
  args: [{
97
97
  providedIn: 'root',
@@ -549,11 +549,49 @@ class OdataProvider {
549
549
  if (beforeRequest) {
550
550
  beforeRequest(options);
551
551
  }
552
- me.callApi(me.toQuery(options)).then((x) => {
553
- if (x) {
554
- let values = me.getOdataResult(x);
555
- callback(values.map((y) => y[field]));
552
+ // OData wraps nested fields with '/' (e.g. parent/child); the response
553
+ // mirrors that shape, so we walk the path instead of using the raw key.
554
+ // We also fall back to a case-insensitive lookup because some OData
555
+ // services return PascalCase property names regardless of the request
556
+ // casing (e.g. asked for `dacStatus`, response is `DacStatus`).
557
+ const readField = (row) => {
558
+ if (row == null)
559
+ return undefined;
560
+ if (Object.prototype.hasOwnProperty.call(row, field))
561
+ return row[field];
562
+ const segments = String(field).split('.');
563
+ let current = row;
564
+ for (const seg of segments) {
565
+ if (current == null)
566
+ return undefined;
567
+ if (Object.prototype.hasOwnProperty.call(current, seg)) {
568
+ current = current[seg];
569
+ continue;
570
+ }
571
+ // Case-insensitive key match as a last resort.
572
+ const lower = seg.toLowerCase();
573
+ const match = Object.keys(current).find(k => k.toLowerCase() === lower);
574
+ if (!match)
575
+ return undefined;
576
+ current = current[match];
577
+ }
578
+ return current;
579
+ };
580
+ me.callApi(me.toQuery(options))
581
+ .then((x) => {
582
+ const values = x ? me.getOdataResult(x) || [] : [];
583
+ const mapped = values.map((y) => readField(y));
584
+ console.log('[OdataProvider] getFilterValuesParams response for', field, '— rows:', values.length, '— sample keys:', values[0] ? Object.keys(values[0]) : '(none)', '— mapped sample:', mapped.slice(0, 5));
585
+ // Helpful diagnostic when the response shape doesn't match the field.
586
+ if (values.length > 0 && mapped.every((v) => v === undefined)) {
587
+ console.warn('[OdataProvider] getFilterValuesParams: response had', values.length, 'rows but none contained field', field, '— sample row keys:', Object.keys(values[0] || {}));
556
588
  }
589
+ callback(mapped);
590
+ })
591
+ .catch((err) => {
592
+ console.error('[OdataProvider] getFilterValuesParams failed for field', field, err);
593
+ // Always invoke the callback so AG Grid's set filter doesn't hang.
594
+ callback([]);
557
595
  });
558
596
  };
559
597
  /**
@@ -936,8 +974,8 @@ class ButtonRendererComponent {
936
974
  onMouseDown($event) {
937
975
  $event.stopPropagation();
938
976
  }
939
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ButtonRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
940
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: ButtonRendererComponent, isStandalone: false, selector: "lib-button-renderer", ngImport: i0, template: `
977
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: ButtonRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
978
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.7", type: ButtonRendererComponent, isStandalone: false, selector: "lib-button-renderer", ngImport: i0, template: `
941
979
  <button class="btn-actions" type="button" (click)="onClick($event)" (mousedown)="onMouseDown($event)" [attr.data-title]="params.tooltip">
942
980
  @if (icon && !label) {
943
981
  <span> <i class="{{ icon }}"></i> </span>
@@ -951,7 +989,7 @@ class ButtonRendererComponent {
951
989
  </button>
952
990
  `, isInline: true }); }
953
991
  }
954
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ButtonRendererComponent, decorators: [{
992
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: ButtonRendererComponent, decorators: [{
955
993
  type: Component,
956
994
  args: [{
957
995
  selector: 'lib-button-renderer',
@@ -980,14 +1018,14 @@ class CustomTooltip {
980
1018
  this.params = params;
981
1019
  params.value = params.valueFormatted;
982
1020
  }
983
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CustomTooltip, deps: [{ token: i1$1.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
984
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: CustomTooltip, isStandalone: false, selector: "tooltip-component", ngImport: i0, template: ` <div class="custom-tooltip">
1021
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: CustomTooltip, deps: [{ token: i1$1.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
1022
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.7", type: CustomTooltip, isStandalone: false, selector: "tooltip-component", ngImport: i0, template: ` <div class="custom-tooltip">
985
1023
  <p>
986
1024
  <span>{{ params.value }}</span>
987
1025
  </p>
988
1026
  </div>`, isInline: true }); }
989
1027
  }
990
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CustomTooltip, decorators: [{
1028
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: CustomTooltip, decorators: [{
991
1029
  type: Component,
992
1030
  args: [{
993
1031
  selector: 'tooltip-component',
@@ -1051,8 +1089,8 @@ class DropdownRenderer {
1051
1089
  ];
1052
1090
  return urls[index] || '#';
1053
1091
  }
1054
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: DropdownRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1055
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: DropdownRenderer, isStandalone: false, selector: "lib-dropdown-renderer", ngImport: i0, template: `
1092
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: DropdownRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1093
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.7", type: DropdownRenderer, isStandalone: false, selector: "lib-dropdown-renderer", ngImport: i0, template: `
1056
1094
  <div class="dropdown">
1057
1095
  <button type="button" class="btn btn-white" data-toggle="dropdown">
1058
1096
  <i class="fa fa-ellipsis-v"></i>
@@ -1089,7 +1127,7 @@ class DropdownRenderer {
1089
1127
  </div>
1090
1128
  `, isInline: true }); }
1091
1129
  }
1092
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: DropdownRenderer, decorators: [{
1130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: DropdownRenderer, decorators: [{
1093
1131
  type: Component,
1094
1132
  args: [{
1095
1133
  selector: 'lib-dropdown-renderer',
@@ -1140,14 +1178,14 @@ class CellRendererComponent {
1140
1178
  refresh(params) {
1141
1179
  return false;
1142
1180
  }
1143
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1144
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: CellRendererComponent, isStandalone: false, selector: "app-cell-data", ngImport: i0, template: `
1181
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: CellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1182
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.7", type: CellRendererComponent, isStandalone: false, selector: "app-cell-data", ngImport: i0, template: `
1145
1183
  <span>
1146
1184
  {{ params.value }}
1147
1185
  </span>
1148
1186
  `, isInline: true }); }
1149
1187
  }
1150
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CellRendererComponent, decorators: [{
1188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: CellRendererComponent, decorators: [{
1151
1189
  type: Component,
1152
1190
  args: [{
1153
1191
  selector: 'app-cell-data',
@@ -1168,8 +1206,8 @@ class FillCellRendererComponent {
1168
1206
  refresh(params) {
1169
1207
  return false;
1170
1208
  }
1171
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FillCellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1172
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: FillCellRendererComponent, isStandalone: false, selector: "app-fill-cell-data", ngImport: i0, template: `
1209
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: FillCellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1210
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.7", type: FillCellRendererComponent, isStandalone: false, selector: "app-fill-cell-data", ngImport: i0, template: `
1173
1211
  @if (params.value && params.field === 'dacStatus') {
1174
1212
  <span #dacIndicator class="status-fill-cell text-white" [ngStyle]="{'background': rowData.dacIndicator? rowData.dacIndicator : '#fff', 'width':'178px'}" >
1175
1213
  {{ params.value }}
@@ -1205,7 +1243,7 @@ class FillCellRendererComponent {
1205
1243
  }
1206
1244
  `, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
1207
1245
  }
1208
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: FillCellRendererComponent, decorators: [{
1246
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: FillCellRendererComponent, decorators: [{
1209
1247
  type: Component,
1210
1248
  args: [{
1211
1249
  selector: 'app-fill-cell-data',
@@ -1958,8 +1996,8 @@ class DatepickerComponent {
1958
1996
  onDatepickerHide() {
1959
1997
  this.isDatepickerOpen = false;
1960
1998
  }
1961
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: DatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1962
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: DatepickerComponent, isStandalone: true, selector: "app-datepicker", inputs: { disabled: "disabled", selectionMode: "selectionMode", showIcon: "showIcon", iconDisplay: "iconDisplay", appendTo: "appendTo", inline: "inline", showButtonBar: "showButtonBar", inputId: "inputId", showOnFocus: "showOnFocus", gridComponent: "gridComponent" }, outputs: { ngModelChange: "ngModelChange" }, providers: [
1999
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: DatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2000
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.7", type: DatepickerComponent, isStandalone: true, selector: "app-datepicker", inputs: { disabled: "disabled", selectionMode: "selectionMode", showIcon: "showIcon", iconDisplay: "iconDisplay", appendTo: "appendTo", inline: "inline", showButtonBar: "showButtonBar", inputId: "inputId", showOnFocus: "showOnFocus", gridComponent: "gridComponent" }, outputs: { ngModelChange: "ngModelChange" }, providers: [
1963
2001
  {
1964
2002
  provide: NG_VALUE_ACCESSOR,
1965
2003
  useExisting: forwardRef(() => DatepickerComponent),
@@ -1967,7 +2005,7 @@ class DatepickerComponent {
1967
2005
  }
1968
2006
  ], viewQueries: [{ propertyName: "datepicker", first: true, predicate: ["datepicker"], descendants: true }], ngImport: i0, template: "<div class=\"lspx-datepicker floating-datepicker\">\r\n <p-datepicker\r\n #datepicker\r\n [(ngModel)]=\"value\"\r\n (ngModelChange)=\"onValueChange($event)\"\r\n (onSelect)=\"onDateSelect($event)\"\r\n (onShow)=\"onDatepickerShow()\"\r\n (onHide)=\"onDatepickerHide()\"\r\n [selectionMode]=\"selectionMode\"\r\n [placeholder]=\"placeholder\"\r\n [showIcon]=\"showIcon\"\r\n [iconDisplay]=\"iconDisplay\"\r\n [dateFormat]=\"dateFormat\"\r\n [inline]=\"inline\"\r\n [showButtonBar]=\"showButtonBar\"\r\n [disabled]=\"disabled\"\r\n [appendTo]=\"appendTo\"\r\n [inputId]=\"uniqueId\"\r\n [readonlyInput]=\"false\"\r\n [styleClass]=\"'custom-datepicker ' + datepickerClass\"\r\n [dataType]=\"'date'\"\r\n [keepInvalid]=\"false\"\r\n [showOnFocus]=\"showOnFocus\"\r\n (onTodayClick)=\"onTodayButtonClick()\"\r\n (onClearClick)=\"onClearButtonClick()\"\r\n (onInput)=\"onInputChange($event)\"\r\n (onBlur)=\"onInputBlur($event)\"\r\n >\r\n <ng-template pTemplate=\"date\" let-date>\r\n <div class=\"custom-date-wrapper\" [ngClass]=\"getDateClasses(date)\">\r\n <span class=\"date-content\">{{ date.day }}</span>\r\n </div>\r\n </ng-template>\r\n </p-datepicker>\r\n</div> \r\n", styles: [":host{display:block;width:100%;height:100%}::ng-deep .p-datepicker{--p-datepicker-week-day-color: $calendar-grey !important;height:95%}::ng-deep .p-datepicker .p-inputtext{font-size:14px!important;font-family:Inter!important;padding-inline:5px!important}::ng-deep .p-datepicker-select-month,::ng-deep .p-datepicker-select-year{position:relative;padding-right:20px!important;font-family:Inter!important;font-weight:600!important;font-size:12px!important;line-height:100%!important;letter-spacing:0px!important;color:#000!important}::ng-deep .p-datepicker-select-month:after,::ng-deep .p-datepicker-select-year:after{content:\"\";position:absolute;right:5px;top:50%;transform:translateY(-50%);width:7px;height:4px;background-color:#000;clip-path:path(\"M5.86793 0.15296C5.78334 0.0550203 5.66863 6.90412e-07 5.54902 6.81445e-07C5.42941 6.72477e-07 5.3147 0.0550203 5.23011 0.15296L2.99728 2.73897L0.764445 0.15296C0.679371 0.0577956 0.565428 0.00513775 0.447157 0.00632817C0.328886 0.00751834 0.21575 0.0624614 0.132117 0.159323C0.0484838 0.256186 0.00104464 0.387217 1.70436e-05 0.524196C-0.00101055 0.661174 0.0444554 0.79314 0.126623 0.891671L2.67837 3.84704C2.76295 3.94498 2.87767 4 2.99728 4C3.11689 4 3.2316 3.94498 3.31619 3.84704L5.86793 0.891672C5.95249 0.793702 6 0.660845 6 0.522316C6 0.383787 5.9525 0.25093 5.86793 0.15296Z\");pointer-events:none}::ng-deep .p-datepicker-prev-button,::ng-deep .p-datepicker-next-button,::ng-deep .p-datepicker-next-button:not(:disabled):hover,::ng-deep .p-datepicker-prev-button:not(:disabled):hover{color:#77838f!important;background:transparent!important}::ng-deep .p-datepicker-calendar .p-datepicker-day-view .p-datepicker-weekday-cell .p-datepicker-weekday{color:#77838f!important}::ng-deep .p-datepicker-calendar .p-datepicker-day-view .p-datepicker-weekday-cell{font-family:Inter!important;font-weight:500!important;font-size:12px!important;line-height:100%!important;letter-spacing:0px!important;color:#77838f!important;text-align:center!important}::ng-deep .p-datepicker .p-datepicker-calendar .p-datepicker-day-cell .p-datepicker-day.p-datepicker-day-selected{background:transparent!important;color:inherit!important;border:none!important}::ng-deep .p-datepicker .p-datepicker-calendar .p-datepicker-day-cell .p-datepicker-day.p-datepicker-day-selected-range{background:transparent!important;color:inherit!important;border:none!important}::ng-deep .p-datepicker-day-selected{background:transparent!important;color:inherit!important;border:none!important}::ng-deep .p-datepicker-day-selected-range{background:transparent!important;color:inherit!important;border:none!important}::ng-deep .p-datepicker-calendar .p-datepicker-day-cell{font-family:Inter!important;font-weight:500!important;font-size:12px!important;line-height:100%!important;letter-spacing:0px!important;color:#000!important}::ng-deep .p-datepicker-calendar .p-datepicker-day-cell .p-datepicker-day.p-datepicker-day-disabled{color:#77838f!important}::ng-deep .p-datepicker-day-cell{position:relative}::ng-deep .p-datepicker-day-cell:has(.custom-date-wrapper.range-start):not(:has(.custom-date-wrapper.range-end)):after{content:\"\";position:absolute;top:50%;right:0;width:50%;height:32px;transform:translateY(-50%);background:rgba(var(--primary),.12)!important;z-index:0}::ng-deep .p-datepicker-day-cell:has(.custom-date-wrapper.range-end):not(:has(.custom-date-wrapper.range-start)):after{content:\"\";position:absolute;top:50%;left:0;width:50%;height:32px;transform:translateY(-50%);background:rgba(var(--primary),.12)!important;z-index:0}::ng-deep .p-datepicker-day-cell:has(.custom-date-wrapper.range-middle):after{content:\"\";position:absolute;top:50%;left:0;width:100%;height:32px;transform:translateY(-50%);background:rgba(var(--primary),.12)!important;z-index:0}::ng-deep .p-datepicker-day-cell:has(.custom-date-wrapper.range-start.range-end):after{display:none}::ng-deep .custom-date-wrapper{width:100%;height:100%;display:flex;align-items:center;justify-content:center;position:relative;z-index:1}::ng-deep .custom-date-wrapper .date-content{z-index:2;position:relative;font-family:Inter!important;font-weight:500!important;font-size:12px!important;line-height:100%!important;letter-spacing:0px!important}::ng-deep .custom-date-wrapper.single-selected .date-content{background:var(--primary)!important;color:#fff!important;font-weight:500!important;border-radius:50%!important;width:32px;height:32px;display:flex;align-items:center;justify-content:center}::ng-deep .custom-date-wrapper.range-start .date-content{background:var(--primary)!important;color:#fff!important;font-weight:500!important;border-radius:50%!important;width:32px;height:32px;display:flex;align-items:center;justify-content:center}::ng-deep .custom-date-wrapper.range-end .date-content{background:var(--primary)!important;color:#fff!important;font-weight:500!important;border-radius:50%!important;width:32px;height:32px;display:flex;align-items:center;justify-content:center}::ng-deep .custom-date-wrapper.range-middle .date-content{color:var(--primary)!important;font-weight:500!important}::ng-deep .p-datepicker-year-selected{background:var(--primary)!important;color:#fff!important}::ng-deep .p-datepicker-year-selected:hover{background:rgba(var(--primary),.12)!important;color:var(--primary)!important}::ng-deep .p-datepicker-year:not(.p-disabled):not(.p-datepicker-year-selected):hover{background:rgba(var(--primary),.12)!important;color:var(--primary)!important}::ng-deep .p-datepicker-month-selected{background:var(--primary)!important;color:#fff!important}::ng-deep .p-datepicker-month-selected:hover{background:rgba(var(--primary),.12)!important;color:var(--primary)!important}::ng-deep .p-datepicker-month:not(.p-disabled):not(.p-datepicker-month-selected):hover{background:rgba(var(--primary),.12)!important;color:var(--primary)!important}::ng-deep .p-datepicker-today-button,::ng-deep .p-datepicker-clear-button{background:var(--primary)!important;color:#fff!important;border:none!important}::ng-deep .p-datepicker-today-button:not(:disabled):hover,::ng-deep .p-datepicker-clear-button:not(:disabled):hover{background:rgba(var(--primary),.12)!important;color:var(--primary)!important}.floating-datepicker{display:block;width:100%!important}.floating-datepicker .p-inputtext{height:25px!important;font-size:12px!important;padding:2px 4px!important;border:1px solid #BEBEBE!important;border-right:0!important;border-radius:5px 0 0 5px!important}.floating-datepicker .p-datepicker-dropdown{width:20px!important;background-color:#fff!important;border:1px solid #BEBEBE!important;border-left:0!important}.floating-datepicker .p-datepicker{width:100%!important}.floating-datepicker .p-inputwrapper{width:100%!important;display:flex!important;align-items:stretch;min-width:0;position:relative}.floating-datepicker .p-inputtext{height:25px!important;font-size:12px!important;padding:2px 22px 2px 4px!important;border:1px solid #BEBEBE!important;border-radius:5px!important;width:100%!important;min-width:0}.floating-datepicker .p-datepicker-input-icon-container{position:absolute!important;top:80%;transform:translate(-50%,-50%);display:flex!important;align-items:center;justify-content:center;cursor:pointer;pointer-events:auto!important;z-index:2;right:0}.floating-datepicker .p-datepicker-input-icon{display:flex!important;visibility:visible!important;opacity:1!important;width:14px;height:14px;color:#6b7280;cursor:pointer;align-items:center;justify-content:center}::ng-deep .custom-datepicker .p-inputtext{border-radius:var(--p-inputtext-border-radius);height:25px!important;font-size:12px!important;padding:2px 22px 2px 4px!important;border:1px solid #BEBEBE!important;width:100%!important;min-width:0}::ng-deep .custom-datepicker .p-datepicker-input-icon-container{position:absolute!important;top:80%;transform:translate(-50%,-50%);display:flex!important;align-items:center;justify-content:center;cursor:pointer;pointer-events:auto!important;z-index:2;right:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: i2.DatePicker, selector: "p-datePicker, p-datepicker, p-date-picker", inputs: ["iconDisplay", "styleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "readonlyInput", "shortYearCutoff", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "minDate", "maxDate", "disabledDates", "disabledDays", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "view", "defaultDate", "appendTo", "motionOptions"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
1969
2007
  }
1970
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: DatepickerComponent, decorators: [{
2008
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: DatepickerComponent, decorators: [{
1971
2009
  type: Component,
1972
2010
  args: [{ selector: 'app-datepicker', standalone: true, imports: [CommonModule, DatePickerModule, FormsModule], providers: [
1973
2011
  {
@@ -2048,10 +2086,10 @@ class ColumnValueFormatter {
2048
2086
  }
2049
2087
  return params.value;
2050
2088
  }
2051
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ColumnValueFormatter, deps: [{ token: i1$1.DatePipe }], target: i0.ɵɵFactoryTarget.Injectable }); }
2052
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ColumnValueFormatter }); }
2089
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: ColumnValueFormatter, deps: [{ token: i1$1.DatePipe }], target: i0.ɵɵFactoryTarget.Injectable }); }
2090
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: ColumnValueFormatter }); }
2053
2091
  }
2054
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ColumnValueFormatter, decorators: [{
2092
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: ColumnValueFormatter, decorators: [{
2055
2093
  type: Injectable
2056
2094
  }], ctorParameters: () => [{ type: i1$1.DatePipe }] });
2057
2095
 
@@ -2086,6 +2124,10 @@ class GridLibraryComponent {
2086
2124
  this.tooltipShowDelay = 500;
2087
2125
  this.tooltipHideDelay = 4000;
2088
2126
  this.rowModelType = 'clientSide';
2127
+ // Per-field cache of distinct values for fill-cell set filters. Populated
2128
+ // by the OData groupby fallback in _getFillFilterValues and cleared when
2129
+ // the underlying grid data is refreshed.
2130
+ this._fillFilterValuesCache = new Map();
2089
2131
  this._Design_Manager = 'Design Manager';
2090
2132
  this._Integration_Lead = 'Integration Lead';
2091
2133
  this._Tool_Owner = 'Tool Owner';
@@ -2385,6 +2427,9 @@ class GridLibraryComponent {
2385
2427
  // handles case-insensitive matching server-side via tolower().
2386
2428
  values: (params) => this._getFillFilterValues(res, params),
2387
2429
  refreshValuesOnOpen: true,
2430
+ // Open with nothing checked so a user picking one option triggers
2431
+ // a single backend request instead of "uncheck all + pick one".
2432
+ defaultToNothingSelected: true,
2388
2433
  buttons: ['reset'],
2389
2434
  // Pretty label for each checkbox; falls back to the value itself
2390
2435
  valueFormatter: (p) => {
@@ -2527,7 +2572,31 @@ class GridLibraryComponent {
2527
2572
  }
2528
2573
  const field = res?.field;
2529
2574
  if (this.enableServerSidePaging && this.odataProvider) {
2530
- this.odataProvider.getFilterValuesParams(field, (data) => params.success((data || []).filter(v => v !== null && v !== undefined && v !== '')), undefined);
2575
+ // Cache OData distinct-values per field so repeated filter-opens for
2576
+ // fill-cell columns don't re-hit the backend. Cache is invalidated on
2577
+ // grid data refresh (see _invalidateFillFilterCache).
2578
+ const cached = this._fillFilterValuesCache.get(field);
2579
+ if (cached) {
2580
+ params.success(cached);
2581
+ return;
2582
+ }
2583
+ try {
2584
+ this.odataProvider.getFilterValuesParams(field, (data) => {
2585
+ const cleaned = (data || []).filter(v => v !== null && v !== undefined && v !== '');
2586
+ // Only cache non-empty successful responses so a transient
2587
+ // failure doesn't permanently stick an empty list.
2588
+ if (cleaned.length > 0) {
2589
+ this._fillFilterValuesCache.set(field, cleaned);
2590
+ }
2591
+ // Never leave the set-filter spinning: always invoke success,
2592
+ // even with an empty list.
2593
+ params.success(cleaned);
2594
+ }, undefined);
2595
+ }
2596
+ catch (err) {
2597
+ console.error('[grid-library] getFilterValuesParams threw for field', field, err);
2598
+ params.success([]);
2599
+ }
2531
2600
  return;
2532
2601
  }
2533
2602
  const source = Array.isArray(this.rowData) ? this.rowData : [];
@@ -2582,28 +2651,86 @@ class GridLibraryComponent {
2582
2651
  return false;
2583
2652
  }
2584
2653
  setExternalFilters(options) {
2585
- if (options.includes('$filter=')) {
2586
- const filterMatch = options.match(/\$filter=([^&]*)/);
2587
- if (filterMatch) {
2588
- let filterValue = decodeURIComponent(filterMatch[1]);
2589
- filterValue = this.replaceDateFilters(filterValue);
2590
- options = options.replace(/\$filter=[^&]*/, `$filter=${encodeURIComponent(filterValue)}`);
2591
- }
2592
- }
2593
- var serverUrl = '';
2594
- if (this.serverDataUrl.indexOf('filter') >= 0 &&
2595
- options.indexOf('filter') >= 0) {
2596
- let slug = this.serverDataUrl.split('?$filter=');
2597
- if (slug && slug.length > 0) {
2598
- options = options + ' and ' + slug[1];
2599
- serverUrl = slug[0];
2600
- }
2601
- }
2602
- else if (this.serverDataUrl.indexOf('?') >= 0) {
2603
- serverUrl = this.serverDataUrl;
2604
- options = options.replace('?', '&');
2654
+ // Extract any caller-supplied $filter predicate from the configured
2655
+ // serverDataUrl so we can merge it correctly with whatever the provider
2656
+ // built. Without this, requests like `$apply=groupby((dacStatus))` get a
2657
+ // sibling `$filter=siteId eq 5` appended, which OData rejects because
2658
+ // after `groupby` the only remaining property is the grouped one.
2659
+ let serverUrl = this.serverDataUrl;
2660
+ let externalFilter = '';
2661
+ const filterIdx = serverUrl.indexOf('$filter=');
2662
+ if (filterIdx >= 0) {
2663
+ // Find the end of the $filter value (next & or end of string).
2664
+ const after = serverUrl.indexOf('&', filterIdx);
2665
+ externalFilter = serverUrl.substring(filterIdx + '$filter='.length, after === -1 ? serverUrl.length : after);
2666
+ // Strip the $filter clause (and its leading ? or &) from the base URL.
2667
+ const before = serverUrl.charAt(filterIdx - 1); // '?' or '&'
2668
+ const removeStart = filterIdx - 1;
2669
+ const removeEnd = after === -1 ? serverUrl.length : after;
2670
+ serverUrl =
2671
+ serverUrl.substring(0, removeStart) +
2672
+ (before === '?' && after !== -1 ? '?' : '') +
2673
+ serverUrl.substring(removeEnd + (before === '?' && after !== -1 ? 1 : 0));
2674
+ }
2675
+ // `options` always starts with '?' from the provider.
2676
+ // If we still need to attach to a URL that already has '?', flip it to '&'.
2677
+ if (serverUrl.indexOf('?') >= 0 && options.startsWith('?')) {
2678
+ options = '&' + options.substring(1);
2679
+ }
2680
+ if (!externalFilter) {
2681
+ return `${serverUrl}${options}`;
2682
+ }
2683
+ // Decode for matching; we'll re-emit the predicate as-is since OData
2684
+ // accepts both encoded and decoded forms within a query string.
2685
+ const decodedFilter = (() => {
2686
+ try {
2687
+ return decodeURIComponent(externalFilter);
2688
+ }
2689
+ catch {
2690
+ return externalFilter;
2691
+ }
2692
+ })();
2693
+ // Case 1: provider used $apply (e.g. groupby for set-filter values, or
2694
+ // any aggregation). The external predicate must run BEFORE the aggregation
2695
+ // as a filter() transformation, otherwise its columns no longer exist.
2696
+ const applyMatch = options.match(/([?&])\$apply=([^&]+)/);
2697
+ if (applyMatch) {
2698
+ const sep = applyMatch[1];
2699
+ const applyValue = applyMatch[2];
2700
+ const decodedApply = (() => {
2701
+ try {
2702
+ return decodeURIComponent(applyValue);
2703
+ }
2704
+ catch {
2705
+ return applyValue;
2706
+ }
2707
+ })();
2708
+ const merged = `filter(${decodedFilter})/${decodedApply}`;
2709
+ options = options.replace(`${sep}$apply=${applyValue}`, `${sep}$apply=${encodeURIComponent(merged)}`);
2710
+ return `${serverUrl}${options}`;
2711
+ }
2712
+ // Case 2: provider already has its own $filter. AND them together.
2713
+ const filterMatch = options.match(/([?&])\$filter=([^&]+)/);
2714
+ if (filterMatch) {
2715
+ const sep = filterMatch[1];
2716
+ const existing = filterMatch[2];
2717
+ const decodedExisting = (() => {
2718
+ try {
2719
+ return decodeURIComponent(existing);
2720
+ }
2721
+ catch {
2722
+ return existing;
2723
+ }
2724
+ })();
2725
+ const merged = `(${decodedExisting}) and (${decodedFilter})`;
2726
+ options = options.replace(`${sep}$filter=${existing}`, `${sep}$filter=${encodeURIComponent(merged)}`);
2727
+ return `${serverUrl}${options}`;
2605
2728
  }
2606
- return `${serverUrl}${options}`;
2729
+ // Case 3: no provider filter and no $apply — just add the external $filter.
2730
+ const joiner = options.length === 0
2731
+ ? (serverUrl.indexOf('?') >= 0 ? '&' : '?')
2732
+ : '&';
2733
+ return `${serverUrl}${options}${joiner}$filter=${encodeURIComponent(decodedFilter)}`;
2607
2734
  }
2608
2735
  onGridReady(params) {
2609
2736
  this.gridAPI = params.api;
@@ -2647,6 +2774,7 @@ class GridLibraryComponent {
2647
2774
  if (!hasRetried) {
2648
2775
  hasRetried = true;
2649
2776
  setTimeout(() => {
2777
+ this._fillFilterValuesCache.clear();
2650
2778
  params.api.refreshServerSide({ purge: true });
2651
2779
  }, 2000);
2652
2780
  }
@@ -2663,6 +2791,7 @@ class GridLibraryComponent {
2663
2791
  if (!hasRetried) {
2664
2792
  hasRetried = true;
2665
2793
  setTimeout(() => {
2794
+ this._fillFilterValuesCache.clear();
2666
2795
  this.gridAPI.refreshServerSide({ purge: true });
2667
2796
  }, 2000);
2668
2797
  }
@@ -2758,6 +2887,7 @@ class GridLibraryComponent {
2758
2887
  this.gridAPI.showLoadingOverlay();
2759
2888
  this.gridAPI.resetColumnState();
2760
2889
  this.gridAPI.setFilterModel(null);
2890
+ this._fillFilterValuesCache.clear();
2761
2891
  this.gridColumnState = JSON.parse(overrideStateData);
2762
2892
  this.setGridState();
2763
2893
  setTimeout(() => { this.gridAPI.hideOverlay(); }, 500);
@@ -3419,8 +3549,8 @@ class GridLibraryComponent {
3419
3549
  return after;
3420
3550
  });
3421
3551
  }
3422
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: GridLibraryComponent, deps: [{ token: GridLibraryService }, { token: ColumnValueFormatter }, { token: TokenSharingService }, { token: i4$1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
3423
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: GridLibraryComponent, isStandalone: false, selector: "lib-basesite-shared-grid-lib", inputs: { overrideColumnDefs: "overrideColumnDefs", columnDefs: "columnDefs", rowData: "rowData", paginationAutoPageSize: "paginationAutoPageSize", rowSelection: "rowSelection", gridId: "gridId", loggedInUser: "loggedInUser", siteId: "siteId", enableServerSidePaging: "enableServerSidePaging", serverDataUrl: "serverDataUrl", environment: "environment", cacheBlockSize: "cacheBlockSize", rowMultiSelectWithClick: "rowMultiSelectWithClick", floatingFilter: "floatingFilter", token: "token", userRoles: "userRoles", rowHeight: "rowHeight", noRowsOverlayComponent: "noRowsOverlayComponent" }, outputs: { btnClickHandler: "btnClickHandler", firstDataRendered: "firstDataRendered", filterChanged: "filterChanged", selectionChanged: "selectionChanged", totalRowCount: "totalRowCount", gridReady: "gridReady" }, host: { listeners: { "window:resize": "onResize()" } }, usesOnChanges: true, ngImport: i0, template: `
3552
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: GridLibraryComponent, deps: [{ token: GridLibraryService }, { token: ColumnValueFormatter }, { token: TokenSharingService }, { token: i4$1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
3553
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.7", type: GridLibraryComponent, isStandalone: false, selector: "lib-basesite-shared-grid-lib", inputs: { overrideColumnDefs: "overrideColumnDefs", columnDefs: "columnDefs", rowData: "rowData", paginationAutoPageSize: "paginationAutoPageSize", rowSelection: "rowSelection", gridId: "gridId", loggedInUser: "loggedInUser", siteId: "siteId", enableServerSidePaging: "enableServerSidePaging", serverDataUrl: "serverDataUrl", environment: "environment", cacheBlockSize: "cacheBlockSize", rowMultiSelectWithClick: "rowMultiSelectWithClick", floatingFilter: "floatingFilter", token: "token", userRoles: "userRoles", rowHeight: "rowHeight", noRowsOverlayComponent: "noRowsOverlayComponent" }, outputs: { btnClickHandler: "btnClickHandler", firstDataRendered: "firstDataRendered", filterChanged: "filterChanged", selectionChanged: "selectionChanged", totalRowCount: "totalRowCount", gridReady: "gridReady" }, host: { listeners: { "window:resize": "onResize()" } }, usesOnChanges: true, ngImport: i0, template: `
3424
3554
  <ag-grid-angular
3425
3555
  #agGrid
3426
3556
  style="width: 100%;height:98.2vh"
@@ -3504,7 +3634,7 @@ class GridLibraryComponent {
3504
3634
  </ag-grid-angular>
3505
3635
  `, isInline: true, dependencies: [{ kind: "component", type: i5.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "components", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "excludeHiddenColumnsFromQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "advancedFilterModel", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "suppressChartToolPanelsButton", "chartToolPanelsDef", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDelay", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "suppressGroupMaintainValueType", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideOnlyRefreshFilteredGroups", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "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", "functionsPassive", "enableGroupEdit", "initialState", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "rangeDeleteStart", "rangeDeleteEnd", "filterOpened", "filterChanged", "filterModified", "advancedFilterBuilderVisibleChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "gridPreDestroyed", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pinnedRowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
3506
3636
  }
3507
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: GridLibraryComponent, decorators: [{
3637
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: GridLibraryComponent, decorators: [{
3508
3638
  type: Component,
3509
3639
  args: [{ selector: 'lib-basesite-shared-grid-lib', template: `
3510
3640
  <ag-grid-angular
@@ -3655,8 +3785,8 @@ class DateHeaderComponent {
3655
3785
  const newSort = currentSort === this.sortOrderAsc ? this.sortOrderDesc : currentSort === this.sortOrderDesc ? null : this.sortOrderAsc;
3656
3786
  this.params.setSort(newSort);
3657
3787
  }
3658
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: DateHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3659
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: DateHeaderComponent, isStandalone: false, selector: "app-date-header", ngImport: i0, template: `
3788
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: DateHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3789
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.7", type: DateHeaderComponent, isStandalone: false, selector: "app-date-header", ngImport: i0, template: `
3660
3790
  <span>
3661
3791
  {{ params.displayName }}
3662
3792
  <i class="fa-solid fa-calendar-days" style="margin-left: 4px;"></i>
@@ -3665,7 +3795,7 @@ class DateHeaderComponent {
3665
3795
  </span>
3666
3796
  `, isInline: true }); }
3667
3797
  }
3668
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: DateHeaderComponent, decorators: [{
3798
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: DateHeaderComponent, decorators: [{
3669
3799
  type: Component,
3670
3800
  args: [{
3671
3801
  selector: 'app-date-header',
@@ -3685,14 +3815,14 @@ class HeaderComponent {
3685
3815
  agInit(params) {
3686
3816
  this.params = params;
3687
3817
  }
3688
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: HeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3689
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: HeaderComponent, isStandalone: false, selector: "app-date-header", ngImport: i0, template: `
3818
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: HeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3819
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.7", type: HeaderComponent, isStandalone: false, selector: "app-date-header", ngImport: i0, template: `
3690
3820
  <span>
3691
3821
  {{ params.displayName }}
3692
3822
  </span>
3693
3823
  `, isInline: true }); }
3694
3824
  }
3695
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: HeaderComponent, decorators: [{
3825
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: HeaderComponent, decorators: [{
3696
3826
  type: Component,
3697
3827
  args: [{
3698
3828
  selector: 'app-date-header',
@@ -3705,8 +3835,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
3705
3835
  }] });
3706
3836
 
3707
3837
  class GridLibraryModule {
3708
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: GridLibraryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3709
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: GridLibraryModule, declarations: [GridLibraryComponent,
3838
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: GridLibraryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3839
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.7", ngImport: i0, type: GridLibraryModule, declarations: [GridLibraryComponent,
3710
3840
  ButtonRendererComponent,
3711
3841
  CustomTooltip,
3712
3842
  DropdownRenderer,
@@ -3718,12 +3848,12 @@ class GridLibraryModule {
3718
3848
  CommonModule,
3719
3849
  DatepickerComponent], exports: [GridLibraryComponent,
3720
3850
  DatePickerModule] }); }
3721
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: GridLibraryModule, providers: [DatePipe, GridLibraryService, ColumnValueFormatter, provideHttpClient(withInterceptorsFromDi())], imports: [AgGridModule,
3851
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: GridLibraryModule, providers: [DatePipe, GridLibraryService, ColumnValueFormatter, provideHttpClient(withInterceptorsFromDi())], imports: [AgGridModule,
3722
3852
  DatePickerModule,
3723
3853
  CommonModule,
3724
3854
  DatepickerComponent, DatePickerModule] }); }
3725
3855
  }
3726
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: GridLibraryModule, decorators: [{
3856
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.7", ngImport: i0, type: GridLibraryModule, decorators: [{
3727
3857
  type: NgModule,
3728
3858
  args: [{ declarations: [
3729
3859
  GridLibraryComponent,