igniteui-angular 22.1.0-beta.6 → 22.1.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/fesm2022/igniteui-angular-accordion.mjs +4 -4
  2. package/fesm2022/igniteui-angular-accordion.mjs.map +1 -1
  3. package/fesm2022/igniteui-angular-action-strip.mjs +0 -1
  4. package/fesm2022/igniteui-angular-action-strip.mjs.map +1 -1
  5. package/fesm2022/igniteui-angular-avatar.mjs.map +1 -1
  6. package/fesm2022/igniteui-angular-badge.mjs +0 -1
  7. package/fesm2022/igniteui-angular-badge.mjs.map +1 -1
  8. package/fesm2022/igniteui-angular-banner.mjs +2 -2
  9. package/fesm2022/igniteui-angular-banner.mjs.map +1 -1
  10. package/fesm2022/igniteui-angular-button-group.mjs.map +1 -1
  11. package/fesm2022/igniteui-angular-calendar.mjs +4 -5
  12. package/fesm2022/igniteui-angular-calendar.mjs.map +1 -1
  13. package/fesm2022/igniteui-angular-card.mjs.map +1 -1
  14. package/fesm2022/igniteui-angular-carousel.mjs.map +1 -1
  15. package/fesm2022/igniteui-angular-chips.mjs.map +1 -1
  16. package/fesm2022/igniteui-angular-combo.mjs +17 -6
  17. package/fesm2022/igniteui-angular-combo.mjs.map +1 -1
  18. package/fesm2022/igniteui-angular-core.mjs +16 -337
  19. package/fesm2022/igniteui-angular-core.mjs.map +1 -1
  20. package/fesm2022/igniteui-angular-date-picker.mjs +12 -14
  21. package/fesm2022/igniteui-angular-date-picker.mjs.map +1 -1
  22. package/fesm2022/igniteui-angular-dialog.mjs +1 -1
  23. package/fesm2022/igniteui-angular-dialog.mjs.map +1 -1
  24. package/fesm2022/igniteui-angular-directives.mjs +45 -47
  25. package/fesm2022/igniteui-angular-directives.mjs.map +1 -1
  26. package/fesm2022/igniteui-angular-drop-down.mjs +3 -2
  27. package/fesm2022/igniteui-angular-drop-down.mjs.map +1 -1
  28. package/fesm2022/igniteui-angular-expansion-panel.mjs +23 -12
  29. package/fesm2022/igniteui-angular-expansion-panel.mjs.map +1 -1
  30. package/fesm2022/igniteui-angular-grids-core.mjs +484 -202
  31. package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
  32. package/fesm2022/igniteui-angular-grids-grid.mjs +115 -94
  33. package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
  34. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +15 -19
  35. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs.map +1 -1
  36. package/fesm2022/igniteui-angular-grids-lite.mjs.map +1 -1
  37. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs +75 -153
  38. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs.map +1 -1
  39. package/fesm2022/igniteui-angular-grids-tree-grid.mjs +28 -35
  40. package/fesm2022/igniteui-angular-grids-tree-grid.mjs.map +1 -1
  41. package/fesm2022/igniteui-angular-icon.mjs.map +1 -1
  42. package/fesm2022/igniteui-angular-input-group.mjs +1 -1
  43. package/fesm2022/igniteui-angular-input-group.mjs.map +1 -1
  44. package/fesm2022/igniteui-angular-list.mjs.map +1 -1
  45. package/fesm2022/igniteui-angular-navbar.mjs.map +1 -1
  46. package/fesm2022/igniteui-angular-navigation-drawer.mjs +2 -3
  47. package/fesm2022/igniteui-angular-navigation-drawer.mjs.map +1 -1
  48. package/fesm2022/igniteui-angular-paginator.mjs.map +1 -1
  49. package/fesm2022/igniteui-angular-progressbar.mjs +5 -2
  50. package/fesm2022/igniteui-angular-progressbar.mjs.map +1 -1
  51. package/fesm2022/igniteui-angular-query-builder.mjs +18 -19
  52. package/fesm2022/igniteui-angular-query-builder.mjs.map +1 -1
  53. package/fesm2022/igniteui-angular-radio.mjs +1 -1
  54. package/fesm2022/igniteui-angular-radio.mjs.map +1 -1
  55. package/fesm2022/igniteui-angular-select.mjs.map +1 -1
  56. package/fesm2022/igniteui-angular-simple-combo.mjs +10 -7
  57. package/fesm2022/igniteui-angular-simple-combo.mjs.map +1 -1
  58. package/fesm2022/igniteui-angular-slider.mjs +3 -3
  59. package/fesm2022/igniteui-angular-slider.mjs.map +1 -1
  60. package/fesm2022/igniteui-angular-splitter.mjs +1 -1
  61. package/fesm2022/igniteui-angular-splitter.mjs.map +1 -1
  62. package/fesm2022/igniteui-angular-stepper.mjs +1 -1
  63. package/fesm2022/igniteui-angular-stepper.mjs.map +1 -1
  64. package/fesm2022/igniteui-angular-tabs.mjs.map +1 -1
  65. package/fesm2022/igniteui-angular-time-picker.mjs +3 -6
  66. package/fesm2022/igniteui-angular-time-picker.mjs.map +1 -1
  67. package/fesm2022/igniteui-angular-tree.mjs +8 -10
  68. package/fesm2022/igniteui-angular-tree.mjs.map +1 -1
  69. package/migrations/migration-collection.json +0 -7
  70. package/package.json +1 -1
  71. package/types/igniteui-angular-avatar.d.ts +1 -1
  72. package/types/igniteui-angular-banner.d.ts +3 -3
  73. package/types/igniteui-angular-calendar.d.ts +9 -9
  74. package/types/igniteui-angular-card.d.ts +1 -1
  75. package/types/igniteui-angular-carousel.d.ts +9 -9
  76. package/types/igniteui-angular-chat.d.ts +1 -1
  77. package/types/igniteui-angular-chips.d.ts +5 -5
  78. package/types/igniteui-angular-combo.d.ts +17 -13
  79. package/types/igniteui-angular-core.d.ts +200 -495
  80. package/types/igniteui-angular-date-picker.d.ts +3 -3
  81. package/types/igniteui-angular-dialog.d.ts +4 -4
  82. package/types/igniteui-angular-directives.d.ts +60 -59
  83. package/types/igniteui-angular-drop-down.d.ts +16 -16
  84. package/types/igniteui-angular-expansion-panel.d.ts +6 -6
  85. package/types/igniteui-angular-grids-core.d.ts +1053 -791
  86. package/types/igniteui-angular-grids-grid.d.ts +104 -267
  87. package/types/igniteui-angular-grids-hierarchical-grid.d.ts +68 -547
  88. package/types/igniteui-angular-grids-lite.d.ts +7 -7
  89. package/types/igniteui-angular-grids-pivot-grid.d.ts +94 -129
  90. package/types/igniteui-angular-grids-tree-grid.d.ts +5 -51
  91. package/types/igniteui-angular-icon.d.ts +2 -2
  92. package/types/igniteui-angular-input-group.d.ts +4 -4
  93. package/types/igniteui-angular-list.d.ts +4 -4
  94. package/types/igniteui-angular-navigation-drawer.d.ts +3 -3
  95. package/types/igniteui-angular-progressbar.d.ts +1 -0
  96. package/types/igniteui-angular-query-builder.d.ts +9 -9
  97. package/types/igniteui-angular-radio.d.ts +1 -1
  98. package/types/igniteui-angular-select.d.ts +5 -5
  99. package/types/igniteui-angular-simple-combo.d.ts +2 -2
  100. package/types/igniteui-angular-slider.d.ts +4 -4
  101. package/types/igniteui-angular-splitter.d.ts +3 -3
  102. package/types/igniteui-angular-time-picker.d.ts +8 -8
  103. package/types/igniteui-angular-tree.d.ts +8 -8
  104. package/migrations/update-22_1_0_import-migration/index.d.ts +0 -2
  105. package/migrations/update-22_1_0_import-migration/index.js +0 -228
  106. package/migrations/update-22_1_0_import-migration/index.spec.d.ts +0 -1
  107. package/migrations/update-22_1_0_import-migration/index.spec.js +0 -188
@@ -9,8 +9,8 @@ import { IgxButtonDirective, IgxRippleDirective, IgxGridForOfDirective, IgxDragD
9
9
  import { __decorate } from 'tslib';
10
10
  import { Subject, fromEvent, interval, animationFrameScheduler } from 'rxjs';
11
11
  import { isEqual as isEqual$1 } from 'lodash-es';
12
- import { IgxNumberSummaryOperand, IgxDateSummaryOperand, IgxTimeSummaryOperand, IgxSorting, DataUtil, FilteringExpressionsTree, FilteringLogic, GridColumnDataType, PlatformUtil, isDate, isEqual, DateTimeUtil, copyDescriptors, trackByIdentity, mergeObjects, TransactionType, resolveNestedPath, columnFieldPath, DefaultSortingStrategy, isConstructor, ɵSize as _Size, ColumnPinningPosition, ExpressionsTreeUtil, IgxSummaryOperand, IgxStringFilteringOperand, IgxDateTimeFilteringOperand, IgxTimeFilteringOperand, IgxDateFilteringOperand, IgxNumberFilteringOperand, IgxBooleanFilteringOperand, flatten, onResourceChangeHandle, GridResourceStringsEN, getCurrentResourceStrings, QueryBuilderResourceStringsEN, isTree, AbsoluteScrollStrategy, ConnectedPositioningStrategy, IgxOverlayOutletDirective, IgxPercentFormatterPipe, I18N_FORMATTER, IgxPickerToggleComponent, IgxPickerClearComponent, IgxOverlayService, VerticalAlignment, AutoPositionStrategy, HorizontalAlignment, cloneHierarchicalArray, SortingDirection, showMessage, IgxActionStripActionsToken, GridSummaryCalculationMode, cloneArray, cloneValue, recreateTreeFromFields, FilterUtil, TreeGridFilteringStrategy, getHierarchy, isHierarchyMatch, FilteringStrategy, NAVIGATION_KEYS, Util, IgxNumberFormatterPipe, IgxCurrencyFormatterPipe, IgxDateFormatterPipe, reverseMapper } from 'igniteui-angular/core';
13
- import { first, takeUntil, map, debounceTime, filter, switchMap, throttle, throttleTime, takeWhile } from 'rxjs/operators';
12
+ import { IgxSorting, DataUtil, FilteringExpressionsTree, FilteringLogic, GridColumnDataType, PlatformUtil, isDate, isEqual, DateTimeUtil, copyDescriptors, trackByIdentity, mergeObjects, TransactionType, resolveNestedPath, columnFieldPath, DefaultSortingStrategy, isConstructor, ɵSize as _Size, ColumnPinningPosition, ExpressionsTreeUtil, IgxStringFilteringOperand, IgxDateTimeFilteringOperand, IgxTimeFilteringOperand, IgxDateFilteringOperand, IgxNumberFilteringOperand, IgxBooleanFilteringOperand, flatten, onResourceChangeHandle, GridResourceStringsEN, getCurrentResourceStrings, QueryBuilderResourceStringsEN, isTree, AbsoluteScrollStrategy, ConnectedPositioningStrategy, IgxOverlayOutletDirective, IgxPercentFormatterPipe, I18N_FORMATTER, IgxPickerToggleComponent, IgxPickerClearComponent, IgxOverlayService, VerticalAlignment, AutoPositionStrategy, HorizontalAlignment, cloneHierarchicalArray, SortingDirection, showMessage, IgxActionStripActionsToken, GridSummaryCalculationMode, cloneArray, cloneValue, recreateTreeFromFields, FilterUtil, TreeGridFilteringStrategy, getHierarchy, isHierarchyMatch, FilteringStrategy, NAVIGATION_KEYS, Util, IgxNumberFormatterPipe, IgxCurrencyFormatterPipe, IgxDateFormatterPipe, reverseMapper } from 'igniteui-angular/core';
13
+ import { first as first$1, takeUntil, map, debounceTime, filter, switchMap, throttle, throttleTime, takeWhile } from 'rxjs/operators';
14
14
  import { NgClass, NgTemplateOutlet, NgStyle, AsyncPipe } from '@angular/common';
15
15
  import { IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent } from 'igniteui-angular/query-builder';
16
16
  import { IgxIconComponent, IgxIconService } from 'igniteui-angular/icon';
@@ -533,7 +533,7 @@ class IgxColumnHidingDirective extends IgxColumnActionsBaseDirective {
533
533
  /**
534
534
  * @hidden @internal
535
535
  */
536
- this.actionEnabledColumnsFilter = (c) => !c.disableHiding;
536
+ this.actionEnabledColumnsFilter = c => !c.disableHiding;
537
537
  const columnActions = this.columnActions;
538
538
  columnActions.actionsDirective = this;
539
539
  }
@@ -810,7 +810,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
810
810
  * @hidden
811
811
  */
812
812
  function WatchChanges() {
813
- return ((_target, key, propDesc) => {
813
+ return (_target, key, propDesc) => {
814
814
  const privateKey = '_' + key.toString();
815
815
  propDesc = propDesc || {
816
816
  configurable: true,
@@ -837,10 +837,10 @@ function WatchChanges() {
837
837
  }
838
838
  };
839
839
  return propDesc;
840
- });
840
+ };
841
841
  }
842
842
  function WatchColumnChanges() {
843
- return ((_target, key, propDesc) => {
843
+ return (_target, key, propDesc) => {
844
844
  const privateKey = '_' + key.toString();
845
845
  propDesc = propDesc || {
846
846
  configurable: true,
@@ -862,7 +862,7 @@ function WatchColumnChanges() {
862
862
  }
863
863
  };
864
864
  return propDesc;
865
- });
865
+ };
866
866
  }
867
867
  function notifyChanges(repaint = false) {
868
868
  return (_, key, propDesc) => {
@@ -896,6 +896,305 @@ function notifyChanges(repaint = false) {
896
896
  };
897
897
  }
898
898
 
899
+ const clear = (el) => el === 0 || Boolean(el);
900
+ const first = (arr) => arr[0];
901
+ const last = (arr) => arr[arr.length - 1];
902
+ /* blazorCSSuppress */
903
+ class IgxSummaryOperand {
904
+ /**
905
+ * Counts all the records in the data source.
906
+ * If filtering is applied, counts only the filtered records.
907
+ * ```typescript
908
+ * IgxSummaryOperand.count(dataSource);
909
+ * ```
910
+ *
911
+ * @memberof IgxSummaryOperand
912
+ */
913
+ static count(data) {
914
+ return data.length;
915
+ }
916
+ /**
917
+ * Executes the static `count` method and returns summary result[]`.
918
+ * ```typescript
919
+ * interface IgxSummaryResult {
920
+ * key: string;
921
+ * label: string;
922
+ * summaryResult: any;
923
+ * }
924
+ * ```
925
+ * Can be overridden in the inherited classes to provide customization for the `summary`.
926
+ * ```typescript
927
+ * class CustomSummary extends IgxSummaryOperand {
928
+ * constructor() {
929
+ * super();
930
+ * }
931
+ * public operate(data: any[], allData: any[], fieldName: string, groupRecord: IGroupByRecord): IgxSummaryResult[] {
932
+ * const result = [];
933
+ * result.push({
934
+ * key: "test",
935
+ * label: "Test",
936
+ * summaryResult: IgxSummaryOperand.count(data)
937
+ * });
938
+ * return result;
939
+ * }
940
+ * }
941
+ * this.grid.getColumnByName('ColumnName').summaries = CustomSummary;
942
+ * ```
943
+ *
944
+ * @memberof IgxSummaryOperand
945
+ */
946
+ operate(data = [], _allData = [], _fieldName, _groupRecord) {
947
+ return [{
948
+ key: 'count',
949
+ label: 'Count',
950
+ defaultFormatting: false,
951
+ summaryResult: IgxSummaryOperand.count(data)
952
+ }];
953
+ }
954
+ }
955
+ /* blazorCSSuppress */
956
+ // @dynamic
957
+ class IgxNumberSummaryOperand extends IgxSummaryOperand {
958
+ /**
959
+ * Returns the minimum numeric value in the provided data records.
960
+ * If filtering is applied, returns the minimum value in the filtered data records.
961
+ * ```typescript
962
+ * IgxNumberSummaryOperand.min(data);
963
+ * ```
964
+ *
965
+ * @memberof IgxNumberSummaryOperand
966
+ */
967
+ static min(data) {
968
+ return data.length && data.filter(clear).length ? data.filter(clear).reduce((a, b) => Math.min(a, b)) : 0;
969
+ }
970
+ /**
971
+ * Returns the maximum numeric value in the provided data records.
972
+ * If filtering is applied, returns the maximum value in the filtered data records.
973
+ * ```typescript
974
+ * IgxNumberSummaryOperand.max(data);
975
+ * ```
976
+ *
977
+ * @memberof IgxNumberSummaryOperand
978
+ */
979
+ static max(data) {
980
+ return data.length && data.filter(clear).length ? data.filter(clear).reduce((a, b) => Math.max(a, b)) : 0;
981
+ }
982
+ /**
983
+ * Returns the sum of the numeric values in the provided data records.
984
+ * If filtering is applied, returns the sum of the numeric values in the data records.
985
+ * ```typescript
986
+ * IgxNumberSummaryOperand.sum(data);
987
+ * ```
988
+ *
989
+ * @memberof IgxNumberSummaryOperand
990
+ */
991
+ static sum(data) {
992
+ return data.length && data.filter(clear).length ? data.filter(clear).reduce((a, b) => +a + +b) : 0;
993
+ }
994
+ /**
995
+ * Returns the average numeric value in the data provided data records.
996
+ * If filtering is applied, returns the average numeric value in the filtered data records.
997
+ * ```typescript
998
+ * IgxSummaryOperand.average(data);
999
+ * ```
1000
+ *
1001
+ * @memberof IgxNumberSummaryOperand
1002
+ */
1003
+ static average(data) {
1004
+ return data.length && data.filter(clear).length ? this.sum(data) / this.count(data) : 0;
1005
+ }
1006
+ /**
1007
+ * Executes the static methods and returns summary result[]`.
1008
+ * ```typescript
1009
+ * interface IgxSummaryResult {
1010
+ * key: string;
1011
+ * label: string;
1012
+ * summaryResult: any;
1013
+ * }
1014
+ * ```
1015
+ * Can be overridden in the inherited classes to provide customization for the `summary`.
1016
+ * ```typescript
1017
+ * class CustomNumberSummary extends IgxNumberSummaryOperand {
1018
+ * constructor() {
1019
+ * super();
1020
+ * }
1021
+ * public operate(data: any[], allData: any[], fieldName: string, groupRecord: IGroupByRecord): IgxSummaryResult[] {
1022
+ * const result = super.operate(data, allData, fieldName, groupRecord);
1023
+ * result.push({
1024
+ * key: "avg",
1025
+ * label: "Avg",
1026
+ * summaryResult: IgxNumberSummaryOperand.average(data)
1027
+ * });
1028
+ * result.push({
1029
+ * key: 'mdn',
1030
+ * label: 'Median',
1031
+ * summaryResult: this.findMedian(data)
1032
+ * });
1033
+ * return result;
1034
+ * }
1035
+ * }
1036
+ * this.grid.getColumnByName('ColumnName').summaries = CustomNumberSummary;
1037
+ * ```
1038
+ *
1039
+ * @memberof IgxNumberSummaryOperand
1040
+ */
1041
+ operate(data = [], allData = [], fieldName, groupRecord) {
1042
+ const result = super.operate(data, allData, fieldName, groupRecord);
1043
+ result.push({
1044
+ key: 'min',
1045
+ label: 'Min',
1046
+ defaultFormatting: true,
1047
+ summaryResult: IgxNumberSummaryOperand.min(data)
1048
+ });
1049
+ result.push({
1050
+ key: 'max',
1051
+ label: 'Max',
1052
+ defaultFormatting: true,
1053
+ summaryResult: IgxNumberSummaryOperand.max(data)
1054
+ });
1055
+ result.push({
1056
+ key: 'sum',
1057
+ label: 'Sum',
1058
+ defaultFormatting: true,
1059
+ summaryResult: IgxNumberSummaryOperand.sum(data)
1060
+ });
1061
+ result.push({
1062
+ key: 'average',
1063
+ label: 'Avg',
1064
+ defaultFormatting: true,
1065
+ summaryResult: IgxNumberSummaryOperand.average(data)
1066
+ });
1067
+ return result;
1068
+ }
1069
+ }
1070
+ /* blazorCSSuppress */
1071
+ // @dynamic
1072
+ class IgxDateSummaryOperand extends IgxSummaryOperand {
1073
+ /**
1074
+ * Returns the latest date value in the data records.
1075
+ * If filtering is applied, returns the latest date value in the filtered data records.
1076
+ * ```typescript
1077
+ * IgxDateSummaryOperand.latest(data);
1078
+ * ```
1079
+ *
1080
+ * @memberof IgxDateSummaryOperand
1081
+ */
1082
+ static latest(data) {
1083
+ return data.length && data.filter(clear).length ?
1084
+ first(data.filter(clear).sort((a, b) => new Date(b).valueOf() - new Date(a).valueOf())) : undefined;
1085
+ }
1086
+ /**
1087
+ * Returns the earliest date value in the data records.
1088
+ * If filtering is applied, returns the latest date value in the filtered data records.
1089
+ * ```typescript
1090
+ * IgxDateSummaryOperand.earliest(data);
1091
+ * ```
1092
+ *
1093
+ * @memberof IgxDateSummaryOperand
1094
+ */
1095
+ static earliest(data) {
1096
+ return data.length && data.filter(clear).length ?
1097
+ last(data.filter(clear).sort((a, b) => new Date(b).valueOf() - new Date(a).valueOf())) : undefined;
1098
+ }
1099
+ /**
1100
+ * Executes the static methods and returns summary result[]`.
1101
+ * ```typescript
1102
+ * interface IgxSummaryResult {
1103
+ * key: string;
1104
+ * label: string;
1105
+ * summaryResult: any;
1106
+ * }
1107
+ * ```
1108
+ * Can be overridden in the inherited classes to provide customization for the `summary`.
1109
+ * ```typescript
1110
+ * class CustomDateSummary extends IgxDateSummaryOperand {
1111
+ * constructor() {
1112
+ * super();
1113
+ * }
1114
+ * public operate(data: any[], allData: any[], fieldName: string, groupRecord: IGroupByRecord): IgxSummaryResult[] {
1115
+ * const result = super.operate(data, allData, fieldName, groupRecord);
1116
+ * result.push({
1117
+ * key: "deadline",
1118
+ * label: "Deadline Date",
1119
+ * summaryResult: this.calculateDeadline(data);
1120
+ * });
1121
+ * return result;
1122
+ * }
1123
+ * }
1124
+ * this.grid.getColumnByName('ColumnName').summaries = CustomDateSummary;
1125
+ * ```
1126
+ *
1127
+ * @memberof IgxDateSummaryOperand
1128
+ */
1129
+ operate(data = [], allData = [], fieldName, groupRecord) {
1130
+ const result = super.operate(data, allData, fieldName, groupRecord);
1131
+ result.push({
1132
+ key: 'earliest',
1133
+ label: 'Earliest',
1134
+ defaultFormatting: true,
1135
+ summaryResult: IgxDateSummaryOperand.earliest(data)
1136
+ });
1137
+ result.push({
1138
+ key: 'latest',
1139
+ label: 'Latest',
1140
+ defaultFormatting: true,
1141
+ summaryResult: IgxDateSummaryOperand.latest(data)
1142
+ });
1143
+ return result;
1144
+ }
1145
+ }
1146
+ /* blazorCSSuppress */
1147
+ // @dynamic
1148
+ class IgxTimeSummaryOperand extends IgxSummaryOperand {
1149
+ /**
1150
+ * Returns the latest time value in the data records. Compare only the time part of the date.
1151
+ * If filtering is applied, returns the latest time value in the filtered data records.
1152
+ * ```typescript
1153
+ * IgxTimeSummaryOperand.latestTime(data);
1154
+ * ```
1155
+ *
1156
+ * @memberof IgxTimeSummaryOperand
1157
+ */
1158
+ static latestTime(data) {
1159
+ return data.length && data.filter(clear).length ?
1160
+ first(data.filter(clear).map(v => new Date(v)).sort((a, b) => new Date().setHours(b.getHours(), b.getMinutes(), b.getSeconds()) -
1161
+ new Date().setHours(a.getHours(), a.getMinutes(), a.getSeconds()))) : undefined;
1162
+ }
1163
+ /**
1164
+ * Returns the earliest time value in the data records. Compare only the time part of the date.
1165
+ * If filtering is applied, returns the earliest time value in the filtered data records.
1166
+ * ```typescript
1167
+ * IgxTimeSummaryOperand.earliestTime(data);
1168
+ * ```
1169
+ *
1170
+ * @memberof IgxTimeSummaryOperand
1171
+ */
1172
+ static earliestTime(data) {
1173
+ return data.length && data.filter(clear).length ?
1174
+ last(data.filter(clear).map(v => new Date(v)).sort((a, b) => new Date().setHours(b.getHours(), b.getMinutes(), b.getSeconds()) -
1175
+ new Date().setHours(a.getHours(), a.getMinutes(), a.getSeconds()))) : undefined;
1176
+ }
1177
+ /**
1178
+ * @memberof IgxTimeSummaryOperand
1179
+ */
1180
+ operate(data = [], allData = [], fieldName, groupRecord) {
1181
+ const result = super.operate(data, allData, fieldName, groupRecord);
1182
+ result.push({
1183
+ key: 'earliest',
1184
+ label: 'Earliest',
1185
+ defaultFormatting: true,
1186
+ summaryResult: IgxTimeSummaryOperand.earliestTime(data)
1187
+ });
1188
+ result.push({
1189
+ key: 'latest',
1190
+ label: 'Latest',
1191
+ defaultFormatting: true,
1192
+ summaryResult: IgxTimeSummaryOperand.latestTime(data)
1193
+ });
1194
+ return result;
1195
+ }
1196
+ }
1197
+
899
1198
  class IgxPivotAggregate {
900
1199
  /**
901
1200
  * Gets array with default aggregator function for base aggregation.
@@ -1368,7 +1667,7 @@ class PivotUtil {
1368
1667
  return vals;
1369
1668
  }
1370
1669
  static flatten(arr, lvl = 0) {
1371
- const newArr = (arr || []).reduce((acc, item) => {
1670
+ const newArr = arr.reduce((acc, item) => {
1372
1671
  if (item) {
1373
1672
  item.level = lvl;
1374
1673
  acc.push(item);
@@ -1422,7 +1721,7 @@ class PivotUtil {
1422
1721
  if (!aggregator) {
1423
1722
  throw `No valid aggregator found for ${pivotValue.member}. Please set either a valid aggregatorName or aggregator`;
1424
1723
  }
1425
- result[pivotValue.member] = aggregator(records.map((r) => r[pivotValue.member]), records);
1724
+ result[pivotValue.member] = aggregator(records.map(r => r[pivotValue.member]), records);
1426
1725
  }
1427
1726
  return result;
1428
1727
  }
@@ -1501,7 +1800,7 @@ class PivotUtil {
1501
1800
  }
1502
1801
  static collectRecords(children, pivotKeys) {
1503
1802
  let result = [];
1504
- children.forEach((value) => result = result.concat(value[pivotKeys.records]));
1803
+ children.forEach(value => result = result.concat(value[pivotKeys.records]));
1505
1804
  return result;
1506
1805
  }
1507
1806
  static applyHierarchyChildren(hierarchy, val, rec, pivotKeys) {
@@ -1538,7 +1837,7 @@ class PivotUtil {
1538
1837
  // not all nested children are valid
1539
1838
  const nestedValue = hierarchyChildValue.value;
1540
1839
  const dimension = hierarchyChildValue.dimension;
1541
- const validRecs = rec[recordsKey].filter((x) => this.extractValueFromDimension(dimension, x) === nestedValue);
1840
+ const validRecs = rec[recordsKey].filter(x => this.extractValueFromDimension(dimension, x) === nestedValue);
1542
1841
  copy[recordsKey] = validRecs;
1543
1842
  }
1544
1843
  hierarchyChildValue[recordsKey].push(copy);
@@ -1605,7 +1904,6 @@ class PivotUtil {
1605
1904
  else if (value.dataType === GridColumnDataType.Percent && !isCountAggregator) {
1606
1905
  return GridColumnDataType.Percent;
1607
1906
  }
1608
- return undefined;
1609
1907
  }
1610
1908
  }
1611
1909
 
@@ -1660,7 +1958,7 @@ class IgxGridSelectionService {
1660
1958
  this.pointerEventInGridBody = false;
1661
1959
  this.grid.document.body.removeEventListener('pointerup', this.pointerOriginHandler);
1662
1960
  const gridCellSelectors = ['igx-grid-cell', 'igx-hierarchical-grid-cell', 'igx-tree-grid-cell'];
1663
- const isInsideGridCell = gridCellSelectors.some(selector => event.target ? event.target.closest(selector) : false);
1961
+ const isInsideGridCell = gridCellSelectors.some(selector => event.target.closest(selector));
1664
1962
  if (!isInsideGridCell) {
1665
1963
  this.pointerUp(this._lastSelectedNode, this.grid.rangeSelected, true);
1666
1964
  }
@@ -1948,8 +2246,8 @@ class IgxGridSelectionService {
1948
2246
  getSelectedRowsData() {
1949
2247
  if (this.grid.type === 'pivot') {
1950
2248
  return this.grid.dataView.filter(r => {
1951
- const keys = r.dimensions.map((d) => PivotUtil.getRecordKey(r, d));
1952
- return keys.some((k) => this.isPivotRowSelected(k));
2249
+ const keys = r.dimensions.map(d => PivotUtil.getRecordKey(r, d));
2250
+ return keys.some(k => this.isPivotRowSelected(k));
1953
2251
  });
1954
2252
  }
1955
2253
  if (!this.grid.primaryKey) {
@@ -2169,7 +2467,7 @@ class IgxGridSelectionService {
2169
2467
  emitRowSelectionEvent(newSelection, added, removed, event, currSelection) {
2170
2468
  currSelection = currSelection ?? this.getSelectedRowsData();
2171
2469
  if (this.areEqualCollections(currSelection, newSelection)) {
2172
- return undefined;
2470
+ return;
2173
2471
  }
2174
2472
  const args = {
2175
2473
  owner: this.grid,
@@ -2184,14 +2482,13 @@ class IgxGridSelectionService {
2184
2482
  this.grid.rowSelectionChanging.emit(args);
2185
2483
  if (args.cancel) {
2186
2484
  this.clearHeaderCBState();
2187
- return undefined;
2485
+ return;
2188
2486
  }
2189
2487
  this.selectRowsWithNoEvent(args.newSelection.map(r => this.getRecordKey(r)), true);
2190
- return undefined;
2191
2488
  }
2192
2489
  getPivotRowsByIds(ids) {
2193
2490
  return this.grid.dataView.filter(r => {
2194
- const keys = r.dimensions.map((d) => PivotUtil.getRecordKey(r, d));
2491
+ const keys = r.dimensions.map(d => PivotUtil.getRecordKey(r, d));
2195
2492
  return new Set(ids.concat(keys)).size < ids.length + keys.length;
2196
2493
  });
2197
2494
  }
@@ -2206,7 +2503,7 @@ class IgxGridSelectionService {
2206
2503
  this.allRowsSelected = undefined;
2207
2504
  }
2208
2505
  getRowIDs(data) {
2209
- return this.grid.primaryKey && data.length ? data.map((rec) => rec[this.grid.primaryKey]) : data;
2506
+ return this.grid.primaryKey && data.length ? data.map(rec => rec[this.grid.primaryKey]) : data;
2210
2507
  }
2211
2508
  getRecordKey(record) {
2212
2509
  return this.grid.primaryKey ? record[this.grid.primaryKey] : record;
@@ -2228,7 +2525,7 @@ class IgxGridSelectionService {
2228
2525
  else {
2229
2526
  allData = this.grid.gridAPI.get_all_data(true);
2230
2527
  }
2231
- return allData.filter((rData) => !this.isRowDeleted(this.grid.gridAPI.get_row_id(rData)));
2528
+ return allData.filter(rData => !this.isRowDeleted(this.grid.gridAPI.get_row_id(rData)));
2232
2529
  }
2233
2530
  /** Returns array of the selected columns fields. */
2234
2531
  getSelectedColumns() {
@@ -2323,7 +2620,7 @@ class IgxGridSelectionService {
2323
2620
  emitColumnSelectionEvent(newSelection, added, removed, event) {
2324
2621
  const currSelection = this.getSelectedColumns();
2325
2622
  if (this.areEqualCollections(currSelection, newSelection)) {
2326
- return undefined;
2623
+ return;
2327
2624
  }
2328
2625
  const args = {
2329
2626
  oldSelection: currSelection, newSelection,
@@ -2331,10 +2628,9 @@ class IgxGridSelectionService {
2331
2628
  };
2332
2629
  this.grid.columnSelectionChanging.emit(args);
2333
2630
  if (args.cancel) {
2334
- return undefined;
2631
+ return;
2335
2632
  }
2336
2633
  this.selectColumnsWithNoEvent(args.newSelection, true);
2337
- return undefined;
2338
2634
  }
2339
2635
  /** Clear columnSelection */
2340
2636
  clearAllSelectedColumns() {
@@ -2547,7 +2843,7 @@ class IgxCellCrudState {
2547
2843
  return this.row = new IgxEditRow(cell.id.rowID, cell.rowIndex, cell.rowData, cell.grid);
2548
2844
  }
2549
2845
  sameRow(rowID) {
2550
- return !!(this.row && this.row.id === rowID);
2846
+ return this.row && this.row.id === rowID;
2551
2847
  }
2552
2848
  sameCell(cell) {
2553
2849
  return (this.cell.id.rowID === cell.id.rowID &&
@@ -2570,7 +2866,7 @@ class IgxCellCrudState {
2570
2866
  }
2571
2867
  updateCell(exit, event) {
2572
2868
  if (!this.cell) {
2573
- return undefined;
2869
+ return;
2574
2870
  }
2575
2871
  // this is needed when we are not using ngModel to update the editValue
2576
2872
  // so that the change event of the inlineEditorTemplate is hit before
@@ -2629,7 +2925,7 @@ class IgxCellCrudState {
2629
2925
  /** Exit cell edit mode */
2630
2926
  exitCellEdit(event) {
2631
2927
  if (!this.cell) {
2632
- return undefined;
2928
+ return;
2633
2929
  }
2634
2930
  const newValue = this.cell.castToNumber(this.cell.editValue);
2635
2931
  const args = this.cell?.createCellEditDoneEventArgs(newValue, event);
@@ -2666,7 +2962,7 @@ class IgxRowCrudState extends IgxCellCrudState {
2666
2962
  }
2667
2963
  get rowInEditMode() {
2668
2964
  const editRowState = this.row;
2669
- return editRowState !== null ? this.grid.rowList.find(e => e.key === editRowState.id) : undefined;
2965
+ return editRowState !== null ? this.grid.rowList.find(e => e.key === editRowState.id) : null;
2670
2966
  }
2671
2967
  get rowEditing() {
2672
2968
  return this.grid.rowEditable;
@@ -2790,7 +3086,7 @@ class IgxRowCrudState extends IgxCellCrudState {
2790
3086
  updateRowEditData(row, value) {
2791
3087
  const grid = this.grid;
2792
3088
  const rowInEditMode = grid.gridAPI.crudService.row;
2793
- row.newData = value ?? rowInEditMode?.transactionState;
3089
+ row.newData = value ?? rowInEditMode.transactionState;
2794
3090
  if (rowInEditMode && row.id === rowInEditMode.id) {
2795
3091
  // do not use spread operator here as it will copy everything over an empty object with no descriptors
2796
3092
  row.data = Object.assign(copyDescriptors(row.data), row.data, rowInEditMode.transactionState);
@@ -2842,7 +3138,7 @@ class IgxRowAddCrudState extends IgxRowCrudState {
2842
3138
  endRowTransaction(commit, event) {
2843
3139
  const isAddRow = this.row && this.row.isAddRow;
2844
3140
  if (isAddRow) {
2845
- this.grid.rowAdded.pipe(first()).subscribe((addRowArgs) => {
3141
+ this.grid.rowAdded.pipe(first$1()).subscribe((addRowArgs) => {
2846
3142
  const rowData = addRowArgs.data;
2847
3143
  const pinnedIndex = this.grid.pinnedRecords.findIndex(x => x[this.primaryKey] === rowData[this.primaryKey]);
2848
3144
  // A check whether the row is in the current view
@@ -2973,8 +3269,8 @@ class IgxGridCRUDService extends IgxRowAddCrudState {
2973
3269
  const dummyRow = this.grid.gridAPI.get_row_by_index(this.row.index + indexAdjust);
2974
3270
  dummyRow.triggerAddAnimation();
2975
3271
  dummyRow.cdr.detectChanges();
2976
- dummyRow.addAnimationEnd.pipe(first()).subscribe(() => {
2977
- const cell = dummyRow.cells.find((c) => c.editable);
3272
+ dummyRow.addAnimationEnd.pipe(first$1()).subscribe(() => {
3273
+ const cell = dummyRow.cells.find(c => c.editable);
2978
3274
  if (cell) {
2979
3275
  this.grid.gridAPI.update_cell(this.cell);
2980
3276
  this.enterEditMode(cell, event);
@@ -2996,13 +3292,13 @@ class IgxGridCRUDService extends IgxRowAddCrudState {
2996
3292
  // TODO: Implement the same representation of the method without evt emission.
2997
3293
  endEdit(commit = true, event) {
2998
3294
  if (!this.row && !this.cell) {
2999
- return undefined;
3295
+ return;
3000
3296
  }
3001
3297
  let args;
3002
3298
  if (commit) {
3003
3299
  args = this.updateCell(true, event);
3004
3300
  if (args && args.cancel) {
3005
- return true;
3301
+ return args.cancel;
3006
3302
  }
3007
3303
  }
3008
3304
  else {
@@ -3338,8 +3634,8 @@ class IgxRowDirective {
3338
3634
  if (this.hasMergedCells && this.metaData?.cellMergeMeta) {
3339
3635
  const targetRowIndex = this.grid.navigation.activeNode.row;
3340
3636
  if (targetRowIndex != this.index) {
3341
- const row = this.grid.rowList.find(x => x.index === targetRowIndex);
3342
- row?.onClick?.(event);
3637
+ const row = this.grid.rowList.toArray().find(x => x.index === targetRowIndex);
3638
+ row.onClick(event);
3343
3639
  return;
3344
3640
  }
3345
3641
  }
@@ -3441,7 +3737,7 @@ class IgxRowDirective {
3441
3737
  */
3442
3738
  update(value) {
3443
3739
  const crudService = this.grid.crudService;
3444
- if (crudService.cellInEditMode && crudService.cell?.id.key === this.key) {
3740
+ if (crudService.cellInEditMode && crudService.cell.id.key === this.key) {
3445
3741
  this.grid.transactions.endPending(false);
3446
3742
  }
3447
3743
  const row = new IgxEditRow(this.key, this.index, this.data, this.grid);
@@ -3560,7 +3856,7 @@ class IgxRowDirective {
3560
3856
  const isPinned = this.pinned && !this.disabled;
3561
3857
  const indexInData = this.grid.isRowPinningToTop && !isPinned ? this.index - this.grid.pinnedRecordsCount : this.index;
3562
3858
  const range = isPinned ? this.grid.pinnedDataView.slice(indexInData, indexInData + rowCount) : this.grid.verticalScrollContainer.igxForOf.slice(indexInData, indexInData + rowCount);
3563
- const inRange = range.filter((x) => this.selectionService.isRowSelected(this.extractRecordKey(x))).length > 0;
3859
+ const inRange = range.filter(x => this.selectionService.isRowSelected(this.extractRecordKey(x))).length > 0;
3564
3860
  return inRange;
3565
3861
  }
3566
3862
  return false;
@@ -4068,16 +4364,16 @@ class IgxGridCell {
4068
4364
  }
4069
4365
  isCellInEditMode() {
4070
4366
  if (this.grid.crudService.cellInEditMode) {
4071
- const cellInEditMode = this.grid.crudService.cell?.id;
4072
- const isCurrentCell = cellInEditMode?.rowID === this.id.rowID &&
4073
- cellInEditMode?.rowIndex === this.id.rowIndex &&
4074
- cellInEditMode?.columnID === this.id.columnID;
4367
+ const cellInEditMode = this.grid.crudService.cell.id;
4368
+ const isCurrentCell = cellInEditMode.rowID === this.id.rowID &&
4369
+ cellInEditMode.rowIndex === this.id.rowIndex &&
4370
+ cellInEditMode.columnID === this.id.columnID;
4075
4371
  return isCurrentCell;
4076
4372
  }
4077
4373
  return false;
4078
4374
  }
4079
4375
  endEdit() {
4080
- if (!this.isCellInEditMode() && this.grid.crudService.cell) {
4376
+ if (!this.isCellInEditMode()) {
4081
4377
  this.grid.gridAPI.update_cell(this.grid.crudService.cell);
4082
4378
  this.grid.crudService.endCellEdit();
4083
4379
  }
@@ -5363,7 +5659,7 @@ class IgxColumnComponent {
5363
5659
  * @memberof IgxColumnComponent
5364
5660
  */
5365
5661
  get columnLayoutChild() {
5366
- return this.parent != null && this.parent.columnLayout;
5662
+ return this.parent && this.parent.columnLayout;
5367
5663
  }
5368
5664
  /**
5369
5665
  * A list containing all the child columns under this column (if any).
@@ -5640,7 +5936,7 @@ class IgxColumnComponent {
5640
5936
  columnSizes[col.colStart - 1] = {
5641
5937
  ref: col,
5642
5938
  width: col.width === 'fit-content' ? col.autoSize :
5643
- col.widthSetByUser || this.grid.columnWidthSetByUser ? parseFloat(col.calcWidth?.toString() || col.defaultWidth) : null,
5939
+ col.widthSetByUser || this.grid.columnWidthSetByUser ? parseFloat(col.calcWidth) : null,
5644
5940
  colSpan: col.gridColumnSpan,
5645
5941
  colEnd: col.colStart + col.gridColumnSpan,
5646
5942
  widthSetByUser: col.widthSetByUser
@@ -5669,7 +5965,7 @@ class IgxColumnComponent {
5669
5965
  columnSizes[col.colStart - 1] = {
5670
5966
  ref: col,
5671
5967
  width: col.width === 'fit-content' ? col.autoSize :
5672
- col.widthSetByUser || this.grid.columnWidthSetByUser ? parseFloat(col.calcWidth?.toString() || col.defaultWidth) : null,
5968
+ col.widthSetByUser || this.grid.columnWidthSetByUser ? parseFloat(col.calcWidth) : null,
5673
5969
  colSpan: col.gridColumnSpan,
5674
5970
  colEnd: col.colStart + col.gridColumnSpan,
5675
5971
  widthSetByUser: col.widthSetByUser
@@ -5684,7 +5980,7 @@ class IgxColumnComponent {
5684
5980
  columnSizes[i] = {
5685
5981
  ref: col,
5686
5982
  width: col.width === 'fit-content' ? col.autoSize :
5687
- col.widthSetByUser || this.grid.columnWidthSetByUser ? parseFloat(col.calcWidth?.toString() || col.defaultWidth) : null,
5983
+ col.widthSetByUser || this.grid.columnWidthSetByUser ? parseFloat(col.calcWidth) : null,
5688
5984
  colSpan: col.gridColumnSpan,
5689
5985
  colEnd: col.colStart + col.gridColumnSpan,
5690
5986
  widthSetByUser: col.widthSetByUser
@@ -5815,7 +6111,7 @@ class IgxColumnComponent {
5815
6111
  const args = { column: this, insertAtIndex: index, isPinned: false, cancel: false };
5816
6112
  this.grid.columnPin.emit(args);
5817
6113
  if (args.cancel) {
5818
- return undefined;
6114
+ return;
5819
6115
  }
5820
6116
  this.grid.crudService.endEdit(false);
5821
6117
  this._pinned = true;
@@ -5840,7 +6136,7 @@ class IgxColumnComponent {
5840
6136
  let allPinned = [];
5841
6137
  // FIX: this is duplicated on every step in the hierarchy....
5842
6138
  // re-create hierarchy
5843
- rootPinnedCols.forEach((group) => {
6139
+ rootPinnedCols.forEach(group => {
5844
6140
  allPinned.push(group);
5845
6141
  allPinned = allPinned.concat(group.allChildren);
5846
6142
  });
@@ -5903,7 +6199,7 @@ class IgxColumnComponent {
5903
6199
  // estimate the exact index at which column will be inserted
5904
6200
  // takes into account initial unpinned index of the column
5905
6201
  if (!hasIndex) {
5906
- const indices = grid._unpinnedColumns.map((col) => col.index);
6202
+ const indices = grid._unpinnedColumns.map(col => col.index);
5907
6203
  indices.push(this.index);
5908
6204
  indices.sort((a, b) => a - b);
5909
6205
  index = indices.indexOf(this.index);
@@ -5911,7 +6207,7 @@ class IgxColumnComponent {
5911
6207
  const args = { column: this, insertAtIndex: index, isPinned: true, cancel: false };
5912
6208
  this.grid.columnPin.emit(args);
5913
6209
  if (args.cancel) {
5914
- return undefined;
6210
+ return;
5915
6211
  }
5916
6212
  this.grid.crudService.endEdit(false);
5917
6213
  this._pinned = false;
@@ -6219,7 +6515,7 @@ class IgxColumnComponent {
6219
6515
  const currentCalcWidth = parseFloat(possibleColumnWidth);
6220
6516
  this._calcWidth = this.getConstrainedSizePx(currentCalcWidth);
6221
6517
  }
6222
- this.calcPixelWidth = parseFloat(this._calcWidth.toString());
6518
+ this.calcPixelWidth = parseFloat(this._calcWidth);
6223
6519
  }
6224
6520
  /**
6225
6521
  * @hidden
@@ -6915,7 +7211,7 @@ class IgxColumnGroupComponent extends IgxColumnComponent {
6915
7211
  if (val.hidden) {
6916
7212
  return acc;
6917
7213
  }
6918
- return acc + parseFloat(val.calcWidth?.toString() || val.defaultWidth);
7214
+ return acc + parseFloat(val.calcWidth);
6919
7215
  }, 0)}`;
6920
7216
  return width + 'px';
6921
7217
  }
@@ -7369,11 +7665,11 @@ class IgxAdvancedFilteringDialogComponent {
7369
7665
  }
7370
7666
  }
7371
7667
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxAdvancedFilteringDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7372
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxAdvancedFilteringDialogComponent, isStandalone: true, selector: "igx-advanced-filtering-dialog", inputs: { grid: "grid" }, host: { properties: { "style.display": "this.display" } }, viewQueries: [{ propertyName: "queryBuilder", first: true, predicate: ["queryBuilder"], descendants: true, read: IgxQueryBuilderComponent }], ngImport: i0, template: "@if (grid) {\n <article class=\"igx-advanced-filter\" igxDrag [ghost]=\"false\" [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\" (dragMove)=\"onDragMove($event)\" (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter': true,\n 'igx-advanced-filter--inline': inline\n }\">\n <igx-query-builder #queryBuilder\n [locale]=\"grid.locale\"\n [entities]=\"generateEntity()\"\n [resourceStrings]=\"queryBuilderResourceStrings\"\n [expressionTree]=\"this.grid.advancedFilteringExpressionsTree\">\n <igx-query-builder-header\n [title]=\"grid.resourceStrings.igx_grid_advanced_filter_title!\"\n igxDragHandle>\n </igx-query-builder-header>\n </igx-query-builder>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button igxButton=\"flat\" type=\"button\"\n (click)=\"onClearButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button igxButton=\"outlined\" type=\"button\" (click)=\"cancelChanges()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button igxButton=\"contained\" type=\"button\"\n (click)=\"onApplyButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n </article>\n}\n", dependencies: [{ kind: "directive", type: IgxDragDirective, selector: "[igxDrag]", inputs: ["igxDrag", "dragTolerance", "dragDirection", "dragChannel", "ghost", "ghostClass", "ghostClasses", "ghostStyle", "ghostTemplate", "ghostHost", "scrollContainer", "ghostOffsetX", "ghostOffsetY"], outputs: ["dragStart", "dragMove", "dragEnd", "dragClick", "ghostCreate", "ghostDestroy", "transitioned"], exportAs: ["drag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IgxQueryBuilderComponent, selector: "igx-query-builder", inputs: ["showEntityChangeDialog", "entities", "fields", "expressionTree", "locale", "resourceStrings", "disableEntityChange", "searchValueTemplate", "disableReturnFieldsChange"], outputs: ["expressionTreeChange"] }, { kind: "component", type: IgxQueryBuilderHeaderComponent, selector: "igx-query-builder-header", inputs: ["title", "showLegend", "resourceStrings"] }, { kind: "directive", type: IgxDragHandleDirective, selector: "[igxDragHandle]" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
7668
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxAdvancedFilteringDialogComponent, isStandalone: true, selector: "igx-advanced-filtering-dialog", inputs: { grid: "grid" }, host: { properties: { "style.display": "this.display" } }, viewQueries: [{ propertyName: "queryBuilder", first: true, predicate: ["queryBuilder"], descendants: true, read: IgxQueryBuilderComponent }], ngImport: i0, template: "@if (grid) {\n <article class=\"igx-advanced-filter\" igxDrag [ghost]=\"false\" [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\" (dragMove)=\"onDragMove($event)\" (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter': true,\n 'igx-advanced-filter--inline': inline\n }\">\n <igx-query-builder #queryBuilder\n [locale]=\"grid.locale\"\n [entities]=\"generateEntity()\"\n [resourceStrings]=\"queryBuilderResourceStrings\"\n [expressionTree]=\"this.grid.advancedFilteringExpressionsTree\">\n <igx-query-builder-header\n [title]=\"grid.resourceStrings.igx_grid_advanced_filter_title\"\n igxDragHandle>\n </igx-query-builder-header>\n </igx-query-builder>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button igxButton=\"flat\" type=\"button\"\n (click)=\"onClearButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button igxButton=\"outlined\" type=\"button\" (click)=\"cancelChanges()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button igxButton=\"contained\" type=\"button\"\n (click)=\"onApplyButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n </article>\n}\n", dependencies: [{ kind: "directive", type: IgxDragDirective, selector: "[igxDrag]", inputs: ["igxDrag", "dragTolerance", "dragDirection", "dragChannel", "ghost", "ghostClass", "ghostClasses", "ghostStyle", "ghostTemplate", "ghostHost", "scrollContainer", "ghostOffsetX", "ghostOffsetY"], outputs: ["dragStart", "dragMove", "dragEnd", "dragClick", "ghostCreate", "ghostDestroy", "transitioned"], exportAs: ["drag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IgxQueryBuilderComponent, selector: "igx-query-builder", inputs: ["showEntityChangeDialog", "entities", "fields", "expressionTree", "locale", "resourceStrings", "disableEntityChange", "searchValueTemplate", "disableReturnFieldsChange"], outputs: ["expressionTreeChange"] }, { kind: "component", type: IgxQueryBuilderHeaderComponent, selector: "igx-query-builder-header", inputs: ["title", "showLegend", "resourceStrings"] }, { kind: "directive", type: IgxDragHandleDirective, selector: "[igxDragHandle]" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
7373
7669
  }
7374
7670
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxAdvancedFilteringDialogComponent, decorators: [{
7375
7671
  type: Component,
7376
- args: [{ selector: 'igx-advanced-filtering-dialog', changeDetection: ChangeDetectionStrategy.Eager, imports: [IgxDragDirective, NgClass, IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent, IgxDragHandleDirective, IgxButtonDirective], template: "@if (grid) {\n <article class=\"igx-advanced-filter\" igxDrag [ghost]=\"false\" [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\" (dragMove)=\"onDragMove($event)\" (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter': true,\n 'igx-advanced-filter--inline': inline\n }\">\n <igx-query-builder #queryBuilder\n [locale]=\"grid.locale\"\n [entities]=\"generateEntity()\"\n [resourceStrings]=\"queryBuilderResourceStrings\"\n [expressionTree]=\"this.grid.advancedFilteringExpressionsTree\">\n <igx-query-builder-header\n [title]=\"grid.resourceStrings.igx_grid_advanced_filter_title!\"\n igxDragHandle>\n </igx-query-builder-header>\n </igx-query-builder>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button igxButton=\"flat\" type=\"button\"\n (click)=\"onClearButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button igxButton=\"outlined\" type=\"button\" (click)=\"cancelChanges()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button igxButton=\"contained\" type=\"button\"\n (click)=\"onApplyButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n </article>\n}\n" }]
7672
+ args: [{ selector: 'igx-advanced-filtering-dialog', changeDetection: ChangeDetectionStrategy.Eager, imports: [IgxDragDirective, NgClass, IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent, IgxDragHandleDirective, IgxButtonDirective], template: "@if (grid) {\n <article class=\"igx-advanced-filter\" igxDrag [ghost]=\"false\" [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\" (dragMove)=\"onDragMove($event)\" (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter': true,\n 'igx-advanced-filter--inline': inline\n }\">\n <igx-query-builder #queryBuilder\n [locale]=\"grid.locale\"\n [entities]=\"generateEntity()\"\n [resourceStrings]=\"queryBuilderResourceStrings\"\n [expressionTree]=\"this.grid.advancedFilteringExpressionsTree\">\n <igx-query-builder-header\n [title]=\"grid.resourceStrings.igx_grid_advanced_filter_title\"\n igxDragHandle>\n </igx-query-builder-header>\n </igx-query-builder>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button igxButton=\"flat\" type=\"button\"\n (click)=\"onClearButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button igxButton=\"outlined\" type=\"button\" (click)=\"cancelChanges()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button igxButton=\"contained\" type=\"button\"\n (click)=\"onApplyButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n </article>\n}\n" }]
7377
7673
  }], ctorParameters: () => [], propDecorators: { queryBuilder: [{
7378
7674
  type: ViewChild,
7379
7675
  args: ['queryBuilder', { read: IgxQueryBuilderComponent }]
@@ -7588,7 +7884,7 @@ class IgxExcelStyleDefaultExpressionComponent {
7588
7884
  }
7589
7885
  }
7590
7886
  isConditionSelected(conditionName) {
7591
- return (this.expressionUI.expression.condition && this.expressionUI.expression.condition.name === conditionName);
7887
+ return this.expressionUI.expression.condition && this.expressionUI.expression.condition.name === conditionName;
7592
7888
  }
7593
7889
  onConditionsChanged(eventArgs) {
7594
7890
  const value = eventArgs.newSelection.value;
@@ -7605,8 +7901,7 @@ class IgxExcelStyleDefaultExpressionComponent {
7605
7901
  return this.grid.resourceStrings[`igx_grid_filter_${name}`] || name;
7606
7902
  }
7607
7903
  updateSearchValueOnBlur(eventArgs) {
7608
- const target = eventArgs.target;
7609
- this.expressionUI.expression.searchVal = DataUtil.parseValue(this.column.dataType, target.value);
7904
+ this.expressionUI.expression.searchVal = DataUtil.parseValue(this.column.dataType, eventArgs.target.value);
7610
7905
  }
7611
7906
  onLogicOperatorButtonClicked(eventArgs, buttonIndex) {
7612
7907
  if (this.logicOperatorButtonGroup.selectedButtons.length === 0) {
@@ -7636,11 +7931,11 @@ class IgxExcelStyleDefaultExpressionComponent {
7636
7931
  event.preventDefault();
7637
7932
  }
7638
7933
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxExcelStyleDefaultExpressionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7639
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxExcelStyleDefaultExpressionComponent, isStandalone: true, selector: "igx-excel-style-default-expression", inputs: { column: "column", expressionUI: "expressionUI", expressionsList: "expressionsList", grid: "grid" }, outputs: { expressionRemoved: "expressionRemoved", logicOperatorChanged: "logicOperatorChanged" }, viewQueries: [{ propertyName: "overlayOutlet", first: true, predicate: ["overlayOutlet"], descendants: true, read: IgxOverlayOutletDirective, static: true }, { propertyName: "dropdownConditions", first: true, predicate: ["dropdownConditions"], descendants: true, read: IgxSelectComponent, static: true }, { propertyName: "logicOperatorButtonGroup", first: true, predicate: ["logicOperatorButtonGroup"], descendants: true, read: IgxButtonGroupComponent }, { propertyName: "inputValuesDirective", first: true, predicate: ["inputValues"], descendants: true, read: IgxInputDirective, static: true }], ngImport: i0, template: "<igx-select #dropdownConditions\n type=\"box\"\n [placeholder]=\"conditionsPlaceholder\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n [overlaySettings]=\"dropDownOverlaySettings\">\n <igx-prefix>\n @if (expressionUI.expression.condition) {\n <igx-icon family=\"default\" [name]=\"getIconName()\"></igx-icon>\n }\n @if (!expressionUI.expression.condition) {\n <igx-icon family=\"default\" name=\"filter_list\"></igx-icon>\n }\n </igx-prefix>\n @for (condition of conditions; track condition) {\n <igx-select-item [value]=\"condition\" [text]=\"getConditionFriendlyName(condition)\" [selected]=\"isConditionSelected(condition)\">\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon family=\"default\" [name]=\"getCondition(condition).iconName\"></igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{translateCondition(condition)}}</span>\n </div>\n </igx-select-item>\n }\n</igx-select>\n\n<igx-input-group #inputGroupValues type=\"box\">\n <input\n #inputValues\n igxInput\n [type]=\"type\"\n tabindex=\"0\"\n [placeholder]=\"inputValuePlaceholder\"\n [disabled]=\"!!(expressionUI.expression.condition && expressionUI.expression.condition.isUnary)\"\n autocomplete=\"off\"\n [(ngModel)]=\"expressionUI.expression.searchVal\"\n (blur)=\"updateSearchValueOnBlur($event)\"\n />\n @if (column.dataType === 'percent' && (expressionUI.expression.searchVal || expressionUI.expression.searchVal === 0)) {\n <igx-suffix>\n <span class=\"igx-grid__filtering-row-percent-hint\">{{ expressionUI.expression.searchVal | percent:column.pipeArgs.digitsInfo:grid.locale }}</span>\n </igx-suffix>\n }\n</igx-input-group>\n\n@if (!isSingle) {\n <button type=\"button\" (click)=\"onRemoveButtonClick()\" igxIconButton=\"flat\">\n <igx-icon family=\"default\" name=\"remove\"></igx-icon>\n </button>\n}\n\n@if (!isLast) {\n <igx-buttongroup #logicOperatorButtonGroup>\n <span igxButton\n tabindex=\"0\"\n #andButton\n (keydown)=\"onLogicOperatorKeyDown($event, 0)\"\n [selected]=\"expressionUI.afterOperator === 0\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 0)\">\n {{ grid.resourceStrings.igx_grid_filter_operator_and }}\n </span>\n <span igxButton\n tabindex=\"0\"\n #orButton\n (keydown)=\"onLogicOperatorKeyDown($event, 1)\"\n [selected]=\"expressionUI.afterOperator === 1\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 1)\">\n {{ grid.resourceStrings.igx_grid_filter_operator_or }}\n </span>\n </igx-buttongroup>\n}\n\n<div #overlayOutlet\n igxOverlayOutlet\n (pointerdown)=\"onOutletPointerDown($event)\">\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IgxSelectComponent, selector: "igx-select", inputs: ["placeholder", "disabled", "overlaySettings", "value", "type"], outputs: ["opening", "opened", "closing", "closed"] }, { kind: "directive", type: IgxPrefixDirective, selector: "[igxPrefix],[igxStart],igx-prefix" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxSelectItemComponent, selector: "igx-select-item", inputs: ["text"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxSuffixDirective, selector: "[igxSuffix],[igxEnd],igx-suffix" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "component", type: IgxButtonGroupComponent, selector: "igx-buttongroup", inputs: ["id", "itemContentCssClass", "multiSelection", "selectionMode", "values", "disabled", "alignment"], outputs: ["selected", "deselected"] }, { kind: "directive", type: IgxOverlayOutletDirective, selector: "[igxOverlayOutlet]", exportAs: ["overlay-outlet"] }, { kind: "directive", type: IgxIconButtonDirective, selector: "[igxIconButton]", inputs: ["igxIconButton"] }, { kind: "pipe", type: IgxPercentFormatterPipe, name: "percent" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
7934
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxExcelStyleDefaultExpressionComponent, isStandalone: true, selector: "igx-excel-style-default-expression", inputs: { column: "column", expressionUI: "expressionUI", expressionsList: "expressionsList", grid: "grid" }, outputs: { expressionRemoved: "expressionRemoved", logicOperatorChanged: "logicOperatorChanged" }, viewQueries: [{ propertyName: "overlayOutlet", first: true, predicate: ["overlayOutlet"], descendants: true, read: IgxOverlayOutletDirective, static: true }, { propertyName: "dropdownConditions", first: true, predicate: ["dropdownConditions"], descendants: true, read: IgxSelectComponent, static: true }, { propertyName: "logicOperatorButtonGroup", first: true, predicate: ["logicOperatorButtonGroup"], descendants: true, read: IgxButtonGroupComponent }, { propertyName: "inputValuesDirective", first: true, predicate: ["inputValues"], descendants: true, read: IgxInputDirective, static: true }], ngImport: i0, template: "<igx-select #dropdownConditions\n type=\"box\"\n [placeholder]=\"conditionsPlaceholder\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n [overlaySettings]=\"dropDownOverlaySettings\">\n <igx-prefix>\n @if (expressionUI.expression.condition) {\n <igx-icon family=\"default\" [name]=\"getIconName()\"></igx-icon>\n }\n @if (!expressionUI.expression.condition) {\n <igx-icon family=\"default\" name=\"filter_list\"></igx-icon>\n }\n </igx-prefix>\n @for (condition of conditions; track condition) {\n <igx-select-item [value]=\"condition\" [text]=\"getConditionFriendlyName(condition)\" [selected]=\"isConditionSelected(condition)\">\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon family=\"default\" [name]=\"getCondition(condition).iconName\"></igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{translateCondition(condition)}}</span>\n </div>\n </igx-select-item>\n }\n</igx-select>\n\n<igx-input-group #inputGroupValues type=\"box\">\n <input\n #inputValues\n igxInput\n [type]=\"type\"\n tabindex=\"0\"\n [placeholder]=\"inputValuePlaceholder\"\n [disabled]=\"expressionUI.expression.condition && expressionUI.expression.condition.isUnary\"\n autocomplete=\"off\"\n [(ngModel)]=\"expressionUI.expression.searchVal\"\n (blur)=\"updateSearchValueOnBlur($event)\"\n />\n @if (column.dataType === 'percent' && (expressionUI.expression.searchVal || expressionUI.expression.searchVal === 0)) {\n <igx-suffix>\n <span class=\"igx-grid__filtering-row-percent-hint\">{{ expressionUI.expression.searchVal | percent:column.pipeArgs.digitsInfo:grid.locale }}</span>\n </igx-suffix>\n }\n</igx-input-group>\n\n@if (!isSingle) {\n <button type=\"button\" (click)=\"onRemoveButtonClick()\" igxIconButton=\"flat\">\n <igx-icon family=\"default\" name=\"remove\"></igx-icon>\n </button>\n}\n\n@if (!isLast) {\n <igx-buttongroup #logicOperatorButtonGroup>\n <span igxButton\n tabindex=\"0\"\n #andButton\n (keydown)=\"onLogicOperatorKeyDown($event, 0)\"\n [selected]=\"expressionUI.afterOperator === 0\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 0)\">\n {{ grid.resourceStrings.igx_grid_filter_operator_and }}\n </span>\n <span igxButton\n tabindex=\"0\"\n #orButton\n (keydown)=\"onLogicOperatorKeyDown($event, 1)\"\n [selected]=\"expressionUI.afterOperator === 1\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 1)\">\n {{ grid.resourceStrings.igx_grid_filter_operator_or }}\n </span>\n </igx-buttongroup>\n}\n\n<div #overlayOutlet\n igxOverlayOutlet\n (pointerdown)=\"onOutletPointerDown($event)\">\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IgxSelectComponent, selector: "igx-select", inputs: ["placeholder", "disabled", "overlaySettings", "value", "type"], outputs: ["opening", "opened", "closing", "closed"] }, { kind: "directive", type: IgxPrefixDirective, selector: "[igxPrefix],[igxStart],igx-prefix" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxSelectItemComponent, selector: "igx-select-item", inputs: ["text"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxSuffixDirective, selector: "[igxSuffix],[igxEnd],igx-suffix" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "component", type: IgxButtonGroupComponent, selector: "igx-buttongroup", inputs: ["id", "itemContentCssClass", "multiSelection", "selectionMode", "values", "disabled", "alignment"], outputs: ["selected", "deselected"] }, { kind: "directive", type: IgxOverlayOutletDirective, selector: "[igxOverlayOutlet]", exportAs: ["overlay-outlet"] }, { kind: "directive", type: IgxIconButtonDirective, selector: "[igxIconButton]", inputs: ["igxIconButton"] }, { kind: "pipe", type: IgxPercentFormatterPipe, name: "percent" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
7640
7935
  }
7641
7936
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxExcelStyleDefaultExpressionComponent, decorators: [{
7642
7937
  type: Component,
7643
- args: [{ selector: 'igx-excel-style-default-expression', changeDetection: ChangeDetectionStrategy.Eager, imports: [FormsModule, IgxSelectComponent, IgxPrefixDirective, IgxIconComponent, IgxSelectItemComponent, IgxInputGroupComponent, IgxInputDirective, IgxSuffixDirective, IgxButtonDirective, IgxButtonGroupComponent, IgxOverlayOutletDirective, IgxIconButtonDirective, IgxPercentFormatterPipe], template: "<igx-select #dropdownConditions\n type=\"box\"\n [placeholder]=\"conditionsPlaceholder\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n [overlaySettings]=\"dropDownOverlaySettings\">\n <igx-prefix>\n @if (expressionUI.expression.condition) {\n <igx-icon family=\"default\" [name]=\"getIconName()\"></igx-icon>\n }\n @if (!expressionUI.expression.condition) {\n <igx-icon family=\"default\" name=\"filter_list\"></igx-icon>\n }\n </igx-prefix>\n @for (condition of conditions; track condition) {\n <igx-select-item [value]=\"condition\" [text]=\"getConditionFriendlyName(condition)\" [selected]=\"isConditionSelected(condition)\">\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon family=\"default\" [name]=\"getCondition(condition).iconName\"></igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{translateCondition(condition)}}</span>\n </div>\n </igx-select-item>\n }\n</igx-select>\n\n<igx-input-group #inputGroupValues type=\"box\">\n <input\n #inputValues\n igxInput\n [type]=\"type\"\n tabindex=\"0\"\n [placeholder]=\"inputValuePlaceholder\"\n [disabled]=\"!!(expressionUI.expression.condition && expressionUI.expression.condition.isUnary)\"\n autocomplete=\"off\"\n [(ngModel)]=\"expressionUI.expression.searchVal\"\n (blur)=\"updateSearchValueOnBlur($event)\"\n />\n @if (column.dataType === 'percent' && (expressionUI.expression.searchVal || expressionUI.expression.searchVal === 0)) {\n <igx-suffix>\n <span class=\"igx-grid__filtering-row-percent-hint\">{{ expressionUI.expression.searchVal | percent:column.pipeArgs.digitsInfo:grid.locale }}</span>\n </igx-suffix>\n }\n</igx-input-group>\n\n@if (!isSingle) {\n <button type=\"button\" (click)=\"onRemoveButtonClick()\" igxIconButton=\"flat\">\n <igx-icon family=\"default\" name=\"remove\"></igx-icon>\n </button>\n}\n\n@if (!isLast) {\n <igx-buttongroup #logicOperatorButtonGroup>\n <span igxButton\n tabindex=\"0\"\n #andButton\n (keydown)=\"onLogicOperatorKeyDown($event, 0)\"\n [selected]=\"expressionUI.afterOperator === 0\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 0)\">\n {{ grid.resourceStrings.igx_grid_filter_operator_and }}\n </span>\n <span igxButton\n tabindex=\"0\"\n #orButton\n (keydown)=\"onLogicOperatorKeyDown($event, 1)\"\n [selected]=\"expressionUI.afterOperator === 1\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 1)\">\n {{ grid.resourceStrings.igx_grid_filter_operator_or }}\n </span>\n </igx-buttongroup>\n}\n\n<div #overlayOutlet\n igxOverlayOutlet\n (pointerdown)=\"onOutletPointerDown($event)\">\n</div>\n" }]
7938
+ args: [{ selector: 'igx-excel-style-default-expression', changeDetection: ChangeDetectionStrategy.Eager, imports: [FormsModule, IgxSelectComponent, IgxPrefixDirective, IgxIconComponent, IgxSelectItemComponent, IgxInputGroupComponent, IgxInputDirective, IgxSuffixDirective, IgxButtonDirective, IgxButtonGroupComponent, IgxOverlayOutletDirective, IgxIconButtonDirective, IgxPercentFormatterPipe], template: "<igx-select #dropdownConditions\n type=\"box\"\n [placeholder]=\"conditionsPlaceholder\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n [overlaySettings]=\"dropDownOverlaySettings\">\n <igx-prefix>\n @if (expressionUI.expression.condition) {\n <igx-icon family=\"default\" [name]=\"getIconName()\"></igx-icon>\n }\n @if (!expressionUI.expression.condition) {\n <igx-icon family=\"default\" name=\"filter_list\"></igx-icon>\n }\n </igx-prefix>\n @for (condition of conditions; track condition) {\n <igx-select-item [value]=\"condition\" [text]=\"getConditionFriendlyName(condition)\" [selected]=\"isConditionSelected(condition)\">\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon family=\"default\" [name]=\"getCondition(condition).iconName\"></igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{translateCondition(condition)}}</span>\n </div>\n </igx-select-item>\n }\n</igx-select>\n\n<igx-input-group #inputGroupValues type=\"box\">\n <input\n #inputValues\n igxInput\n [type]=\"type\"\n tabindex=\"0\"\n [placeholder]=\"inputValuePlaceholder\"\n [disabled]=\"expressionUI.expression.condition && expressionUI.expression.condition.isUnary\"\n autocomplete=\"off\"\n [(ngModel)]=\"expressionUI.expression.searchVal\"\n (blur)=\"updateSearchValueOnBlur($event)\"\n />\n @if (column.dataType === 'percent' && (expressionUI.expression.searchVal || expressionUI.expression.searchVal === 0)) {\n <igx-suffix>\n <span class=\"igx-grid__filtering-row-percent-hint\">{{ expressionUI.expression.searchVal | percent:column.pipeArgs.digitsInfo:grid.locale }}</span>\n </igx-suffix>\n }\n</igx-input-group>\n\n@if (!isSingle) {\n <button type=\"button\" (click)=\"onRemoveButtonClick()\" igxIconButton=\"flat\">\n <igx-icon family=\"default\" name=\"remove\"></igx-icon>\n </button>\n}\n\n@if (!isLast) {\n <igx-buttongroup #logicOperatorButtonGroup>\n <span igxButton\n tabindex=\"0\"\n #andButton\n (keydown)=\"onLogicOperatorKeyDown($event, 0)\"\n [selected]=\"expressionUI.afterOperator === 0\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 0)\">\n {{ grid.resourceStrings.igx_grid_filter_operator_and }}\n </span>\n <span igxButton\n tabindex=\"0\"\n #orButton\n (keydown)=\"onLogicOperatorKeyDown($event, 1)\"\n [selected]=\"expressionUI.afterOperator === 1\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 1)\">\n {{ grid.resourceStrings.igx_grid_filter_operator_or }}\n </span>\n </igx-buttongroup>\n}\n\n<div #overlayOutlet\n igxOverlayOutlet\n (pointerdown)=\"onOutletPointerDown($event)\">\n</div>\n" }]
7644
7939
  }], propDecorators: { column: [{
7645
7940
  type: Input
7646
7941
  }], expressionUI: [{
@@ -7694,11 +7989,11 @@ class IgxExcelStyleDateExpressionComponent extends IgxExcelStyleDefaultExpressio
7694
7989
  return this.i18nFormatter.getLocaleFirstDayOfWeek(this.grid.locale);
7695
7990
  }
7696
7991
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxExcelStyleDateExpressionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
7697
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxExcelStyleDateExpressionComponent, isStandalone: true, selector: "igx-excel-style-date-expression", inputs: { searchVal: "searchVal" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: IgxInputDirective }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<igx-select\n #dropdownConditions\n type=\"box\"\n [placeholder]=\"conditionsPlaceholder\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n [overlaySettings]=\"dropDownOverlaySettings\"\n>\n <igx-prefix>\n @if (expressionUI.expression.condition) {\n <igx-icon family=\"default\" [name]=\"getIconName()\"></igx-icon>\n }\n @if (!expressionUI.expression.condition) {\n <igx-icon family=\"default\" name=\"filter_list\"></igx-icon>\n }\n </igx-prefix>\n @for (condition of conditions; track condition) {\n <igx-select-item\n [value]=\"condition\"\n [text]=\"getConditionFriendlyName(condition)\"\n [selected]=\"isConditionSelected(condition)\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"getCondition(condition).iconName\"\n ></igx-icon>\n <span>{{ translateCondition(condition) }}</span>\n </igx-select-item>\n }\n</igx-select>\n\n@if (column.dataType === 'date') {\n <igx-date-picker\n #picker\n [weekStart]=\"column.pipeArgs.weekStart ?? weekStart\"\n [(ngModel)]=\"searchVal\"\n [locale]=\"grid.locale\"\n (click)=\"picker.open()\"\n [placeholder]=\"inputDatePlaceholder\"\n [formatter]=\"column.formatter!\"\n [disabled]=\"!!(\n expressionUI.expression.condition &&\n expressionUI.expression.condition.isUnary\n )\"\n type=\"box\"\n >\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-date-picker>\n}\n\n@if (column.dataType === 'time') {\n <igx-time-picker\n #picker\n [(ngModel)]=\"searchVal\"\n [locale]=\"grid.locale\"\n (click)=\"picker.open()\"\n [placeholder]=\"inputTimePlaceholder\"\n [displayFormat]=\"column.pipeArgs.format!\"\n [inputFormat]=\"column.editorOptions?.dateTimeFormat!\"\n [formatter]=\"column.formatter!\"\n [disabled]=\"!!(\n expressionUI.expression.condition &&\n expressionUI.expression.condition.isUnary\n )\"\n type=\"box\"\n >\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-time-picker>\n}\n\n@if (column.dataType === 'dateTime') {\n <igx-input-group #dropDownTarget #inputGroup type=\"box\">\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"inputDatePlaceholder\"\n [locale]=\"column.grid.locale\"\n [igxDateTimeEditor]=\"column.editorOptions?.dateTimeFormat!\"\n [defaultFormatType]=\"column.dataType\"\n [displayFormat]=\"column.pipeArgs.format!\"\n [(ngModel)]=\"searchVal\"\n [disabled]=\"!!(\n expressionUI.expression.condition &&\n expressionUI.expression.condition.isUnary\n )\"\n />\n </igx-input-group>\n}\n\n@if (!isSingle) {\n <button type=\"button\" (click)=\"onRemoveButtonClick()\" igxIconButton=\"flat\">\n <igx-icon family=\"default\" name=\"remove\"></igx-icon>\n </button>\n}\n\n@if (!isLast) {\n <igx-buttongroup #logicOperatorButtonGroup>\n <span\n igxButton\n #andButton\n (keydown)=\"onLogicOperatorKeyDown($event, 0)\"\n tabindex=\"0\"\n [selected]=\"expressionUI.afterOperator === 0\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 0)\"\n >\n {{ grid.resourceStrings.igx_grid_filter_operator_and }}\n </span>\n <span\n igxButton\n #orButton\n tabindex=\"0\"\n (keydown)=\"onLogicOperatorKeyDown($event, 1)\"\n [selected]=\"expressionUI.afterOperator === 1\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 1)\"\n >\n {{ grid.resourceStrings.igx_grid_filter_operator_or }}\n </span>\n </igx-buttongroup>\n}\n\n<div\n #overlayOutlet\n igxOverlayOutlet\n (pointerdown)=\"onOutletPointerDown($event)\"\n></div>\n", dependencies: [{ kind: "component", type: IgxSelectComponent, selector: "igx-select", inputs: ["placeholder", "disabled", "overlaySettings", "value", "type"], outputs: ["opening", "opened", "closing", "closed"] }, { kind: "directive", type: IgxPrefixDirective, selector: "[igxPrefix],[igxStart],igx-prefix" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxSelectItemComponent, selector: "igx-select-item", inputs: ["text"] }, { kind: "component", type: IgxDatePickerComponent, selector: "igx-date-picker", inputs: ["hideOutsideDays", "displayMonthsCount", "orientation", "showWeekNumbers", "activeDate", "formatter", "todayButtonLabel", "cancelButtonLabel", "spinLoop", "spinDelta", "id", "formatViews", "disabledDates", "specialDates", "calendarFormat", "value", "minValue", "maxValue", "resourceStrings", "readOnly"], outputs: ["valueChange", "validationFailed"] }, { kind: "component", type: IgxPickerToggleComponent, selector: "igx-picker-toggle", outputs: ["clicked"] }, { kind: "component", type: IgxPickerClearComponent, selector: "igx-picker-clear" }, { kind: "component", type: IgxTimePickerComponent, selector: "igx-time-picker", inputs: ["id", "displayFormat", "inputFormat", "mode", "minValue", "maxValue", "spinLoop", "formatter", "readOnly", "value", "resourceStrings", "okButtonLabel", "cancelButtonLabel", "itemsDelta"], outputs: ["selected", "valueChange", "validationFailed"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxDateTimeEditorDirective, selector: "[igxDateTimeEditor]", inputs: ["locale", "minValue", "maxValue", "spinLoop", "displayFormat", "igxDateTimeEditor", "value", "defaultFormatType", "spinDelta"], outputs: ["valueChange", "validationFailed"], exportAs: ["igxDateTimeEditor"] }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "component", type: IgxButtonGroupComponent, selector: "igx-buttongroup", inputs: ["id", "itemContentCssClass", "multiSelection", "selectionMode", "values", "disabled", "alignment"], outputs: ["selected", "deselected"] }, { kind: "directive", type: IgxOverlayOutletDirective, selector: "[igxOverlayOutlet]", exportAs: ["overlay-outlet"] }, { kind: "directive", type: IgxIconButtonDirective, selector: "[igxIconButton]", inputs: ["igxIconButton"] }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
7992
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxExcelStyleDateExpressionComponent, isStandalone: true, selector: "igx-excel-style-date-expression", inputs: { searchVal: "searchVal" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true, read: IgxInputDirective }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<igx-select\n #dropdownConditions\n type=\"box\"\n [placeholder]=\"conditionsPlaceholder\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n [overlaySettings]=\"dropDownOverlaySettings\"\n>\n <igx-prefix>\n @if (expressionUI.expression.condition) {\n <igx-icon family=\"default\" [name]=\"getIconName()\"></igx-icon>\n }\n @if (!expressionUI.expression.condition) {\n <igx-icon family=\"default\" name=\"filter_list\"></igx-icon>\n }\n </igx-prefix>\n @for (condition of conditions; track condition) {\n <igx-select-item\n [value]=\"condition\"\n [text]=\"getConditionFriendlyName(condition)\"\n [selected]=\"isConditionSelected(condition)\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"getCondition(condition).iconName\"\n ></igx-icon>\n <span>{{ translateCondition(condition) }}</span>\n </igx-select-item>\n }\n</igx-select>\n\n@if (column.dataType === 'date') {\n <igx-date-picker\n #picker\n [weekStart]=\"column.pipeArgs.weekStart ?? weekStart\"\n [(ngModel)]=\"searchVal\"\n [locale]=\"grid.locale\"\n (click)=\"picker.open()\"\n [placeholder]=\"inputDatePlaceholder\"\n [formatter]=\"column.formatter\"\n [disabled]=\"\n expressionUI.expression.condition &&\n expressionUI.expression.condition.isUnary\n \"\n type=\"box\"\n >\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-date-picker>\n}\n\n@if (column.dataType === 'time') {\n <igx-time-picker\n #picker\n [(ngModel)]=\"searchVal\"\n [locale]=\"grid.locale\"\n (click)=\"picker.open()\"\n [placeholder]=\"inputTimePlaceholder\"\n [displayFormat]=\"column.pipeArgs.format\"\n [inputFormat]=\"\n $safeNavigationMigration(column.editorOptions?.dateTimeFormat)\n \"\n [formatter]=\"column.formatter\"\n [disabled]=\"\n expressionUI.expression.condition &&\n expressionUI.expression.condition.isUnary\n \"\n type=\"box\"\n >\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-time-picker>\n}\n\n@if (column.dataType === 'dateTime') {\n <igx-input-group #dropDownTarget #inputGroup type=\"box\">\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"inputDatePlaceholder\"\n [locale]=\"column.grid.locale\"\n [igxDateTimeEditor]=\"\n $safeNavigationMigration(column.editorOptions?.dateTimeFormat)\n \"\n [defaultFormatType]=\"column.dataType\"\n [displayFormat]=\"column.pipeArgs.format\"\n [(ngModel)]=\"searchVal\"\n [disabled]=\"\n expressionUI.expression.condition &&\n expressionUI.expression.condition.isUnary\n \"\n />\n </igx-input-group>\n}\n\n@if (!isSingle) {\n <button type=\"button\" (click)=\"onRemoveButtonClick()\" igxIconButton=\"flat\">\n <igx-icon family=\"default\" name=\"remove\"></igx-icon>\n </button>\n}\n\n@if (!isLast) {\n <igx-buttongroup #logicOperatorButtonGroup>\n <span\n igxButton\n #andButton\n (keydown)=\"onLogicOperatorKeyDown($event, 0)\"\n tabindex=\"0\"\n [selected]=\"expressionUI.afterOperator === 0\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 0)\"\n >\n {{ grid.resourceStrings.igx_grid_filter_operator_and }}\n </span>\n <span\n igxButton\n #orButton\n tabindex=\"0\"\n (keydown)=\"onLogicOperatorKeyDown($event, 1)\"\n [selected]=\"expressionUI.afterOperator === 1\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 1)\"\n >\n {{ grid.resourceStrings.igx_grid_filter_operator_or }}\n </span>\n </igx-buttongroup>\n}\n\n<div\n #overlayOutlet\n igxOverlayOutlet\n (pointerdown)=\"onOutletPointerDown($event)\"\n></div>\n", dependencies: [{ kind: "component", type: IgxSelectComponent, selector: "igx-select", inputs: ["placeholder", "disabled", "overlaySettings", "value", "type"], outputs: ["opening", "opened", "closing", "closed"] }, { kind: "directive", type: IgxPrefixDirective, selector: "[igxPrefix],[igxStart],igx-prefix" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxSelectItemComponent, selector: "igx-select-item", inputs: ["text"] }, { kind: "component", type: IgxDatePickerComponent, selector: "igx-date-picker", inputs: ["hideOutsideDays", "displayMonthsCount", "orientation", "showWeekNumbers", "activeDate", "formatter", "todayButtonLabel", "cancelButtonLabel", "spinLoop", "spinDelta", "id", "formatViews", "disabledDates", "specialDates", "calendarFormat", "value", "minValue", "maxValue", "resourceStrings", "readOnly"], outputs: ["valueChange", "validationFailed"] }, { kind: "component", type: IgxPickerToggleComponent, selector: "igx-picker-toggle", outputs: ["clicked"] }, { kind: "component", type: IgxPickerClearComponent, selector: "igx-picker-clear" }, { kind: "component", type: IgxTimePickerComponent, selector: "igx-time-picker", inputs: ["id", "displayFormat", "inputFormat", "mode", "minValue", "maxValue", "spinLoop", "formatter", "readOnly", "value", "resourceStrings", "okButtonLabel", "cancelButtonLabel", "itemsDelta"], outputs: ["selected", "valueChange", "validationFailed"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxDateTimeEditorDirective, selector: "[igxDateTimeEditor]", inputs: ["locale", "minValue", "maxValue", "spinLoop", "displayFormat", "igxDateTimeEditor", "value", "defaultFormatType", "spinDelta"], outputs: ["valueChange", "validationFailed"], exportAs: ["igxDateTimeEditor"] }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "component", type: IgxButtonGroupComponent, selector: "igx-buttongroup", inputs: ["id", "itemContentCssClass", "multiSelection", "selectionMode", "values", "disabled", "alignment"], outputs: ["selected", "deselected"] }, { kind: "directive", type: IgxOverlayOutletDirective, selector: "[igxOverlayOutlet]", exportAs: ["overlay-outlet"] }, { kind: "directive", type: IgxIconButtonDirective, selector: "[igxIconButton]", inputs: ["igxIconButton"] }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
7698
7993
  }
7699
7994
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxExcelStyleDateExpressionComponent, decorators: [{
7700
7995
  type: Component,
7701
- args: [{ selector: 'igx-excel-style-date-expression', changeDetection: ChangeDetectionStrategy.Eager, imports: [IgxSelectComponent, IgxPrefixDirective, IgxIconComponent, IgxSelectItemComponent, IgxDatePickerComponent, IgxPickerToggleComponent, IgxPickerClearComponent, IgxTimePickerComponent, IgxInputGroupComponent, FormsModule, IgxInputDirective, IgxDateTimeEditorDirective, IgxButtonDirective, IgxButtonGroupComponent, IgxOverlayOutletDirective, IgxIconButtonDirective], template: "<igx-select\n #dropdownConditions\n type=\"box\"\n [placeholder]=\"conditionsPlaceholder\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n [overlaySettings]=\"dropDownOverlaySettings\"\n>\n <igx-prefix>\n @if (expressionUI.expression.condition) {\n <igx-icon family=\"default\" [name]=\"getIconName()\"></igx-icon>\n }\n @if (!expressionUI.expression.condition) {\n <igx-icon family=\"default\" name=\"filter_list\"></igx-icon>\n }\n </igx-prefix>\n @for (condition of conditions; track condition) {\n <igx-select-item\n [value]=\"condition\"\n [text]=\"getConditionFriendlyName(condition)\"\n [selected]=\"isConditionSelected(condition)\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"getCondition(condition).iconName\"\n ></igx-icon>\n <span>{{ translateCondition(condition) }}</span>\n </igx-select-item>\n }\n</igx-select>\n\n@if (column.dataType === 'date') {\n <igx-date-picker\n #picker\n [weekStart]=\"column.pipeArgs.weekStart ?? weekStart\"\n [(ngModel)]=\"searchVal\"\n [locale]=\"grid.locale\"\n (click)=\"picker.open()\"\n [placeholder]=\"inputDatePlaceholder\"\n [formatter]=\"column.formatter!\"\n [disabled]=\"!!(\n expressionUI.expression.condition &&\n expressionUI.expression.condition.isUnary\n )\"\n type=\"box\"\n >\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-date-picker>\n}\n\n@if (column.dataType === 'time') {\n <igx-time-picker\n #picker\n [(ngModel)]=\"searchVal\"\n [locale]=\"grid.locale\"\n (click)=\"picker.open()\"\n [placeholder]=\"inputTimePlaceholder\"\n [displayFormat]=\"column.pipeArgs.format!\"\n [inputFormat]=\"column.editorOptions?.dateTimeFormat!\"\n [formatter]=\"column.formatter!\"\n [disabled]=\"!!(\n expressionUI.expression.condition &&\n expressionUI.expression.condition.isUnary\n )\"\n type=\"box\"\n >\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-time-picker>\n}\n\n@if (column.dataType === 'dateTime') {\n <igx-input-group #dropDownTarget #inputGroup type=\"box\">\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"inputDatePlaceholder\"\n [locale]=\"column.grid.locale\"\n [igxDateTimeEditor]=\"column.editorOptions?.dateTimeFormat!\"\n [defaultFormatType]=\"column.dataType\"\n [displayFormat]=\"column.pipeArgs.format!\"\n [(ngModel)]=\"searchVal\"\n [disabled]=\"!!(\n expressionUI.expression.condition &&\n expressionUI.expression.condition.isUnary\n )\"\n />\n </igx-input-group>\n}\n\n@if (!isSingle) {\n <button type=\"button\" (click)=\"onRemoveButtonClick()\" igxIconButton=\"flat\">\n <igx-icon family=\"default\" name=\"remove\"></igx-icon>\n </button>\n}\n\n@if (!isLast) {\n <igx-buttongroup #logicOperatorButtonGroup>\n <span\n igxButton\n #andButton\n (keydown)=\"onLogicOperatorKeyDown($event, 0)\"\n tabindex=\"0\"\n [selected]=\"expressionUI.afterOperator === 0\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 0)\"\n >\n {{ grid.resourceStrings.igx_grid_filter_operator_and }}\n </span>\n <span\n igxButton\n #orButton\n tabindex=\"0\"\n (keydown)=\"onLogicOperatorKeyDown($event, 1)\"\n [selected]=\"expressionUI.afterOperator === 1\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 1)\"\n >\n {{ grid.resourceStrings.igx_grid_filter_operator_or }}\n </span>\n </igx-buttongroup>\n}\n\n<div\n #overlayOutlet\n igxOverlayOutlet\n (pointerdown)=\"onOutletPointerDown($event)\"\n></div>\n" }]
7996
+ args: [{ selector: 'igx-excel-style-date-expression', changeDetection: ChangeDetectionStrategy.Eager, imports: [IgxSelectComponent, IgxPrefixDirective, IgxIconComponent, IgxSelectItemComponent, IgxDatePickerComponent, IgxPickerToggleComponent, IgxPickerClearComponent, IgxTimePickerComponent, IgxInputGroupComponent, FormsModule, IgxInputDirective, IgxDateTimeEditorDirective, IgxButtonDirective, IgxButtonGroupComponent, IgxOverlayOutletDirective, IgxIconButtonDirective], template: "<igx-select\n #dropdownConditions\n type=\"box\"\n [placeholder]=\"conditionsPlaceholder\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n [overlaySettings]=\"dropDownOverlaySettings\"\n>\n <igx-prefix>\n @if (expressionUI.expression.condition) {\n <igx-icon family=\"default\" [name]=\"getIconName()\"></igx-icon>\n }\n @if (!expressionUI.expression.condition) {\n <igx-icon family=\"default\" name=\"filter_list\"></igx-icon>\n }\n </igx-prefix>\n @for (condition of conditions; track condition) {\n <igx-select-item\n [value]=\"condition\"\n [text]=\"getConditionFriendlyName(condition)\"\n [selected]=\"isConditionSelected(condition)\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"getCondition(condition).iconName\"\n ></igx-icon>\n <span>{{ translateCondition(condition) }}</span>\n </igx-select-item>\n }\n</igx-select>\n\n@if (column.dataType === 'date') {\n <igx-date-picker\n #picker\n [weekStart]=\"column.pipeArgs.weekStart ?? weekStart\"\n [(ngModel)]=\"searchVal\"\n [locale]=\"grid.locale\"\n (click)=\"picker.open()\"\n [placeholder]=\"inputDatePlaceholder\"\n [formatter]=\"column.formatter\"\n [disabled]=\"\n expressionUI.expression.condition &&\n expressionUI.expression.condition.isUnary\n \"\n type=\"box\"\n >\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-date-picker>\n}\n\n@if (column.dataType === 'time') {\n <igx-time-picker\n #picker\n [(ngModel)]=\"searchVal\"\n [locale]=\"grid.locale\"\n (click)=\"picker.open()\"\n [placeholder]=\"inputTimePlaceholder\"\n [displayFormat]=\"column.pipeArgs.format\"\n [inputFormat]=\"\n $safeNavigationMigration(column.editorOptions?.dateTimeFormat)\n \"\n [formatter]=\"column.formatter\"\n [disabled]=\"\n expressionUI.expression.condition &&\n expressionUI.expression.condition.isUnary\n \"\n type=\"box\"\n >\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-time-picker>\n}\n\n@if (column.dataType === 'dateTime') {\n <igx-input-group #dropDownTarget #inputGroup type=\"box\">\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"inputDatePlaceholder\"\n [locale]=\"column.grid.locale\"\n [igxDateTimeEditor]=\"\n $safeNavigationMigration(column.editorOptions?.dateTimeFormat)\n \"\n [defaultFormatType]=\"column.dataType\"\n [displayFormat]=\"column.pipeArgs.format\"\n [(ngModel)]=\"searchVal\"\n [disabled]=\"\n expressionUI.expression.condition &&\n expressionUI.expression.condition.isUnary\n \"\n />\n </igx-input-group>\n}\n\n@if (!isSingle) {\n <button type=\"button\" (click)=\"onRemoveButtonClick()\" igxIconButton=\"flat\">\n <igx-icon family=\"default\" name=\"remove\"></igx-icon>\n </button>\n}\n\n@if (!isLast) {\n <igx-buttongroup #logicOperatorButtonGroup>\n <span\n igxButton\n #andButton\n (keydown)=\"onLogicOperatorKeyDown($event, 0)\"\n tabindex=\"0\"\n [selected]=\"expressionUI.afterOperator === 0\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 0)\"\n >\n {{ grid.resourceStrings.igx_grid_filter_operator_and }}\n </span>\n <span\n igxButton\n #orButton\n tabindex=\"0\"\n (keydown)=\"onLogicOperatorKeyDown($event, 1)\"\n [selected]=\"expressionUI.afterOperator === 1\"\n type=\"button\"\n (click)=\"onLogicOperatorButtonClicked($event, 1)\"\n >\n {{ grid.resourceStrings.igx_grid_filter_operator_or }}\n </span>\n </igx-buttongroup>\n}\n\n<div\n #overlayOutlet\n igxOverlayOutlet\n (pointerdown)=\"onOutletPointerDown($event)\"\n></div>\n" }]
7702
7997
  }], propDecorators: { input: [{
7703
7998
  type: ViewChild,
7704
7999
  args: ['input', { read: IgxInputDirective, static: false }]
@@ -8058,9 +8353,9 @@ class IgxExcelStyleConditionalFilterComponent {
8058
8353
  */
8059
8354
  showCustomFilterItem() {
8060
8355
  const exprTree = this.esf.column.filteringExpressionsTree;
8061
- return (exprTree && exprTree.filteringOperands && exprTree.filteringOperands.length &&
8356
+ return exprTree && exprTree.filteringOperands && exprTree.filteringOperands.length &&
8062
8357
  !(exprTree.filteringOperands[0].condition &&
8063
- exprTree.filteringOperands[0].condition.name === 'in'));
8358
+ exprTree.filteringOperands[0].condition.name === 'in');
8064
8359
  }
8065
8360
  /**
8066
8361
  * @hidden @internal
@@ -8107,11 +8402,11 @@ class IgxExcelStyleHeaderComponent {
8107
8402
  this.esf = inject(BaseFilteringComponent);
8108
8403
  }
8109
8404
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxExcelStyleHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8110
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxExcelStyleHeaderComponent, isStandalone: true, selector: "igx-excel-style-header", inputs: { showPinning: ["showPinning", "showPinning", booleanAttribute], showSelecting: ["showSelecting", "showSelecting", booleanAttribute], showHiding: ["showHiding", "showHiding", booleanAttribute] }, ngImport: i0, template: "@if (esf.column) {\n <header class=\"igx-excel-filter__menu-header\">\n <h4 data-no-typography>{{ esf.column.header || esf.column.field }}</h4>\n <div class=\"igx-excel-filter__menu-header-actions\">\n @if (showSelecting) {\n <button\n type=\"button\"\n igxIconButton=\"flat\"\n (click)=\"esf.onSelect($event)\"\n [ngClass]=\"esf.column.selected ? 'igx-excel-filter__actions-selected' : 'igx-excel-filter__actions-select'\"\n [attr.aria-label]=\"esf.column.selected ? esf.grid.resourceStrings.igx_grid_excel_deselect : esf.grid.resourceStrings.igx_grid_excel_select\"\n >\n <igx-icon family=\"default\" name=\"selected\"></igx-icon>\n </button>\n }\n @if (showPinning) {\n <button\n type=\"button\"\n igxIconButton=\"flat\"\n (click)=\"esf.onPin()\"\n [attr.aria-label]=\"esf.column.pinned ? esf.grid.resourceStrings.igx_grid_excel_unpin : esf.grid.resourceStrings.igx_grid_excel_pin\"\n >\n <igx-icon family=\"default\" [name]=\"esf.column.pinned ? 'unpin' : 'pin'\"></igx-icon>\n </button>\n }\n @if (showHiding) {\n <button\n type=\"button\"\n igxIconButton=\"flat\"\n (click)=\"esf.onHideToggle()\"\n [attr.aria-label]=\"esf.column.hidden ? esf.grid.resourceStrings.igx_grid_excel_show : esf.grid.resourceStrings.igx_grid_excel_hide\"\n >\n <igx-icon family=\"default\" [name]=\"esf.column.hidden ? 'show' : 'hide'\"></igx-icon>\n </button>\n }\n </div>\n </header>\n}\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "directive", type: IgxIconButtonDirective, selector: "[igxIconButton]", inputs: ["igxIconButton"] }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
8405
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxExcelStyleHeaderComponent, isStandalone: true, selector: "igx-excel-style-header", inputs: { showPinning: ["showPinning", "showPinning", booleanAttribute], showSelecting: ["showSelecting", "showSelecting", booleanAttribute], showHiding: ["showHiding", "showHiding", booleanAttribute] }, ngImport: i0, template: "@if (esf.column) {\n <header class=\"igx-excel-filter__menu-header\">\n <h4 data-no-typography>{{ esf.column.header || esf.column.field }}</h4>\n <div class=\"igx-excel-filter__menu-header-actions\">\n @if (showSelecting) {\n <button\n type=\"button\"\n igxIconButton=\"flat\"\n (click)=\"esf.onSelect()\"\n [ngClass]=\"esf.column.selected ? 'igx-excel-filter__actions-selected' : 'igx-excel-filter__actions-select'\"\n [attr.aria-label]=\"esf.column.selected ? esf.grid.resourceStrings.igx_grid_excel_deselect : esf.grid.resourceStrings.igx_grid_excel_select\"\n >\n <igx-icon family=\"default\" name=\"selected\"></igx-icon>\n </button>\n }\n @if (showPinning) {\n <button\n type=\"button\"\n igxIconButton=\"flat\"\n (click)=\"esf.onPin()\"\n [attr.aria-label]=\"esf.column.pinned ? esf.grid.resourceStrings.igx_grid_excel_unpin : esf.grid.resourceStrings.igx_grid_excel_pin\"\n >\n <igx-icon family=\"default\" [name]=\"esf.column.pinned ? 'unpin' : 'pin'\"></igx-icon>\n </button>\n }\n @if (showHiding) {\n <button\n type=\"button\"\n igxIconButton=\"flat\"\n (click)=\"esf.onHideToggle()\"\n [attr.aria-label]=\"esf.column.hidden ? esf.grid.resourceStrings.igx_grid_excel_show : esf.grid.resourceStrings.igx_grid_excel_hide\"\n >\n <igx-icon family=\"default\" [name]=\"esf.column.hidden ? 'show' : 'hide'\"></igx-icon>\n </button>\n }\n </div>\n </header>\n}\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "directive", type: IgxIconButtonDirective, selector: "[igxIconButton]", inputs: ["igxIconButton"] }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
8111
8406
  }
8112
8407
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxExcelStyleHeaderComponent, decorators: [{
8113
8408
  type: Component,
8114
- args: [{ selector: 'igx-excel-style-header', changeDetection: ChangeDetectionStrategy.Eager, imports: [NgClass, IgxIconComponent, IgxIconButtonDirective], template: "@if (esf.column) {\n <header class=\"igx-excel-filter__menu-header\">\n <h4 data-no-typography>{{ esf.column.header || esf.column.field }}</h4>\n <div class=\"igx-excel-filter__menu-header-actions\">\n @if (showSelecting) {\n <button\n type=\"button\"\n igxIconButton=\"flat\"\n (click)=\"esf.onSelect($event)\"\n [ngClass]=\"esf.column.selected ? 'igx-excel-filter__actions-selected' : 'igx-excel-filter__actions-select'\"\n [attr.aria-label]=\"esf.column.selected ? esf.grid.resourceStrings.igx_grid_excel_deselect : esf.grid.resourceStrings.igx_grid_excel_select\"\n >\n <igx-icon family=\"default\" name=\"selected\"></igx-icon>\n </button>\n }\n @if (showPinning) {\n <button\n type=\"button\"\n igxIconButton=\"flat\"\n (click)=\"esf.onPin()\"\n [attr.aria-label]=\"esf.column.pinned ? esf.grid.resourceStrings.igx_grid_excel_unpin : esf.grid.resourceStrings.igx_grid_excel_pin\"\n >\n <igx-icon family=\"default\" [name]=\"esf.column.pinned ? 'unpin' : 'pin'\"></igx-icon>\n </button>\n }\n @if (showHiding) {\n <button\n type=\"button\"\n igxIconButton=\"flat\"\n (click)=\"esf.onHideToggle()\"\n [attr.aria-label]=\"esf.column.hidden ? esf.grid.resourceStrings.igx_grid_excel_show : esf.grid.resourceStrings.igx_grid_excel_hide\"\n >\n <igx-icon family=\"default\" [name]=\"esf.column.hidden ? 'show' : 'hide'\"></igx-icon>\n </button>\n }\n </div>\n </header>\n}\n" }]
8409
+ args: [{ selector: 'igx-excel-style-header', changeDetection: ChangeDetectionStrategy.Eager, imports: [NgClass, IgxIconComponent, IgxIconButtonDirective], template: "@if (esf.column) {\n <header class=\"igx-excel-filter__menu-header\">\n <h4 data-no-typography>{{ esf.column.header || esf.column.field }}</h4>\n <div class=\"igx-excel-filter__menu-header-actions\">\n @if (showSelecting) {\n <button\n type=\"button\"\n igxIconButton=\"flat\"\n (click)=\"esf.onSelect()\"\n [ngClass]=\"esf.column.selected ? 'igx-excel-filter__actions-selected' : 'igx-excel-filter__actions-select'\"\n [attr.aria-label]=\"esf.column.selected ? esf.grid.resourceStrings.igx_grid_excel_deselect : esf.grid.resourceStrings.igx_grid_excel_select\"\n >\n <igx-icon family=\"default\" name=\"selected\"></igx-icon>\n </button>\n }\n @if (showPinning) {\n <button\n type=\"button\"\n igxIconButton=\"flat\"\n (click)=\"esf.onPin()\"\n [attr.aria-label]=\"esf.column.pinned ? esf.grid.resourceStrings.igx_grid_excel_unpin : esf.grid.resourceStrings.igx_grid_excel_pin\"\n >\n <igx-icon family=\"default\" [name]=\"esf.column.pinned ? 'unpin' : 'pin'\"></igx-icon>\n </button>\n }\n @if (showHiding) {\n <button\n type=\"button\"\n igxIconButton=\"flat\"\n (click)=\"esf.onHideToggle()\"\n [attr.aria-label]=\"esf.column.hidden ? esf.grid.resourceStrings.igx_grid_excel_show : esf.grid.resourceStrings.igx_grid_excel_hide\"\n >\n <igx-icon family=\"default\" [name]=\"esf.column.hidden ? 'show' : 'hide'\"></igx-icon>\n </button>\n }\n </div>\n </header>\n}\n" }]
8115
8410
  }], propDecorators: { showPinning: [{
8116
8411
  type: Input,
8117
8412
  args: [{ transform: booleanAttribute }]
@@ -8150,7 +8445,7 @@ class IgxExcelStyleMovingComponent {
8150
8445
  this.defaultClass = true;
8151
8446
  }
8152
8447
  get visibleColumns() {
8153
- return this.esf.grid.visibleColumns.filter((col) => !col.columnGroup);
8448
+ return this.esf.grid.visibleColumns.filter(col => !col.columnGroup);
8154
8449
  }
8155
8450
  /**
8156
8451
  * @hidden @internal
@@ -8202,9 +8497,7 @@ class IgxExcelStyleMovingComponent {
8202
8497
  else {
8203
8498
  targetColumn = this.findColumn(moveDirection, this.esf.grid.unpinnedColumns);
8204
8499
  }
8205
- if (targetColumn) {
8206
- this.esf.grid.moveColumn(this.esf.column, targetColumn, moveDirection);
8207
- }
8500
+ this.esf.grid.moveColumn(this.esf.column, targetColumn, moveDirection);
8208
8501
  }
8209
8502
  get esfSize() {
8210
8503
  const esf = this.esf;
@@ -8355,10 +8648,6 @@ class IgxExcelStyleSearchComponent {
8355
8648
  * @hidden @internal
8356
8649
  */
8357
8650
  this.displayedListData = [];
8358
- /**
8359
- * @hidden @internal
8360
- */
8361
- this.matchesCount = 0;
8362
8651
  this.activeDescendant = '';
8363
8652
  this._id = `igx-excel-style-search-${NEXT_ID++}`;
8364
8653
  this._isLoading = true;
@@ -8765,7 +9054,7 @@ class IgxExcelStyleSearchComponent {
8765
9054
  if (this.esf.column.filteringIgnoreCase && !this.isHierarchical() && !this.isTreeGridWithGroupBy() && !this.isRemote()) {
8766
9055
  const selectedValues = new Set(selectedItems.map(item => item.value.toLowerCase()));
8767
9056
  searchVal = new Set();
8768
- this.esf.grid.data?.forEach((item) => {
9057
+ this.esf.grid.data.forEach(item => {
8769
9058
  const fieldPaths = columnFieldPath(this.esf.column.field);
8770
9059
  const itemValue = resolveNestedPath(item, fieldPaths);
8771
9060
  if (typeof itemValue === "string" && selectedValues.has(itemValue.toLowerCase())) {
@@ -9036,11 +9325,11 @@ class IgxExcelStyleSearchComponent {
9036
9325
  return this.esf.grid.verticalScrollContainer.isRemote || this.esf.grid.pagingMode === GridPagingMode.Remote;
9037
9326
  }
9038
9327
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxExcelStyleSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9039
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxExcelStyleSearchComponent, isStandalone: true, selector: "igx-excel-style-search", inputs: { id: "id" }, host: { properties: { "class.igx-excel-filter__menu-main": "this.defaultClass", "attr.id": "this.id" } }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["input"], descendants: true, read: IgxInputDirective, static: true }, { propertyName: "cancelButton", first: true, predicate: ["cancelButton"], descendants: true, read: IgxButtonDirective, static: true }, { propertyName: "list", first: true, predicate: ["list"], descendants: true, read: IgxListComponent }, { propertyName: "selectAllCheckbox", first: true, predicate: ["selectAllCheckbox"], descendants: true, read: IgxCheckboxComponent }, { propertyName: "addToCurrentFilterCheckbox", first: true, predicate: ["addToCurrentFilterCheckbox"], descendants: true, read: IgxCheckboxComponent }, { propertyName: "tree", first: true, predicate: ["tree"], descendants: true, read: IgxTreeComponent }, { propertyName: "virtDir", first: true, predicate: IgxForOfDirective, descendants: true }, { propertyName: "defaultExcelStyleLoadingValuesTemplate", first: true, predicate: ["defaultExcelStyleLoadingValuesTemplate"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<igx-input-group type=\"box\">\n <igx-icon igxPrefix family=\"default\" name=\"search\"></igx-icon>\n <input\n #input\n igxInput\n tabindex=\"0\"\n [(ngModel)]=\"searchValue\"\n (ngModelChange)=\"filterListData()\"\n (keydown)=\"onInputKeyDown($event)\"\n [placeholder]=\"\n esf.column?.grid.resourceStrings.igx_grid_excel_search_placeholder\n \"\n autocomplete=\"off\"\n />\n @if (searchValue || searchValue === 0) {\n <igx-suffix>\n <igx-icon\n family=\"default\"\n name=\"input_clear\"\n (click)=\"clearInput()\"\n tabindex=\"0\"\n >\n </igx-icon>\n </igx-suffix>\n }\n</igx-input-group>\n\n@if (!isHierarchical()) {\n <igx-list\n #list\n role=\"listbox\"\n [isLoading]=\"isLoading\"\n (keydown)=\"handleKeyDown($event)\"\n tabindex=\"0\"\n [attr.aria-activedescendant]=\"this.activeDescendant\"\n (focus)=\"onFocus()\"\n (focusout)=\"onFocusOut()\"\n >\n <div style=\"overflow: hidden; position: relative\">\n <igx-list-item\n [class.igx-list__item-base--active]=\"\n focusedItem?.id === this.getItemId(i)\n \"\n [attr.id]=\"getItemId(i)\"\n role=\"option\"\n *igxFor=\"\n let item of displayedListData;\n index as i;\n scrollOrientation: 'vertical';\n containerSize: containerSize;\n itemSize: itemSize\n \"\n >\n <igx-checkbox\n [value]=\"item\"\n [tabindex]=\"-1\"\n [checked]=\"$safeNavigationMigration(item?.isSelected)\"\n [disableRipple]=\"true\"\n [indeterminate]=\"$safeNavigationMigration(item?.indeterminate)\"\n [disableTransitions]=\"true\"\n (change)=\"onCheckboxChange($event)\"\n >\n {{ item.label }}\n </igx-checkbox>\n </igx-list-item>\n </div>\n <ng-template igxDataLoading>\n <div class=\"igx-excel-filter__loading\">\n <ng-container *ngTemplateOutlet=\"valuesLoadingTemplate\"> </ng-container>\n </div>\n </ng-template>\n <ng-template igxEmptyList>\n <ng-container *ngTemplateOutlet=\"emptySearch\"></ng-container>\n </ng-template>\n <div\n class=\"igx-excel-filter__filter-results\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{\n esf.grid?.resourceStrings.igx_grid_excel_matches_count ? \n esf.grid?.resourceStrings.igx_grid_excel_matches_count.replace(\n '{0}',\n matchesCount.toString()\n ) : ''\n }}\n </div>\n </igx-list>\n}\n\n@if (isHierarchical()) {\n <div class=\"igx-excel-filter__tree\">\n @if (!isTreeEmpty()) {\n <div class=\"igx-excel-filter__tree-alike\">\n <div class=\"igx-excel-filter__tree-alike-item\">\n <igx-checkbox\n #selectAllCheckbox\n [value]=\"selectAllItem\"\n [checked]=\"selectAllItem?.isSelected\"\n [disableRipple]=\"true\"\n [indeterminate]=\"selectAllItem?.indeterminate\"\n [disableTransitions]=\"true\"\n (change)=\"onSelectAllCheckboxChange($event)\"\n >\n {{ selectAllItem.label }}\n </igx-checkbox>\n </div>\n @if (searchValue) {\n <div class=\"igx-excel-filter__tree-alike-item\">\n <igx-checkbox\n #addToCurrentFilterCheckbox\n [value]=\"addToCurrentFilterItem\"\n [checked]=\"addToCurrentFilterItem.isSelected\"\n [disableRipple]=\"true\"\n [disableTransitions]=\"true\"\n >\n {{ addToCurrentFilterItem.label }}\n </igx-checkbox>\n </div>\n }\n </div>\n }\n <igx-tree\n #tree\n selection=\"Cascading\"\n (nodeSelection)=\"onNodeSelectionChange($event)\"\n >\n @for (item of displayedListData; track item.value) {\n <igx-tree-node [data]=\"item\" [selected]=\"item.isSelected\">\n <div>{{ item.label }}</div>\n @for (childLevel1 of item.children; track childLevel1.value) {\n <igx-tree-node\n [data]=\"childLevel1\"\n [selected]=\"childLevel1.isSelected\"\n >\n <div>{{ childLevel1.label }}</div>\n @for (\n childLevel2 of childLevel1.children;\n track childLevel2.value\n ) {\n <igx-tree-node\n [data]=\"childLevel2\"\n [selected]=\"childLevel2.isSelected\"\n >\n <div>{{ childLevel2.label }}</div>\n @for (\n childLevel3 of childLevel2.children;\n track childLevel3.value\n ) {\n <igx-tree-node\n [data]=\"childLevel3\"\n [selected]=\"childLevel3.isSelected\"\n >\n <div>{{ childLevel3.label }}</div>\n @for (\n childLevel4 of childLevel3.children;\n track childLevel4.value\n ) {\n <igx-tree-node\n [data]=\"childLevel4\"\n [selected]=\"childLevel4.isSelected\"\n >\n <div>{{ childLevel4.label }}</div>\n @for (\n childLevel5 of childLevel4.children;\n track childLevel5.value\n ) {\n <igx-tree-node\n [data]=\"childLevel5\"\n [selected]=\"childLevel5.isSelected\"\n >\n <div>{{ childLevel5.label }}</div>\n @for (\n childLevel6 of childLevel5.children;\n track childLevel6.value\n ) {\n <igx-tree-node\n [data]=\"childLevel6\"\n [selected]=\"childLevel6.isSelected\"\n >\n <div>{{ childLevel6.label }}</div>\n @for (\n childLevel7 of childLevel6.children;\n track childLevel7.value\n ) {\n <igx-tree-node\n [data]=\"childLevel7\"\n [selected]=\"childLevel7.isSelected\"\n >\n <div>{{ childLevel7.label }}</div>\n @for (\n childLevel8 of childLevel7.children;\n track childLevel8.value\n ) {\n <igx-tree-node\n [data]=\"childLevel8\"\n [selected]=\"childLevel8.isSelected\"\n >\n <div>{{ childLevel8.label }}</div>\n @for (\n childLevel9 of childLevel8.children;\n track childLevel9.value\n ) {\n <igx-tree-node\n [data]=\"childLevel9\"\n [selected]=\"\n childLevel9.isSelected\n \"\n >\n <div>{{ childLevel9.label }}</div>\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree>\n <ng-template igxDataLoading>\n <div class=\"igx-excel-filter__loading\">\n <ng-container *ngTemplateOutlet=\"valuesLoadingTemplate\"> </ng-container>\n </div>\n </ng-template>\n @if (isTreeEmpty()) {\n <ng-container *ngTemplateOutlet=\"emptySearch\"></ng-container>\n }\n </div>\n}\n\n<ng-template #emptySearch>\n <div class=\"igx-excel-filter__empty\">\n {{ esf.grid?.resourceStrings.igx_grid_excel_no_matches }}\n </div>\n</ng-template>\n\n<ng-template #defaultExcelStyleLoadingValuesTemplate>\n <igx-circular-bar [indeterminate]=\"true\"> </igx-circular-bar>\n</ng-template>\n\n<footer class=\"igx-excel-filter__menu-footer\">\n <div class=\"igx-excel-filter__cancel\">\n <button type=\"button\" #cancelButton igxButton=\"flat\" (click)=\"esf.cancel()\">\n {{ esf.grid?.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button\n type=\"button\"\n igxButton=\"contained\"\n [disabled]=\"applyButtonDisabled\"\n (click)=\"applyFilter()\"\n >\n {{ esf.grid?.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n</footer>\n", dependencies: [{ kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "directive", type: IgxPrefixDirective, selector: "[igxPrefix],[igxStart],igx-prefix" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxSuffixDirective, selector: "[igxSuffix],[igxEnd],igx-suffix" }, { kind: "component", type: IgxListComponent, selector: "igx-list", inputs: ["panEndTriggeringThreshold", "id", "allowLeftPanning", "allowRightPanning", "isLoading", "resourceStrings", "role"], outputs: ["leftPan", "rightPan", "startPan", "endPan", "resetPan", "panStateChange", "itemClicked"] }, { kind: "directive", type: IgxForOfDirective, selector: "[igxFor][igxForOf]", inputs: ["igxForOf", "igxForSizePropName", "igxForScrollOrientation", "igxForScrollContainer", "igxForContainerSize", "igxForInitialChunkSize", "igxForItemSize", "igxForTotalItemCount", "igxForTrackBy"], outputs: ["chunkLoad", "scrollbarVisibilityChanged", "chunkSizeChange", "contentSizeChange", "dataChanged", "beforeViewDestroyed", "chunkPreload"] }, { kind: "component", type: IgxListItemComponent, selector: "igx-list-item", inputs: ["isHeader", "hidden", "index", "role", "selected"] }, { kind: "component", type: IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["indeterminate", "checked", "disabled", "invalid", "readonly", "disableTransitions"] }, { kind: "directive", type: IgxDataLoadingTemplateDirective, selector: "[igxDataLoading]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IgxEmptyListTemplateDirective, selector: "[igxEmptyList]" }, { kind: "component", type: IgxTreeComponent, selector: "igx-tree", inputs: ["selection", "singleBranchExpand", "toggleNodeOnClick", "animationSettings"], outputs: ["nodeSelection", "nodeExpanding", "nodeExpanded", "nodeCollapsing", "nodeCollapsed", "activeNodeChanged"] }, { kind: "component", type: IgxTreeNodeComponent, selector: "igx-tree-node", inputs: ["data", "loading", "resourceStrings", "active", "disabled", "selected", "expanded"], outputs: ["selectedChange", "expandedChange"] }, { kind: "component", type: IgxCircularProgressBarComponent, selector: "igx-circular-bar", inputs: ["id", "textVisibility", "type"] }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
9328
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxExcelStyleSearchComponent, isStandalone: true, selector: "igx-excel-style-search", inputs: { id: "id" }, host: { properties: { "class.igx-excel-filter__menu-main": "this.defaultClass", "attr.id": "this.id" } }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["input"], descendants: true, read: IgxInputDirective, static: true }, { propertyName: "cancelButton", first: true, predicate: ["cancelButton"], descendants: true, read: IgxButtonDirective, static: true }, { propertyName: "list", first: true, predicate: ["list"], descendants: true, read: IgxListComponent }, { propertyName: "selectAllCheckbox", first: true, predicate: ["selectAllCheckbox"], descendants: true, read: IgxCheckboxComponent }, { propertyName: "addToCurrentFilterCheckbox", first: true, predicate: ["addToCurrentFilterCheckbox"], descendants: true, read: IgxCheckboxComponent }, { propertyName: "tree", first: true, predicate: ["tree"], descendants: true, read: IgxTreeComponent }, { propertyName: "virtDir", first: true, predicate: IgxForOfDirective, descendants: true }, { propertyName: "defaultExcelStyleLoadingValuesTemplate", first: true, predicate: ["defaultExcelStyleLoadingValuesTemplate"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<igx-input-group type=\"box\">\n <igx-icon igxPrefix family=\"default\" name=\"search\"></igx-icon>\n <input\n #input\n igxInput\n tabindex=\"0\"\n [(ngModel)]=\"searchValue\"\n (ngModelChange)=\"filterListData()\"\n (keydown)=\"onInputKeyDown($event)\"\n [placeholder]=\"\n esf.column?.grid.resourceStrings.igx_grid_excel_search_placeholder\n \"\n autocomplete=\"off\"\n />\n @if (searchValue || searchValue === 0) {\n <igx-suffix>\n <igx-icon\n family=\"default\"\n name=\"input_clear\"\n (click)=\"clearInput()\"\n tabindex=\"0\"\n >\n </igx-icon>\n </igx-suffix>\n }\n</igx-input-group>\n\n@if (!isHierarchical()) {\n <igx-list\n #list\n role=\"listbox\"\n [isLoading]=\"isLoading\"\n (keydown)=\"handleKeyDown($event)\"\n tabindex=\"0\"\n [attr.aria-activedescendant]=\"this.activeDescendant\"\n (focus)=\"onFocus()\"\n (focusout)=\"onFocusOut()\"\n >\n <div style=\"overflow: hidden; position: relative\">\n <igx-list-item\n [class.igx-list__item-base--active]=\"\n focusedItem?.id === this.getItemId(i)\n \"\n [attr.id]=\"getItemId(i)\"\n role=\"option\"\n *igxFor=\"\n let item of displayedListData;\n index as i;\n scrollOrientation: 'vertical';\n containerSize: containerSize;\n itemSize: itemSize\n \"\n >\n <igx-checkbox\n [value]=\"item\"\n [tabindex]=\"-1\"\n [checked]=\"$safeNavigationMigration(item?.isSelected)\"\n [disableRipple]=\"true\"\n [indeterminate]=\"$safeNavigationMigration(item?.indeterminate)\"\n [disableTransitions]=\"true\"\n (change)=\"onCheckboxChange($event)\"\n >\n {{ item.label }}\n </igx-checkbox>\n </igx-list-item>\n </div>\n <ng-template igxDataLoading>\n <div class=\"igx-excel-filter__loading\">\n <ng-container *ngTemplateOutlet=\"valuesLoadingTemplate\"> </ng-container>\n </div>\n </ng-template>\n <ng-template igxEmptyList>\n <ng-container *ngTemplateOutlet=\"emptySearch\"></ng-container>\n </ng-template>\n <div\n class=\"igx-excel-filter__filter-results\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{\n esf.grid?.resourceStrings.igx_grid_excel_matches_count.replace(\n '{0}',\n matchesCount\n )\n }}\n </div>\n </igx-list>\n}\n\n@if (isHierarchical()) {\n <div class=\"igx-excel-filter__tree\">\n @if (!isTreeEmpty()) {\n <div class=\"igx-excel-filter__tree-alike\">\n <div class=\"igx-excel-filter__tree-alike-item\">\n <igx-checkbox\n #selectAllCheckbox\n [value]=\"selectAllItem\"\n [checked]=\"$safeNavigationMigration(selectAllItem?.isSelected)\"\n [disableRipple]=\"true\"\n [indeterminate]=\"\n $safeNavigationMigration(selectAllItem?.indeterminate)\n \"\n [disableTransitions]=\"true\"\n (change)=\"onSelectAllCheckboxChange($event)\"\n >\n {{ selectAllItem.label }}\n </igx-checkbox>\n </div>\n @if (searchValue) {\n <div class=\"igx-excel-filter__tree-alike-item\">\n <igx-checkbox\n #addToCurrentFilterCheckbox\n [value]=\"addToCurrentFilterItem\"\n [checked]=\"addToCurrentFilterItem.isSelected\"\n [disableRipple]=\"true\"\n [disableTransitions]=\"true\"\n >\n {{ addToCurrentFilterItem.label }}\n </igx-checkbox>\n </div>\n }\n </div>\n }\n <igx-tree\n #tree\n selection=\"Cascading\"\n (nodeSelection)=\"onNodeSelectionChange($event)\"\n >\n @for (item of displayedListData; track item.value) {\n <igx-tree-node [data]=\"item\" [selected]=\"item.isSelected\">\n <div>{{ item.label }}</div>\n @for (childLevel1 of item.children; track childLevel1.value) {\n <igx-tree-node\n [data]=\"childLevel1\"\n [selected]=\"childLevel1.isSelected\"\n >\n <div>{{ childLevel1.label }}</div>\n @for (\n childLevel2 of childLevel1.children;\n track childLevel2.value\n ) {\n <igx-tree-node\n [data]=\"childLevel2\"\n [selected]=\"childLevel2.isSelected\"\n >\n <div>{{ childLevel2.label }}</div>\n @for (\n childLevel3 of childLevel2.children;\n track childLevel3.value\n ) {\n <igx-tree-node\n [data]=\"childLevel3\"\n [selected]=\"childLevel3.isSelected\"\n >\n <div>{{ childLevel3.label }}</div>\n @for (\n childLevel4 of childLevel3.children;\n track childLevel4.value\n ) {\n <igx-tree-node\n [data]=\"childLevel4\"\n [selected]=\"childLevel4.isSelected\"\n >\n <div>{{ childLevel4.label }}</div>\n @for (\n childLevel5 of childLevel4.children;\n track childLevel5.value\n ) {\n <igx-tree-node\n [data]=\"childLevel5\"\n [selected]=\"childLevel5.isSelected\"\n >\n <div>{{ childLevel5.label }}</div>\n @for (\n childLevel6 of childLevel5.children;\n track childLevel6.value\n ) {\n <igx-tree-node\n [data]=\"childLevel6\"\n [selected]=\"childLevel6.isSelected\"\n >\n <div>{{ childLevel6.label }}</div>\n @for (\n childLevel7 of childLevel6.children;\n track childLevel7.value\n ) {\n <igx-tree-node\n [data]=\"childLevel7\"\n [selected]=\"childLevel7.isSelected\"\n >\n <div>{{ childLevel7.label }}</div>\n @for (\n childLevel8 of childLevel7.children;\n track childLevel8.value\n ) {\n <igx-tree-node\n [data]=\"childLevel8\"\n [selected]=\"childLevel8.isSelected\"\n >\n <div>{{ childLevel8.label }}</div>\n @for (\n childLevel9 of childLevel8.children;\n track childLevel9.value\n ) {\n <igx-tree-node\n [data]=\"childLevel9\"\n [selected]=\"\n childLevel9.isSelected\n \"\n >\n <div>{{ childLevel9.label }}</div>\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree>\n <ng-template igxDataLoading>\n <div class=\"igx-excel-filter__loading\">\n <ng-container *ngTemplateOutlet=\"valuesLoadingTemplate\"> </ng-container>\n </div>\n </ng-template>\n @if (isTreeEmpty()) {\n <ng-container *ngTemplateOutlet=\"emptySearch\"></ng-container>\n }\n </div>\n}\n\n<ng-template #emptySearch>\n <div class=\"igx-excel-filter__empty\">\n {{ esf.grid?.resourceStrings.igx_grid_excel_no_matches }}\n </div>\n</ng-template>\n\n<ng-template #defaultExcelStyleLoadingValuesTemplate>\n <igx-circular-bar [indeterminate]=\"true\"> </igx-circular-bar>\n</ng-template>\n\n<footer class=\"igx-excel-filter__menu-footer\">\n <div class=\"igx-excel-filter__cancel\">\n <button type=\"button\" #cancelButton igxButton=\"flat\" (click)=\"esf.cancel()\">\n {{ esf.grid?.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button\n type=\"button\"\n igxButton=\"contained\"\n [disabled]=\"applyButtonDisabled\"\n (click)=\"applyFilter()\"\n >\n {{ esf.grid?.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n</footer>\n", dependencies: [{ kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "directive", type: IgxPrefixDirective, selector: "[igxPrefix],[igxStart],igx-prefix" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxSuffixDirective, selector: "[igxSuffix],[igxEnd],igx-suffix" }, { kind: "component", type: IgxListComponent, selector: "igx-list", inputs: ["panEndTriggeringThreshold", "id", "allowLeftPanning", "allowRightPanning", "isLoading", "resourceStrings", "role"], outputs: ["leftPan", "rightPan", "startPan", "endPan", "resetPan", "panStateChange", "itemClicked"] }, { kind: "directive", type: IgxForOfDirective, selector: "[igxFor][igxForOf]", inputs: ["igxForOf", "igxForSizePropName", "igxForScrollOrientation", "igxForScrollContainer", "igxForContainerSize", "igxForInitialChunkSize", "igxForItemSize", "igxForTotalItemCount", "igxForTrackBy"], outputs: ["chunkLoad", "scrollbarVisibilityChanged", "chunkSizeChange", "contentSizeChange", "dataChanged", "beforeViewDestroyed", "chunkPreload"] }, { kind: "component", type: IgxListItemComponent, selector: "igx-list-item", inputs: ["isHeader", "hidden", "index", "role", "selected"] }, { kind: "component", type: IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["indeterminate", "checked", "disabled", "invalid", "readonly", "disableTransitions"] }, { kind: "directive", type: IgxDataLoadingTemplateDirective, selector: "[igxDataLoading]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IgxEmptyListTemplateDirective, selector: "[igxEmptyList]" }, { kind: "component", type: IgxTreeComponent, selector: "igx-tree", inputs: ["selection", "singleBranchExpand", "toggleNodeOnClick", "animationSettings"], outputs: ["nodeSelection", "nodeExpanding", "nodeExpanded", "nodeCollapsing", "nodeCollapsed", "activeNodeChanged"] }, { kind: "component", type: IgxTreeNodeComponent, selector: "igx-tree-node", inputs: ["data", "loading", "resourceStrings", "active", "disabled", "selected", "expanded"], outputs: ["selectedChange", "expandedChange"] }, { kind: "component", type: IgxCircularProgressBarComponent, selector: "igx-circular-bar", inputs: ["id", "textVisibility", "type"] }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
9040
9329
  }
9041
9330
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxExcelStyleSearchComponent, decorators: [{
9042
9331
  type: Component,
9043
- args: [{ selector: 'igx-excel-style-search', changeDetection: ChangeDetectionStrategy.Eager, imports: [IgxInputGroupComponent, IgxIconComponent, IgxPrefixDirective, FormsModule, IgxInputDirective, IgxSuffixDirective, IgxListComponent, IgxForOfDirective, IgxListItemComponent, IgxCheckboxComponent, IgxDataLoadingTemplateDirective, NgTemplateOutlet, IgxEmptyListTemplateDirective, IgxTreeComponent, IgxTreeNodeComponent, IgxCircularProgressBarComponent, IgxButtonDirective], template: "<igx-input-group type=\"box\">\n <igx-icon igxPrefix family=\"default\" name=\"search\"></igx-icon>\n <input\n #input\n igxInput\n tabindex=\"0\"\n [(ngModel)]=\"searchValue\"\n (ngModelChange)=\"filterListData()\"\n (keydown)=\"onInputKeyDown($event)\"\n [placeholder]=\"\n esf.column?.grid.resourceStrings.igx_grid_excel_search_placeholder\n \"\n autocomplete=\"off\"\n />\n @if (searchValue || searchValue === 0) {\n <igx-suffix>\n <igx-icon\n family=\"default\"\n name=\"input_clear\"\n (click)=\"clearInput()\"\n tabindex=\"0\"\n >\n </igx-icon>\n </igx-suffix>\n }\n</igx-input-group>\n\n@if (!isHierarchical()) {\n <igx-list\n #list\n role=\"listbox\"\n [isLoading]=\"isLoading\"\n (keydown)=\"handleKeyDown($event)\"\n tabindex=\"0\"\n [attr.aria-activedescendant]=\"this.activeDescendant\"\n (focus)=\"onFocus()\"\n (focusout)=\"onFocusOut()\"\n >\n <div style=\"overflow: hidden; position: relative\">\n <igx-list-item\n [class.igx-list__item-base--active]=\"\n focusedItem?.id === this.getItemId(i)\n \"\n [attr.id]=\"getItemId(i)\"\n role=\"option\"\n *igxFor=\"\n let item of displayedListData;\n index as i;\n scrollOrientation: 'vertical';\n containerSize: containerSize;\n itemSize: itemSize\n \"\n >\n <igx-checkbox\n [value]=\"item\"\n [tabindex]=\"-1\"\n [checked]=\"$safeNavigationMigration(item?.isSelected)\"\n [disableRipple]=\"true\"\n [indeterminate]=\"$safeNavigationMigration(item?.indeterminate)\"\n [disableTransitions]=\"true\"\n (change)=\"onCheckboxChange($event)\"\n >\n {{ item.label }}\n </igx-checkbox>\n </igx-list-item>\n </div>\n <ng-template igxDataLoading>\n <div class=\"igx-excel-filter__loading\">\n <ng-container *ngTemplateOutlet=\"valuesLoadingTemplate\"> </ng-container>\n </div>\n </ng-template>\n <ng-template igxEmptyList>\n <ng-container *ngTemplateOutlet=\"emptySearch\"></ng-container>\n </ng-template>\n <div\n class=\"igx-excel-filter__filter-results\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{\n esf.grid?.resourceStrings.igx_grid_excel_matches_count ? \n esf.grid?.resourceStrings.igx_grid_excel_matches_count.replace(\n '{0}',\n matchesCount.toString()\n ) : ''\n }}\n </div>\n </igx-list>\n}\n\n@if (isHierarchical()) {\n <div class=\"igx-excel-filter__tree\">\n @if (!isTreeEmpty()) {\n <div class=\"igx-excel-filter__tree-alike\">\n <div class=\"igx-excel-filter__tree-alike-item\">\n <igx-checkbox\n #selectAllCheckbox\n [value]=\"selectAllItem\"\n [checked]=\"selectAllItem?.isSelected\"\n [disableRipple]=\"true\"\n [indeterminate]=\"selectAllItem?.indeterminate\"\n [disableTransitions]=\"true\"\n (change)=\"onSelectAllCheckboxChange($event)\"\n >\n {{ selectAllItem.label }}\n </igx-checkbox>\n </div>\n @if (searchValue) {\n <div class=\"igx-excel-filter__tree-alike-item\">\n <igx-checkbox\n #addToCurrentFilterCheckbox\n [value]=\"addToCurrentFilterItem\"\n [checked]=\"addToCurrentFilterItem.isSelected\"\n [disableRipple]=\"true\"\n [disableTransitions]=\"true\"\n >\n {{ addToCurrentFilterItem.label }}\n </igx-checkbox>\n </div>\n }\n </div>\n }\n <igx-tree\n #tree\n selection=\"Cascading\"\n (nodeSelection)=\"onNodeSelectionChange($event)\"\n >\n @for (item of displayedListData; track item.value) {\n <igx-tree-node [data]=\"item\" [selected]=\"item.isSelected\">\n <div>{{ item.label }}</div>\n @for (childLevel1 of item.children; track childLevel1.value) {\n <igx-tree-node\n [data]=\"childLevel1\"\n [selected]=\"childLevel1.isSelected\"\n >\n <div>{{ childLevel1.label }}</div>\n @for (\n childLevel2 of childLevel1.children;\n track childLevel2.value\n ) {\n <igx-tree-node\n [data]=\"childLevel2\"\n [selected]=\"childLevel2.isSelected\"\n >\n <div>{{ childLevel2.label }}</div>\n @for (\n childLevel3 of childLevel2.children;\n track childLevel3.value\n ) {\n <igx-tree-node\n [data]=\"childLevel3\"\n [selected]=\"childLevel3.isSelected\"\n >\n <div>{{ childLevel3.label }}</div>\n @for (\n childLevel4 of childLevel3.children;\n track childLevel4.value\n ) {\n <igx-tree-node\n [data]=\"childLevel4\"\n [selected]=\"childLevel4.isSelected\"\n >\n <div>{{ childLevel4.label }}</div>\n @for (\n childLevel5 of childLevel4.children;\n track childLevel5.value\n ) {\n <igx-tree-node\n [data]=\"childLevel5\"\n [selected]=\"childLevel5.isSelected\"\n >\n <div>{{ childLevel5.label }}</div>\n @for (\n childLevel6 of childLevel5.children;\n track childLevel6.value\n ) {\n <igx-tree-node\n [data]=\"childLevel6\"\n [selected]=\"childLevel6.isSelected\"\n >\n <div>{{ childLevel6.label }}</div>\n @for (\n childLevel7 of childLevel6.children;\n track childLevel7.value\n ) {\n <igx-tree-node\n [data]=\"childLevel7\"\n [selected]=\"childLevel7.isSelected\"\n >\n <div>{{ childLevel7.label }}</div>\n @for (\n childLevel8 of childLevel7.children;\n track childLevel8.value\n ) {\n <igx-tree-node\n [data]=\"childLevel8\"\n [selected]=\"childLevel8.isSelected\"\n >\n <div>{{ childLevel8.label }}</div>\n @for (\n childLevel9 of childLevel8.children;\n track childLevel9.value\n ) {\n <igx-tree-node\n [data]=\"childLevel9\"\n [selected]=\"\n childLevel9.isSelected\n \"\n >\n <div>{{ childLevel9.label }}</div>\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree>\n <ng-template igxDataLoading>\n <div class=\"igx-excel-filter__loading\">\n <ng-container *ngTemplateOutlet=\"valuesLoadingTemplate\"> </ng-container>\n </div>\n </ng-template>\n @if (isTreeEmpty()) {\n <ng-container *ngTemplateOutlet=\"emptySearch\"></ng-container>\n }\n </div>\n}\n\n<ng-template #emptySearch>\n <div class=\"igx-excel-filter__empty\">\n {{ esf.grid?.resourceStrings.igx_grid_excel_no_matches }}\n </div>\n</ng-template>\n\n<ng-template #defaultExcelStyleLoadingValuesTemplate>\n <igx-circular-bar [indeterminate]=\"true\"> </igx-circular-bar>\n</ng-template>\n\n<footer class=\"igx-excel-filter__menu-footer\">\n <div class=\"igx-excel-filter__cancel\">\n <button type=\"button\" #cancelButton igxButton=\"flat\" (click)=\"esf.cancel()\">\n {{ esf.grid?.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button\n type=\"button\"\n igxButton=\"contained\"\n [disabled]=\"applyButtonDisabled\"\n (click)=\"applyFilter()\"\n >\n {{ esf.grid?.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n</footer>\n" }]
9332
+ args: [{ selector: 'igx-excel-style-search', changeDetection: ChangeDetectionStrategy.Eager, imports: [IgxInputGroupComponent, IgxIconComponent, IgxPrefixDirective, FormsModule, IgxInputDirective, IgxSuffixDirective, IgxListComponent, IgxForOfDirective, IgxListItemComponent, IgxCheckboxComponent, IgxDataLoadingTemplateDirective, NgTemplateOutlet, IgxEmptyListTemplateDirective, IgxTreeComponent, IgxTreeNodeComponent, IgxCircularProgressBarComponent, IgxButtonDirective], template: "<igx-input-group type=\"box\">\n <igx-icon igxPrefix family=\"default\" name=\"search\"></igx-icon>\n <input\n #input\n igxInput\n tabindex=\"0\"\n [(ngModel)]=\"searchValue\"\n (ngModelChange)=\"filterListData()\"\n (keydown)=\"onInputKeyDown($event)\"\n [placeholder]=\"\n esf.column?.grid.resourceStrings.igx_grid_excel_search_placeholder\n \"\n autocomplete=\"off\"\n />\n @if (searchValue || searchValue === 0) {\n <igx-suffix>\n <igx-icon\n family=\"default\"\n name=\"input_clear\"\n (click)=\"clearInput()\"\n tabindex=\"0\"\n >\n </igx-icon>\n </igx-suffix>\n }\n</igx-input-group>\n\n@if (!isHierarchical()) {\n <igx-list\n #list\n role=\"listbox\"\n [isLoading]=\"isLoading\"\n (keydown)=\"handleKeyDown($event)\"\n tabindex=\"0\"\n [attr.aria-activedescendant]=\"this.activeDescendant\"\n (focus)=\"onFocus()\"\n (focusout)=\"onFocusOut()\"\n >\n <div style=\"overflow: hidden; position: relative\">\n <igx-list-item\n [class.igx-list__item-base--active]=\"\n focusedItem?.id === this.getItemId(i)\n \"\n [attr.id]=\"getItemId(i)\"\n role=\"option\"\n *igxFor=\"\n let item of displayedListData;\n index as i;\n scrollOrientation: 'vertical';\n containerSize: containerSize;\n itemSize: itemSize\n \"\n >\n <igx-checkbox\n [value]=\"item\"\n [tabindex]=\"-1\"\n [checked]=\"$safeNavigationMigration(item?.isSelected)\"\n [disableRipple]=\"true\"\n [indeterminate]=\"$safeNavigationMigration(item?.indeterminate)\"\n [disableTransitions]=\"true\"\n (change)=\"onCheckboxChange($event)\"\n >\n {{ item.label }}\n </igx-checkbox>\n </igx-list-item>\n </div>\n <ng-template igxDataLoading>\n <div class=\"igx-excel-filter__loading\">\n <ng-container *ngTemplateOutlet=\"valuesLoadingTemplate\"> </ng-container>\n </div>\n </ng-template>\n <ng-template igxEmptyList>\n <ng-container *ngTemplateOutlet=\"emptySearch\"></ng-container>\n </ng-template>\n <div\n class=\"igx-excel-filter__filter-results\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{\n esf.grid?.resourceStrings.igx_grid_excel_matches_count.replace(\n '{0}',\n matchesCount\n )\n }}\n </div>\n </igx-list>\n}\n\n@if (isHierarchical()) {\n <div class=\"igx-excel-filter__tree\">\n @if (!isTreeEmpty()) {\n <div class=\"igx-excel-filter__tree-alike\">\n <div class=\"igx-excel-filter__tree-alike-item\">\n <igx-checkbox\n #selectAllCheckbox\n [value]=\"selectAllItem\"\n [checked]=\"$safeNavigationMigration(selectAllItem?.isSelected)\"\n [disableRipple]=\"true\"\n [indeterminate]=\"\n $safeNavigationMigration(selectAllItem?.indeterminate)\n \"\n [disableTransitions]=\"true\"\n (change)=\"onSelectAllCheckboxChange($event)\"\n >\n {{ selectAllItem.label }}\n </igx-checkbox>\n </div>\n @if (searchValue) {\n <div class=\"igx-excel-filter__tree-alike-item\">\n <igx-checkbox\n #addToCurrentFilterCheckbox\n [value]=\"addToCurrentFilterItem\"\n [checked]=\"addToCurrentFilterItem.isSelected\"\n [disableRipple]=\"true\"\n [disableTransitions]=\"true\"\n >\n {{ addToCurrentFilterItem.label }}\n </igx-checkbox>\n </div>\n }\n </div>\n }\n <igx-tree\n #tree\n selection=\"Cascading\"\n (nodeSelection)=\"onNodeSelectionChange($event)\"\n >\n @for (item of displayedListData; track item.value) {\n <igx-tree-node [data]=\"item\" [selected]=\"item.isSelected\">\n <div>{{ item.label }}</div>\n @for (childLevel1 of item.children; track childLevel1.value) {\n <igx-tree-node\n [data]=\"childLevel1\"\n [selected]=\"childLevel1.isSelected\"\n >\n <div>{{ childLevel1.label }}</div>\n @for (\n childLevel2 of childLevel1.children;\n track childLevel2.value\n ) {\n <igx-tree-node\n [data]=\"childLevel2\"\n [selected]=\"childLevel2.isSelected\"\n >\n <div>{{ childLevel2.label }}</div>\n @for (\n childLevel3 of childLevel2.children;\n track childLevel3.value\n ) {\n <igx-tree-node\n [data]=\"childLevel3\"\n [selected]=\"childLevel3.isSelected\"\n >\n <div>{{ childLevel3.label }}</div>\n @for (\n childLevel4 of childLevel3.children;\n track childLevel4.value\n ) {\n <igx-tree-node\n [data]=\"childLevel4\"\n [selected]=\"childLevel4.isSelected\"\n >\n <div>{{ childLevel4.label }}</div>\n @for (\n childLevel5 of childLevel4.children;\n track childLevel5.value\n ) {\n <igx-tree-node\n [data]=\"childLevel5\"\n [selected]=\"childLevel5.isSelected\"\n >\n <div>{{ childLevel5.label }}</div>\n @for (\n childLevel6 of childLevel5.children;\n track childLevel6.value\n ) {\n <igx-tree-node\n [data]=\"childLevel6\"\n [selected]=\"childLevel6.isSelected\"\n >\n <div>{{ childLevel6.label }}</div>\n @for (\n childLevel7 of childLevel6.children;\n track childLevel7.value\n ) {\n <igx-tree-node\n [data]=\"childLevel7\"\n [selected]=\"childLevel7.isSelected\"\n >\n <div>{{ childLevel7.label }}</div>\n @for (\n childLevel8 of childLevel7.children;\n track childLevel8.value\n ) {\n <igx-tree-node\n [data]=\"childLevel8\"\n [selected]=\"childLevel8.isSelected\"\n >\n <div>{{ childLevel8.label }}</div>\n @for (\n childLevel9 of childLevel8.children;\n track childLevel9.value\n ) {\n <igx-tree-node\n [data]=\"childLevel9\"\n [selected]=\"\n childLevel9.isSelected\n \"\n >\n <div>{{ childLevel9.label }}</div>\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree-node>\n }\n </igx-tree>\n <ng-template igxDataLoading>\n <div class=\"igx-excel-filter__loading\">\n <ng-container *ngTemplateOutlet=\"valuesLoadingTemplate\"> </ng-container>\n </div>\n </ng-template>\n @if (isTreeEmpty()) {\n <ng-container *ngTemplateOutlet=\"emptySearch\"></ng-container>\n }\n </div>\n}\n\n<ng-template #emptySearch>\n <div class=\"igx-excel-filter__empty\">\n {{ esf.grid?.resourceStrings.igx_grid_excel_no_matches }}\n </div>\n</ng-template>\n\n<ng-template #defaultExcelStyleLoadingValuesTemplate>\n <igx-circular-bar [indeterminate]=\"true\"> </igx-circular-bar>\n</ng-template>\n\n<footer class=\"igx-excel-filter__menu-footer\">\n <div class=\"igx-excel-filter__cancel\">\n <button type=\"button\" #cancelButton igxButton=\"flat\" (click)=\"esf.cancel()\">\n {{ esf.grid?.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button\n type=\"button\"\n igxButton=\"contained\"\n [disabled]=\"applyButtonDisabled\"\n (click)=\"applyFilter()\"\n >\n {{ esf.grid?.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n</footer>\n" }]
9044
9333
  }], ctorParameters: () => [], propDecorators: { defaultClass: [{
9045
9334
  type: HostBinding,
9046
9335
  args: ['class.igx-excel-filter__menu-main']
@@ -9083,11 +9372,11 @@ class IgxExcelStyleSelectingComponent {
9083
9372
  this.esf = inject(BaseFilteringComponent);
9084
9373
  }
9085
9374
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxExcelStyleSelectingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9086
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxExcelStyleSelectingComponent, isStandalone: true, selector: "igx-excel-style-selecting", ngImport: i0, template: "@if (esf.column) {\n <div\n [ngClass]=\"esf.column.selected ? 'igx-excel-filter__actions-selected' : 'igx-excel-filter__actions-select'\"\n tabindex=\"0\"\n (click)=\"esf.onSelect($event)\"\n role=\"button\"\n [attr.aria-pressed]=\"esf.column.selected\">\n <span>{{esf.grid.resourceStrings.igx_grid_excel_select }}</span>\n <igx-icon family=\"default\" name=\"selected\"></igx-icon>\n </div>\n}\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
9375
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxExcelStyleSelectingComponent, isStandalone: true, selector: "igx-excel-style-selecting", ngImport: i0, template: "@if (esf.column) {\n <div\n [ngClass]=\"esf.column.selected ? 'igx-excel-filter__actions-selected' : 'igx-excel-filter__actions-select'\"\n tabindex=\"0\"\n (click)=\"esf.onSelect()\"\n role=\"button\"\n [attr.aria-pressed]=\"esf.column.selected\">\n <span>{{esf.grid.resourceStrings.igx_grid_excel_select }}</span>\n <igx-icon family=\"default\" name=\"selected\"></igx-icon>\n </div>\n}\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
9087
9376
  }
9088
9377
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxExcelStyleSelectingComponent, decorators: [{
9089
9378
  type: Component,
9090
- args: [{ selector: 'igx-excel-style-selecting', changeDetection: ChangeDetectionStrategy.Eager, imports: [NgClass, IgxIconComponent], template: "@if (esf.column) {\n <div\n [ngClass]=\"esf.column.selected ? 'igx-excel-filter__actions-selected' : 'igx-excel-filter__actions-select'\"\n tabindex=\"0\"\n (click)=\"esf.onSelect($event)\"\n role=\"button\"\n [attr.aria-pressed]=\"esf.column.selected\">\n <span>{{esf.grid.resourceStrings.igx_grid_excel_select }}</span>\n <igx-icon family=\"default\" name=\"selected\"></igx-icon>\n </div>\n}\n" }]
9379
+ args: [{ selector: 'igx-excel-style-selecting', changeDetection: ChangeDetectionStrategy.Eager, imports: [NgClass, IgxIconComponent], template: "@if (esf.column) {\n <div\n [ngClass]=\"esf.column.selected ? 'igx-excel-filter__actions-selected' : 'igx-excel-filter__actions-select'\"\n tabindex=\"0\"\n (click)=\"esf.onSelect()\"\n role=\"button\"\n [attr.aria-pressed]=\"esf.column.selected\">\n <span>{{esf.grid.resourceStrings.igx_grid_excel_select }}</span>\n <igx-icon family=\"default\" name=\"selected\"></igx-icon>\n </div>\n}\n" }]
9091
9380
  }] });
9092
9381
 
9093
9382
  /**
@@ -9289,7 +9578,6 @@ class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent {
9289
9578
  if (this._minHeight || this._minHeight === 0) {
9290
9579
  return this._minHeight;
9291
9580
  }
9292
- return undefined;
9293
9581
  }
9294
9582
  /**
9295
9583
  * Sets the minimum height.
@@ -9314,7 +9602,6 @@ class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent {
9314
9602
  if (this._maxHeight) {
9315
9603
  return this._maxHeight;
9316
9604
  }
9317
- return undefined;
9318
9605
  }
9319
9606
  /**
9320
9607
  * Sets the maximum height.
@@ -9333,7 +9620,7 @@ class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent {
9333
9620
  */
9334
9621
  ngOnDestroy() {
9335
9622
  this.subscriptions?.unsubscribe();
9336
- this.overlayComponentId = '';
9623
+ delete this.overlayComponentId;
9337
9624
  }
9338
9625
  /**
9339
9626
  * @hidden @internal
@@ -9372,12 +9659,12 @@ class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent {
9372
9659
  /**
9373
9660
  * @hidden @internal
9374
9661
  */
9375
- onSelect(event) {
9662
+ onSelect() {
9376
9663
  if (!this.column.selected) {
9377
- this.grid.selectionService.selectColumn(this.column.field, this.grid.columnSelection === GridSelectionMode.single, false, event);
9664
+ this.grid.selectionService.selectColumn(this.column.field, this.grid.columnSelection === GridSelectionMode.single);
9378
9665
  }
9379
9666
  else {
9380
- this.grid.selectionService.deselectColumn(this.column.field, event);
9667
+ this.grid.selectionService.deselectColumn(this.column.field);
9381
9668
  }
9382
9669
  this.grid.notifyChanges();
9383
9670
  }
@@ -9499,7 +9786,7 @@ class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent {
9499
9786
  this.loadingStart.emit();
9500
9787
  const expressionsTree = this.getColumnFilterExpressionsTree();
9501
9788
  const prevColumn = this.column;
9502
- this.grid.uniqueColumnValuesStrategy?.(this.column, expressionsTree, (values) => {
9789
+ this.grid.uniqueColumnValuesStrategy(this.column, expressionsTree, (values) => {
9503
9790
  if (!this.column || this.column !== prevColumn) {
9504
9791
  return;
9505
9792
  }
@@ -10027,7 +10314,7 @@ class IgxGridEditingActionsComponent extends IgxGridActionsBaseDirective {
10027
10314
  */
10028
10315
  get disabled() {
10029
10316
  if (!this.isRow(this.strip.context)) {
10030
- return undefined;
10317
+ return;
10031
10318
  }
10032
10319
  return this.strip.context.disabled;
10033
10320
  }
@@ -10170,7 +10457,7 @@ class IgxGridPinningActionsComponent extends IgxGridActionsBaseDirective {
10170
10457
  */
10171
10458
  get pinned() {
10172
10459
  if (!this.isRow(this.strip.context)) {
10173
- return undefined;
10460
+ return;
10174
10461
  }
10175
10462
  const context = this.strip.context;
10176
10463
  if (context && !this.iconsRendered) {
@@ -10187,7 +10474,7 @@ class IgxGridPinningActionsComponent extends IgxGridActionsBaseDirective {
10187
10474
  */
10188
10475
  get inPinnedArea() {
10189
10476
  if (!this.isRow(this.strip.context)) {
10190
- return undefined;
10477
+ return;
10191
10478
  }
10192
10479
  const context = this.strip.context;
10193
10480
  return this.pinned && !context.disabled;
@@ -10200,7 +10487,7 @@ class IgxGridPinningActionsComponent extends IgxGridActionsBaseDirective {
10200
10487
  */
10201
10488
  get pinnedTop() {
10202
10489
  if (!this.isRow(this.strip.context)) {
10203
- return undefined;
10490
+ return;
10204
10491
  }
10205
10492
  return this.strip.context.grid.isRowPinningToTop;
10206
10493
  }
@@ -10317,7 +10604,7 @@ class IgxColumnMovingDragDirective extends IgxDragDirective {
10317
10604
  this._unsubscribe();
10318
10605
  super.ngOnDestroy();
10319
10606
  }
10320
- cancelMove(event) {
10607
+ onEscape(event) {
10321
10608
  this.cms.cancelDrop = true;
10322
10609
  this.onPointerUp(event);
10323
10610
  }
@@ -10338,7 +10625,7 @@ class IgxColumnMovingDragDirective extends IgxDragDirective {
10338
10625
  this.column.grid.columnMovingStart.emit(movingStartArgs);
10339
10626
  this.subscription$ = fromEvent(this.column.grid.document.defaultView, 'keydown').pipe(takeUntil(this._destroy)).subscribe((ev) => {
10340
10627
  if (ev.key === this.platformUtil.KEYMAP.ESCAPE) {
10341
- this.cancelMove(event);
10628
+ this.onEscape(ev);
10342
10629
  }
10343
10630
  });
10344
10631
  }
@@ -10354,7 +10641,7 @@ class IgxColumnMovingDragDirective extends IgxDragDirective {
10354
10641
  };
10355
10642
  this.column.grid.columnMoving.emit(args);
10356
10643
  if (args.cancel) {
10357
- this.cancelMove(event);
10644
+ this.onEscape(event);
10358
10645
  }
10359
10646
  }
10360
10647
  }
@@ -10809,7 +11096,7 @@ class IgxGroupAreaDropDirective extends IgxDropDirective {
10809
11096
  if (!this.columnBelongsToGrid(column)) {
10810
11097
  return;
10811
11098
  }
10812
- drag.icon.innerText = 'block';
11099
+ event.detail.owner.icon.innerText = 'block';
10813
11100
  this.hovered = false;
10814
11101
  }
10815
11102
  closestParentByAttr(elem, attr) {
@@ -11001,7 +11288,7 @@ class IgxColumnResizingService {
11001
11288
  let newCombinedSpan = updatedCombinedSpan;
11002
11289
  const newColsToResize = [];
11003
11290
  columnsToResize.forEach((col) => {
11004
- const currentResizeWidth = parseFloat(col.target.calcWidth?.toString() || col.target.defaultWidth);
11291
+ const currentResizeWidth = parseFloat(col.target.calcWidth);
11005
11292
  const resizeScaled = (diff / updatedCombinedSpan) * col.target.gridColumnSpan;
11006
11293
  const colWidth = col.target.width;
11007
11294
  const isPercentageWidth = colWidth && typeof colWidth === 'string' && colWidth.indexOf('%') !== -1;
@@ -11320,7 +11607,7 @@ class IgxGridHeaderComponent {
11320
11607
  triggerSort() {
11321
11608
  const groupingExpr = this.grid.groupingExpressions ?
11322
11609
  this.grid.groupingExpressions.find((expr) => expr.fieldName === this.column.field) :
11323
- this.grid.groupArea?.expressions ? this.grid.groupArea?.expressions.find(expr => expr.fieldName === this.column.field) : null;
11610
+ this.grid.groupArea?.expressions ? this.grid.groupArea?.expressions.find((expr) => expr.fieldName === this.column.field) : null;
11324
11611
  const sortDir = groupingExpr ?
11325
11612
  this.sortDirection + 1 > SortingDirection.Desc ? SortingDirection.Asc : SortingDirection.Desc
11326
11613
  : this.sortDirection + 1 > SortingDirection.Desc ? SortingDirection.None : this.sortDirection + 1;
@@ -11471,7 +11758,7 @@ class IgxFilteringService {
11471
11758
  ...{ target: filterIconTarget }
11472
11759
  });
11473
11760
  this._overlayService.opening
11474
- .pipe(first(overlay => overlay.id === id), takeUntil(this.destroy$))
11761
+ .pipe(first$1(overlay => overlay.id === id), takeUntil(this.destroy$))
11475
11762
  .subscribe((event) => {
11476
11763
  if (event.componentRef) {
11477
11764
  event.componentRef.instance.initialize(column, this._overlayService);
@@ -11479,13 +11766,13 @@ class IgxFilteringService {
11479
11766
  }
11480
11767
  this.lastActiveNode = this.grid.navigation.activeNode;
11481
11768
  });
11482
- this._overlayService.opened.pipe(first(overlay => overlay.id === id), takeUntil(this.destroy$)).subscribe((event) => {
11769
+ this._overlayService.opened.pipe(first$1(overlay => overlay.id === id), takeUntil(this.destroy$)).subscribe((event) => {
11483
11770
  if (event.componentRef) {
11484
11771
  event.componentRef.instance.populateData();
11485
11772
  }
11486
11773
  });
11487
11774
  this._overlayService.closed
11488
- .pipe(first(overlay => overlay.id === id), takeUntil(this.destroy$))
11775
+ .pipe(first$1(overlay => overlay.id === id), takeUntil(this.destroy$))
11489
11776
  .subscribe(() => {
11490
11777
  this._overlayService.detach(id);
11491
11778
  this.grid.navigation.activeNode = this.lastActiveNode;
@@ -11902,7 +12189,7 @@ class IgxFilteringService {
11902
12189
  let count = 0;
11903
12190
  let operand;
11904
12191
  for (let i = 0; i < expressions.filteringOperands.length; i++) {
11905
- operand = expressions.filteringOperands[i];
12192
+ operand = expressions[i];
11906
12193
  if (operand && isTree(operand)) {
11907
12194
  if (operand.operator === FilteringLogic.And) {
11908
12195
  count++;
@@ -12094,7 +12381,7 @@ class IgxGridFilteringCellComponent {
12094
12381
  }
12095
12382
  }
12096
12383
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxGridFilteringCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12097
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxGridFilteringCellComponent, isStandalone: true, selector: "igx-grid-filtering-cell", inputs: { column: "column" }, host: { properties: { "class": "this.styleClasses", "class.igx-grid-th--pinned": "this.pinnedCss", "class.igx-grid-th--pinned-last": "this.pinnedLastCss", "class.igx-grid-th--pinned-first": "this.pinnedFirstCSS", "attr.role": "this.role" } }, viewQueries: [{ propertyName: "emptyFilter", first: true, predicate: ["emptyFilter"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultFilter", first: true, predicate: ["defaultFilter"], descendants: true, read: TemplateRef, static: true }, { propertyName: "complexFilter", first: true, predicate: ["complexFilter"], descendants: true, read: TemplateRef, static: true }, { propertyName: "chipsArea", first: true, predicate: ["chipsArea"], descendants: true, read: IgxChipsAreaComponent }, { propertyName: "moreIcon", first: true, predicate: ["moreIcon"], descendants: true, read: ElementRef }, { propertyName: "ghostChip", first: true, predicate: ["ghostChip"], descendants: true, read: IgxChipComponent }, { propertyName: "complexChip", first: true, predicate: ["complexChip"], descendants: true, read: IgxChipComponent }], ngImport: i0, template: "<ng-template #emptyFilter>\n <igx-chips-area [attr.draggable]=\"false\" class=\"igx-filtering-chips\">\n <igx-chip #ghostChip [attr.draggable]=\"false\" (click)=\"onChipClicked()\" [tabIndex]=\"-1\" [style.--ig-size]=\"filteringElementsSize\">\n <igx-icon\n [attr.draggable]=\"false\"\n igxPrefix\n family=\"default\"\n name=\"filter_list\"\n ></igx-icon>\n <span [attr.draggable]=\"false\">{{filteringService.grid.resourceStrings.igx_grid_filter}}</span>\n </igx-chip>\n </igx-chips-area>\n</ng-template>\n\n<ng-template #defaultFilter>\n <igx-chips-area #chipsArea class=\"igx-filtering-chips\">\n <!-- expressionsList items re-created on refreshExpressions(), track stable expression -->\n @for (item of expressionsList; track item.expression; let last = $last; let index = $index) {\n @if (isChipVisible(index)) {\n <igx-chip\n [removable]=\"true\"\n [tabIndex]=\"-1\"\n [style.--ig-size]=\"filteringElementsSize\"\n (click)=\"onChipClicked(item.expression)\"\n (remove)=\"onChipRemoved($event, item)\">\n <igx-icon igxPrefix\n family=\"default\"\n [name]=\"item.expression.condition!.iconName\">\n </igx-icon>\n <span #label>\n {{filteringService.getChipLabel(item.expression)}}\n </span>\n </igx-chip>\n }\n @if (!last && isChipVisible(index + 1)) {\n <span class=\"igx-filtering-chips__connector\">{{filteringService.getOperatorAsString(item.afterOperator)}}</span>\n }\n }\n <div #moreIcon [ngClass]=\"filteringIndicatorClass()\" (click)=\"onChipClicked()\">\n <igx-icon family=\"default\" name=\"filter_list\"></igx-icon>\n <igx-badge [value]=\"moreFiltersCount\"></igx-badge>\n </div>\n </igx-chips-area>\n</ng-template>\n\n<ng-template #complexFilter>\n <igx-chip #complexChip [removable]=\"true\" (remove)=\"clearFiltering()\" [tabIndex]=\"-1\" [style.--ig-size]=\"filteringElementsSize\">\n <igx-icon igxPrefix family=\"default\" name=\"filter_list\"></igx-icon>\n <span>{{filteringService.grid.resourceStrings.igx_grid_complex_filter}}</span>\n </igx-chip>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"template; context: context\"></ng-container>\n", dependencies: [{ kind: "component", type: IgxChipsAreaComponent, selector: "igx-chips-area", inputs: ["width", "height"], outputs: ["reorder", "selectionChange", "moveStart", "moveEnd"] }, { kind: "component", type: IgxChipComponent, selector: "igx-chip", inputs: ["variant", "id", "tabIndex", "data", "draggable", "animateOnRelease", "hideBaseOnDrag", "removable", "removeIcon", "selectable", "selectIcon", "class", "disabled", "selected", "color", "resourceStrings"], outputs: ["selectedChange", "moveStart", "moveEnd", "remove", "chipClick", "selectedChanging", "selectedChanged", "keyDown", "dragEnter", "dragLeave", "dragOver", "dragDrop"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "directive", type: IgxPrefixDirective, selector: "[igxPrefix],[igxStart],igx-prefix" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IgxBadgeComponent, selector: "igx-badge", inputs: ["id", "type", "value", "icon", "iconSet", "shape", "outlined", "dot"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12384
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxGridFilteringCellComponent, isStandalone: true, selector: "igx-grid-filtering-cell", inputs: { column: "column" }, host: { properties: { "class": "this.styleClasses", "class.igx-grid-th--pinned": "this.pinnedCss", "class.igx-grid-th--pinned-last": "this.pinnedLastCss", "class.igx-grid-th--pinned-first": "this.pinnedFirstCSS", "attr.role": "this.role" } }, viewQueries: [{ propertyName: "emptyFilter", first: true, predicate: ["emptyFilter"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultFilter", first: true, predicate: ["defaultFilter"], descendants: true, read: TemplateRef, static: true }, { propertyName: "complexFilter", first: true, predicate: ["complexFilter"], descendants: true, read: TemplateRef, static: true }, { propertyName: "chipsArea", first: true, predicate: ["chipsArea"], descendants: true, read: IgxChipsAreaComponent }, { propertyName: "moreIcon", first: true, predicate: ["moreIcon"], descendants: true, read: ElementRef }, { propertyName: "ghostChip", first: true, predicate: ["ghostChip"], descendants: true, read: IgxChipComponent }, { propertyName: "complexChip", first: true, predicate: ["complexChip"], descendants: true, read: IgxChipComponent }], ngImport: i0, template: "<ng-template #emptyFilter>\n <igx-chips-area [attr.draggable]=\"false\" class=\"igx-filtering-chips\">\n <igx-chip #ghostChip [attr.draggable]=\"false\" (click)=\"onChipClicked()\" [tabIndex]=\"-1\" [style.--ig-size]=\"filteringElementsSize\">\n <igx-icon\n [attr.draggable]=\"false\"\n igxPrefix\n family=\"default\"\n name=\"filter_list\"\n ></igx-icon>\n <span [attr.draggable]=\"false\">{{filteringService.grid.resourceStrings.igx_grid_filter}}</span>\n </igx-chip>\n </igx-chips-area>\n</ng-template>\n\n<ng-template #defaultFilter>\n <igx-chips-area #chipsArea class=\"igx-filtering-chips\">\n <!-- expressionsList items re-created on refreshExpressions(), track stable expression -->\n @for (item of expressionsList; track item.expression; let last = $last; let index = $index) {\n @if (isChipVisible(index)) {\n <igx-chip\n [removable]=\"true\"\n [tabIndex]=\"-1\"\n [style.--ig-size]=\"filteringElementsSize\"\n (click)=\"onChipClicked(item.expression)\"\n (remove)=\"onChipRemoved($event, item)\">\n <igx-icon igxPrefix\n family=\"default\"\n [name]=\"item.expression.condition.iconName\">\n </igx-icon>\n <span #label>\n {{filteringService.getChipLabel(item.expression)}}\n </span>\n </igx-chip>\n }\n @if (!last && isChipVisible(index + 1)) {\n <span class=\"igx-filtering-chips__connector\">{{filteringService.getOperatorAsString(item.afterOperator)}}</span>\n }\n }\n <div #moreIcon [ngClass]=\"filteringIndicatorClass()\" (click)=\"onChipClicked()\">\n <igx-icon family=\"default\" name=\"filter_list\"></igx-icon>\n <igx-badge [value]=\"moreFiltersCount\"></igx-badge>\n </div>\n </igx-chips-area>\n</ng-template>\n\n<ng-template #complexFilter>\n <igx-chip #complexChip [removable]=\"true\" (remove)=\"clearFiltering()\" [tabIndex]=\"-1\" [style.--ig-size]=\"filteringElementsSize\">\n <igx-icon igxPrefix family=\"default\" name=\"filter_list\"></igx-icon>\n <span>{{filteringService.grid.resourceStrings.igx_grid_complex_filter}}</span>\n </igx-chip>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"template; context: context\"></ng-container>\n", dependencies: [{ kind: "component", type: IgxChipsAreaComponent, selector: "igx-chips-area", inputs: ["width", "height"], outputs: ["reorder", "selectionChange", "moveStart", "moveEnd"] }, { kind: "component", type: IgxChipComponent, selector: "igx-chip", inputs: ["variant", "id", "tabIndex", "data", "draggable", "animateOnRelease", "hideBaseOnDrag", "removable", "removeIcon", "selectable", "selectIcon", "class", "disabled", "selected", "color", "resourceStrings"], outputs: ["selectedChange", "moveStart", "moveEnd", "remove", "chipClick", "selectedChanging", "selectedChanged", "keyDown", "dragEnter", "dragLeave", "dragOver", "dragDrop"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "directive", type: IgxPrefixDirective, selector: "[igxPrefix],[igxStart],igx-prefix" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IgxBadgeComponent, selector: "igx-badge", inputs: ["id", "type", "value", "icon", "iconSet", "shape", "outlined", "dot"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12098
12385
  }
12099
12386
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxGridFilteringCellComponent, decorators: [{
12100
12387
  type: Component,
@@ -12106,7 +12393,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
12106
12393
  NgClass,
12107
12394
  IgxBadgeComponent,
12108
12395
  NgTemplateOutlet
12109
- ], template: "<ng-template #emptyFilter>\n <igx-chips-area [attr.draggable]=\"false\" class=\"igx-filtering-chips\">\n <igx-chip #ghostChip [attr.draggable]=\"false\" (click)=\"onChipClicked()\" [tabIndex]=\"-1\" [style.--ig-size]=\"filteringElementsSize\">\n <igx-icon\n [attr.draggable]=\"false\"\n igxPrefix\n family=\"default\"\n name=\"filter_list\"\n ></igx-icon>\n <span [attr.draggable]=\"false\">{{filteringService.grid.resourceStrings.igx_grid_filter}}</span>\n </igx-chip>\n </igx-chips-area>\n</ng-template>\n\n<ng-template #defaultFilter>\n <igx-chips-area #chipsArea class=\"igx-filtering-chips\">\n <!-- expressionsList items re-created on refreshExpressions(), track stable expression -->\n @for (item of expressionsList; track item.expression; let last = $last; let index = $index) {\n @if (isChipVisible(index)) {\n <igx-chip\n [removable]=\"true\"\n [tabIndex]=\"-1\"\n [style.--ig-size]=\"filteringElementsSize\"\n (click)=\"onChipClicked(item.expression)\"\n (remove)=\"onChipRemoved($event, item)\">\n <igx-icon igxPrefix\n family=\"default\"\n [name]=\"item.expression.condition!.iconName\">\n </igx-icon>\n <span #label>\n {{filteringService.getChipLabel(item.expression)}}\n </span>\n </igx-chip>\n }\n @if (!last && isChipVisible(index + 1)) {\n <span class=\"igx-filtering-chips__connector\">{{filteringService.getOperatorAsString(item.afterOperator)}}</span>\n }\n }\n <div #moreIcon [ngClass]=\"filteringIndicatorClass()\" (click)=\"onChipClicked()\">\n <igx-icon family=\"default\" name=\"filter_list\"></igx-icon>\n <igx-badge [value]=\"moreFiltersCount\"></igx-badge>\n </div>\n </igx-chips-area>\n</ng-template>\n\n<ng-template #complexFilter>\n <igx-chip #complexChip [removable]=\"true\" (remove)=\"clearFiltering()\" [tabIndex]=\"-1\" [style.--ig-size]=\"filteringElementsSize\">\n <igx-icon igxPrefix family=\"default\" name=\"filter_list\"></igx-icon>\n <span>{{filteringService.grid.resourceStrings.igx_grid_complex_filter}}</span>\n </igx-chip>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"template; context: context\"></ng-container>\n" }]
12396
+ ], template: "<ng-template #emptyFilter>\n <igx-chips-area [attr.draggable]=\"false\" class=\"igx-filtering-chips\">\n <igx-chip #ghostChip [attr.draggable]=\"false\" (click)=\"onChipClicked()\" [tabIndex]=\"-1\" [style.--ig-size]=\"filteringElementsSize\">\n <igx-icon\n [attr.draggable]=\"false\"\n igxPrefix\n family=\"default\"\n name=\"filter_list\"\n ></igx-icon>\n <span [attr.draggable]=\"false\">{{filteringService.grid.resourceStrings.igx_grid_filter}}</span>\n </igx-chip>\n </igx-chips-area>\n</ng-template>\n\n<ng-template #defaultFilter>\n <igx-chips-area #chipsArea class=\"igx-filtering-chips\">\n <!-- expressionsList items re-created on refreshExpressions(), track stable expression -->\n @for (item of expressionsList; track item.expression; let last = $last; let index = $index) {\n @if (isChipVisible(index)) {\n <igx-chip\n [removable]=\"true\"\n [tabIndex]=\"-1\"\n [style.--ig-size]=\"filteringElementsSize\"\n (click)=\"onChipClicked(item.expression)\"\n (remove)=\"onChipRemoved($event, item)\">\n <igx-icon igxPrefix\n family=\"default\"\n [name]=\"item.expression.condition.iconName\">\n </igx-icon>\n <span #label>\n {{filteringService.getChipLabel(item.expression)}}\n </span>\n </igx-chip>\n }\n @if (!last && isChipVisible(index + 1)) {\n <span class=\"igx-filtering-chips__connector\">{{filteringService.getOperatorAsString(item.afterOperator)}}</span>\n }\n }\n <div #moreIcon [ngClass]=\"filteringIndicatorClass()\" (click)=\"onChipClicked()\">\n <igx-icon family=\"default\" name=\"filter_list\"></igx-icon>\n <igx-badge [value]=\"moreFiltersCount\"></igx-badge>\n </div>\n </igx-chips-area>\n</ng-template>\n\n<ng-template #complexFilter>\n <igx-chip #complexChip [removable]=\"true\" (remove)=\"clearFiltering()\" [tabIndex]=\"-1\" [style.--ig-size]=\"filteringElementsSize\">\n <igx-icon igxPrefix family=\"default\" name=\"filter_list\"></igx-icon>\n <span>{{filteringService.grid.resourceStrings.igx_grid_complex_filter}}</span>\n </igx-chip>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"template; context: context\"></ng-container>\n" }]
12110
12397
  }], ctorParameters: () => [], propDecorators: { column: [{
12111
12398
  type: Input
12112
12399
  }], emptyFilter: [{
@@ -12169,9 +12456,9 @@ class IgxResizeHandleDirective {
12169
12456
  /**
12170
12457
  * @hidden
12171
12458
  */
12172
- onDoubleClick(event) {
12459
+ onDoubleClick() {
12173
12460
  this._dblClick = true;
12174
- this.initResizeService(event);
12461
+ this.initResizeService();
12175
12462
  this.colResizingService.autosizeColumnOnDblClick();
12176
12463
  }
12177
12464
  /**
@@ -12228,7 +12515,7 @@ class IgxResizeHandleDirective {
12228
12515
  }
12229
12516
  }
12230
12517
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxResizeHandleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
12231
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.1", type: IgxResizeHandleDirective, isStandalone: true, selector: "[igxResizeHandle]", inputs: { column: ["igxResizeHandle", "column"] }, host: { listeners: { "dblclick": "onDoubleClick($event)" } }, ngImport: i0 }); }
12518
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.1", type: IgxResizeHandleDirective, isStandalone: true, selector: "[igxResizeHandle]", inputs: { column: ["igxResizeHandle", "column"] }, host: { listeners: { "dblclick": "onDoubleClick()" } }, ngImport: i0 }); }
12232
12519
  }
12233
12520
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxResizeHandleDirective, decorators: [{
12234
12521
  type: Directive,
@@ -12241,7 +12528,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
12241
12528
  args: ['igxResizeHandle']
12242
12529
  }], onDoubleClick: [{
12243
12530
  type: HostListener,
12244
- args: ['dblclick', ['$event']]
12531
+ args: ['dblclick']
12245
12532
  }] } });
12246
12533
 
12247
12534
  class IgxColumnMovingDropDirective extends IgxDropDirective {
@@ -12566,7 +12853,7 @@ class IgxGridHeaderGroupComponent {
12566
12853
  }
12567
12854
  else {
12568
12855
  const selectedFields = this.grid.selectionService.getSelectedColumns();
12569
- if ((selectedFields.length === columnsToSelect.length) && selectedFields.every((el) => columnsToSelect.includes(el))
12856
+ if ((selectedFields.length === columnsToSelect.length) && selectedFields.every(el => columnsToSelect.includes(el))
12570
12857
  || !clearSelection) {
12571
12858
  this.grid.selectionService.deselectColumns(columnsToSelect, event);
12572
12859
  }
@@ -12922,15 +13209,13 @@ class IgxGridFilteringRowComponent {
12922
13209
  if (!eventArgs) {
12923
13210
  return;
12924
13211
  }
12925
- // DateTime editors are bound to igxDateTimeEditor's (valueChange), which emits the
12926
- // parsed Date rather than a DOM InputEvent.
13212
+ // The 'iskeyPressed' flag is needed for a case in IE, because the input event is fired on focus and for some reason,
13213
+ // when you have a japanese character as a placeholder, on init the value here is empty string .
13214
+ const target = eventArgs.target;
12927
13215
  if (this.column.dataType === GridColumnDataType.DateTime) {
12928
13216
  this.value = eventArgs;
12929
13217
  return;
12930
13218
  }
12931
- // The 'iskeyPressed' flag is needed for a case in IE, because the input event is fired on focus and for some reason,
12932
- // when you have a japanese character as a placeholder, on init the value here is empty string .
12933
- const target = eventArgs.target;
12934
13219
  if (this.platform.isEdge && target.type !== 'number'
12935
13220
  || this.isKeyPressed || target.value || target.checkValidity()) {
12936
13221
  this.value = target.value;
@@ -13391,7 +13676,7 @@ class IgxGridFilteringRowComponent {
13391
13676
  return this.nativeElement.offsetWidth < this.NARROW_WIDTH_THRESHOLD;
13392
13677
  }
13393
13678
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxGridFilteringRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13394
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxGridFilteringRowComponent, isStandalone: true, selector: "igx-grid-filtering-row", inputs: { column: "column", value: "value" }, host: { listeners: { "keydown": "onKeydownHandler($event)" }, properties: { "class.igx-grid__filtering-row": "this.defaultCSSClass" } }, viewQueries: [{ propertyName: "defaultFilterUI", first: true, predicate: ["defaultFilterUI"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultDateUI", first: true, predicate: ["defaultDateUI"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultTimeUI", first: true, predicate: ["defaultTimeUI"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultDateTimeUI", first: true, predicate: ["defaultDateTimeUI"], descendants: true, read: TemplateRef, static: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef }, { propertyName: "dropDownConditions", first: true, predicate: ["inputGroupConditions"], descendants: true, read: IgxDropDownComponent, static: true }, { propertyName: "chipsArea", first: true, predicate: ["chipsArea"], descendants: true, read: IgxChipsAreaComponent, static: true }, { propertyName: "inputGroup", first: true, predicate: ["inputGroup"], descendants: true, read: ElementRef }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }, { propertyName: "inputGroupPrefix", first: true, predicate: ["inputGroupPrefix"], descendants: true, read: ElementRef }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }, { propertyName: "operand", first: true, predicate: ["operand"], descendants: true }, { propertyName: "closeButton", first: true, predicate: ["closeButton"], descendants: true, static: true }, { propertyName: "dropDownOperators", predicate: ["operators"], descendants: true, read: IgxDropDownComponent }], ngImport: i0, template: "<!-- Have to apply styles inline because of the overlay outlet ... -->\n<igx-drop-down\n #inputGroupConditions\n [style.--ig-size]=\"filteringElementsSize\"\n [height]=\"'200px'\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n>\n @for (condition of conditions; track condition) {\n <igx-drop-down-item\n [value]=\"condition\"\n [selected]=\"isConditionSelected(condition)\"\n >\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon\n family=\"default\"\n [name]=\"getCondition(condition).iconName\"\n ></igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{\n translateCondition(condition)\n }}</span>\n </div>\n </igx-drop-down-item>\n }\n</igx-drop-down>\n\n<ng-template #defaultFilterUI>\n <igx-input-group\n #inputGroup\n type=\"box\"\n (focusout)=\"onInputGroupFocusout()\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-prefix\n #inputGroupPrefix\n (click)=\"inputGroupPrefixClick($event)\"\n (keydown)=\"onPrefixKeyDown($event)\"\n tabindex=\"0\"\n [igxDropDownItemNavigation]=\"inputGroupConditions\"\n >\n <igx-icon family=\"default\" [name]=\"getIconName()\"></igx-icon>\n </igx-prefix>\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"placeholder\"\n autocomplete=\"off\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n [type]=\"type\"\n [readonly]=\"isUnaryCondition\"\n (click)=\"onInputClick()\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (keydown)=\"onInputKeyDown($event)\"\n (keyup)=\"onInputKeyUp()\"\n />\n @if (value || value === 0) {\n <igx-suffix>\n @if (column.dataType === 'percent') {\n <span class=\"igx-grid__filtering-row-percent-hint\">{{\n value\n | percent\n : column.pipeArgs.digitsInfo\n : filteringService.grid.locale\n }}</span>\n }\n <igx-icon\n (keydown)=\"onCommitKeyDown($event)\"\n (click)=\"onCommitClick()\"\n tabindex=\"0\"\n family=\"default\"\n name=\"confirm\"\n >\n </igx-icon>\n <igx-icon\n (keydown)=\"onClearKeyDown($event)\"\n (click)=\"onClearClick()\"\n tabindex=\"0\"\n family=\"default\"\n name=\"input_clear\"\n >\n </igx-icon>\n </igx-suffix>\n }\n </igx-input-group>\n</ng-template>\n\n<ng-template #defaultDateUI>\n <igx-date-picker\n #picker\n [(value)]=\"value\"\n [locale]=\"filteringService.grid.locale\"\n (click)=\"expression.condition!.isUnary ? null : picker.open()\"\n type=\"box\"\n [displayFormat]=\"column.pipeArgs.format!\"\n [formatter]=\"column.formatter!\"\n [placeholder]=\"placeholder\"\n [weekStart]=\"column.pipeArgs.weekStart!\"\n (keydown)=\"onInputKeyDown($event)\"\n (focusout)=\"onInputGroupFocusout()\"\n (closed)=\"focusEditElement()\"\n >\n <igx-prefix\n #inputGroupPrefix\n tabindex=\"0\"\n (click)=\"inputGroupPrefixClick($event)\"\n (keydown)=\"onPrefixKeyDown($event)\"\n [igxDropDownItemNavigation]=\"inputGroupConditions\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"expression.condition!.iconName\"\n ></igx-icon>\n </igx-prefix>\n @if (value) {\n <igx-suffix>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"onCommitKeyDown($event)\"\n (click)=\"onCommitClick($event)\"\n family=\"default\"\n name=\"confirm\"\n >\n </igx-icon>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"onClearKeyDown($event)\"\n (click)=\"clearInput($event)\"\n family=\"default\"\n name=\"input_clear\"\n >\n </igx-icon>\n </igx-suffix>\n }\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-date-picker>\n</ng-template>\n\n<ng-template #defaultTimeUI>\n <igx-time-picker\n #picker\n [(value)]=\"value\"\n [inputFormat]=\"column.editorOptions?.dateTimeFormat!\"\n [displayFormat]=\"column.pipeArgs.format!\"\n [locale]=\"filteringService.grid.locale\"\n [formatter]=\"column.formatter!\"\n type=\"box\"\n [style.--ig-size]=\"filteringElementsSize\"\n [placeholder]=\"placeholder\"\n (closed)=\"focusEditElement()\"\n (focusout)=\"onInputGroupFocusout()\"\n (keydown)=\"onInputKeyDown($event)\"\n (click)=\"expression.condition!.isUnary ? null : picker.open()\"\n >\n <igx-prefix\n #inputGroupPrefix\n tabindex=\"0\"\n (click)=\"inputGroupPrefixClick($event)\"\n (keydown)=\"onPrefixKeyDown($event)\"\n [igxDropDownItemNavigation]=\"inputGroupConditions\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"expression.condition!.iconName\"\n ></igx-icon>\n </igx-prefix>\n @if (value) {\n <igx-suffix>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"onCommitKeyDown($event)\"\n (click)=\"onCommitClick($event)\"\n family=\"default\"\n name=\"confirm\"\n >\n </igx-icon>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"onClearKeyDown($event)\"\n (click)=\"clearInput($event)\"\n family=\"default\"\n name=\"input_clear\"\n >\n </igx-icon>\n </igx-suffix>\n }\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-time-picker>\n</ng-template>\n\n<ng-template #defaultDateTimeUI>\n <igx-input-group\n #inputGroup\n type=\"box\"\n (focusout)=\"onInputGroupFocusout()\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-prefix\n #inputGroupPrefix\n (click)=\"inputGroupPrefixClick($event)\"\n (keydown)=\"onPrefixKeyDown($event)\"\n tabindex=\"0\"\n [igxDropDownItemNavigation]=\"inputGroupConditions\"\n >\n <igx-icon family=\"default\" [name]=\"getIconName()\"></igx-icon>\n </igx-prefix>\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"placeholder\"\n [locale]=\"filteringService.grid.locale\"\n [displayFormat]=\"column.pipeArgs.format!\"\n [igxDateTimeEditor]=\"column.editorOptions?.dateTimeFormat!\"\n defaultFormatType=\"dateTime\"\n [value]=\"value\"\n (valueChange)=\"onInput($event)\"\n [readonly]=\"isUnaryCondition\"\n (click)=\"onInputClick()\"\n (keydown)=\"onInputKeyDown($event)\"\n (keyup)=\"onInputKeyUp()\"\n />\n @if (value || value === 0) {\n <igx-suffix>\n <igx-icon\n (keydown)=\"onCommitKeyDown($event)\"\n (click)=\"onCommitClick()\"\n tabindex=\"0\"\n family=\"default\"\n name=\"confirm\"\n >\n </igx-icon>\n <igx-icon\n (keydown)=\"onClearKeyDown($event)\"\n (click)=\"onClearClick()\"\n tabindex=\"0\"\n family=\"default\"\n name=\"input_clear\"\n >\n </igx-icon>\n </igx-suffix>\n }\n </igx-input-group>\n</ng-template>\n\n<ng-container\n *ngTemplateOutlet=\"template; context: { $implicit: this }\"\n></ng-container>\n\n@if (showArrows) {\n <button\n igxIconButton=\"flat\"\n type=\"button\"\n class=\"igx-grid__filtering-row-scroll-start\"\n (keydown)=\"onLeftArrowKeyDown($event)\"\n (click)=\"scrollChipsOnArrowPress('left')\"\n >\n <igx-icon family=\"default\" name=\"prev\"></igx-icon>\n </button>\n}\n\n<div #container class=\"igx-grid__filtering-row-main\">\n <div>\n <igx-chips-area #chipsArea>\n <!-- expressionsList items re-created on refreshExpressions(), track stable expression -->\n @for (\n item of expressionsList;\n track item.expression;\n let i = $index;\n let last = $last\n ) {\n <ng-container tabindex=\"0\">\n <igx-chip\n #chip\n id=\"chip\"\n (pointerdown)=\"onChipPointerdown($event, chip)\"\n (click)=\"onChipClick($event, item)\"\n (keydown)=\"onChipKeyDown($event, item)\"\n (remove)=\"onChipRemoved($event, item)\"\n [selectable]=\"false\"\n [selected]=\"item.isSelected\"\n [style.--ig-size]=\"filteringElementsSize\"\n [removable]=\"true\"\n >\n <igx-icon\n igxPrefix\n family=\"default\"\n [name]=\"item.expression.condition!.iconName\"\n >\n </igx-icon>\n <span>{{ filteringService.getChipLabel(item.expression) }}</span>\n </igx-chip>\n @if (!last) {\n <span id=\"operand\">\n <button\n igxButton\n type=\"button\"\n (click)=\"toggleOperatorsDropDown($event, i)\"\n [igxDropDownItemNavigation]=\"operators\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"expand_more\"></igx-icon>\n <span>{{\n filteringService.getOperatorAsString(item.afterOperator)\n }}</span>\n </button>\n <igx-drop-down\n #operators\n (selectionChanging)=\"onLogicOperatorChanged($event, item)\"\n >\n <igx-drop-down-item\n [value]=\"0\"\n [selected]=\"item.afterOperator === 0\"\n >{{\n filteringService.grid.resourceStrings\n .igx_grid_filter_operator_and\n }}</igx-drop-down-item\n >\n <igx-drop-down-item\n [value]=\"1\"\n [selected]=\"item.afterOperator === 1\"\n >{{\n filteringService.grid.resourceStrings\n .igx_grid_filter_operator_or\n }}</igx-drop-down-item\n >\n </igx-drop-down>\n </span>\n }\n </ng-container>\n }\n </igx-chips-area>\n </div>\n</div>\n\n@if (showArrows) {\n <button\n igxIconButton=\"flat\"\n type=\"button\"\n class=\"igx-grid__filtering-row-scroll-end\"\n (click)=\"scrollChipsOnArrowPress('right')\"\n >\n <igx-icon family=\"default\" name=\"next\"></igx-icon>\n </button>\n}\n\n<div\n #buttonsContainer\n [ngClass]=\"\n isNarrowWidth\n ? 'igx-grid__filtering-row-editing-buttons--small'\n : 'igx-grid__filtering-row-editing-buttons'\n \"\n>\n @if (!isNarrowWidth) {\n <button\n igxButton=\"flat\"\n type=\"button\"\n igxRipple\n (click)=\"clearFiltering()\"\n [disabled]=\"disabled\"\n [tabindex]=\"disabled\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"refresh\"></igx-icon>\n <span>{{\n filteringService.grid.resourceStrings.igx_grid_filter_row_reset\n }}</span>\n </button>\n <button\n #closeButton\n igxButton=\"flat\"\n type=\"button\"\n igxRipple\n (click)=\"close()\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"close\"></igx-icon>\n <span>{{\n filteringService.grid.resourceStrings.igx_grid_filter_row_close\n }}</span>\n </button>\n }\n @if (isNarrowWidth) {\n <button\n igxIconButton=\"flat\"\n type=\"button\"\n igxRipple\n (click)=\"clearFiltering()\"\n [disabled]=\"disabled\"\n [tabindex]=\"disabled\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"refresh\"></igx-icon>\n </button>\n <button\n #closeButton\n igxIconButton=\"flat\"\n type=\"button\"\n igxRipple\n (click)=\"close()\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"close\"></igx-icon>\n </button>\n }\n</div>\n", dependencies: [{ kind: "component", type: IgxDropDownComponent, selector: "igx-drop-down", inputs: ["allowItemsFocus", "labelledBy", "role"], outputs: ["opening", "opened", "closing", "closed"] }, { kind: "component", type: IgxDropDownItemComponent, selector: "igx-drop-down-item" }, { kind: "component", type: IgxChipsAreaComponent, selector: "igx-chips-area", inputs: ["width", "height"], outputs: ["reorder", "selectionChange", "moveStart", "moveEnd"] }, { kind: "component", type: IgxChipComponent, selector: "igx-chip", inputs: ["variant", "id", "tabIndex", "data", "draggable", "animateOnRelease", "hideBaseOnDrag", "removable", "removeIcon", "selectable", "selectIcon", "class", "disabled", "selected", "color", "resourceStrings"], outputs: ["selectedChange", "moveStart", "moveEnd", "remove", "chipClick", "selectedChanging", "selectedChanged", "keyDown", "dragEnter", "dragLeave", "dragOver", "dragDrop"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxPrefixDirective, selector: "[igxPrefix],[igxStart],igx-prefix" }, { kind: "directive", type: IgxDropDownItemNavigationDirective, selector: "[igxDropDownItemNavigation]", inputs: ["igxDropDownItemNavigation"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxSuffixDirective, selector: "[igxSuffix],[igxEnd],igx-suffix" }, { kind: "component", type: IgxDatePickerComponent, selector: "igx-date-picker", inputs: ["hideOutsideDays", "displayMonthsCount", "orientation", "showWeekNumbers", "activeDate", "formatter", "todayButtonLabel", "cancelButtonLabel", "spinLoop", "spinDelta", "id", "formatViews", "disabledDates", "specialDates", "calendarFormat", "value", "minValue", "maxValue", "resourceStrings", "readOnly"], outputs: ["valueChange", "validationFailed"] }, { kind: "component", type: IgxPickerToggleComponent, selector: "igx-picker-toggle", outputs: ["clicked"] }, { kind: "component", type: IgxPickerClearComponent, selector: "igx-picker-clear" }, { kind: "component", type: IgxTimePickerComponent, selector: "igx-time-picker", inputs: ["id", "displayFormat", "inputFormat", "mode", "minValue", "maxValue", "spinLoop", "formatter", "readOnly", "value", "resourceStrings", "okButtonLabel", "cancelButtonLabel", "itemsDelta"], outputs: ["selected", "valueChange", "validationFailed"] }, { kind: "directive", type: IgxDateTimeEditorDirective, selector: "[igxDateTimeEditor]", inputs: ["locale", "minValue", "maxValue", "spinLoop", "displayFormat", "igxDateTimeEditor", "value", "defaultFormatType", "spinDelta"], outputs: ["valueChange", "validationFailed"], exportAs: ["igxDateTimeEditor"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }, { kind: "directive", type: IgxIconButtonDirective, selector: "[igxIconButton]", inputs: ["igxIconButton"] }, { kind: "pipe", type: IgxPercentFormatterPipe, name: "percent" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13679
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxGridFilteringRowComponent, isStandalone: true, selector: "igx-grid-filtering-row", inputs: { column: "column", value: "value" }, host: { listeners: { "keydown": "onKeydownHandler($event)" }, properties: { "class.igx-grid__filtering-row": "this.defaultCSSClass" } }, viewQueries: [{ propertyName: "defaultFilterUI", first: true, predicate: ["defaultFilterUI"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultDateUI", first: true, predicate: ["defaultDateUI"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultTimeUI", first: true, predicate: ["defaultTimeUI"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultDateTimeUI", first: true, predicate: ["defaultDateTimeUI"], descendants: true, read: TemplateRef, static: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, read: ElementRef }, { propertyName: "dropDownConditions", first: true, predicate: ["inputGroupConditions"], descendants: true, read: IgxDropDownComponent, static: true }, { propertyName: "chipsArea", first: true, predicate: ["chipsArea"], descendants: true, read: IgxChipsAreaComponent, static: true }, { propertyName: "inputGroup", first: true, predicate: ["inputGroup"], descendants: true, read: ElementRef }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }, { propertyName: "inputGroupPrefix", first: true, predicate: ["inputGroupPrefix"], descendants: true, read: ElementRef }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }, { propertyName: "operand", first: true, predicate: ["operand"], descendants: true }, { propertyName: "closeButton", first: true, predicate: ["closeButton"], descendants: true, static: true }, { propertyName: "dropDownOperators", predicate: ["operators"], descendants: true, read: IgxDropDownComponent }], ngImport: i0, template: "<!-- Have to apply styles inline because of the overlay outlet ... -->\n<igx-drop-down\n #inputGroupConditions\n [style.--ig-size]=\"filteringElementsSize\"\n [height]=\"'200px'\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n>\n @for (condition of conditions; track condition) {\n <igx-drop-down-item\n [value]=\"condition\"\n [selected]=\"isConditionSelected(condition)\"\n >\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon\n family=\"default\"\n [name]=\"getCondition(condition).iconName\"\n ></igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{\n translateCondition(condition)\n }}</span>\n </div>\n </igx-drop-down-item>\n }\n</igx-drop-down>\n\n<ng-template #defaultFilterUI>\n <igx-input-group\n #inputGroup\n type=\"box\"\n (focusout)=\"onInputGroupFocusout()\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-prefix\n #inputGroupPrefix\n (click)=\"inputGroupPrefixClick($event)\"\n (keydown)=\"onPrefixKeyDown($event)\"\n tabindex=\"0\"\n [igxDropDownItemNavigation]=\"inputGroupConditions\"\n >\n <igx-icon family=\"default\" [name]=\"getIconName()\"></igx-icon>\n </igx-prefix>\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"placeholder\"\n autocomplete=\"off\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n [type]=\"type\"\n [readonly]=\"isUnaryCondition\"\n (click)=\"onInputClick()\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (keydown)=\"onInputKeyDown($event)\"\n (keyup)=\"onInputKeyUp()\"\n />\n @if (value || value === 0) {\n <igx-suffix>\n @if (column.dataType === 'percent') {\n <span class=\"igx-grid__filtering-row-percent-hint\">{{\n value\n | percent\n : column.pipeArgs.digitsInfo\n : filteringService.grid.locale\n }}</span>\n }\n <igx-icon\n (keydown)=\"onCommitKeyDown($event)\"\n (click)=\"onCommitClick()\"\n tabindex=\"0\"\n family=\"default\"\n name=\"confirm\"\n >\n </igx-icon>\n <igx-icon\n (keydown)=\"onClearKeyDown($event)\"\n (click)=\"onClearClick()\"\n tabindex=\"0\"\n family=\"default\"\n name=\"input_clear\"\n >\n </igx-icon>\n </igx-suffix>\n }\n </igx-input-group>\n</ng-template>\n\n<ng-template #defaultDateUI>\n <igx-date-picker\n #picker\n [(value)]=\"value\"\n [locale]=\"filteringService.grid.locale\"\n (click)=\"expression.condition.isUnary ? null : picker.open()\"\n type=\"box\"\n [displayFormat]=\"column.pipeArgs.format\"\n [formatter]=\"column.formatter\"\n [placeholder]=\"placeholder\"\n [weekStart]=\"column.pipeArgs.weekStart\"\n (keydown)=\"onInputKeyDown($event)\"\n (focusout)=\"onInputGroupFocusout()\"\n (closed)=\"focusEditElement()\"\n >\n <igx-prefix\n #inputGroupPrefix\n tabindex=\"0\"\n (click)=\"inputGroupPrefixClick($event)\"\n (keydown)=\"onPrefixKeyDown($event)\"\n [igxDropDownItemNavigation]=\"inputGroupConditions\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"expression.condition.iconName\"\n ></igx-icon>\n </igx-prefix>\n @if (value) {\n <igx-suffix>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"onCommitKeyDown($event)\"\n (click)=\"onCommitClick($event)\"\n family=\"default\"\n name=\"confirm\"\n >\n </igx-icon>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"onClearKeyDown($event)\"\n (click)=\"clearInput($event)\"\n family=\"default\"\n name=\"input_clear\"\n >\n </igx-icon>\n </igx-suffix>\n }\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-date-picker>\n</ng-template>\n\n<ng-template #defaultTimeUI>\n <igx-time-picker\n #picker\n [(value)]=\"value\"\n [inputFormat]=\"\n $safeNavigationMigration(column.editorOptions?.dateTimeFormat)\n \"\n [displayFormat]=\"column.pipeArgs.format\"\n [locale]=\"filteringService.grid.locale\"\n [formatter]=\"column.formatter\"\n type=\"box\"\n [style.--ig-size]=\"filteringElementsSize\"\n [placeholder]=\"placeholder\"\n (closed)=\"focusEditElement()\"\n (focusout)=\"onInputGroupFocusout()\"\n (keydown)=\"onInputKeyDown($event)\"\n (click)=\"expression.condition.isUnary ? null : picker.open()\"\n >\n <igx-prefix\n #inputGroupPrefix\n tabindex=\"0\"\n (click)=\"inputGroupPrefixClick($event)\"\n (keydown)=\"onPrefixKeyDown($event)\"\n [igxDropDownItemNavigation]=\"inputGroupConditions\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"expression.condition.iconName\"\n ></igx-icon>\n </igx-prefix>\n @if (value) {\n <igx-suffix>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"onCommitKeyDown($event)\"\n (click)=\"onCommitClick($event)\"\n family=\"default\"\n name=\"confirm\"\n >\n </igx-icon>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"onClearKeyDown($event)\"\n (click)=\"clearInput($event)\"\n family=\"default\"\n name=\"input_clear\"\n >\n </igx-icon>\n </igx-suffix>\n }\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-time-picker>\n</ng-template>\n\n<ng-template #defaultDateTimeUI>\n <igx-input-group\n #inputGroup\n type=\"box\"\n (focusout)=\"onInputGroupFocusout()\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-prefix\n #inputGroupPrefix\n (click)=\"inputGroupPrefixClick($event)\"\n (keydown)=\"onPrefixKeyDown($event)\"\n tabindex=\"0\"\n [igxDropDownItemNavigation]=\"inputGroupConditions\"\n >\n <igx-icon family=\"default\" [name]=\"getIconName()\"></igx-icon>\n </igx-prefix>\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"placeholder\"\n [locale]=\"filteringService.grid.locale\"\n [displayFormat]=\"column.pipeArgs.format\"\n [igxDateTimeEditor]=\"\n $safeNavigationMigration(column.editorOptions?.dateTimeFormat)\n \"\n defaultFormatType=\"dateTime\"\n [value]=\"value\"\n (valueChange)=\"onInput($event)\"\n [readonly]=\"isUnaryCondition\"\n (click)=\"onInputClick()\"\n (keydown)=\"onInputKeyDown($event)\"\n (keyup)=\"onInputKeyUp()\"\n />\n @if (value || value === 0) {\n <igx-suffix>\n <igx-icon\n (keydown)=\"onCommitKeyDown($event)\"\n (click)=\"onCommitClick()\"\n tabindex=\"0\"\n family=\"default\"\n name=\"confirm\"\n >\n </igx-icon>\n <igx-icon\n (keydown)=\"onClearKeyDown($event)\"\n (click)=\"onClearClick()\"\n tabindex=\"0\"\n family=\"default\"\n name=\"input_clear\"\n >\n </igx-icon>\n </igx-suffix>\n }\n </igx-input-group>\n</ng-template>\n\n<ng-container\n *ngTemplateOutlet=\"template; context: { $implicit: this }\"\n></ng-container>\n\n@if (showArrows) {\n <button\n igxIconButton=\"flat\"\n type=\"button\"\n class=\"igx-grid__filtering-row-scroll-start\"\n (keydown)=\"onLeftArrowKeyDown($event)\"\n (click)=\"scrollChipsOnArrowPress('left')\"\n >\n <igx-icon family=\"default\" name=\"prev\"></igx-icon>\n </button>\n}\n\n<div #container class=\"igx-grid__filtering-row-main\">\n <div>\n <igx-chips-area #chipsArea>\n <!-- expressionsList items re-created on refreshExpressions(), track stable expression -->\n @for (\n item of expressionsList;\n track item.expression;\n let i = $index;\n let last = $last\n ) {\n <ng-container tabindex=\"0\">\n <igx-chip\n #chip\n id=\"chip\"\n (pointerdown)=\"onChipPointerdown($event, chip)\"\n (click)=\"onChipClick($event, item)\"\n (keydown)=\"onChipKeyDown($event, item)\"\n (remove)=\"onChipRemoved($event, item)\"\n [selectable]=\"false\"\n [selected]=\"item.isSelected\"\n [style.--ig-size]=\"filteringElementsSize\"\n [removable]=\"true\"\n >\n <igx-icon\n igxPrefix\n family=\"default\"\n [name]=\"item.expression.condition.iconName\"\n >\n </igx-icon>\n <span>{{ filteringService.getChipLabel(item.expression) }}</span>\n </igx-chip>\n @if (!last) {\n <span id=\"operand\">\n <button\n igxButton\n type=\"button\"\n (click)=\"toggleOperatorsDropDown($event, i)\"\n [igxDropDownItemNavigation]=\"operators\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"expand_more\"></igx-icon>\n <span>{{\n filteringService.getOperatorAsString(item.afterOperator)\n }}</span>\n </button>\n <igx-drop-down\n #operators\n (selectionChanging)=\"onLogicOperatorChanged($event, item)\"\n >\n <igx-drop-down-item\n [value]=\"0\"\n [selected]=\"item.afterOperator === 0\"\n >{{\n filteringService.grid.resourceStrings\n .igx_grid_filter_operator_and\n }}</igx-drop-down-item\n >\n <igx-drop-down-item\n [value]=\"1\"\n [selected]=\"item.afterOperator === 1\"\n >{{\n filteringService.grid.resourceStrings\n .igx_grid_filter_operator_or\n }}</igx-drop-down-item\n >\n </igx-drop-down>\n </span>\n }\n </ng-container>\n }\n </igx-chips-area>\n </div>\n</div>\n\n@if (showArrows) {\n <button\n igxIconButton=\"flat\"\n type=\"button\"\n class=\"igx-grid__filtering-row-scroll-end\"\n (click)=\"scrollChipsOnArrowPress('right')\"\n >\n <igx-icon family=\"default\" name=\"next\"></igx-icon>\n </button>\n}\n\n<div\n #buttonsContainer\n [ngClass]=\"\n isNarrowWidth\n ? 'igx-grid__filtering-row-editing-buttons--small'\n : 'igx-grid__filtering-row-editing-buttons'\n \"\n>\n @if (!isNarrowWidth) {\n <button\n igxButton=\"flat\"\n type=\"button\"\n igxRipple\n (click)=\"clearFiltering()\"\n [disabled]=\"disabled\"\n [tabindex]=\"disabled\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"refresh\"></igx-icon>\n <span>{{\n filteringService.grid.resourceStrings.igx_grid_filter_row_reset\n }}</span>\n </button>\n <button\n #closeButton\n igxButton=\"flat\"\n type=\"button\"\n igxRipple\n (click)=\"close()\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"close\"></igx-icon>\n <span>{{\n filteringService.grid.resourceStrings.igx_grid_filter_row_close\n }}</span>\n </button>\n }\n @if (isNarrowWidth) {\n <button\n igxIconButton=\"flat\"\n type=\"button\"\n igxRipple\n (click)=\"clearFiltering()\"\n [disabled]=\"disabled\"\n [tabindex]=\"disabled\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"refresh\"></igx-icon>\n </button>\n <button\n #closeButton\n igxIconButton=\"flat\"\n type=\"button\"\n igxRipple\n (click)=\"close()\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"close\"></igx-icon>\n </button>\n }\n</div>\n", dependencies: [{ kind: "component", type: IgxDropDownComponent, selector: "igx-drop-down", inputs: ["allowItemsFocus", "labelledBy", "role"], outputs: ["opening", "opened", "closing", "closed"] }, { kind: "component", type: IgxDropDownItemComponent, selector: "igx-drop-down-item" }, { kind: "component", type: IgxChipsAreaComponent, selector: "igx-chips-area", inputs: ["width", "height"], outputs: ["reorder", "selectionChange", "moveStart", "moveEnd"] }, { kind: "component", type: IgxChipComponent, selector: "igx-chip", inputs: ["variant", "id", "tabIndex", "data", "draggable", "animateOnRelease", "hideBaseOnDrag", "removable", "removeIcon", "selectable", "selectIcon", "class", "disabled", "selected", "color", "resourceStrings"], outputs: ["selectedChange", "moveStart", "moveEnd", "remove", "chipClick", "selectedChanging", "selectedChanged", "keyDown", "dragEnter", "dragLeave", "dragOver", "dragDrop"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxPrefixDirective, selector: "[igxPrefix],[igxStart],igx-prefix" }, { kind: "directive", type: IgxDropDownItemNavigationDirective, selector: "[igxDropDownItemNavigation]", inputs: ["igxDropDownItemNavigation"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxSuffixDirective, selector: "[igxSuffix],[igxEnd],igx-suffix" }, { kind: "component", type: IgxDatePickerComponent, selector: "igx-date-picker", inputs: ["hideOutsideDays", "displayMonthsCount", "orientation", "showWeekNumbers", "activeDate", "formatter", "todayButtonLabel", "cancelButtonLabel", "spinLoop", "spinDelta", "id", "formatViews", "disabledDates", "specialDates", "calendarFormat", "value", "minValue", "maxValue", "resourceStrings", "readOnly"], outputs: ["valueChange", "validationFailed"] }, { kind: "component", type: IgxPickerToggleComponent, selector: "igx-picker-toggle", outputs: ["clicked"] }, { kind: "component", type: IgxPickerClearComponent, selector: "igx-picker-clear" }, { kind: "component", type: IgxTimePickerComponent, selector: "igx-time-picker", inputs: ["id", "displayFormat", "inputFormat", "mode", "minValue", "maxValue", "spinLoop", "formatter", "readOnly", "value", "resourceStrings", "okButtonLabel", "cancelButtonLabel", "itemsDelta"], outputs: ["selected", "valueChange", "validationFailed"] }, { kind: "directive", type: IgxDateTimeEditorDirective, selector: "[igxDateTimeEditor]", inputs: ["locale", "minValue", "maxValue", "spinLoop", "displayFormat", "igxDateTimeEditor", "value", "defaultFormatType", "spinDelta"], outputs: ["valueChange", "validationFailed"], exportAs: ["igxDateTimeEditor"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }, { kind: "directive", type: IgxIconButtonDirective, selector: "[igxIconButton]", inputs: ["igxIconButton"] }, { kind: "pipe", type: IgxPercentFormatterPipe, name: "percent" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13395
13680
  }
13396
13681
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxGridFilteringRowComponent, decorators: [{
13397
13682
  type: Component,
@@ -13417,7 +13702,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
13417
13702
  IgxRippleDirective,
13418
13703
  IgxIconButtonDirective,
13419
13704
  IgxPercentFormatterPipe
13420
- ], template: "<!-- Have to apply styles inline because of the overlay outlet ... -->\n<igx-drop-down\n #inputGroupConditions\n [style.--ig-size]=\"filteringElementsSize\"\n [height]=\"'200px'\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n>\n @for (condition of conditions; track condition) {\n <igx-drop-down-item\n [value]=\"condition\"\n [selected]=\"isConditionSelected(condition)\"\n >\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon\n family=\"default\"\n [name]=\"getCondition(condition).iconName\"\n ></igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{\n translateCondition(condition)\n }}</span>\n </div>\n </igx-drop-down-item>\n }\n</igx-drop-down>\n\n<ng-template #defaultFilterUI>\n <igx-input-group\n #inputGroup\n type=\"box\"\n (focusout)=\"onInputGroupFocusout()\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-prefix\n #inputGroupPrefix\n (click)=\"inputGroupPrefixClick($event)\"\n (keydown)=\"onPrefixKeyDown($event)\"\n tabindex=\"0\"\n [igxDropDownItemNavigation]=\"inputGroupConditions\"\n >\n <igx-icon family=\"default\" [name]=\"getIconName()\"></igx-icon>\n </igx-prefix>\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"placeholder\"\n autocomplete=\"off\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n [type]=\"type\"\n [readonly]=\"isUnaryCondition\"\n (click)=\"onInputClick()\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (keydown)=\"onInputKeyDown($event)\"\n (keyup)=\"onInputKeyUp()\"\n />\n @if (value || value === 0) {\n <igx-suffix>\n @if (column.dataType === 'percent') {\n <span class=\"igx-grid__filtering-row-percent-hint\">{{\n value\n | percent\n : column.pipeArgs.digitsInfo\n : filteringService.grid.locale\n }}</span>\n }\n <igx-icon\n (keydown)=\"onCommitKeyDown($event)\"\n (click)=\"onCommitClick()\"\n tabindex=\"0\"\n family=\"default\"\n name=\"confirm\"\n >\n </igx-icon>\n <igx-icon\n (keydown)=\"onClearKeyDown($event)\"\n (click)=\"onClearClick()\"\n tabindex=\"0\"\n family=\"default\"\n name=\"input_clear\"\n >\n </igx-icon>\n </igx-suffix>\n }\n </igx-input-group>\n</ng-template>\n\n<ng-template #defaultDateUI>\n <igx-date-picker\n #picker\n [(value)]=\"value\"\n [locale]=\"filteringService.grid.locale\"\n (click)=\"expression.condition!.isUnary ? null : picker.open()\"\n type=\"box\"\n [displayFormat]=\"column.pipeArgs.format!\"\n [formatter]=\"column.formatter!\"\n [placeholder]=\"placeholder\"\n [weekStart]=\"column.pipeArgs.weekStart!\"\n (keydown)=\"onInputKeyDown($event)\"\n (focusout)=\"onInputGroupFocusout()\"\n (closed)=\"focusEditElement()\"\n >\n <igx-prefix\n #inputGroupPrefix\n tabindex=\"0\"\n (click)=\"inputGroupPrefixClick($event)\"\n (keydown)=\"onPrefixKeyDown($event)\"\n [igxDropDownItemNavigation]=\"inputGroupConditions\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"expression.condition!.iconName\"\n ></igx-icon>\n </igx-prefix>\n @if (value) {\n <igx-suffix>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"onCommitKeyDown($event)\"\n (click)=\"onCommitClick($event)\"\n family=\"default\"\n name=\"confirm\"\n >\n </igx-icon>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"onClearKeyDown($event)\"\n (click)=\"clearInput($event)\"\n family=\"default\"\n name=\"input_clear\"\n >\n </igx-icon>\n </igx-suffix>\n }\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-date-picker>\n</ng-template>\n\n<ng-template #defaultTimeUI>\n <igx-time-picker\n #picker\n [(value)]=\"value\"\n [inputFormat]=\"column.editorOptions?.dateTimeFormat!\"\n [displayFormat]=\"column.pipeArgs.format!\"\n [locale]=\"filteringService.grid.locale\"\n [formatter]=\"column.formatter!\"\n type=\"box\"\n [style.--ig-size]=\"filteringElementsSize\"\n [placeholder]=\"placeholder\"\n (closed)=\"focusEditElement()\"\n (focusout)=\"onInputGroupFocusout()\"\n (keydown)=\"onInputKeyDown($event)\"\n (click)=\"expression.condition!.isUnary ? null : picker.open()\"\n >\n <igx-prefix\n #inputGroupPrefix\n tabindex=\"0\"\n (click)=\"inputGroupPrefixClick($event)\"\n (keydown)=\"onPrefixKeyDown($event)\"\n [igxDropDownItemNavigation]=\"inputGroupConditions\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"expression.condition!.iconName\"\n ></igx-icon>\n </igx-prefix>\n @if (value) {\n <igx-suffix>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"onCommitKeyDown($event)\"\n (click)=\"onCommitClick($event)\"\n family=\"default\"\n name=\"confirm\"\n >\n </igx-icon>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"onClearKeyDown($event)\"\n (click)=\"clearInput($event)\"\n family=\"default\"\n name=\"input_clear\"\n >\n </igx-icon>\n </igx-suffix>\n }\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-time-picker>\n</ng-template>\n\n<ng-template #defaultDateTimeUI>\n <igx-input-group\n #inputGroup\n type=\"box\"\n (focusout)=\"onInputGroupFocusout()\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-prefix\n #inputGroupPrefix\n (click)=\"inputGroupPrefixClick($event)\"\n (keydown)=\"onPrefixKeyDown($event)\"\n tabindex=\"0\"\n [igxDropDownItemNavigation]=\"inputGroupConditions\"\n >\n <igx-icon family=\"default\" [name]=\"getIconName()\"></igx-icon>\n </igx-prefix>\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"placeholder\"\n [locale]=\"filteringService.grid.locale\"\n [displayFormat]=\"column.pipeArgs.format!\"\n [igxDateTimeEditor]=\"column.editorOptions?.dateTimeFormat!\"\n defaultFormatType=\"dateTime\"\n [value]=\"value\"\n (valueChange)=\"onInput($event)\"\n [readonly]=\"isUnaryCondition\"\n (click)=\"onInputClick()\"\n (keydown)=\"onInputKeyDown($event)\"\n (keyup)=\"onInputKeyUp()\"\n />\n @if (value || value === 0) {\n <igx-suffix>\n <igx-icon\n (keydown)=\"onCommitKeyDown($event)\"\n (click)=\"onCommitClick()\"\n tabindex=\"0\"\n family=\"default\"\n name=\"confirm\"\n >\n </igx-icon>\n <igx-icon\n (keydown)=\"onClearKeyDown($event)\"\n (click)=\"onClearClick()\"\n tabindex=\"0\"\n family=\"default\"\n name=\"input_clear\"\n >\n </igx-icon>\n </igx-suffix>\n }\n </igx-input-group>\n</ng-template>\n\n<ng-container\n *ngTemplateOutlet=\"template; context: { $implicit: this }\"\n></ng-container>\n\n@if (showArrows) {\n <button\n igxIconButton=\"flat\"\n type=\"button\"\n class=\"igx-grid__filtering-row-scroll-start\"\n (keydown)=\"onLeftArrowKeyDown($event)\"\n (click)=\"scrollChipsOnArrowPress('left')\"\n >\n <igx-icon family=\"default\" name=\"prev\"></igx-icon>\n </button>\n}\n\n<div #container class=\"igx-grid__filtering-row-main\">\n <div>\n <igx-chips-area #chipsArea>\n <!-- expressionsList items re-created on refreshExpressions(), track stable expression -->\n @for (\n item of expressionsList;\n track item.expression;\n let i = $index;\n let last = $last\n ) {\n <ng-container tabindex=\"0\">\n <igx-chip\n #chip\n id=\"chip\"\n (pointerdown)=\"onChipPointerdown($event, chip)\"\n (click)=\"onChipClick($event, item)\"\n (keydown)=\"onChipKeyDown($event, item)\"\n (remove)=\"onChipRemoved($event, item)\"\n [selectable]=\"false\"\n [selected]=\"item.isSelected\"\n [style.--ig-size]=\"filteringElementsSize\"\n [removable]=\"true\"\n >\n <igx-icon\n igxPrefix\n family=\"default\"\n [name]=\"item.expression.condition!.iconName\"\n >\n </igx-icon>\n <span>{{ filteringService.getChipLabel(item.expression) }}</span>\n </igx-chip>\n @if (!last) {\n <span id=\"operand\">\n <button\n igxButton\n type=\"button\"\n (click)=\"toggleOperatorsDropDown($event, i)\"\n [igxDropDownItemNavigation]=\"operators\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"expand_more\"></igx-icon>\n <span>{{\n filteringService.getOperatorAsString(item.afterOperator)\n }}</span>\n </button>\n <igx-drop-down\n #operators\n (selectionChanging)=\"onLogicOperatorChanged($event, item)\"\n >\n <igx-drop-down-item\n [value]=\"0\"\n [selected]=\"item.afterOperator === 0\"\n >{{\n filteringService.grid.resourceStrings\n .igx_grid_filter_operator_and\n }}</igx-drop-down-item\n >\n <igx-drop-down-item\n [value]=\"1\"\n [selected]=\"item.afterOperator === 1\"\n >{{\n filteringService.grid.resourceStrings\n .igx_grid_filter_operator_or\n }}</igx-drop-down-item\n >\n </igx-drop-down>\n </span>\n }\n </ng-container>\n }\n </igx-chips-area>\n </div>\n</div>\n\n@if (showArrows) {\n <button\n igxIconButton=\"flat\"\n type=\"button\"\n class=\"igx-grid__filtering-row-scroll-end\"\n (click)=\"scrollChipsOnArrowPress('right')\"\n >\n <igx-icon family=\"default\" name=\"next\"></igx-icon>\n </button>\n}\n\n<div\n #buttonsContainer\n [ngClass]=\"\n isNarrowWidth\n ? 'igx-grid__filtering-row-editing-buttons--small'\n : 'igx-grid__filtering-row-editing-buttons'\n \"\n>\n @if (!isNarrowWidth) {\n <button\n igxButton=\"flat\"\n type=\"button\"\n igxRipple\n (click)=\"clearFiltering()\"\n [disabled]=\"disabled\"\n [tabindex]=\"disabled\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"refresh\"></igx-icon>\n <span>{{\n filteringService.grid.resourceStrings.igx_grid_filter_row_reset\n }}</span>\n </button>\n <button\n #closeButton\n igxButton=\"flat\"\n type=\"button\"\n igxRipple\n (click)=\"close()\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"close\"></igx-icon>\n <span>{{\n filteringService.grid.resourceStrings.igx_grid_filter_row_close\n }}</span>\n </button>\n }\n @if (isNarrowWidth) {\n <button\n igxIconButton=\"flat\"\n type=\"button\"\n igxRipple\n (click)=\"clearFiltering()\"\n [disabled]=\"disabled\"\n [tabindex]=\"disabled\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"refresh\"></igx-icon>\n </button>\n <button\n #closeButton\n igxIconButton=\"flat\"\n type=\"button\"\n igxRipple\n (click)=\"close()\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"close\"></igx-icon>\n </button>\n }\n</div>\n" }]
13705
+ ], template: "<!-- Have to apply styles inline because of the overlay outlet ... -->\n<igx-drop-down\n #inputGroupConditions\n [style.--ig-size]=\"filteringElementsSize\"\n [height]=\"'200px'\"\n (selectionChanging)=\"onConditionsChanged($event)\"\n>\n @for (condition of conditions; track condition) {\n <igx-drop-down-item\n [value]=\"condition\"\n [selected]=\"isConditionSelected(condition)\"\n >\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon\n family=\"default\"\n [name]=\"getCondition(condition).iconName\"\n ></igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{\n translateCondition(condition)\n }}</span>\n </div>\n </igx-drop-down-item>\n }\n</igx-drop-down>\n\n<ng-template #defaultFilterUI>\n <igx-input-group\n #inputGroup\n type=\"box\"\n (focusout)=\"onInputGroupFocusout()\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-prefix\n #inputGroupPrefix\n (click)=\"inputGroupPrefixClick($event)\"\n (keydown)=\"onPrefixKeyDown($event)\"\n tabindex=\"0\"\n [igxDropDownItemNavigation]=\"inputGroupConditions\"\n >\n <igx-icon family=\"default\" [name]=\"getIconName()\"></igx-icon>\n </igx-prefix>\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"placeholder\"\n autocomplete=\"off\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n [type]=\"type\"\n [readonly]=\"isUnaryCondition\"\n (click)=\"onInputClick()\"\n (compositionstart)=\"onCompositionStart()\"\n (compositionend)=\"onCompositionEnd()\"\n (keydown)=\"onInputKeyDown($event)\"\n (keyup)=\"onInputKeyUp()\"\n />\n @if (value || value === 0) {\n <igx-suffix>\n @if (column.dataType === 'percent') {\n <span class=\"igx-grid__filtering-row-percent-hint\">{{\n value\n | percent\n : column.pipeArgs.digitsInfo\n : filteringService.grid.locale\n }}</span>\n }\n <igx-icon\n (keydown)=\"onCommitKeyDown($event)\"\n (click)=\"onCommitClick()\"\n tabindex=\"0\"\n family=\"default\"\n name=\"confirm\"\n >\n </igx-icon>\n <igx-icon\n (keydown)=\"onClearKeyDown($event)\"\n (click)=\"onClearClick()\"\n tabindex=\"0\"\n family=\"default\"\n name=\"input_clear\"\n >\n </igx-icon>\n </igx-suffix>\n }\n </igx-input-group>\n</ng-template>\n\n<ng-template #defaultDateUI>\n <igx-date-picker\n #picker\n [(value)]=\"value\"\n [locale]=\"filteringService.grid.locale\"\n (click)=\"expression.condition.isUnary ? null : picker.open()\"\n type=\"box\"\n [displayFormat]=\"column.pipeArgs.format\"\n [formatter]=\"column.formatter\"\n [placeholder]=\"placeholder\"\n [weekStart]=\"column.pipeArgs.weekStart\"\n (keydown)=\"onInputKeyDown($event)\"\n (focusout)=\"onInputGroupFocusout()\"\n (closed)=\"focusEditElement()\"\n >\n <igx-prefix\n #inputGroupPrefix\n tabindex=\"0\"\n (click)=\"inputGroupPrefixClick($event)\"\n (keydown)=\"onPrefixKeyDown($event)\"\n [igxDropDownItemNavigation]=\"inputGroupConditions\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"expression.condition.iconName\"\n ></igx-icon>\n </igx-prefix>\n @if (value) {\n <igx-suffix>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"onCommitKeyDown($event)\"\n (click)=\"onCommitClick($event)\"\n family=\"default\"\n name=\"confirm\"\n >\n </igx-icon>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"onClearKeyDown($event)\"\n (click)=\"clearInput($event)\"\n family=\"default\"\n name=\"input_clear\"\n >\n </igx-icon>\n </igx-suffix>\n }\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-date-picker>\n</ng-template>\n\n<ng-template #defaultTimeUI>\n <igx-time-picker\n #picker\n [(value)]=\"value\"\n [inputFormat]=\"\n $safeNavigationMigration(column.editorOptions?.dateTimeFormat)\n \"\n [displayFormat]=\"column.pipeArgs.format\"\n [locale]=\"filteringService.grid.locale\"\n [formatter]=\"column.formatter\"\n type=\"box\"\n [style.--ig-size]=\"filteringElementsSize\"\n [placeholder]=\"placeholder\"\n (closed)=\"focusEditElement()\"\n (focusout)=\"onInputGroupFocusout()\"\n (keydown)=\"onInputKeyDown($event)\"\n (click)=\"expression.condition.isUnary ? null : picker.open()\"\n >\n <igx-prefix\n #inputGroupPrefix\n tabindex=\"0\"\n (click)=\"inputGroupPrefixClick($event)\"\n (keydown)=\"onPrefixKeyDown($event)\"\n [igxDropDownItemNavigation]=\"inputGroupConditions\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"expression.condition.iconName\"\n ></igx-icon>\n </igx-prefix>\n @if (value) {\n <igx-suffix>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"onCommitKeyDown($event)\"\n (click)=\"onCommitClick($event)\"\n family=\"default\"\n name=\"confirm\"\n >\n </igx-icon>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"onClearKeyDown($event)\"\n (click)=\"clearInput($event)\"\n family=\"default\"\n name=\"input_clear\"\n >\n </igx-icon>\n </igx-suffix>\n }\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-time-picker>\n</ng-template>\n\n<ng-template #defaultDateTimeUI>\n <igx-input-group\n #inputGroup\n type=\"box\"\n (focusout)=\"onInputGroupFocusout()\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-prefix\n #inputGroupPrefix\n (click)=\"inputGroupPrefixClick($event)\"\n (keydown)=\"onPrefixKeyDown($event)\"\n tabindex=\"0\"\n [igxDropDownItemNavigation]=\"inputGroupConditions\"\n >\n <igx-icon family=\"default\" [name]=\"getIconName()\"></igx-icon>\n </igx-prefix>\n <input\n #input\n igxInput\n tabindex=\"0\"\n [placeholder]=\"placeholder\"\n [locale]=\"filteringService.grid.locale\"\n [displayFormat]=\"column.pipeArgs.format\"\n [igxDateTimeEditor]=\"\n $safeNavigationMigration(column.editorOptions?.dateTimeFormat)\n \"\n defaultFormatType=\"dateTime\"\n [value]=\"value\"\n (valueChange)=\"onInput($event)\"\n [readonly]=\"isUnaryCondition\"\n (click)=\"onInputClick()\"\n (keydown)=\"onInputKeyDown($event)\"\n (keyup)=\"onInputKeyUp()\"\n />\n @if (value || value === 0) {\n <igx-suffix>\n <igx-icon\n (keydown)=\"onCommitKeyDown($event)\"\n (click)=\"onCommitClick()\"\n tabindex=\"0\"\n family=\"default\"\n name=\"confirm\"\n >\n </igx-icon>\n <igx-icon\n (keydown)=\"onClearKeyDown($event)\"\n (click)=\"onClearClick()\"\n tabindex=\"0\"\n family=\"default\"\n name=\"input_clear\"\n >\n </igx-icon>\n </igx-suffix>\n }\n </igx-input-group>\n</ng-template>\n\n<ng-container\n *ngTemplateOutlet=\"template; context: { $implicit: this }\"\n></ng-container>\n\n@if (showArrows) {\n <button\n igxIconButton=\"flat\"\n type=\"button\"\n class=\"igx-grid__filtering-row-scroll-start\"\n (keydown)=\"onLeftArrowKeyDown($event)\"\n (click)=\"scrollChipsOnArrowPress('left')\"\n >\n <igx-icon family=\"default\" name=\"prev\"></igx-icon>\n </button>\n}\n\n<div #container class=\"igx-grid__filtering-row-main\">\n <div>\n <igx-chips-area #chipsArea>\n <!-- expressionsList items re-created on refreshExpressions(), track stable expression -->\n @for (\n item of expressionsList;\n track item.expression;\n let i = $index;\n let last = $last\n ) {\n <ng-container tabindex=\"0\">\n <igx-chip\n #chip\n id=\"chip\"\n (pointerdown)=\"onChipPointerdown($event, chip)\"\n (click)=\"onChipClick($event, item)\"\n (keydown)=\"onChipKeyDown($event, item)\"\n (remove)=\"onChipRemoved($event, item)\"\n [selectable]=\"false\"\n [selected]=\"item.isSelected\"\n [style.--ig-size]=\"filteringElementsSize\"\n [removable]=\"true\"\n >\n <igx-icon\n igxPrefix\n family=\"default\"\n [name]=\"item.expression.condition.iconName\"\n >\n </igx-icon>\n <span>{{ filteringService.getChipLabel(item.expression) }}</span>\n </igx-chip>\n @if (!last) {\n <span id=\"operand\">\n <button\n igxButton\n type=\"button\"\n (click)=\"toggleOperatorsDropDown($event, i)\"\n [igxDropDownItemNavigation]=\"operators\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"expand_more\"></igx-icon>\n <span>{{\n filteringService.getOperatorAsString(item.afterOperator)\n }}</span>\n </button>\n <igx-drop-down\n #operators\n (selectionChanging)=\"onLogicOperatorChanged($event, item)\"\n >\n <igx-drop-down-item\n [value]=\"0\"\n [selected]=\"item.afterOperator === 0\"\n >{{\n filteringService.grid.resourceStrings\n .igx_grid_filter_operator_and\n }}</igx-drop-down-item\n >\n <igx-drop-down-item\n [value]=\"1\"\n [selected]=\"item.afterOperator === 1\"\n >{{\n filteringService.grid.resourceStrings\n .igx_grid_filter_operator_or\n }}</igx-drop-down-item\n >\n </igx-drop-down>\n </span>\n }\n </ng-container>\n }\n </igx-chips-area>\n </div>\n</div>\n\n@if (showArrows) {\n <button\n igxIconButton=\"flat\"\n type=\"button\"\n class=\"igx-grid__filtering-row-scroll-end\"\n (click)=\"scrollChipsOnArrowPress('right')\"\n >\n <igx-icon family=\"default\" name=\"next\"></igx-icon>\n </button>\n}\n\n<div\n #buttonsContainer\n [ngClass]=\"\n isNarrowWidth\n ? 'igx-grid__filtering-row-editing-buttons--small'\n : 'igx-grid__filtering-row-editing-buttons'\n \"\n>\n @if (!isNarrowWidth) {\n <button\n igxButton=\"flat\"\n type=\"button\"\n igxRipple\n (click)=\"clearFiltering()\"\n [disabled]=\"disabled\"\n [tabindex]=\"disabled\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"refresh\"></igx-icon>\n <span>{{\n filteringService.grid.resourceStrings.igx_grid_filter_row_reset\n }}</span>\n </button>\n <button\n #closeButton\n igxButton=\"flat\"\n type=\"button\"\n igxRipple\n (click)=\"close()\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"close\"></igx-icon>\n <span>{{\n filteringService.grid.resourceStrings.igx_grid_filter_row_close\n }}</span>\n </button>\n }\n @if (isNarrowWidth) {\n <button\n igxIconButton=\"flat\"\n type=\"button\"\n igxRipple\n (click)=\"clearFiltering()\"\n [disabled]=\"disabled\"\n [tabindex]=\"disabled\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"refresh\"></igx-icon>\n </button>\n <button\n #closeButton\n igxIconButton=\"flat\"\n type=\"button\"\n igxRipple\n (click)=\"close()\"\n [style.--ig-size]=\"filteringElementsSize\"\n >\n <igx-icon family=\"default\" name=\"close\"></igx-icon>\n </button>\n }\n</div>\n" }]
13421
13706
  }], propDecorators: { column: [{
13422
13707
  type: Input
13423
13708
  }], value: [{
@@ -13677,7 +13962,7 @@ class BaseRow {
13677
13962
  */
13678
13963
  update(value) {
13679
13964
  const crudService = this.grid.crudService;
13680
- if (crudService.cellInEditMode && crudService.cell?.id.rowID === this.key) {
13965
+ if (crudService.cellInEditMode && crudService.cell.id.rowID === this.key) {
13681
13966
  this.grid.transactions.endPending(false);
13682
13967
  }
13683
13968
  const row = new IgxEditRow(this.key, this.index, this.data, this.grid);
@@ -14646,7 +14931,6 @@ class IgxGridHeaderRowComponent {
14646
14931
  if (row && row.cells) {
14647
14932
  return row.cells.map(cell => cell.column);
14648
14933
  }
14649
- return undefined;
14650
14934
  }
14651
14935
  /**
14652
14936
  * @hidden
@@ -14718,11 +15002,11 @@ class IgxGridHeaderRowComponent {
14718
15002
  }
14719
15003
  }
14720
15004
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxGridHeaderRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14721
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxGridHeaderRowComponent, isStandalone: true, selector: "igx-grid-header-row", inputs: { grid: "grid", pinnedStartColumnCollection: "pinnedStartColumnCollection", pinnedEndColumnCollection: "pinnedEndColumnCollection", unpinnedColumnCollection: "unpinnedColumnCollection", hasMRL: ["hasMRL", "hasMRL", booleanAttribute], width: "width" }, host: { properties: { "attr.role": "this.role", "attr.aria-activedescendant": "this.activeDescendant" } }, viewQueries: [{ propertyName: "headerContainer", first: true, predicate: ["headerVirtualContainer"], descendants: true, read: IgxGridForOfDirective, static: true }, { propertyName: "headerDragContainer", first: true, predicate: ["headerDragContainer"], descendants: true }, { propertyName: "headerSelectorContainer", first: true, predicate: ["headerSelectorContainer"], descendants: true }, { propertyName: "headerGroupContainer", first: true, predicate: ["headerGroupContainer"], descendants: true }, { propertyName: "headSelectorBaseTemplate", first: true, predicate: ["headSelectorBaseTemplate"], descendants: true }, { propertyName: "filterRow", first: true, predicate: IgxGridFilteringRowComponent, descendants: true }, { propertyName: "headerHierarchyExpander", first: true, predicate: ["headerHierarchyExpander"], descendants: true }, { propertyName: "_groups", predicate: IgxGridHeaderGroupComponent, descendants: true }], ngImport: i0, template: "<div class=\"igx-grid-thead__wrapper\" (scroll)=\"scroll($event)\" [style.width.px]=\"width\"\n [class.igx-grid__tr--mrl]=\"hasMRL\">\n\n <!-- Column headers area -->\n <div class=\"igx-grid__tr\" role=\"row\" [attr.aria-rowindex]=\"1\" [style.width.px]=\"width\">\n\n <!-- Left column moving area -->\n @if (grid.moving && grid.columnInDrag && pinnedStartColumnCollection.length <= 0) {\n <span id=\"left\" class=\"igx-grid__scroll-on-drag-left\" droppable=\"true\" [style.left.px]=\"grid.pinnedStartWidth\"\n [igxColumnMovingDrop]=\"headerContainer\"></span>\n }\n @if (grid.moving && grid.columnInDrag && pinnedStartColumnCollection.length > 0) {\n <span id=\"left\" class=\"igx-grid__scroll-on-drag-pinned\" droppable=\"true\" [style.left.px]=\"grid.pinnedStartWidth\"\n [igxColumnMovingDrop]=\"headerContainer\"></span>\n }\n\n <!-- Row dragging area -->\n @if (grid.rowDraggable) {\n <div #headerDragContainer class=\"igx-grid__drag-indicator igx-grid__tr-action\" role=\"columnheader\" (pointerdown)=\"$event.preventDefault()\" [class.igx-grid__drag-indicator--header]=\"!grid.isRowSelectable\">\n <div style=\"visibility: hidden;\">\n <ng-container *ngTemplateOutlet=\"grid.dragIndicatorIconTemplate || grid.dragIndicatorIconBase\"></ng-container>\n </div>\n </div>\n }\n\n <!-- Row selectors area -->\n @if (grid.showRowSelectors) {\n <div #headerSelectorContainer class=\"igx-grid__cbx-selection igx-grid__tr-action\" role=\"columnheader\"\n [class.igx-grid__cbx-selection--push]=\"grid.filteringService.isFilterRowVisible\"\n (click)=\"headerRowSelection($event)\"\n (pointerdown)=\"$event.preventDefault()\">\n <ng-container #headSelector\n *ngTemplateOutlet=\"grid.headSelectorTemplate || headSelectorBaseTemplate; context: rowSelectorsContext\">\n </ng-container>\n </div>\n }\n\n <!-- Hierarchical grids expand all area -->\n @if (isHierarchicalGrid) {\n <div #headerHierarchyExpander\n (click)=\"grid.toggleAll!()\"\n (pointerdown)=\"$event.preventDefault()\"\n [hidden]=\"!grid.hasExpandableChildren || !grid.hasVisibleColumns\"\n role=\"columnheader\"\n [ngClass]=\"{\n 'igx-grid__hierarchical-expander igx-grid__hierarchical-expander--header igx-grid__tr-action': grid.hasExpandableChildren,\n 'igx-grid__hierarchical-expander--push': grid.filteringService.isFilterRowVisible,\n 'igx-grid__hierarchical-expander--no-border': grid.isRowSelectable || grid.rowDraggable\n }\">\n <ng-container *ngTemplateOutlet=\"grid.iconTemplate; context: { $implicit: grid }\"></ng-container>\n </div>\n }\n\n\n <!-- Grouping icon toggle area -->\n @if (grid?.groupingExpressions?.length) {\n <div #headerGroupContainer class=\"{{ indentationCSSClasses }}\"\n (click)=\"grid!.toggleAllGroupRows!()\"\n (pointerdown)=\"$event.preventDefault()\"\n role=\"columnheader\">\n <ng-container *ngTemplateOutlet=\"grid.iconTemplate; context: { $implicit: grid }\"></ng-container>\n </div>\n }\n\n <!-- Pinned columns collection from the start -->\n @if (pinnedStartColumnCollection.length) {\n @for (column of pinnedStartColumnCollection | igxTopLevel; track trackPinnedColumn(column)) {\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\">\n </igx-grid-header-group>\n }\n }\n\n <!-- Unpinned columns collection -->\n <ng-template igxGridFor #headerVirtualContainer let-column\n [igxGridForOf]=\"unpinnedColumnCollection | igxTopLevel\"\n [igxForScrollContainer]=\"grid.parentVirtDir\"\n [igxForContainerSize]=\"grid.unpinnedWidth\"\n [igxForTrackBy]=\"grid.trackColumnChanges\"\n [igxForSizePropName]=\"'calcPixelWidth'\"\n [igxForScrollOrientation]=\"'horizontal'\"\n >\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\">\n </igx-grid-header-group>\n </ng-template>\n\n <!-- Pinned columns collection at the end -->\n @if (pinnedEndColumnCollection.length) {\n @for (column of pinnedEndColumnCollection | igxTopLevel; track trackPinnedColumn(column)) {\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\">\n </igx-grid-header-group>\n }\n }\n </div>\n\n <!-- Render a hidden row of the leaf column headers for accessibility purposes -->\n @if (grid.hasColumnGroups) {\n <div role=\"row\" style=\"width: 0; height: 0; position: absolute; top: -10000px;\">\n @for (column of visibleLeafColumns; track column.index) {\n <div role=\"columnheader\" [attr.aria-hidden]=\"isLeafHeaderAriaHidden\">{{ column.header || column.field }}</div>\n }\n </div>\n }\n\n <!-- Filter row area -->\n @if (grid.filteringService.isFilterRowVisible) {\n <igx-grid-filtering-row #filteringRow\n [column]=\"grid.filteringService.filteredColumn\"\n [style.width.px]=\"width\">\n </igx-grid-filtering-row>\n }\n\n <!-- Right column moving area -->\n @if (grid.moving && grid.columnInDrag) {\n <span id=\"right\" class=\"igx-grid__scroll-on-drag-right\" droppable=\"true\" [igxColumnMovingDrop]=\"headerContainer\"></span>\n }\n</div>\n\n<!-- Header thumb area -->\n<div class=\"igx-grid-thead__thumb\" [hidden]=\"!grid.hasVerticalScroll()\" [style.width.px]=\"grid.scrollSize\"></div>\n\n<!-- Default row selection header checkbox template -->\n<ng-template #headSelectorBaseTemplate igxHeadSelector let-context>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox\n [tabindex]=\"-1\"\n [readonly]=\"true\"\n [checked]=\"context.selectedCount > 0 && grid.selectionService.areAllRowSelected()\"\n [disableRipple]=\"true\"\n [ngStyle]=\"{'visibility': grid.isMultiRowSelectionEnabled? 'visible' : 'hidden' }\"\n [indeterminate]=\"context.selectedCount > 0 && grid.selectionService.hasSomeRowSelected()\"\n [aria-label]=\"grid.headSelectorBaseAriaLabel\"\n #headerCheckbox>\n </igx-checkbox>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: IgxColumnMovingDropDirective, selector: "[igxColumnMovingDrop]", inputs: ["igxColumnMovingDrop"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IgxGridHeaderGroupComponent, selector: "igx-grid-header-group", inputs: ["column"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: IgxGridForOfDirective, selector: "[igxGridFor][igxGridForOf]", inputs: ["igxGridForOf", "igxGridForOfUniqueSizeCache", "igxGridForOfVariableSizes"], outputs: ["dataChanging"] }, { kind: "component", type: IgxGridFilteringRowComponent, selector: "igx-grid-filtering-row", inputs: ["column", "value"] }, { kind: "component", type: IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["indeterminate", "checked", "disabled", "invalid", "readonly", "disableTransitions"] }, { kind: "pipe", type: IgxGridTopLevelColumns, name: "igxTopLevel" }, { kind: "pipe", type: IgxHeaderGroupStylePipe, name: "igxHeaderGroupStyle" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15005
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxGridHeaderRowComponent, isStandalone: true, selector: "igx-grid-header-row", inputs: { grid: "grid", pinnedStartColumnCollection: "pinnedStartColumnCollection", pinnedEndColumnCollection: "pinnedEndColumnCollection", unpinnedColumnCollection: "unpinnedColumnCollection", hasMRL: ["hasMRL", "hasMRL", booleanAttribute], width: "width" }, host: { properties: { "attr.role": "this.role", "attr.aria-activedescendant": "this.activeDescendant" } }, viewQueries: [{ propertyName: "headerContainer", first: true, predicate: ["headerVirtualContainer"], descendants: true, read: IgxGridForOfDirective, static: true }, { propertyName: "headerDragContainer", first: true, predicate: ["headerDragContainer"], descendants: true }, { propertyName: "headerSelectorContainer", first: true, predicate: ["headerSelectorContainer"], descendants: true }, { propertyName: "headerGroupContainer", first: true, predicate: ["headerGroupContainer"], descendants: true }, { propertyName: "headSelectorBaseTemplate", first: true, predicate: ["headSelectorBaseTemplate"], descendants: true }, { propertyName: "filterRow", first: true, predicate: IgxGridFilteringRowComponent, descendants: true }, { propertyName: "headerHierarchyExpander", first: true, predicate: ["headerHierarchyExpander"], descendants: true }, { propertyName: "_groups", predicate: IgxGridHeaderGroupComponent, descendants: true }], ngImport: i0, template: "<div class=\"igx-grid-thead__wrapper\" (scroll)=\"scroll($event)\" [style.width.px]=\"width\"\n [class.igx-grid__tr--mrl]=\"hasMRL\">\n\n <!-- Column headers area -->\n <div class=\"igx-grid__tr\" role=\"row\" [attr.aria-rowindex]=\"1\" [style.width.px]=\"width\">\n\n <!-- Left column moving area -->\n @if (grid.moving && grid.columnInDrag && pinnedStartColumnCollection.length <= 0) {\n <span id=\"left\" class=\"igx-grid__scroll-on-drag-left\" droppable=\"true\" [style.left.px]=\"grid.pinnedStartWidth\"\n [igxColumnMovingDrop]=\"headerContainer\"></span>\n }\n @if (grid.moving && grid.columnInDrag && pinnedStartColumnCollection.length > 0) {\n <span id=\"left\" class=\"igx-grid__scroll-on-drag-pinned\" droppable=\"true\" [style.left.px]=\"grid.pinnedStartWidth\"\n [igxColumnMovingDrop]=\"headerContainer\"></span>\n }\n\n <!-- Row dragging area -->\n @if (grid.rowDraggable) {\n <div #headerDragContainer class=\"igx-grid__drag-indicator igx-grid__tr-action\" role=\"columnheader\" (pointerdown)=\"$event.preventDefault()\" [class.igx-grid__drag-indicator--header]=\"!grid.isRowSelectable\">\n <div style=\"visibility: hidden;\">\n <ng-container *ngTemplateOutlet=\"grid.dragIndicatorIconTemplate || grid.dragIndicatorIconBase\"></ng-container>\n </div>\n </div>\n }\n\n <!-- Row selectors area -->\n @if (grid.showRowSelectors) {\n <div #headerSelectorContainer class=\"igx-grid__cbx-selection igx-grid__tr-action\" role=\"columnheader\"\n [class.igx-grid__cbx-selection--push]=\"grid.filteringService.isFilterRowVisible\"\n (click)=\"headerRowSelection($event)\"\n (pointerdown)=\"$event.preventDefault()\">\n <ng-container #headSelector\n *ngTemplateOutlet=\"grid.headSelectorTemplate || headSelectorBaseTemplate; context: rowSelectorsContext\">\n </ng-container>\n </div>\n }\n\n <!-- Hierarchical grids expand all area -->\n @if (isHierarchicalGrid) {\n <div #headerHierarchyExpander\n (click)=\"grid.toggleAll()\"\n (pointerdown)=\"$event.preventDefault()\"\n [hidden]=\"!grid.hasExpandableChildren || !grid.hasVisibleColumns\"\n role=\"columnheader\"\n [ngClass]=\"{\n 'igx-grid__hierarchical-expander igx-grid__hierarchical-expander--header igx-grid__tr-action': grid.hasExpandableChildren,\n 'igx-grid__hierarchical-expander--push': grid.filteringService.isFilterRowVisible,\n 'igx-grid__hierarchical-expander--no-border': grid.isRowSelectable || grid.rowDraggable\n }\">\n <ng-container *ngTemplateOutlet=\"grid.iconTemplate; context: { $implicit: grid }\"></ng-container>\n </div>\n }\n\n\n <!-- Grouping icon toggle area -->\n @if (grid?.groupingExpressions?.length) {\n <div #headerGroupContainer class=\"{{ indentationCSSClasses }}\"\n (click)=\"grid.toggleAllGroupRows()\"\n (pointerdown)=\"$event.preventDefault()\"\n role=\"columnheader\">\n <ng-container *ngTemplateOutlet=\"grid.iconTemplate; context: { $implicit: grid }\"></ng-container>\n </div>\n }\n\n <!-- Pinned columns collection from the start -->\n @if (pinnedStartColumnCollection.length) {\n @for (column of pinnedStartColumnCollection | igxTopLevel; track trackPinnedColumn(column)) {\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\">\n </igx-grid-header-group>\n }\n }\n\n <!-- Unpinned columns collection -->\n <ng-template igxGridFor #headerVirtualContainer let-column\n [igxGridForOf]=\"unpinnedColumnCollection | igxTopLevel\"\n [igxForScrollContainer]=\"grid.parentVirtDir\"\n [igxForContainerSize]=\"grid.unpinnedWidth\"\n [igxForTrackBy]=\"grid.trackColumnChanges\"\n [igxForSizePropName]=\"'calcPixelWidth'\"\n [igxForScrollOrientation]=\"'horizontal'\"\n >\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\">\n </igx-grid-header-group>\n </ng-template>\n\n <!-- Pinned columns collection at the end -->\n @if (pinnedEndColumnCollection.length) {\n @for (column of pinnedEndColumnCollection | igxTopLevel; track trackPinnedColumn(column)) {\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\">\n </igx-grid-header-group>\n }\n }\n </div>\n\n <!-- Render a hidden row of the leaf column headers for accessibility purposes -->\n @if (grid.hasColumnGroups) {\n <div role=\"row\" style=\"width: 0; height: 0; position: absolute; top: -10000px;\">\n @for (column of visibleLeafColumns; track column.index) {\n <div role=\"columnheader\" [attr.aria-hidden]=\"isLeafHeaderAriaHidden\">{{ column.header || column.field }}</div>\n }\n </div>\n }\n\n <!-- Filter row area -->\n @if (grid.filteringService.isFilterRowVisible) {\n <igx-grid-filtering-row #filteringRow\n [column]=\"grid.filteringService.filteredColumn\"\n [style.width.px]=\"width\">\n </igx-grid-filtering-row>\n }\n\n <!-- Right column moving area -->\n @if (grid.moving && grid.columnInDrag) {\n <span id=\"right\" class=\"igx-grid__scroll-on-drag-right\" droppable=\"true\" [igxColumnMovingDrop]=\"headerContainer\"></span>\n }\n</div>\n\n<!-- Header thumb area -->\n<div class=\"igx-grid-thead__thumb\" [hidden]=\"!grid.hasVerticalScroll()\" [style.width.px]=\"grid.scrollSize\"></div>\n\n<!-- Default row selection header checkbox template -->\n<ng-template #headSelectorBaseTemplate igxHeadSelector let-context>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox\n [tabindex]=\"-1\"\n [readonly]=\"true\"\n [checked]=\"context.selectedCount > 0 && grid.selectionService.areAllRowSelected()\"\n [disableRipple]=\"true\"\n [ngStyle]=\"{'visibility': grid.isMultiRowSelectionEnabled? 'visible' : 'hidden' }\"\n [indeterminate]=\"context.selectedCount > 0 && grid.selectionService.hasSomeRowSelected()\"\n [aria-label]=\"grid.headSelectorBaseAriaLabel\"\n #headerCheckbox>\n </igx-checkbox>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: IgxColumnMovingDropDirective, selector: "[igxColumnMovingDrop]", inputs: ["igxColumnMovingDrop"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IgxGridHeaderGroupComponent, selector: "igx-grid-header-group", inputs: ["column"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: IgxGridForOfDirective, selector: "[igxGridFor][igxGridForOf]", inputs: ["igxGridForOf", "igxGridForOfUniqueSizeCache", "igxGridForOfVariableSizes"], outputs: ["dataChanging"] }, { kind: "component", type: IgxGridFilteringRowComponent, selector: "igx-grid-filtering-row", inputs: ["column", "value"] }, { kind: "component", type: IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["indeterminate", "checked", "disabled", "invalid", "readonly", "disableTransitions"] }, { kind: "pipe", type: IgxGridTopLevelColumns, name: "igxTopLevel" }, { kind: "pipe", type: IgxHeaderGroupStylePipe, name: "igxHeaderGroupStyle" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14722
15006
  }
14723
15007
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxGridHeaderRowComponent, decorators: [{
14724
15008
  type: Component,
14725
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-grid-header-row', imports: [IgxColumnMovingDropDirective, NgTemplateOutlet, NgClass, IgxGridHeaderGroupComponent, NgStyle, IgxGridForOfDirective, IgxGridFilteringRowComponent, IgxCheckboxComponent, IgxGridTopLevelColumns, IgxHeaderGroupStylePipe], template: "<div class=\"igx-grid-thead__wrapper\" (scroll)=\"scroll($event)\" [style.width.px]=\"width\"\n [class.igx-grid__tr--mrl]=\"hasMRL\">\n\n <!-- Column headers area -->\n <div class=\"igx-grid__tr\" role=\"row\" [attr.aria-rowindex]=\"1\" [style.width.px]=\"width\">\n\n <!-- Left column moving area -->\n @if (grid.moving && grid.columnInDrag && pinnedStartColumnCollection.length <= 0) {\n <span id=\"left\" class=\"igx-grid__scroll-on-drag-left\" droppable=\"true\" [style.left.px]=\"grid.pinnedStartWidth\"\n [igxColumnMovingDrop]=\"headerContainer\"></span>\n }\n @if (grid.moving && grid.columnInDrag && pinnedStartColumnCollection.length > 0) {\n <span id=\"left\" class=\"igx-grid__scroll-on-drag-pinned\" droppable=\"true\" [style.left.px]=\"grid.pinnedStartWidth\"\n [igxColumnMovingDrop]=\"headerContainer\"></span>\n }\n\n <!-- Row dragging area -->\n @if (grid.rowDraggable) {\n <div #headerDragContainer class=\"igx-grid__drag-indicator igx-grid__tr-action\" role=\"columnheader\" (pointerdown)=\"$event.preventDefault()\" [class.igx-grid__drag-indicator--header]=\"!grid.isRowSelectable\">\n <div style=\"visibility: hidden;\">\n <ng-container *ngTemplateOutlet=\"grid.dragIndicatorIconTemplate || grid.dragIndicatorIconBase\"></ng-container>\n </div>\n </div>\n }\n\n <!-- Row selectors area -->\n @if (grid.showRowSelectors) {\n <div #headerSelectorContainer class=\"igx-grid__cbx-selection igx-grid__tr-action\" role=\"columnheader\"\n [class.igx-grid__cbx-selection--push]=\"grid.filteringService.isFilterRowVisible\"\n (click)=\"headerRowSelection($event)\"\n (pointerdown)=\"$event.preventDefault()\">\n <ng-container #headSelector\n *ngTemplateOutlet=\"grid.headSelectorTemplate || headSelectorBaseTemplate; context: rowSelectorsContext\">\n </ng-container>\n </div>\n }\n\n <!-- Hierarchical grids expand all area -->\n @if (isHierarchicalGrid) {\n <div #headerHierarchyExpander\n (click)=\"grid.toggleAll!()\"\n (pointerdown)=\"$event.preventDefault()\"\n [hidden]=\"!grid.hasExpandableChildren || !grid.hasVisibleColumns\"\n role=\"columnheader\"\n [ngClass]=\"{\n 'igx-grid__hierarchical-expander igx-grid__hierarchical-expander--header igx-grid__tr-action': grid.hasExpandableChildren,\n 'igx-grid__hierarchical-expander--push': grid.filteringService.isFilterRowVisible,\n 'igx-grid__hierarchical-expander--no-border': grid.isRowSelectable || grid.rowDraggable\n }\">\n <ng-container *ngTemplateOutlet=\"grid.iconTemplate; context: { $implicit: grid }\"></ng-container>\n </div>\n }\n\n\n <!-- Grouping icon toggle area -->\n @if (grid?.groupingExpressions?.length) {\n <div #headerGroupContainer class=\"{{ indentationCSSClasses }}\"\n (click)=\"grid!.toggleAllGroupRows!()\"\n (pointerdown)=\"$event.preventDefault()\"\n role=\"columnheader\">\n <ng-container *ngTemplateOutlet=\"grid.iconTemplate; context: { $implicit: grid }\"></ng-container>\n </div>\n }\n\n <!-- Pinned columns collection from the start -->\n @if (pinnedStartColumnCollection.length) {\n @for (column of pinnedStartColumnCollection | igxTopLevel; track trackPinnedColumn(column)) {\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\">\n </igx-grid-header-group>\n }\n }\n\n <!-- Unpinned columns collection -->\n <ng-template igxGridFor #headerVirtualContainer let-column\n [igxGridForOf]=\"unpinnedColumnCollection | igxTopLevel\"\n [igxForScrollContainer]=\"grid.parentVirtDir\"\n [igxForContainerSize]=\"grid.unpinnedWidth\"\n [igxForTrackBy]=\"grid.trackColumnChanges\"\n [igxForSizePropName]=\"'calcPixelWidth'\"\n [igxForScrollOrientation]=\"'horizontal'\"\n >\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\">\n </igx-grid-header-group>\n </ng-template>\n\n <!-- Pinned columns collection at the end -->\n @if (pinnedEndColumnCollection.length) {\n @for (column of pinnedEndColumnCollection | igxTopLevel; track trackPinnedColumn(column)) {\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\">\n </igx-grid-header-group>\n }\n }\n </div>\n\n <!-- Render a hidden row of the leaf column headers for accessibility purposes -->\n @if (grid.hasColumnGroups) {\n <div role=\"row\" style=\"width: 0; height: 0; position: absolute; top: -10000px;\">\n @for (column of visibleLeafColumns; track column.index) {\n <div role=\"columnheader\" [attr.aria-hidden]=\"isLeafHeaderAriaHidden\">{{ column.header || column.field }}</div>\n }\n </div>\n }\n\n <!-- Filter row area -->\n @if (grid.filteringService.isFilterRowVisible) {\n <igx-grid-filtering-row #filteringRow\n [column]=\"grid.filteringService.filteredColumn\"\n [style.width.px]=\"width\">\n </igx-grid-filtering-row>\n }\n\n <!-- Right column moving area -->\n @if (grid.moving && grid.columnInDrag) {\n <span id=\"right\" class=\"igx-grid__scroll-on-drag-right\" droppable=\"true\" [igxColumnMovingDrop]=\"headerContainer\"></span>\n }\n</div>\n\n<!-- Header thumb area -->\n<div class=\"igx-grid-thead__thumb\" [hidden]=\"!grid.hasVerticalScroll()\" [style.width.px]=\"grid.scrollSize\"></div>\n\n<!-- Default row selection header checkbox template -->\n<ng-template #headSelectorBaseTemplate igxHeadSelector let-context>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox\n [tabindex]=\"-1\"\n [readonly]=\"true\"\n [checked]=\"context.selectedCount > 0 && grid.selectionService.areAllRowSelected()\"\n [disableRipple]=\"true\"\n [ngStyle]=\"{'visibility': grid.isMultiRowSelectionEnabled? 'visible' : 'hidden' }\"\n [indeterminate]=\"context.selectedCount > 0 && grid.selectionService.hasSomeRowSelected()\"\n [aria-label]=\"grid.headSelectorBaseAriaLabel\"\n #headerCheckbox>\n </igx-checkbox>\n </div>\n</ng-template>\n" }]
15009
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-grid-header-row', imports: [IgxColumnMovingDropDirective, NgTemplateOutlet, NgClass, IgxGridHeaderGroupComponent, NgStyle, IgxGridForOfDirective, IgxGridFilteringRowComponent, IgxCheckboxComponent, IgxGridTopLevelColumns, IgxHeaderGroupStylePipe], template: "<div class=\"igx-grid-thead__wrapper\" (scroll)=\"scroll($event)\" [style.width.px]=\"width\"\n [class.igx-grid__tr--mrl]=\"hasMRL\">\n\n <!-- Column headers area -->\n <div class=\"igx-grid__tr\" role=\"row\" [attr.aria-rowindex]=\"1\" [style.width.px]=\"width\">\n\n <!-- Left column moving area -->\n @if (grid.moving && grid.columnInDrag && pinnedStartColumnCollection.length <= 0) {\n <span id=\"left\" class=\"igx-grid__scroll-on-drag-left\" droppable=\"true\" [style.left.px]=\"grid.pinnedStartWidth\"\n [igxColumnMovingDrop]=\"headerContainer\"></span>\n }\n @if (grid.moving && grid.columnInDrag && pinnedStartColumnCollection.length > 0) {\n <span id=\"left\" class=\"igx-grid__scroll-on-drag-pinned\" droppable=\"true\" [style.left.px]=\"grid.pinnedStartWidth\"\n [igxColumnMovingDrop]=\"headerContainer\"></span>\n }\n\n <!-- Row dragging area -->\n @if (grid.rowDraggable) {\n <div #headerDragContainer class=\"igx-grid__drag-indicator igx-grid__tr-action\" role=\"columnheader\" (pointerdown)=\"$event.preventDefault()\" [class.igx-grid__drag-indicator--header]=\"!grid.isRowSelectable\">\n <div style=\"visibility: hidden;\">\n <ng-container *ngTemplateOutlet=\"grid.dragIndicatorIconTemplate || grid.dragIndicatorIconBase\"></ng-container>\n </div>\n </div>\n }\n\n <!-- Row selectors area -->\n @if (grid.showRowSelectors) {\n <div #headerSelectorContainer class=\"igx-grid__cbx-selection igx-grid__tr-action\" role=\"columnheader\"\n [class.igx-grid__cbx-selection--push]=\"grid.filteringService.isFilterRowVisible\"\n (click)=\"headerRowSelection($event)\"\n (pointerdown)=\"$event.preventDefault()\">\n <ng-container #headSelector\n *ngTemplateOutlet=\"grid.headSelectorTemplate || headSelectorBaseTemplate; context: rowSelectorsContext\">\n </ng-container>\n </div>\n }\n\n <!-- Hierarchical grids expand all area -->\n @if (isHierarchicalGrid) {\n <div #headerHierarchyExpander\n (click)=\"grid.toggleAll()\"\n (pointerdown)=\"$event.preventDefault()\"\n [hidden]=\"!grid.hasExpandableChildren || !grid.hasVisibleColumns\"\n role=\"columnheader\"\n [ngClass]=\"{\n 'igx-grid__hierarchical-expander igx-grid__hierarchical-expander--header igx-grid__tr-action': grid.hasExpandableChildren,\n 'igx-grid__hierarchical-expander--push': grid.filteringService.isFilterRowVisible,\n 'igx-grid__hierarchical-expander--no-border': grid.isRowSelectable || grid.rowDraggable\n }\">\n <ng-container *ngTemplateOutlet=\"grid.iconTemplate; context: { $implicit: grid }\"></ng-container>\n </div>\n }\n\n\n <!-- Grouping icon toggle area -->\n @if (grid?.groupingExpressions?.length) {\n <div #headerGroupContainer class=\"{{ indentationCSSClasses }}\"\n (click)=\"grid.toggleAllGroupRows()\"\n (pointerdown)=\"$event.preventDefault()\"\n role=\"columnheader\">\n <ng-container *ngTemplateOutlet=\"grid.iconTemplate; context: { $implicit: grid }\"></ng-container>\n </div>\n }\n\n <!-- Pinned columns collection from the start -->\n @if (pinnedStartColumnCollection.length) {\n @for (column of pinnedStartColumnCollection | igxTopLevel; track trackPinnedColumn(column)) {\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\">\n </igx-grid-header-group>\n }\n }\n\n <!-- Unpinned columns collection -->\n <ng-template igxGridFor #headerVirtualContainer let-column\n [igxGridForOf]=\"unpinnedColumnCollection | igxTopLevel\"\n [igxForScrollContainer]=\"grid.parentVirtDir\"\n [igxForContainerSize]=\"grid.unpinnedWidth\"\n [igxForTrackBy]=\"grid.trackColumnChanges\"\n [igxForSizePropName]=\"'calcPixelWidth'\"\n [igxForScrollOrientation]=\"'horizontal'\"\n >\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\">\n </igx-grid-header-group>\n </ng-template>\n\n <!-- Pinned columns collection at the end -->\n @if (pinnedEndColumnCollection.length) {\n @for (column of pinnedEndColumnCollection | igxTopLevel; track trackPinnedColumn(column)) {\n <igx-grid-header-group\n [ngClass]=\"column.headerGroupClasses\"\n [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\"\n [column]=\"column\">\n </igx-grid-header-group>\n }\n }\n </div>\n\n <!-- Render a hidden row of the leaf column headers for accessibility purposes -->\n @if (grid.hasColumnGroups) {\n <div role=\"row\" style=\"width: 0; height: 0; position: absolute; top: -10000px;\">\n @for (column of visibleLeafColumns; track column.index) {\n <div role=\"columnheader\" [attr.aria-hidden]=\"isLeafHeaderAriaHidden\">{{ column.header || column.field }}</div>\n }\n </div>\n }\n\n <!-- Filter row area -->\n @if (grid.filteringService.isFilterRowVisible) {\n <igx-grid-filtering-row #filteringRow\n [column]=\"grid.filteringService.filteredColumn\"\n [style.width.px]=\"width\">\n </igx-grid-filtering-row>\n }\n\n <!-- Right column moving area -->\n @if (grid.moving && grid.columnInDrag) {\n <span id=\"right\" class=\"igx-grid__scroll-on-drag-right\" droppable=\"true\" [igxColumnMovingDrop]=\"headerContainer\"></span>\n }\n</div>\n\n<!-- Header thumb area -->\n<div class=\"igx-grid-thead__thumb\" [hidden]=\"!grid.hasVerticalScroll()\" [style.width.px]=\"grid.scrollSize\"></div>\n\n<!-- Default row selection header checkbox template -->\n<ng-template #headSelectorBaseTemplate igxHeadSelector let-context>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox\n [tabindex]=\"-1\"\n [readonly]=\"true\"\n [checked]=\"context.selectedCount > 0 && grid.selectionService.areAllRowSelected()\"\n [disableRipple]=\"true\"\n [ngStyle]=\"{'visibility': grid.isMultiRowSelectionEnabled? 'visible' : 'hidden' }\"\n [indeterminate]=\"context.selectedCount > 0 && grid.selectionService.hasSomeRowSelected()\"\n [aria-label]=\"grid.headSelectorBaseAriaLabel\"\n #headerCheckbox>\n </igx-checkbox>\n </div>\n</ng-template>\n" }]
14726
15010
  }], propDecorators: { grid: [{
14727
15011
  type: Input
14728
15012
  }], pinnedStartColumnCollection: [{
@@ -15502,7 +15786,7 @@ class IgxGridStateBaseDirective {
15502
15786
  if (!context.currGrid._init && !context.currGrid._rendered) {
15503
15787
  // If grid is not rendered but is initialized (during ngAfterViewInit) wait for it to render.
15504
15788
  // Otherwise pushing mid detect change (mainly while calculating sizes from `calculateGridWidth` and `calculateGridSizes`) messes up headers detect changing.
15505
- context.currGrid.rendered.pipe(first()).subscribe(() => {
15789
+ context.currGrid.rendered.pipe(first$1()).subscribe(() => {
15506
15790
  context.currGrid.updateColumns(newColumns);
15507
15791
  newColumns.forEach(col => {
15508
15792
  context.currGrid.columnInit.emit(col);
@@ -15634,9 +15918,9 @@ class IgxGridStateBaseDirective {
15634
15918
  const childGridStates = [];
15635
15919
  const rowIslands = context.currGrid.allLayoutList;
15636
15920
  if (rowIslands) {
15637
- rowIslands.forEach((rowIsland) => {
15921
+ rowIslands.forEach(rowIsland => {
15638
15922
  const childGrids = rowIsland.rowIslandAPI.getChildGrids();
15639
- childGrids.forEach((chGrid) => {
15923
+ childGrids.forEach(chGrid => {
15640
15924
  const parentRowID = this.getParentRowID(chGrid);
15641
15925
  context.currGrid = chGrid;
15642
15926
  if (context.currGrid) {
@@ -15652,12 +15936,12 @@ class IgxGridStateBaseDirective {
15652
15936
  restoreFeatureState(context, state) {
15653
15937
  const rowIslands = context.currGrid.allLayoutList;
15654
15938
  if (rowIslands) {
15655
- rowIslands.forEach((rowIsland) => {
15939
+ rowIslands.forEach(rowIsland => {
15656
15940
  const childGrids = rowIsland.rowIslandAPI.getChildGrids();
15657
- childGrids.forEach((chGrid) => {
15941
+ childGrids.forEach(chGrid => {
15658
15942
  const parentRowID = this.getParentRowID(chGrid);
15659
15943
  context.currGrid = chGrid;
15660
- const childGridState = state.find((st) => st.id === rowIsland.id && st.parentRowID === parentRowID);
15944
+ const childGridState = state.find(st => st.id === rowIsland.id && st.parentRowID === parentRowID);
15661
15945
  if (childGridState && context.currGrid) {
15662
15946
  context.restoreGridState(childGridState.state, context.featureKeys);
15663
15947
  }
@@ -15747,7 +16031,7 @@ class IgxGridStateBaseDirective {
15747
16031
  getStateInternal(serialize = true, features) {
15748
16032
  let state;
15749
16033
  this.currGrid = this.grid;
15750
- state = this.buildState(features);
16034
+ this.state = state = this.buildState(features);
15751
16035
  if (serialize) {
15752
16036
  state = JSON.stringify(state, this.stringifyCallback);
15753
16037
  }
@@ -15768,6 +16052,7 @@ class IgxGridStateBaseDirective {
15768
16052
  * ```
15769
16053
  */
15770
16054
  setStateInternal(state, features) {
16055
+ this.state = state;
15771
16056
  this.currGrid = this.grid;
15772
16057
  this.restoreGridState(state, features);
15773
16058
  this.grid.cdr.detectChanges(); // TODO
@@ -15832,7 +16117,7 @@ class IgxGridStateBaseDirective {
15832
16117
  restoreDimensions(config) {
15833
16118
  const collections = [config.rows, config.columns, config.filters];
15834
16119
  for (const collection of collections) {
15835
- for (let index = 0; index < (collection?.length ?? 0); index++) {
16120
+ for (let index = 0; index < collection?.length; index++) {
15836
16121
  const dim = collection[index];
15837
16122
  if (this.isDateDimension(dim)) {
15838
16123
  this.restoreDateDimension(dim);
@@ -15907,7 +16192,7 @@ class IgxGridStateBaseDirective {
15907
16192
  return null;
15908
16193
  }
15909
16194
  if (this.currGrid.type === 'pivot') {
15910
- return recreateTreeFromFields(exprTreeObject, this.currGrid.allDimensions.map((d) => ({ dataType: d.dataType, field: d.memberName })));
16195
+ return recreateTreeFromFields(exprTreeObject, this.currGrid.allDimensions.map(d => ({ dataType: d.dataType, field: d.memberName })));
15911
16196
  }
15912
16197
  return recreateTreeFromFields(exprTreeObject, this.currGrid.columns);
15913
16198
  }
@@ -16392,7 +16677,7 @@ class BaseToolbarDirective {
16392
16677
  ? actions.columnsAreaMaxHeight :
16393
16678
  this.columnListHeight ??
16394
16679
  `${Math.max(this.grid.calcHeight * 0.5, 200)}px`;
16395
- toggleRef.opening.pipe(first()).subscribe(setHeight);
16680
+ toggleRef.opening.pipe(first$1()).subscribe(setHeight);
16396
16681
  }
16397
16682
  toggleRef.toggle({
16398
16683
  ...this.overlaySettings, ...{
@@ -16413,12 +16698,12 @@ class BaseToolbarDirective {
16413
16698
  }
16414
16699
  /** The if statement prevents emitting open and close events twice */
16415
16700
  if (toggleRef.collapsed) {
16416
- toggleRef.opening.pipe(first(), takeUntil(this.$destroy)).subscribe((event) => this.opening.emit(event));
16417
- toggleRef.opened.pipe(first(), takeUntil(this.$destroy)).subscribe((event) => this.opened.emit(event));
16701
+ toggleRef.opening.pipe(first$1(), takeUntil(this.$destroy)).subscribe((event) => this.opening.emit(event));
16702
+ toggleRef.opened.pipe(first$1(), takeUntil(this.$destroy)).subscribe((event) => this.opened.emit(event));
16418
16703
  }
16419
16704
  else {
16420
- toggleRef.closing.pipe(first(), takeUntil(this.$destroy)).subscribe((event) => this.closing.emit(event));
16421
- toggleRef.closed.pipe(first(), takeUntil(this.$destroy)).subscribe((event) => this.closed.emit(event));
16705
+ toggleRef.closing.pipe(first$1(), takeUntil(this.$destroy)).subscribe((event) => this.closing.emit(event));
16706
+ toggleRef.closed.pipe(first$1(), takeUntil(this.$destroy)).subscribe((event) => this.closed.emit(event));
16422
16707
  }
16423
16708
  }
16424
16709
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: BaseToolbarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
@@ -17275,7 +17560,7 @@ class IgxBaseExporter {
17275
17560
  this.pivotGridColumns = [];
17276
17561
  this.isPivotGridExport = true;
17277
17562
  this.pivotGridRowDimensionsMap = new Map();
17278
- grid.visibleRowDimensions.filter(r => r.enabled).forEach((rowDimension) => {
17563
+ grid.visibleRowDimensions.filter(r => r.enabled).forEach(rowDimension => {
17279
17564
  this.addToRowDimensionsMap(rowDimension, rowDimension.memberName);
17280
17565
  });
17281
17566
  this._ownersMap.set(DEFAULT_OWNER, columnList);
@@ -17288,10 +17573,8 @@ class IgxBaseExporter {
17288
17573
  this.addLevelColumns();
17289
17574
  this.prepareData(grid);
17290
17575
  this.addLevelData();
17291
- if (grid.type === 'pivot') {
17292
- this.addPivotGridColumns(grid);
17293
- this.addPivotRowHeaders(grid);
17294
- }
17576
+ this.addPivotGridColumns(grid);
17577
+ this.addPivotRowHeaders(grid);
17295
17578
  this.exportGridRecordsData(this.flatRecords, grid);
17296
17579
  }
17297
17580
  /**
@@ -17418,7 +17701,7 @@ class IgxBaseExporter {
17418
17701
  }
17419
17702
  const targetCol = mapRecord.columns.filter(c => column.columnGroupParent !== null && column.columnGroupParent !== undefined && c.columnGroup === column.columnGroupParent)[0];
17420
17703
  if (targetCol !== undefined) {
17421
- targetCol.columnSpan = targetCol.columnSpan - span;
17704
+ targetCol.columnSpan -= span;
17422
17705
  if (targetCol.columnGroupParent !== null) {
17423
17706
  this.calculateColumnSpans(targetCol, mapRecord, span);
17424
17707
  }
@@ -17609,7 +17892,7 @@ class IgxBaseExporter {
17609
17892
  hierarchicalOwner: GRID_PARENT
17610
17893
  };
17611
17894
  this.flatRecords.push(hierarchicalGridRecord);
17612
- for (const island of childLayoutList ?? []) {
17895
+ for (const island of childLayoutList) {
17613
17896
  const path = {
17614
17897
  rowID: grid.primaryKey ? entry[grid.primaryKey] : entry,
17615
17898
  rowKey: grid.primaryKey ? entry[grid.primaryKey] : entry,
@@ -18068,7 +18351,7 @@ class IgxBaseExporter {
18068
18351
  let keyData;
18069
18352
  if (island.autoGenerate) {
18070
18353
  keyData = gridData && gridData[island.key] ? gridData[island.key] : undefined;
18071
- const islandKeys = island.children && island.children.length > 0 ? island.children.map((i) => i.key) : [];
18354
+ const islandKeys = island.children && island.children.length > 0 ? island.children.map(i => i.key) : [];
18072
18355
  if (keyData && Array.isArray(keyData) && keyData.length > 0) {
18073
18356
  const islandData = keyData.map(i => {
18074
18357
  const newItem = {};
@@ -18128,9 +18411,9 @@ class IgxBaseExporter {
18128
18411
  addPivotRowHeaders(grid) {
18129
18412
  if (grid?.pivotUI?.showRowHeaders) {
18130
18413
  const headersList = this._ownersMap.get(DEFAULT_OWNER);
18131
- const enabledRows = grid.visibleRowDimensions.filter((r) => r.enabled).map((r, index) => ({ name: r.displayName || r.memberName, level: index }));
18414
+ const enabledRows = grid.visibleRowDimensions.filter(r => r.enabled).map((r, index) => ({ name: r.displayName || r.memberName, level: index }));
18132
18415
  let startIndex = 0;
18133
- enabledRows.forEach((x) => {
18416
+ enabledRows.forEach(x => {
18134
18417
  headersList.columns.unshift({
18135
18418
  rowSpan: headersList.maxLevel + 1,
18136
18419
  field: x.name,
@@ -18148,6 +18431,9 @@ class IgxBaseExporter {
18148
18431
  }
18149
18432
  }
18150
18433
  addPivotGridColumns(grid) {
18434
+ if (grid.type !== 'pivot') {
18435
+ return;
18436
+ }
18151
18437
  const enabledRows = grid.visibleRowDimensions.map((r, i) => ({ name: r.memberName, level: i }));
18152
18438
  this.preparePivotGridColumns(enabledRows);
18153
18439
  this.pivotGridFilterFieldsCount = enabledRows.length;
@@ -18761,7 +19047,6 @@ class WorksheetFile {
18761
19047
  // TODO: get date format from locale
18762
19048
  return `"Latest: "&amp;_xlfn.TEXT(_xlfn.MAX(_xlfn.IF(${levelDimensions.startCoordinate}:${levelDimensions.endCoordinate}=${recordLevel}, ${dimensions.startCoordinate}:${dimensions.endCoordinate})), "m/d/yyyy")`;
18763
19049
  }
18764
- return undefined;
18765
19050
  }
18766
19051
  setRootSummaryStartCoordinate(column, key) {
18767
19052
  const firstDataRecordColName = ExcelStrings.getExcelColumn(column) + (this.firstDataRow);
@@ -20657,7 +20942,7 @@ class IgxGridToolbarExporterComponent extends BaseToolbarDirective {
20657
20942
  }
20658
20943
  this.isExporting = true;
20659
20944
  this.toolbar.showProgress = true;
20660
- exporter.exportEnded.pipe(first()).subscribe(() => {
20945
+ exporter.exportEnded.pipe(first$1()).subscribe(() => {
20661
20946
  this.exportEnded.emit();
20662
20947
  this.isExporting = false;
20663
20948
  this.toolbar.showProgress = false;
@@ -20709,11 +20994,11 @@ class IgxGridToolbarHidingComponent extends BaseToolbarColumnActionsDirective {
20709
20994
  this.columnActionsUI = content;
20710
20995
  }
20711
20996
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxGridToolbarHidingComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
20712
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxGridToolbarHidingComponent, isStandalone: true, selector: "igx-grid-toolbar-hiding", viewQueries: [{ propertyName: "content", first: true, predicate: IgxColumnHidingDirective, descendants: true, read: IgxColumnActionsComponent }], usesInheritance: true, ngImport: i0, template: "@if (grid.rendered$ | async) {\n <button\n [title]=\"grid?.resourceStrings.igx_grid_toolbar_hiding_button_tooltip\"\n #btn\n igxButton=\"outlined\"\n type=\"button\"\n name=\"btnColumnHiding\"\n (click)=\"toggle(btn, ref, actions)\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"!grid.hiddenColumnsCount ? 'show' : 'hide'\"\n >\n </igx-icon>\n <span>{{ grid.hiddenColumnsCount }}</span>\n <span>{{ buttonText }}</span>\n </button>\n <igx-column-actions\n #actions\n igxColumnHiding\n igxToggle\n (opened)=\"focusSearch(ref.element)\"\n #ref=\"toggle\"\n [grid]=\"grid\"\n [title]=\"title || grid?.resourceStrings.igx_grid_toolbar_hiding_title!\"\n [filterColumnsPrompt]=\"prompt || grid?.resourceStrings.igx_grid_toolbar_actions_filter_prompt!\n\"\n [hideFilter]=\"hideFilter\"\n [filterCriteria]=\"filterCriteria\"\n [columnDisplayOrder]=\"columnDisplayOrder\"\n [columnsAreaMaxHeight]=\"columnsAreaMaxHeight\"\n [uncheckAllText]=\"uncheckAllText\"\n [checkAllText]=\"checkAllText\"\n [indentation]=\"indentetion\"\n >\n </igx-column-actions>\n}\n", dependencies: [{ kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxColumnActionsComponent, selector: "igx-column-actions", inputs: ["grid", "indentation", "columnsAreaMaxHeight", "hideFilter", "title", "filterColumnsPrompt", "filterCriteria", "columnDisplayOrder", "uncheckAllText", "checkAllText", "id"], outputs: ["columnToggled"] }, { kind: "directive", type: IgxColumnHidingDirective, selector: "[igxColumnHiding]" }, { kind: "directive", type: IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
20997
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxGridToolbarHidingComponent, isStandalone: true, selector: "igx-grid-toolbar-hiding", viewQueries: [{ propertyName: "content", first: true, predicate: IgxColumnHidingDirective, descendants: true, read: IgxColumnActionsComponent }], usesInheritance: true, ngImport: i0, template: "@if (grid.rendered$ | async) {\n <button\n [title]=\"\n $safeNavigationMigration(\n grid?.resourceStrings.igx_grid_toolbar_hiding_button_tooltip\n )\n \"\n #btn\n igxButton=\"outlined\"\n type=\"button\"\n name=\"btnColumnHiding\"\n (click)=\"toggle(btn, ref, actions)\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"!grid.hiddenColumnsCount ? 'show' : 'hide'\"\n >\n </igx-icon>\n <span>{{ grid.hiddenColumnsCount }}</span>\n <span>{{ buttonText }}</span>\n </button>\n <igx-column-actions\n #actions\n igxColumnHiding\n igxToggle\n (opened)=\"focusSearch(ref.element)\"\n #ref=\"toggle\"\n [grid]=\"grid\"\n [title]=\"title || grid?.resourceStrings.igx_grid_toolbar_hiding_title\"\n [filterColumnsPrompt]=\"\n prompt || grid?.resourceStrings.igx_grid_toolbar_actions_filter_prompt\n \"\n [hideFilter]=\"hideFilter\"\n [filterCriteria]=\"filterCriteria\"\n [columnDisplayOrder]=\"columnDisplayOrder\"\n [columnsAreaMaxHeight]=\"columnsAreaMaxHeight\"\n [uncheckAllText]=\"uncheckAllText\"\n [checkAllText]=\"checkAllText\"\n [indentation]=\"indentetion\"\n >\n </igx-column-actions>\n}\n", dependencies: [{ kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxColumnActionsComponent, selector: "igx-column-actions", inputs: ["grid", "indentation", "columnsAreaMaxHeight", "hideFilter", "title", "filterColumnsPrompt", "filterCriteria", "columnDisplayOrder", "uncheckAllText", "checkAllText", "id"], outputs: ["columnToggled"] }, { kind: "directive", type: IgxColumnHidingDirective, selector: "[igxColumnHiding]" }, { kind: "directive", type: IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
20713
20998
  }
20714
20999
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxGridToolbarHidingComponent, decorators: [{
20715
21000
  type: Component,
20716
- args: [{ selector: 'igx-grid-toolbar-hiding', changeDetection: ChangeDetectionStrategy.Eager, imports: [IgxButtonDirective, IgxIconComponent, IgxColumnActionsComponent, IgxColumnHidingDirective, IgxToggleDirective, AsyncPipe], template: "@if (grid.rendered$ | async) {\n <button\n [title]=\"grid?.resourceStrings.igx_grid_toolbar_hiding_button_tooltip\"\n #btn\n igxButton=\"outlined\"\n type=\"button\"\n name=\"btnColumnHiding\"\n (click)=\"toggle(btn, ref, actions)\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"!grid.hiddenColumnsCount ? 'show' : 'hide'\"\n >\n </igx-icon>\n <span>{{ grid.hiddenColumnsCount }}</span>\n <span>{{ buttonText }}</span>\n </button>\n <igx-column-actions\n #actions\n igxColumnHiding\n igxToggle\n (opened)=\"focusSearch(ref.element)\"\n #ref=\"toggle\"\n [grid]=\"grid\"\n [title]=\"title || grid?.resourceStrings.igx_grid_toolbar_hiding_title!\"\n [filterColumnsPrompt]=\"prompt || grid?.resourceStrings.igx_grid_toolbar_actions_filter_prompt!\n\"\n [hideFilter]=\"hideFilter\"\n [filterCriteria]=\"filterCriteria\"\n [columnDisplayOrder]=\"columnDisplayOrder\"\n [columnsAreaMaxHeight]=\"columnsAreaMaxHeight\"\n [uncheckAllText]=\"uncheckAllText\"\n [checkAllText]=\"checkAllText\"\n [indentation]=\"indentetion\"\n >\n </igx-column-actions>\n}\n" }]
21001
+ args: [{ selector: 'igx-grid-toolbar-hiding', changeDetection: ChangeDetectionStrategy.Eager, imports: [IgxButtonDirective, IgxIconComponent, IgxColumnActionsComponent, IgxColumnHidingDirective, IgxToggleDirective, AsyncPipe], template: "@if (grid.rendered$ | async) {\n <button\n [title]=\"\n $safeNavigationMigration(\n grid?.resourceStrings.igx_grid_toolbar_hiding_button_tooltip\n )\n \"\n #btn\n igxButton=\"outlined\"\n type=\"button\"\n name=\"btnColumnHiding\"\n (click)=\"toggle(btn, ref, actions)\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"!grid.hiddenColumnsCount ? 'show' : 'hide'\"\n >\n </igx-icon>\n <span>{{ grid.hiddenColumnsCount }}</span>\n <span>{{ buttonText }}</span>\n </button>\n <igx-column-actions\n #actions\n igxColumnHiding\n igxToggle\n (opened)=\"focusSearch(ref.element)\"\n #ref=\"toggle\"\n [grid]=\"grid\"\n [title]=\"title || grid?.resourceStrings.igx_grid_toolbar_hiding_title\"\n [filterColumnsPrompt]=\"\n prompt || grid?.resourceStrings.igx_grid_toolbar_actions_filter_prompt\n \"\n [hideFilter]=\"hideFilter\"\n [filterCriteria]=\"filterCriteria\"\n [columnDisplayOrder]=\"columnDisplayOrder\"\n [columnsAreaMaxHeight]=\"columnsAreaMaxHeight\"\n [uncheckAllText]=\"uncheckAllText\"\n [checkAllText]=\"checkAllText\"\n [indentation]=\"indentetion\"\n >\n </igx-column-actions>\n}\n" }]
20717
21002
  }], propDecorators: { content: [{
20718
21003
  type: ViewChild,
20719
21004
  args: [IgxColumnHidingDirective, { read: IgxColumnActionsComponent }]
@@ -20741,11 +21026,11 @@ class IgxGridToolbarPinningComponent extends BaseToolbarColumnActionsDirective {
20741
21026
  this.columnActionsUI = content;
20742
21027
  }
20743
21028
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxGridToolbarPinningComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
20744
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxGridToolbarPinningComponent, isStandalone: true, selector: "igx-grid-toolbar-pinning", viewQueries: [{ propertyName: "content", first: true, predicate: IgxColumnPinningDirective, descendants: true, read: IgxColumnActionsComponent }], usesInheritance: true, ngImport: i0, template: "@if (grid.rendered$ | async) {\n <button\n [title]=\"\n $safeNavigationMigration(\n grid?.resourceStrings.igx_grid_toolbar_pinning_button_tooltip\n )\n \"\n #btn\n igxButton=\"outlined\"\n type=\"button\"\n name=\"btnColumnPinning\"\n (click)=\"toggle(btn, ref, actions)\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"!grid.pinnedColumnsCount ? 'unpin' : 'pin'\"\n >\n </igx-icon>\n <span>{{ grid.pinnedColumnsCount }}</span>\n <span>{{ buttonText }}</span>\n </button>\n <igx-column-actions\n #actions\n igxColumnPinning\n igxToggle\n (opened)=\"focusSearch(ref.element)\"\n #ref=\"toggle\"\n [grid]=\"grid\"\n [title]=\"title || grid?.resourceStrings.igx_grid_toolbar_pinning_title!\"\n [filterColumnsPrompt]=\"prompt || grid?.resourceStrings.igx_grid_toolbar_actions_filter_prompt!\"\n [hideFilter]=\"hideFilter\"\n [filterCriteria]=\"filterCriteria\"\n [columnDisplayOrder]=\"columnDisplayOrder\"\n [columnsAreaMaxHeight]=\"columnsAreaMaxHeight\"\n [uncheckAllText]=\"uncheckAllText\"\n [checkAllText]=\"checkAllText\"\n [indentation]=\"indentetion\"\n >\n </igx-column-actions>\n}\n", dependencies: [{ kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxColumnActionsComponent, selector: "igx-column-actions", inputs: ["grid", "indentation", "columnsAreaMaxHeight", "hideFilter", "title", "filterColumnsPrompt", "filterCriteria", "columnDisplayOrder", "uncheckAllText", "checkAllText", "id"], outputs: ["columnToggled"] }, { kind: "directive", type: IgxColumnPinningDirective, selector: "[igxColumnPinning]" }, { kind: "directive", type: IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
21029
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxGridToolbarPinningComponent, isStandalone: true, selector: "igx-grid-toolbar-pinning", viewQueries: [{ propertyName: "content", first: true, predicate: IgxColumnPinningDirective, descendants: true, read: IgxColumnActionsComponent }], usesInheritance: true, ngImport: i0, template: "@if (grid.rendered$ | async) {\n <button\n [title]=\"\n $safeNavigationMigration(\n grid?.resourceStrings.igx_grid_toolbar_pinning_button_tooltip\n )\n \"\n #btn\n igxButton=\"outlined\"\n type=\"button\"\n name=\"btnColumnPinning\"\n (click)=\"toggle(btn, ref, actions)\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"!grid.pinnedColumnsCount ? 'unpin' : 'pin'\"\n >\n </igx-icon>\n <span>{{ grid.pinnedColumnsCount }}</span>\n <span>{{ buttonText }}</span>\n </button>\n <igx-column-actions\n #actions\n igxColumnPinning\n igxToggle\n (opened)=\"focusSearch(ref.element)\"\n #ref=\"toggle\"\n [grid]=\"grid\"\n [title]=\"title || grid?.resourceStrings.igx_grid_toolbar_pinning_title\"\n [filterColumnsPrompt]=\"\n prompt || grid?.resourceStrings.igx_grid_toolbar_actions_filter_prompt\n \"\n [hideFilter]=\"hideFilter\"\n [filterCriteria]=\"filterCriteria\"\n [columnDisplayOrder]=\"columnDisplayOrder\"\n [columnsAreaMaxHeight]=\"columnsAreaMaxHeight\"\n [uncheckAllText]=\"uncheckAllText\"\n [checkAllText]=\"checkAllText\"\n [indentation]=\"indentetion\"\n >\n </igx-column-actions>\n}\n", dependencies: [{ kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxColumnActionsComponent, selector: "igx-column-actions", inputs: ["grid", "indentation", "columnsAreaMaxHeight", "hideFilter", "title", "filterColumnsPrompt", "filterCriteria", "columnDisplayOrder", "uncheckAllText", "checkAllText", "id"], outputs: ["columnToggled"] }, { kind: "directive", type: IgxColumnPinningDirective, selector: "[igxColumnPinning]" }, { kind: "directive", type: IgxToggleDirective, selector: "[igxToggle]", inputs: ["id"], outputs: ["opened", "opening", "closed", "closing", "appended"], exportAs: ["toggle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
20745
21030
  }
20746
21031
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxGridToolbarPinningComponent, decorators: [{
20747
21032
  type: Component,
20748
- args: [{ selector: 'igx-grid-toolbar-pinning', changeDetection: ChangeDetectionStrategy.Eager, imports: [IgxButtonDirective, IgxIconComponent, IgxColumnActionsComponent, IgxColumnPinningDirective, IgxToggleDirective, AsyncPipe], template: "@if (grid.rendered$ | async) {\n <button\n [title]=\"\n $safeNavigationMigration(\n grid?.resourceStrings.igx_grid_toolbar_pinning_button_tooltip\n )\n \"\n #btn\n igxButton=\"outlined\"\n type=\"button\"\n name=\"btnColumnPinning\"\n (click)=\"toggle(btn, ref, actions)\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"!grid.pinnedColumnsCount ? 'unpin' : 'pin'\"\n >\n </igx-icon>\n <span>{{ grid.pinnedColumnsCount }}</span>\n <span>{{ buttonText }}</span>\n </button>\n <igx-column-actions\n #actions\n igxColumnPinning\n igxToggle\n (opened)=\"focusSearch(ref.element)\"\n #ref=\"toggle\"\n [grid]=\"grid\"\n [title]=\"title || grid?.resourceStrings.igx_grid_toolbar_pinning_title!\"\n [filterColumnsPrompt]=\"prompt || grid?.resourceStrings.igx_grid_toolbar_actions_filter_prompt!\"\n [hideFilter]=\"hideFilter\"\n [filterCriteria]=\"filterCriteria\"\n [columnDisplayOrder]=\"columnDisplayOrder\"\n [columnsAreaMaxHeight]=\"columnsAreaMaxHeight\"\n [uncheckAllText]=\"uncheckAllText\"\n [checkAllText]=\"checkAllText\"\n [indentation]=\"indentetion\"\n >\n </igx-column-actions>\n}\n" }]
21033
+ args: [{ selector: 'igx-grid-toolbar-pinning', changeDetection: ChangeDetectionStrategy.Eager, imports: [IgxButtonDirective, IgxIconComponent, IgxColumnActionsComponent, IgxColumnPinningDirective, IgxToggleDirective, AsyncPipe], template: "@if (grid.rendered$ | async) {\n <button\n [title]=\"\n $safeNavigationMigration(\n grid?.resourceStrings.igx_grid_toolbar_pinning_button_tooltip\n )\n \"\n #btn\n igxButton=\"outlined\"\n type=\"button\"\n name=\"btnColumnPinning\"\n (click)=\"toggle(btn, ref, actions)\"\n >\n <igx-icon\n family=\"default\"\n [name]=\"!grid.pinnedColumnsCount ? 'unpin' : 'pin'\"\n >\n </igx-icon>\n <span>{{ grid.pinnedColumnsCount }}</span>\n <span>{{ buttonText }}</span>\n </button>\n <igx-column-actions\n #actions\n igxColumnPinning\n igxToggle\n (opened)=\"focusSearch(ref.element)\"\n #ref=\"toggle\"\n [grid]=\"grid\"\n [title]=\"title || grid?.resourceStrings.igx_grid_toolbar_pinning_title\"\n [filterColumnsPrompt]=\"\n prompt || grid?.resourceStrings.igx_grid_toolbar_actions_filter_prompt\n \"\n [hideFilter]=\"hideFilter\"\n [filterCriteria]=\"filterCriteria\"\n [columnDisplayOrder]=\"columnDisplayOrder\"\n [columnsAreaMaxHeight]=\"columnsAreaMaxHeight\"\n [uncheckAllText]=\"uncheckAllText\"\n [checkAllText]=\"checkAllText\"\n [indentation]=\"indentetion\"\n >\n </igx-column-actions>\n}\n" }]
20749
21034
  }], propDecorators: { content: [{
20750
21035
  type: ViewChild,
20751
21036
  args: [IgxColumnPinningDirective, { read: IgxColumnActionsComponent }]
@@ -20865,14 +21150,12 @@ class IgxRowEditTabStopDirective {
20865
21150
  move(event) {
20866
21151
  event.preventDefault();
20867
21152
  this.currentCellIndex = event.shiftKey ? this.grid.lastEditableColumnIndex : this.grid.firstEditableColumnIndex;
20868
- this.grid.navigation.activeNode.row = this.grid.crudService.rowInEditMode?.index;
21153
+ this.grid.navigation.activeNode.row = this.grid.crudService.rowInEditMode.index;
20869
21154
  this.grid.navigation.activeNode.column = this.currentCellIndex;
20870
- if (this.grid.crudService.rowInEditMode) {
20871
- this.grid.navigateTo(this.grid.crudService.rowInEditMode.index, this.currentCellIndex, (obj) => {
20872
- obj.target.activate(event);
20873
- this.grid.cdr.detectChanges();
20874
- });
20875
- }
21155
+ this.grid.navigateTo(this.grid.crudService.rowInEditMode.index, this.currentCellIndex, (obj) => {
21156
+ obj.target.activate(event);
21157
+ this.grid.cdr.detectChanges();
21158
+ });
20876
21159
  }
20877
21160
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxRowEditTabStopDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
20878
21161
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.1", type: IgxRowEditTabStopDirective, isStandalone: true, selector: "[igxRowEditTabStop]", host: { listeners: { "keydown.tab": "handleTab($event)", "keydown.shift.tab": "handleTab($event)", "keydown.escape": "handleEscape($event)", "keydown.enter": "handleEnter($event)" } }, ngImport: i0 }); }
@@ -20897,6 +21180,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
20897
21180
  args: ['keydown.enter', ['$event']]
20898
21181
  }] } });
20899
21182
 
21183
+ /**
21184
+ * Injection token for accessing the grid transaction object.
21185
+ * This allows injecting the grid transaction object into components or services.
21186
+ */
21187
+ const IgxGridTransaction = /*@__PURE__*/ new InjectionToken('IgxGridTransaction');
21188
+
20900
21189
  /* csSuppress */
20901
21190
  class NoopPivotDimensionsStrategy {
20902
21191
  static { this._instance = null; }
@@ -21003,17 +21292,14 @@ class DimensionValuesFilteringStrategy extends FilteringStrategy {
21003
21292
  const allDimensions = grid.allDimensions;
21004
21293
  const enabledDimensions = allDimensions.filter(x => x && x.enabled);
21005
21294
  const dim = PivotUtil.flatten(enabledDimensions).find(x => x.memberName === fieldName);
21006
- if (!dim) {
21007
- return undefined;
21008
- }
21009
21295
  const value = dim.childLevel ? this._getDimensionValueHierarchy(dim, rec).map(x => `[` + x + `]`).join('.') : PivotUtil.extractValueFromDimension(dim, rec);
21010
21296
  return value;
21011
21297
  }
21012
21298
  getFilterItems(column, tree) {
21013
21299
  const grid = column.grid;
21014
- const enabledDimensions = grid.allDimensions.filter((x) => x && x.enabled);
21300
+ const enabledDimensions = grid.allDimensions.filter(x => x && x.enabled);
21015
21301
  const data = column.grid.gridAPI.filterDataByExpressions(tree);
21016
- const dim = enabledDimensions.find((x) => x.memberName === column.field);
21302
+ const dim = enabledDimensions.find(x => x.memberName === column.field);
21017
21303
  const allValuesHierarchy = PivotUtil.getFieldsHierarchy(data, [dim], PivotDimensionType.Column, grid.pivotKeys, grid.pivotValueCloneStrategy);
21018
21304
  const isNoop = grid.pivotConfiguration.columnStrategy instanceof NoopPivotDimensionsStrategy || grid.pivotConfiguration.rowStrategy instanceof NoopPivotDimensionsStrategy;
21019
21305
  const items = !isNoop ? this._getFilterItems(allValuesHierarchy, grid.pivotKeys) : [{ value: '' }];
@@ -21024,7 +21310,7 @@ class DimensionValuesFilteringStrategy extends FilteringStrategy {
21024
21310
  hierarchy.forEach((value) => {
21025
21311
  const val = value.value;
21026
21312
  const path = val.split(pivotKeys.columnDimensionSeparator);
21027
- const hierarchicalValue = path.length > 1 ? path.map((x) => `[` + x + `]`).join('.') : val;
21313
+ const hierarchicalValue = path.length > 1 ? path.map(x => `[` + x + `]`).join('.') : val;
21028
21314
  const text = path[path.length - 1];
21029
21315
  items.push({
21030
21316
  value: hierarchicalValue,
@@ -21072,12 +21358,12 @@ class IgxGridSummaryService {
21072
21358
  }
21073
21359
  return;
21074
21360
  }
21075
- if (args.rowData) {
21076
- const rowID = this.grid.primaryKey ? args.rowData[this.grid.primaryKey] : args.rowData;
21361
+ if (args.data) {
21362
+ const rowID = this.grid.primaryKey ? args.data[this.grid.primaryKey] : args.data;
21077
21363
  this.removeSummaries(rowID);
21078
21364
  }
21079
21365
  if (args.rowID !== undefined && args.rowID !== null) {
21080
- let columnName = args.cellID ? this.grid.columns.find(col => col.index === args.cellID.columnID)?.field : undefined;
21366
+ let columnName = args.cellID ? this.grid.columns.find(col => col.index === args.cellID.columnID).field : undefined;
21081
21367
  if (columnName && this.grid.rowEditable) {
21082
21368
  return;
21083
21369
  }
@@ -21137,7 +21423,7 @@ class IgxGridSummaryService {
21137
21423
  this.grid.columns.filter((col) => col.hasSummary && !col.hidden).forEach((column) => {
21138
21424
  const getCurrentSummary = column.summaries.operate([], [], column.field);
21139
21425
  const getCurrentSummaryColumn = column.disabledSummaries.length > 0
21140
- ? getCurrentSummary.filter((s) => !column.disabledSummaries.includes(s.key)).length
21426
+ ? getCurrentSummary.filter(s => !column.disabledSummaries.includes(s.key)).length
21141
21427
  : getCurrentSummary.length;
21142
21428
  if (maxSummaryLength < getCurrentSummaryColumn) {
21143
21429
  maxSummaryLength = getCurrentSummaryColumn;
@@ -21160,7 +21446,7 @@ class IgxGridSummaryService {
21160
21446
  const columnPathParts = columns.map(col => columnFieldPath(col.field));
21161
21447
  for (const [idx, column] of columns.entries()) {
21162
21448
  if (!rowSummaries.get(column.field)) {
21163
- let summaryResult = column.summaries.operate(data.map((r) => resolveNestedPath(r, columnPathParts[idx])), data, column.field, groupRecord);
21449
+ let summaryResult = column.summaries.operate(data.map(r => resolveNestedPath(r, columnPathParts[idx])), data, column.field, groupRecord, this.grid.locale, column.pipeArgs);
21164
21450
  summaryResult = column.disabledSummaries.length > 0
21165
21451
  ? summaryResult.filter(s => !column.disabledSummaries.includes(s.key))
21166
21452
  : summaryResult;
@@ -21184,16 +21470,16 @@ class IgxGridSummaryService {
21184
21470
  return;
21185
21471
  }
21186
21472
  if (this.groupingExpressions.length === 0) {
21187
- this.groupingExpressions = groupingArgs.expressions instanceof Array ? groupingArgs.expressions.map((record) => record.fieldName) : [];
21473
+ this.groupingExpressions = groupingArgs.expressions.map(record => record.fieldName);
21188
21474
  return;
21189
21475
  }
21190
- if (groupingArgs.expressions instanceof Array && groupingArgs.expressions.length === 0) {
21476
+ if (groupingArgs.length === 0) {
21191
21477
  this.groupingExpressions = [];
21192
21478
  this.clearSummaryCache();
21193
21479
  return;
21194
21480
  }
21195
21481
  this.compareGroupingExpressions(this.groupingExpressions, groupingArgs);
21196
- this.groupingExpressions = groupingArgs.expressions instanceof Array ? groupingArgs.expressions.map((record) => record.fieldName) : [];
21482
+ this.groupingExpressions = groupingArgs.expressions.map(record => record.fieldName);
21197
21483
  }
21198
21484
  get hasSummarizedColumns() {
21199
21485
  const summarizedColumns = this.grid.columns.filter(col => col.hasSummary && !col.hidden);
@@ -21251,7 +21537,7 @@ class IgxGridSummaryService {
21251
21537
  // private removeChildRowSummaries(rowID, columnName?) {
21252
21538
  // }
21253
21539
  compareGroupingExpressions(current, groupingArgs) {
21254
- const newExpressions = groupingArgs.expressions instanceof Array ? groupingArgs.expressions.map((record) => record.fieldName) : [];
21540
+ const newExpressions = groupingArgs.expressions.map(record => record.fieldName);
21255
21541
  const removedCols = groupingArgs.ungroupedColumns;
21256
21542
  if (current.length <= newExpressions.length) {
21257
21543
  const newExpr = newExpressions.slice(0, current.length).toString();
@@ -21265,7 +21551,7 @@ class IgxGridSummaryService {
21265
21551
  this.clearSummaryCache();
21266
21552
  return;
21267
21553
  }
21268
- removedCols instanceof Array && removedCols.map(col => col.field).forEach(colName => {
21554
+ removedCols.map(col => col.field).forEach(colName => {
21269
21555
  this.summaryCacheMap.forEach((_cache, id) => {
21270
21556
  if (id.indexOf(colName) !== -1) {
21271
21557
  this.summaryCacheMap.delete(id);
@@ -21494,11 +21780,11 @@ class IgxSummaryRowComponent {
21494
21780
  };
21495
21781
  }
21496
21782
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxSummaryRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21497
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxSummaryRowComponent, isStandalone: true, selector: "igx-grid-summary-row", inputs: { summaries: "summaries", gridID: "gridID", index: "index", firstCellIndentation: "firstCellIndentation" }, host: { properties: { "attr.data-rowIndex": "this.dataRowIndex" } }, providers: [IgxForOfSyncService], viewQueries: [{ propertyName: "virtDirRow", first: true, predicate: ["igxDirRef"], descendants: true, read: IgxGridForOfDirective }, { propertyName: "_summaryCells", predicate: IgxSummaryCellComponent, descendants: true, read: IgxSummaryCellComponent }], ngImport: i0, template: "@if (summaries.size) {\n @if (grid.summariesMargin) {\n <div\n class=\"igx-grid__summaries-patch\"\n [style.min-width.px]=\"grid.summariesMargin\"\n [style.flex-basis.px]=\"grid.summariesMargin\"\n (pointerdown)=\"$event.preventDefault()\"\n ></div>\n }\n @if (pinnedStartColumns.length > 0) {\n <ng-container *ngTemplateOutlet=\"summaryCellTemplate; context: getContext(this, pinnedStartColumns)\"></ng-container>\n }\n <ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\" [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]=\"grid.unpinnedWidth\" [igxForTrackBy]=\"grid.trackColumnChanges\" [igxForSizePropName]='\"calcPixelWidth\"' #igxDirRef>\n <igx-grid-summary-cell\n class=\"igx-grid-summary igx-grid-summary--fw\"\n role=\"cell\"\n [class.igx-grid-summary--empty]=\"!col.hasSummary\"\n [class.igx-grid-summary--pinned-last]=\"col.isLastPinned\"\n [column]=\"col\"\n [locale]=\"grid.locale\"\n [gridResourceStrings]=\"grid.resourceStrings\"\n [rowIndex]=\"index\"\n [firstCellIndentation]=\"firstCellIndentation\"\n [summaryResults]=\"getColumnSummaries(col.field)!\"\n [summaryTemplate]=\"col.summaryTemplate\"\n [hasSummary]=\"col.hasSummary\"\n [summaryFormatter]=\"col.summaryFormatter\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [style.max-height.px]=\"minHeight\"\n [style.min-height.px]=\"minHeight\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\">\n </igx-grid-summary-cell>\n </ng-template>\n @if (pinnedEndColumns.length > 0) {\n <ng-container *ngTemplateOutlet=\"summaryCellTemplate; context: getContext(this, pinnedEndColumns)\"></ng-container>\n }\n}\n\n<ng-template #summaryCellTemplate let-col let-columns=\"columns\">\n @for (col of columns | igxNotGrouped; track trackPinnedColumn(col)) {\n <igx-grid-summary-cell\n role=\"cell\"\n class=\"igx-grid-summary igx-grid-summary--fw igx-grid-summary--pinned\"\n [class.igx-grid-summary--empty]=\"!col.hasSummary\"\n [class.igx-grid-summary--pinned-first]=\"col.isFirstPinned\"\n [class.igx-grid-summary--pinned-last]=\"col.isLastPinned\"\n [column]=\"col\"\n [locale]=\"grid.locale\"\n [gridResourceStrings]=\"grid.resourceStrings\"\n [firstCellIndentation]=\"firstCellIndentation\"\n [rowIndex]=\"index\"\n [summaryResults]=\"getColumnSummaries(col.field)!\"\n [summaryTemplate]=\"col.summaryTemplate\"\n [hasSummary]=\"col.hasSummary\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [style.max-height.px]=\"minHeight\"\n [style.min-height.px]=\"minHeight\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\">\n </igx-grid-summary-cell>\n }\n</ng-template>\n", styles: ["@layer ig.base{.igx-grid-summary{position:relative;display:flex;flex-direction:column;flex:1 1 0%;padding-block:0;padding-inline:max(var(--is-large, 1)*max(1.5rem,-1 * 1.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(1rem,-1 * 1rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));background:var(--background-color, inherit);overflow:hidden;outline-style:none;border-inline-end:var(--border-width) var(--border-style) var(--border-color)}.igx-grid-summary__item{display:flex;align-items:center;position:relative;padding-block:max(var(--is-large, 1)*max(.375rem,-1 * .375rem)*var(--ig-spacing-large, var(--ig-spacing, var(--ig-spacing))),var(--is-medium, 1)*max(.125rem,-1 * .125rem)*var(--ig-spacing-medium, var(--ig-spacing, var(--ig-spacing))),var(--is-small, 1)*max(0rem,-1 * 0rem)*var(--ig-spacing-small, var(--ig-spacing, var(--ig-spacing))));padding-inline:0;font-size:.75rem}.igx-grid-summary__label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:var(--label-color);min-width:1.875rem;margin-inline-end:.1875rem}.igx-grid-summary__label:hover{color:var(--label-hover-color)}.igx-grid-summary__result{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:var(--result-color);font-weight:600;flex:1 1 auto;text-align:end}.igx-grid-summary--pinned{position:relative;z-index:1}.igx-grid-summary--active.igx-grid-summary--pinned:after{width:calc(100% - .0625rem)}.igx-grid-summary--pinned-first{border-inline-start:var(--pinned-border-width) var(--pinned-border-style) var(--pinned-border-color)}.igx-grid-summary--pinned-first:dir(ltr){border-inline-start:var(--pinned-border-width) var(--pinned-border-style) var(--pinned-border-color)}.igx-grid-summary--pinned-first:dir(rtl){border-inline-end:var(--pinned-border-width) var(--pinned-border-style) var(--pinned-border-color)}@media print{.igx-grid-summary--pinned-first{border-inline-start:var(--pinned-border-width) var(--pinned-border-style) #999}}.igx-grid-summary--pinned-last{border-inline-end:var(--pinned-border-width) var(--pinned-border-style) var(--pinned-border-color)}.igx-grid-summary--pinned-last:after{inset-inline-start:.0625rem}@media print{.igx-grid-summary--pinned-last{border-inline-end:var(--pinned-border-width) var(--pinned-border-style) #999}}.igx-grid-summary--fw{flex-grow:0}.igx-grid-summary:after{content:\"\";position:absolute;inset:0;pointer-events:none}.igx-grid-summary--active:after{width:100%;height:100%;box-shadow:inset 0 0 0 .0625rem var(--cell-active-border-color);pointer-events:none}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-grid-summary{padding-inline:max(var(--is-large, 1)*max(1rem,-1 * 1rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));border-top:var(--border-width) var(--border-style) var(--border-color)}.igx-grid-summary__item{min-height:max(var(--is-large, 1)*max(2.25rem,-1 * 2.25rem),var(--is-medium, 1)*max(1.875rem,-1 * 1.875rem),var(--is-small, 1)*max(1.5rem,-1 * 1.5rem));font-size:initial}.igx-grid-summary__label{font-family:var(--ig-caption-font-family, var(--ig-font-family));font-size:var(--ig-caption-font-size);font-weight:var(--ig-caption-font-weight);font-style:var(--ig-caption-font-style);line-height:var(--ig-caption-line-height);letter-spacing:var(--ig-caption-letter-spacing);text-transform:var(--ig-caption-text-transform);margin-top:var(--ig-caption-margin-top);margin-bottom:var(--ig-caption-margin-bottom);margin-inline-end:initial}.igx-grid-summary__result{font-family:var(--ig-detail-2-font-family, var(--ig-font-family));font-size:var(--ig-detail-2-font-size);font-weight:var(--ig-detail-2-font-weight);font-style:var(--ig-detail-2-font-style);line-height:var(--ig-detail-2-line-height);letter-spacing:var(--ig-detail-2-letter-spacing);text-transform:var(--ig-detail-2-text-transform);margin-top:var(--ig-detail-2-margin-top);margin-bottom:var(--ig-detail-2-margin-bottom)}}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IgxGridForOfDirective, selector: "[igxGridFor][igxGridForOf]", inputs: ["igxGridForOf", "igxGridForOfUniqueSizeCache", "igxGridForOfVariableSizes"], outputs: ["dataChanging"] }, { kind: "component", type: IgxSummaryCellComponent, selector: "igx-grid-summary-cell", inputs: ["summaryResults", "column", "firstCellIndentation", "hasSummary", "summaryFormatter", "summaryTemplate", "locale", "gridResourceStrings", "active", "rowIndex"] }, { kind: "pipe", type: IgxGridNotGroupedPipe, name: "igxNotGrouped" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
21783
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxSummaryRowComponent, isStandalone: true, selector: "igx-grid-summary-row", inputs: { summaries: "summaries", gridID: "gridID", index: "index", firstCellIndentation: "firstCellIndentation" }, host: { properties: { "attr.data-rowIndex": "this.dataRowIndex" } }, providers: [IgxForOfSyncService], viewQueries: [{ propertyName: "virtDirRow", first: true, predicate: ["igxDirRef"], descendants: true, read: IgxGridForOfDirective }, { propertyName: "_summaryCells", predicate: IgxSummaryCellComponent, descendants: true, read: IgxSummaryCellComponent }], ngImport: i0, template: "@if (summaries.size) {\n @if (grid.summariesMargin) {\n <div\n class=\"igx-grid__summaries-patch\"\n [style.min-width.px]=\"grid.summariesMargin\"\n [style.flex-basis.px]=\"grid.summariesMargin\"\n (pointerdown)=\"$event.preventDefault()\"\n ></div>\n }\n @if (pinnedStartColumns.length > 0) {\n <ng-container *ngTemplateOutlet=\"summaryCellTemplate; context: getContext(this, pinnedStartColumns)\"></ng-container>\n }\n <ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\" [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]=\"grid.unpinnedWidth\" [igxForTrackBy]=\"grid.trackColumnChanges\" [igxForSizePropName]='\"calcPixelWidth\"' #igxDirRef>\n <igx-grid-summary-cell\n class=\"igx-grid-summary igx-grid-summary--fw\"\n role=\"cell\"\n [class.igx-grid-summary--empty]=\"!col.hasSummary\"\n [class.igx-grid-summary--pinned-last]=\"col.isLastPinned\"\n [column]=\"col\"\n [locale]=\"grid.locale\"\n [gridResourceStrings]=\"grid.resourceStrings\"\n [rowIndex]=\"index\"\n [firstCellIndentation]=\"firstCellIndentation\"\n [summaryResults]=\"getColumnSummaries(col.field)\"\n [summaryTemplate]=\"col.summaryTemplate\"\n [hasSummary]=\"col.hasSummary\"\n [summaryFormatter]=\"col.summaryFormatter\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [style.max-height.px]=\"minHeight\"\n [style.min-height.px]=\"minHeight\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\">\n </igx-grid-summary-cell>\n </ng-template>\n @if (pinnedEndColumns.length > 0) {\n <ng-container *ngTemplateOutlet=\"summaryCellTemplate; context: getContext(this, pinnedEndColumns)\"></ng-container>\n }\n}\n\n<ng-template #summaryCellTemplate let-col let-columns=\"columns\">\n @for (col of columns | igxNotGrouped; track trackPinnedColumn(col)) {\n <igx-grid-summary-cell\n role=\"cell\"\n class=\"igx-grid-summary igx-grid-summary--fw igx-grid-summary--pinned\"\n [class.igx-grid-summary--empty]=\"!col.hasSummary\"\n [class.igx-grid-summary--pinned-first]=\"col.isFirstPinned\"\n [class.igx-grid-summary--pinned-last]=\"col.isLastPinned\"\n [column]=\"col\"\n [locale]=\"grid.locale\"\n [gridResourceStrings]=\"grid.resourceStrings\"\n [firstCellIndentation]=\"firstCellIndentation\"\n [rowIndex]=\"index\"\n [summaryResults]=\"getColumnSummaries(col.field)\"\n [summaryTemplate]=\"col.summaryTemplate\"\n [hasSummary]=\"col.hasSummary\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [style.max-height.px]=\"minHeight\"\n [style.min-height.px]=\"minHeight\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\">\n </igx-grid-summary-cell>\n }\n</ng-template>\n", styles: ["@layer ig.base{.igx-grid-summary{position:relative;display:flex;flex-direction:column;flex:1 1 0%;padding-block:0;padding-inline:max(var(--is-large, 1)*max(1.5rem,-1 * 1.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(1rem,-1 * 1rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));background:var(--background-color, inherit);overflow:hidden;outline-style:none;border-inline-end:var(--border-width) var(--border-style) var(--border-color)}.igx-grid-summary__item{display:flex;align-items:center;position:relative;padding-block:max(var(--is-large, 1)*max(.375rem,-1 * .375rem)*var(--ig-spacing-large, var(--ig-spacing, var(--ig-spacing))),var(--is-medium, 1)*max(.125rem,-1 * .125rem)*var(--ig-spacing-medium, var(--ig-spacing, var(--ig-spacing))),var(--is-small, 1)*max(0rem,-1 * 0rem)*var(--ig-spacing-small, var(--ig-spacing, var(--ig-spacing))));padding-inline:0;font-size:.75rem}.igx-grid-summary__label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:var(--label-color);min-width:1.875rem;margin-inline-end:.1875rem}.igx-grid-summary__label:hover{color:var(--label-hover-color)}.igx-grid-summary__result{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:var(--result-color);font-weight:600;flex:1 1 auto;text-align:end}.igx-grid-summary--pinned{position:relative;z-index:1}.igx-grid-summary--active.igx-grid-summary--pinned:after{width:calc(100% - .0625rem)}.igx-grid-summary--pinned-first{border-inline-start:var(--pinned-border-width) var(--pinned-border-style) var(--pinned-border-color)}.igx-grid-summary--pinned-first:dir(ltr){border-inline-start:var(--pinned-border-width) var(--pinned-border-style) var(--pinned-border-color)}.igx-grid-summary--pinned-first:dir(rtl){border-inline-end:var(--pinned-border-width) var(--pinned-border-style) var(--pinned-border-color)}@media print{.igx-grid-summary--pinned-first{border-inline-start:var(--pinned-border-width) var(--pinned-border-style) #999}}.igx-grid-summary--pinned-last{border-inline-end:var(--pinned-border-width) var(--pinned-border-style) var(--pinned-border-color)}.igx-grid-summary--pinned-last:after{inset-inline-start:.0625rem}@media print{.igx-grid-summary--pinned-last{border-inline-end:var(--pinned-border-width) var(--pinned-border-style) #999}}.igx-grid-summary--fw{flex-grow:0}.igx-grid-summary:after{content:\"\";position:absolute;inset:0;pointer-events:none}.igx-grid-summary--active:after{width:100%;height:100%;box-shadow:inset 0 0 0 .0625rem var(--cell-active-border-color);pointer-events:none}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-grid-summary{padding-inline:max(var(--is-large, 1)*max(1rem,-1 * 1rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));border-top:var(--border-width) var(--border-style) var(--border-color)}.igx-grid-summary__item{min-height:max(var(--is-large, 1)*max(2.25rem,-1 * 2.25rem),var(--is-medium, 1)*max(1.875rem,-1 * 1.875rem),var(--is-small, 1)*max(1.5rem,-1 * 1.5rem));font-size:initial}.igx-grid-summary__label{font-family:var(--ig-caption-font-family, var(--ig-font-family));font-size:var(--ig-caption-font-size);font-weight:var(--ig-caption-font-weight);font-style:var(--ig-caption-font-style);line-height:var(--ig-caption-line-height);letter-spacing:var(--ig-caption-letter-spacing);text-transform:var(--ig-caption-text-transform);margin-top:var(--ig-caption-margin-top);margin-bottom:var(--ig-caption-margin-bottom);margin-inline-end:initial}.igx-grid-summary__result{font-family:var(--ig-detail-2-font-family, var(--ig-font-family));font-size:var(--ig-detail-2-font-size);font-weight:var(--ig-detail-2-font-weight);font-style:var(--ig-detail-2-font-style);line-height:var(--ig-detail-2-line-height);letter-spacing:var(--ig-detail-2-letter-spacing);text-transform:var(--ig-detail-2-text-transform);margin-top:var(--ig-detail-2-margin-top);margin-bottom:var(--ig-detail-2-margin-bottom)}}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IgxGridForOfDirective, selector: "[igxGridFor][igxGridForOf]", inputs: ["igxGridForOf", "igxGridForOfUniqueSizeCache", "igxGridForOfVariableSizes"], outputs: ["dataChanging"] }, { kind: "component", type: IgxSummaryCellComponent, selector: "igx-grid-summary-cell", inputs: ["summaryResults", "column", "firstCellIndentation", "hasSummary", "summaryFormatter", "summaryTemplate", "locale", "gridResourceStrings", "active", "rowIndex"] }, { kind: "pipe", type: IgxGridNotGroupedPipe, name: "igxNotGrouped" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
21498
21784
  }
21499
21785
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxSummaryRowComponent, decorators: [{
21500
21786
  type: Component,
21501
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-grid-summary-row', encapsulation: ViewEncapsulation.None, providers: [IgxForOfSyncService], imports: [NgTemplateOutlet, IgxGridForOfDirective, IgxSummaryCellComponent, IgxGridNotGroupedPipe], template: "@if (summaries.size) {\n @if (grid.summariesMargin) {\n <div\n class=\"igx-grid__summaries-patch\"\n [style.min-width.px]=\"grid.summariesMargin\"\n [style.flex-basis.px]=\"grid.summariesMargin\"\n (pointerdown)=\"$event.preventDefault()\"\n ></div>\n }\n @if (pinnedStartColumns.length > 0) {\n <ng-container *ngTemplateOutlet=\"summaryCellTemplate; context: getContext(this, pinnedStartColumns)\"></ng-container>\n }\n <ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\" [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]=\"grid.unpinnedWidth\" [igxForTrackBy]=\"grid.trackColumnChanges\" [igxForSizePropName]='\"calcPixelWidth\"' #igxDirRef>\n <igx-grid-summary-cell\n class=\"igx-grid-summary igx-grid-summary--fw\"\n role=\"cell\"\n [class.igx-grid-summary--empty]=\"!col.hasSummary\"\n [class.igx-grid-summary--pinned-last]=\"col.isLastPinned\"\n [column]=\"col\"\n [locale]=\"grid.locale\"\n [gridResourceStrings]=\"grid.resourceStrings\"\n [rowIndex]=\"index\"\n [firstCellIndentation]=\"firstCellIndentation\"\n [summaryResults]=\"getColumnSummaries(col.field)!\"\n [summaryTemplate]=\"col.summaryTemplate\"\n [hasSummary]=\"col.hasSummary\"\n [summaryFormatter]=\"col.summaryFormatter\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [style.max-height.px]=\"minHeight\"\n [style.min-height.px]=\"minHeight\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\">\n </igx-grid-summary-cell>\n </ng-template>\n @if (pinnedEndColumns.length > 0) {\n <ng-container *ngTemplateOutlet=\"summaryCellTemplate; context: getContext(this, pinnedEndColumns)\"></ng-container>\n }\n}\n\n<ng-template #summaryCellTemplate let-col let-columns=\"columns\">\n @for (col of columns | igxNotGrouped; track trackPinnedColumn(col)) {\n <igx-grid-summary-cell\n role=\"cell\"\n class=\"igx-grid-summary igx-grid-summary--fw igx-grid-summary--pinned\"\n [class.igx-grid-summary--empty]=\"!col.hasSummary\"\n [class.igx-grid-summary--pinned-first]=\"col.isFirstPinned\"\n [class.igx-grid-summary--pinned-last]=\"col.isLastPinned\"\n [column]=\"col\"\n [locale]=\"grid.locale\"\n [gridResourceStrings]=\"grid.resourceStrings\"\n [firstCellIndentation]=\"firstCellIndentation\"\n [rowIndex]=\"index\"\n [summaryResults]=\"getColumnSummaries(col.field)!\"\n [summaryTemplate]=\"col.summaryTemplate\"\n [hasSummary]=\"col.hasSummary\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [style.max-height.px]=\"minHeight\"\n [style.min-height.px]=\"minHeight\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\">\n </igx-grid-summary-cell>\n }\n</ng-template>\n", styles: ["@layer ig.base{.igx-grid-summary{position:relative;display:flex;flex-direction:column;flex:1 1 0%;padding-block:0;padding-inline:max(var(--is-large, 1)*max(1.5rem,-1 * 1.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(1rem,-1 * 1rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));background:var(--background-color, inherit);overflow:hidden;outline-style:none;border-inline-end:var(--border-width) var(--border-style) var(--border-color)}.igx-grid-summary__item{display:flex;align-items:center;position:relative;padding-block:max(var(--is-large, 1)*max(.375rem,-1 * .375rem)*var(--ig-spacing-large, var(--ig-spacing, var(--ig-spacing))),var(--is-medium, 1)*max(.125rem,-1 * .125rem)*var(--ig-spacing-medium, var(--ig-spacing, var(--ig-spacing))),var(--is-small, 1)*max(0rem,-1 * 0rem)*var(--ig-spacing-small, var(--ig-spacing, var(--ig-spacing))));padding-inline:0;font-size:.75rem}.igx-grid-summary__label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:var(--label-color);min-width:1.875rem;margin-inline-end:.1875rem}.igx-grid-summary__label:hover{color:var(--label-hover-color)}.igx-grid-summary__result{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:var(--result-color);font-weight:600;flex:1 1 auto;text-align:end}.igx-grid-summary--pinned{position:relative;z-index:1}.igx-grid-summary--active.igx-grid-summary--pinned:after{width:calc(100% - .0625rem)}.igx-grid-summary--pinned-first{border-inline-start:var(--pinned-border-width) var(--pinned-border-style) var(--pinned-border-color)}.igx-grid-summary--pinned-first:dir(ltr){border-inline-start:var(--pinned-border-width) var(--pinned-border-style) var(--pinned-border-color)}.igx-grid-summary--pinned-first:dir(rtl){border-inline-end:var(--pinned-border-width) var(--pinned-border-style) var(--pinned-border-color)}@media print{.igx-grid-summary--pinned-first{border-inline-start:var(--pinned-border-width) var(--pinned-border-style) #999}}.igx-grid-summary--pinned-last{border-inline-end:var(--pinned-border-width) var(--pinned-border-style) var(--pinned-border-color)}.igx-grid-summary--pinned-last:after{inset-inline-start:.0625rem}@media print{.igx-grid-summary--pinned-last{border-inline-end:var(--pinned-border-width) var(--pinned-border-style) #999}}.igx-grid-summary--fw{flex-grow:0}.igx-grid-summary:after{content:\"\";position:absolute;inset:0;pointer-events:none}.igx-grid-summary--active:after{width:100%;height:100%;box-shadow:inset 0 0 0 .0625rem var(--cell-active-border-color);pointer-events:none}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-grid-summary{padding-inline:max(var(--is-large, 1)*max(1rem,-1 * 1rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));border-top:var(--border-width) var(--border-style) var(--border-color)}.igx-grid-summary__item{min-height:max(var(--is-large, 1)*max(2.25rem,-1 * 2.25rem),var(--is-medium, 1)*max(1.875rem,-1 * 1.875rem),var(--is-small, 1)*max(1.5rem,-1 * 1.5rem));font-size:initial}.igx-grid-summary__label{font-family:var(--ig-caption-font-family, var(--ig-font-family));font-size:var(--ig-caption-font-size);font-weight:var(--ig-caption-font-weight);font-style:var(--ig-caption-font-style);line-height:var(--ig-caption-line-height);letter-spacing:var(--ig-caption-letter-spacing);text-transform:var(--ig-caption-text-transform);margin-top:var(--ig-caption-margin-top);margin-bottom:var(--ig-caption-margin-bottom);margin-inline-end:initial}.igx-grid-summary__result{font-family:var(--ig-detail-2-font-family, var(--ig-font-family));font-size:var(--ig-detail-2-font-size);font-weight:var(--ig-detail-2-font-weight);font-style:var(--ig-detail-2-font-style);line-height:var(--ig-detail-2-line-height);letter-spacing:var(--ig-detail-2-letter-spacing);text-transform:var(--ig-detail-2-text-transform);margin-top:var(--ig-detail-2-margin-top);margin-bottom:var(--ig-detail-2-margin-bottom)}}}\n"] }]
21787
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-grid-summary-row', encapsulation: ViewEncapsulation.None, providers: [IgxForOfSyncService], imports: [NgTemplateOutlet, IgxGridForOfDirective, IgxSummaryCellComponent, IgxGridNotGroupedPipe], template: "@if (summaries.size) {\n @if (grid.summariesMargin) {\n <div\n class=\"igx-grid__summaries-patch\"\n [style.min-width.px]=\"grid.summariesMargin\"\n [style.flex-basis.px]=\"grid.summariesMargin\"\n (pointerdown)=\"$event.preventDefault()\"\n ></div>\n }\n @if (pinnedStartColumns.length > 0) {\n <ng-container *ngTemplateOutlet=\"summaryCellTemplate; context: getContext(this, pinnedStartColumns)\"></ng-container>\n }\n <ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\" [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]=\"grid.unpinnedWidth\" [igxForTrackBy]=\"grid.trackColumnChanges\" [igxForSizePropName]='\"calcPixelWidth\"' #igxDirRef>\n <igx-grid-summary-cell\n class=\"igx-grid-summary igx-grid-summary--fw\"\n role=\"cell\"\n [class.igx-grid-summary--empty]=\"!col.hasSummary\"\n [class.igx-grid-summary--pinned-last]=\"col.isLastPinned\"\n [column]=\"col\"\n [locale]=\"grid.locale\"\n [gridResourceStrings]=\"grid.resourceStrings\"\n [rowIndex]=\"index\"\n [firstCellIndentation]=\"firstCellIndentation\"\n [summaryResults]=\"getColumnSummaries(col.field)\"\n [summaryTemplate]=\"col.summaryTemplate\"\n [hasSummary]=\"col.hasSummary\"\n [summaryFormatter]=\"col.summaryFormatter\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [style.max-height.px]=\"minHeight\"\n [style.min-height.px]=\"minHeight\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\">\n </igx-grid-summary-cell>\n </ng-template>\n @if (pinnedEndColumns.length > 0) {\n <ng-container *ngTemplateOutlet=\"summaryCellTemplate; context: getContext(this, pinnedEndColumns)\"></ng-container>\n }\n}\n\n<ng-template #summaryCellTemplate let-col let-columns=\"columns\">\n @for (col of columns | igxNotGrouped; track trackPinnedColumn(col)) {\n <igx-grid-summary-cell\n role=\"cell\"\n class=\"igx-grid-summary igx-grid-summary--fw igx-grid-summary--pinned\"\n [class.igx-grid-summary--empty]=\"!col.hasSummary\"\n [class.igx-grid-summary--pinned-first]=\"col.isFirstPinned\"\n [class.igx-grid-summary--pinned-last]=\"col.isLastPinned\"\n [column]=\"col\"\n [locale]=\"grid.locale\"\n [gridResourceStrings]=\"grid.resourceStrings\"\n [firstCellIndentation]=\"firstCellIndentation\"\n [rowIndex]=\"index\"\n [summaryResults]=\"getColumnSummaries(col.field)\"\n [summaryTemplate]=\"col.summaryTemplate\"\n [hasSummary]=\"col.hasSummary\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [style.max-height.px]=\"minHeight\"\n [style.min-height.px]=\"minHeight\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\">\n </igx-grid-summary-cell>\n }\n</ng-template>\n", styles: ["@layer ig.base{.igx-grid-summary{position:relative;display:flex;flex-direction:column;flex:1 1 0%;padding-block:0;padding-inline:max(var(--is-large, 1)*max(1.5rem,-1 * 1.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(1rem,-1 * 1rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));background:var(--background-color, inherit);overflow:hidden;outline-style:none;border-inline-end:var(--border-width) var(--border-style) var(--border-color)}.igx-grid-summary__item{display:flex;align-items:center;position:relative;padding-block:max(var(--is-large, 1)*max(.375rem,-1 * .375rem)*var(--ig-spacing-large, var(--ig-spacing, var(--ig-spacing))),var(--is-medium, 1)*max(.125rem,-1 * .125rem)*var(--ig-spacing-medium, var(--ig-spacing, var(--ig-spacing))),var(--is-small, 1)*max(0rem,-1 * 0rem)*var(--ig-spacing-small, var(--ig-spacing, var(--ig-spacing))));padding-inline:0;font-size:.75rem}.igx-grid-summary__label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:var(--label-color);min-width:1.875rem;margin-inline-end:.1875rem}.igx-grid-summary__label:hover{color:var(--label-hover-color)}.igx-grid-summary__result{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:var(--result-color);font-weight:600;flex:1 1 auto;text-align:end}.igx-grid-summary--pinned{position:relative;z-index:1}.igx-grid-summary--active.igx-grid-summary--pinned:after{width:calc(100% - .0625rem)}.igx-grid-summary--pinned-first{border-inline-start:var(--pinned-border-width) var(--pinned-border-style) var(--pinned-border-color)}.igx-grid-summary--pinned-first:dir(ltr){border-inline-start:var(--pinned-border-width) var(--pinned-border-style) var(--pinned-border-color)}.igx-grid-summary--pinned-first:dir(rtl){border-inline-end:var(--pinned-border-width) var(--pinned-border-style) var(--pinned-border-color)}@media print{.igx-grid-summary--pinned-first{border-inline-start:var(--pinned-border-width) var(--pinned-border-style) #999}}.igx-grid-summary--pinned-last{border-inline-end:var(--pinned-border-width) var(--pinned-border-style) var(--pinned-border-color)}.igx-grid-summary--pinned-last:after{inset-inline-start:.0625rem}@media print{.igx-grid-summary--pinned-last{border-inline-end:var(--pinned-border-width) var(--pinned-border-style) #999}}.igx-grid-summary--fw{flex-grow:0}.igx-grid-summary:after{content:\"\";position:absolute;inset:0;pointer-events:none}.igx-grid-summary--active:after{width:100%;height:100%;box-shadow:inset 0 0 0 .0625rem var(--cell-active-border-color);pointer-events:none}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-grid-summary{padding-inline:max(var(--is-large, 1)*max(1rem,-1 * 1rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(.75rem,-1 * .75rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(.5rem,-1 * .5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));border-top:var(--border-width) var(--border-style) var(--border-color)}.igx-grid-summary__item{min-height:max(var(--is-large, 1)*max(2.25rem,-1 * 2.25rem),var(--is-medium, 1)*max(1.875rem,-1 * 1.875rem),var(--is-small, 1)*max(1.5rem,-1 * 1.5rem));font-size:initial}.igx-grid-summary__label{font-family:var(--ig-caption-font-family, var(--ig-font-family));font-size:var(--ig-caption-font-size);font-weight:var(--ig-caption-font-weight);font-style:var(--ig-caption-font-style);line-height:var(--ig-caption-line-height);letter-spacing:var(--ig-caption-letter-spacing);text-transform:var(--ig-caption-text-transform);margin-top:var(--ig-caption-margin-top);margin-bottom:var(--ig-caption-margin-bottom);margin-inline-end:initial}.igx-grid-summary__result{font-family:var(--ig-detail-2-font-family, var(--ig-font-family));font-size:var(--ig-detail-2-font-size);font-weight:var(--ig-detail-2-font-weight);font-style:var(--ig-detail-2-font-style);line-height:var(--ig-detail-2-line-height);letter-spacing:var(--ig-detail-2-letter-spacing);text-transform:var(--ig-detail-2-text-transform);margin-top:var(--ig-detail-2-margin-top);margin-bottom:var(--ig-detail-2-margin-bottom)}}}\n"] }]
21502
21788
  }], propDecorators: { summaries: [{
21503
21789
  type: Input
21504
21790
  }], gridID: [{
@@ -21973,7 +22259,7 @@ class IgxGridNavigationService {
21973
22259
  // this is workaround: endTopOffset - containerHeight > 5 and should be replaced with: containerHeight < endTopOffset
21974
22260
  // when the page is zoomed the grid does not scroll the row completely in the view
21975
22261
  return !targetRow || targetRow.offsetTop < Math.abs(this.containerTopOffset)
21976
- || (containerHeight && endTopOffset - containerHeight > 5);
22262
+ || containerHeight && endTopOffset - containerHeight > 5;
21977
22263
  }
21978
22264
  shouldNotifyVirtualizedKeyboardSelection(key, rowIndex, visibleColIndex) {
21979
22265
  // Any navigation key that ends up scrolling activates the target cell from the
@@ -21997,7 +22283,7 @@ class IgxGridNavigationService {
21997
22283
  rowIndex - this.grid.pinnedDataView.length : rowIndex;
21998
22284
  this.grid.verticalScrollContainer.scrollTo(scrollRowIndex);
21999
22285
  this.grid.verticalScrollContainer.chunkLoad
22000
- .pipe(first()).subscribe(() => {
22286
+ .pipe(first$1()).subscribe(() => {
22001
22287
  this.pendingNavigation = false;
22002
22288
  if (cb) {
22003
22289
  cb();
@@ -22005,7 +22291,7 @@ class IgxGridNavigationService {
22005
22291
  });
22006
22292
  }
22007
22293
  performHorizontalScrollToCell(visibleColumnIndex, cb) {
22008
- if (this.grid.rowList.length < 1 && this.grid.summariesRowList.length < 1 && this.grid.hasColumnGroups) {
22294
+ if (this.grid.rowList < 1 && this.grid.summariesRowList.length < 1 && this.grid.hasColumnGroups) {
22009
22295
  let column = this.grid.getColumnByVisibleIndex(visibleColumnIndex);
22010
22296
  while (column.parent) {
22011
22297
  column = column.parent;
@@ -22017,7 +22303,7 @@ class IgxGridNavigationService {
22017
22303
  }
22018
22304
  this.pendingNavigation = true;
22019
22305
  this.grid.parentVirtDir.chunkLoad
22020
- .pipe(first())
22306
+ .pipe(first$1())
22021
22307
  .subscribe(() => {
22022
22308
  this.pendingNavigation = false;
22023
22309
  if (cb) {
@@ -22128,7 +22414,7 @@ class IgxGridNavigationService {
22128
22414
  }
22129
22415
  const editCell = this.grid.crudService.cell;
22130
22416
  this.grid.verticalScrollContainer.chunkLoad
22131
- .pipe(first()).subscribe(() => {
22417
+ .pipe(first$1()).subscribe(() => {
22132
22418
  if (editCell && this.grid.rowList.map(r => r.index).indexOf(editCell.rowIndex) < 0) {
22133
22419
  this.grid.tbody.nativeElement.focus({ preventScroll: true });
22134
22420
  }
@@ -22356,7 +22642,7 @@ class IgxGridNavigationService {
22356
22642
  this.grid.navigateTo(rowIndex, visibleColIndex, cb);
22357
22643
  }
22358
22644
  emitKeyDown(type, rowIndex, event) {
22359
- const row = this.grid.summariesRowList.find((r) => r.index === rowIndex) || this.grid.rowList.find((r) => r.index === rowIndex);
22645
+ const row = this.grid.summariesRowList.toArray().concat(this.grid.rowList.toArray()).find(r => r.index === rowIndex);
22360
22646
  if (!row) {
22361
22647
  return;
22362
22648
  }
@@ -22388,7 +22674,6 @@ class IgxGridNavigationService {
22388
22674
  return i;
22389
22675
  }
22390
22676
  }
22391
- return undefined;
22392
22677
  }
22393
22678
  getRowElementByIndex(index) {
22394
22679
  if (this.grid.hasDetails) {
@@ -22397,7 +22682,7 @@ class IgxGridNavigationService {
22397
22682
  return detail;
22398
22683
  }
22399
22684
  }
22400
- return this.grid.rowList.find((r) => r.index === index)?.nativeElement || this.grid.summariesRowList.find((r) => r.index === index)?.nativeElement || null;
22685
+ return this.grid.rowList.toArray().concat(this.grid.summariesRowList.toArray()).find(r => r.index === index)?.nativeElement;
22401
22686
  }
22402
22687
  isValidPosition(rowIndex, colIndex) {
22403
22688
  const length = this.grid.totalItemCount ?? this.grid.dataView.length;
@@ -22463,7 +22748,7 @@ class IgxGridNavigationService {
22463
22748
  this.grid.visibleColumns.sort((c1, c2) => c1.visibleIndex - c2.visibleIndex)
22464
22749
  .find(c => this.isColumnFullyVisible(c.visibleIndex))?.visibleIndex;
22465
22750
  const column = this.grid.visibleColumns.find((col) => !col.columnLayout && col.visibleIndex === colIndex);
22466
- const rowInd = rowIndex ? rowIndex : this.grid.rowList.find((r) => !this.shouldPerformVerticalScroll(r.index, colIndex))?.index;
22751
+ const rowInd = rowIndex ? rowIndex : this.grid.rowList.find(r => !this.shouldPerformVerticalScroll(r.index, colIndex))?.index;
22467
22752
  const node = {
22468
22753
  row: rowInd ?? 0,
22469
22754
  column: column?.visibleIndex ?? 0, level: column?.level ?? 0,
@@ -22530,7 +22815,7 @@ class IgxGridNavigationService {
22530
22815
  }
22531
22816
  const clearSelection = this.grid.columnSelection === GridSelectionMode.single;
22532
22817
  const columnsToSelect = !column.children ? [column.field] :
22533
- column.allChildren.filter((c) => !c.hidden && c.selectable && !c.columnGroup).map((c) => c.field);
22818
+ column.allChildren.filter(c => !c.hidden && c.selectable && !c.columnGroup).map(c => c.field);
22534
22819
  if (column.selected) {
22535
22820
  this.grid.selectionService.deselectColumns(columnsToSelect, event);
22536
22821
  }
@@ -22658,14 +22943,14 @@ class IgxGridValidationService {
22658
22943
  */
22659
22944
  isFieldInvalid(formGroup, fieldName) {
22660
22945
  const path = this.getFormControlPath(fieldName);
22661
- return (formGroup.get(path)?.invalid && formGroup.get(path)?.touched);
22946
+ return formGroup.get(path)?.invalid && formGroup.get(path)?.touched;
22662
22947
  }
22663
22948
  /**
22664
22949
  * Checks the validity of the native ngControl after edit
22665
22950
  */
22666
22951
  isFieldValidAfterEdit(formGroup, fieldName) {
22667
22952
  const path = this.getFormControlPath(fieldName);
22668
- return (!formGroup.get(path)?.invalid && formGroup.get(path)?.dirty);
22953
+ return !formGroup.get(path)?.invalid && formGroup.get(path)?.dirty;
22669
22954
  }
22670
22955
  /**
22671
22956
  * @hidden
@@ -23003,9 +23288,9 @@ class IgxGridCellComponent {
23003
23288
  const scrollOffset = this.grid.verticalScrollContainer.scrollPosition + (event.y - this.grid.tbody.nativeElement.getBoundingClientRect().y);
23004
23289
  const targetRowIndex = this.grid.verticalScrollContainer.getIndexAtScroll(scrollOffset);
23005
23290
  if (targetRowIndex != this.rowIndex) {
23006
- const row = this.grid.rowList.find((x) => x.index === targetRowIndex);
23007
- const actualTarget = row?.cells?.find((x) => x.column === this.column);
23008
- actualTarget?.pointerdown(event);
23291
+ const row = this.grid.rowList.toArray().find(x => x.index === targetRowIndex);
23292
+ const actualTarget = row.cells.find(x => x.column === this.column);
23293
+ actualTarget.pointerdown(event);
23009
23294
  return;
23010
23295
  }
23011
23296
  }
@@ -23668,7 +23953,7 @@ class IgxGridCellComponent {
23668
23953
  if (this.isInvalid && !isTargetErrorIcon) {
23669
23954
  this.cdr.detectChanges();
23670
23955
  this.openErrorTooltip();
23671
- this.grid.activeNodeChange.pipe(first()).subscribe(() => {
23956
+ this.grid.activeNodeChange.pipe(first$1()).subscribe(() => {
23672
23957
  this.closeErrorTooltip();
23673
23958
  });
23674
23959
  }
@@ -23749,7 +24034,7 @@ class IgxGridCellComponent {
23749
24034
  * Also we need to keep the notifyChanges below, because of the current
23750
24035
  * change detection cycle when we have editing with enabled transactions
23751
24036
  */
23752
- if (this.grid.sortingExpressions.length && this.grid.sortingExpressions.indexOf(editableCell.column.field) !== -1) {
24037
+ if (this.grid.sortingExpressions.length && this.grid.sortingExpressions.indexOf(editableCell.column.field)) {
23753
24038
  this.grid.cdr.detectChanges();
23754
24039
  }
23755
24040
  if (editableArgs && editableArgs.cancel) {
@@ -23790,7 +24075,7 @@ class IgxGridCellComponent {
23790
24075
  return new IgxGridCell(this.grid, rowID, this.column);
23791
24076
  }
23792
24077
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxGridCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23793
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxGridCellComponent, isStandalone: true, selector: "igx-grid-cell", inputs: { column: "column", isPlaceholder: "isPlaceholder", isMerged: "isMerged", intRow: "intRow", row: "row", rowData: "rowData", columnData: "columnData", cellTemplate: "cellTemplate", cellValidationErrorTemplate: "cellValidationErrorTemplate", pinnedIndicator: "pinnedIndicator", value: "value", formatter: "formatter", visibleColumnIndex: "visibleColumnIndex", cellSelectionMode: "cellSelectionMode", lastSearchInfo: "lastSearchInfo", lastPinned: "lastPinned", firstPinned: "firstPinned", editMode: ["editMode", "editMode", booleanAttribute], width: "width", active: "active", displayPinnedChip: "displayPinnedChip" }, host: { listeners: { "dblclick": "onDoubleClick($event)", "click": "onClick($event)" }, properties: { "class.igx-grid__td--new": "this.isEmptyAddRowCell", "attr.data-rowIndex": "this.rowIndex", "attr.data-visibleIndex": "this.visibleColumnIndex", "attr.id": "this.attrCellID", "attr.title": "this.title", "class.igx-grid__td--bool-true": "this.booleanClass", "class.igx-grid__td--pinned-last": "this.lastPinned", "class.igx-grid__td--pinned-first": "this.firstPinned", "class.igx-grid__td--editing": "this.editMode", "attr.role": "this.role", "attr.aria-readonly": "this.readonly", "attr.aria-describedby": "this.ariaDescribeBy", "class.igx-grid__td--invalid": "this.isInvalid", "attr.aria-invalid": "this.isInvalid", "class.igx-grid__td--valid": "this.isValidAfterEdit", "class.igx-grid__td--active": "this.active", "attr.aria-selected": "this.ariaSelected", "class.igx-grid__td--selected": "this.selected", "class.igx-grid__td--column-selected": "this.columnSelected", "class.igx-grid__td--row-pinned-first": "this.displayPinnedChip", "style.min-height.px": "this.minHeight", "attr.aria-rowindex": "this.ariaRowIndex", "attr.aria-colindex": "this.ariaColIndex" } }, viewQueries: [{ propertyName: "errorIcon", first: true, predicate: ["errorIcon"], descendants: true, read: IgxIconComponent }, { propertyName: "defaultErrorTemplate", first: true, predicate: ["defaultError"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultCellTemplate", first: true, predicate: ["defaultCell"], descendants: true, read: TemplateRef, static: true }, { propertyName: "emptyCellTemplate", first: true, predicate: ["emptyCell"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultPinnedIndicator", first: true, predicate: ["defaultPinnedIndicator"], descendants: true, read: TemplateRef, static: true }, { propertyName: "inlineEditorTemplate", first: true, predicate: ["inlineEditor"], descendants: true, read: TemplateRef, static: true }, { propertyName: "addRowCellTemplate", first: true, predicate: ["addRowCell"], descendants: true, read: TemplateRef, static: true }, { propertyName: "highlight", first: true, predicate: IgxTextHighlightDirective, descendants: true, read: IgxTextHighlightDirective }, { propertyName: "errorTooltip", predicate: ["error"], descendants: true, read: IgxTooltipDirective }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultPinnedIndicator>\n @if (displayPinnedChip) {\n <igx-chip\n class=\"igx-grid__td--pinned-chip\"\n [disabled]=\"true\"\n [style.--ig-size]=\"1\"\n >{{ grid.resourceStrings.igx_grid_pinned_row_indicator }}</igx-chip\n >\n }\n</ng-template>\n<ng-template #defaultCell>\n @if (\n (column.dataType !== 'boolean' && column.dataType !== 'image') ||\n (column.dataType === 'boolean' && this.formatter)\n ) {\n <div\n igxTextHighlight\n class=\"igx-grid__td-text\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"\n formatter\n ? (value | columnFormatter: formatter : rowData : columnData)\n : column.dataType === 'number'\n ? (value | number: column.pipeArgs.digitsInfo : grid.locale)\n : column.dataType === 'date' ||\n column.dataType === 'time' ||\n column.dataType === 'dateTime'\n ? (value\n | date\n : column.pipeArgs.format\n : column.pipeArgs.timezone\n : grid.locale)\n : column.dataType === 'currency'\n ? (value\n | currency\n : currencyCode\n : column.pipeArgs.display\n : column.pipeArgs.digitsInfo\n : grid.locale)\n : column.dataType === 'percent'\n ? (value | percent: column.pipeArgs.digitsInfo : grid.locale)\n : value\n \"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\"\n >\n {{\n formatter\n ? (value | columnFormatter: formatter : rowData : columnData)\n : column.dataType === 'number'\n ? (value | number: column.pipeArgs.digitsInfo : grid.locale)\n : column.dataType === 'date' ||\n column.dataType === 'time' ||\n column.dataType === 'dateTime'\n ? (value\n | date\n : column.pipeArgs.format\n : column.pipeArgs.timezone\n : grid.locale)\n : column.dataType === 'currency'\n ? (value\n | currency\n : currencyCode\n : column.pipeArgs.display\n : column.pipeArgs.digitsInfo\n : grid.locale)\n : column.dataType === 'percent'\n ? (value | percent: column.pipeArgs.digitsInfo : grid.locale)\n : value\n }}\n </div>\n }\n @if (column.dataType === 'boolean' && !this.formatter) {\n <igx-icon\n family=\"default\"\n [name]=\"value ? 'confirm' : 'close'\"\n [ngClass]=\"{ 'igx-icon--success': value, 'igx-icon--error': !value }\"\n >\n </igx-icon>\n }\n @if (column.dataType === 'image') {\n <img [src]=\"value\" [alt]=\"value | igxCellImageAlt\" />\n }\n</ng-template>\n\n<ng-template #emptyCell></ng-template>\n<ng-template #addRowCell let-cell=\"cell\">\n @if (\n column.dataType !== 'boolean' ||\n (column.dataType === 'boolean' && this.formatter)\n ) {\n <div\n igxTextHighlight\n class=\"igx-grid__td-text\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"\n formatter\n ? (value | columnFormatter: formatter : rowData)\n : column.dataType === 'number'\n ? (value | number: column.pipeArgs.digitsInfo : grid.locale)\n : column.dataType === 'date' ||\n column.dataType === 'time' ||\n column.dataType === 'dateTime'\n ? (value\n | date\n : column.pipeArgs.format\n : column.pipeArgs.timezone\n : grid.locale)\n : column.dataType === 'currency'\n ? (value\n | currency\n : currencyCode\n : column.pipeArgs.display\n : column.pipeArgs.digitsInfo\n : grid.locale)\n : column.dataType === 'percent'\n ? (value | percent: column.pipeArgs.digitsInfo : grid.locale)\n : value\n \"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\"\n >\n {{ !isEmptyAddRowCell ? value : column.header || column.field }}\n </div>\n }\n</ng-template>\n<ng-template #inlineEditor let-cell=\"cell\">\n @if (column.dataType === 'string' || column.dataType === 'image') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-input-group>\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [formControl]=\"formControl\"\n (compositionstart)=\"grid.crudService.isInCompositionMode = true\"\n (compositionend)=\"grid.crudService.isInCompositionMode = false\"\n />\n </igx-input-group>\n </ng-container>\n }\n @if (column.dataType === 'number') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n </igx-input-group>\n }\n @if (column.dataType === 'boolean') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-checkbox\n [checked]=\"editValue\"\n [igxFocus]=\"true\"\n [disableRipple]=\"true\"\n [formControl]=\"formControl\"\n ></igx-checkbox>\n </ng-container>\n }\n @if (column.dataType === 'date') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-date-picker\n [style.width.%]=\"100\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [weekStart]=\"column.pipeArgs.weekStart!\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n [formControl]=\"formControl\"\n [inputFormat]=\"column.editorOptions?.dateTimeFormat!\"\n [displayFormat]=\"column.pipeArgs.format!\"\n >\n </igx-date-picker>\n </ng-container>\n }\n @if (column.dataType === 'time') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-time-picker\n [style.width.%]=\"100\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [inputFormat]=\"column.editorOptions?.dateTimeFormat!\"\n [displayFormat]=\"column.pipeArgs.format!\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n [formControl]=\"formControl\"\n ></igx-time-picker>\n </ng-container>\n }\n @if (column.dataType === 'dateTime') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n type=\"text\"\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [formControl]=\"formControl\"\n igxInput\n [locale]=\"grid.locale\"\n [igxDateTimeEditor]=\"column.editorOptions?.dateTimeFormat!\"\n [defaultFormatType]=\"column.dataType\"\n [displayFormat]=\"column.pipeArgs.format!\"\n [igxFocus]=\"true\"\n />\n </igx-input-group>\n }\n @if (column.dataType === 'currency') {\n <igx-input-group [formGroup]=\"formGroup\">\n @if (grid.currencyPositionLeft) {\n <igx-prefix>{{ currencyCodeSymbol }}</igx-prefix>\n }\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n @if (!grid.currencyPositionLeft) {\n <igx-suffix>{{ currencyCodeSymbol }}</igx-suffix>\n }\n </igx-input-group>\n }\n @if (column.dataType === 'percent') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n <igx-suffix>\n {{ editValue | percent: column.pipeArgs.digitsInfo : grid.locale }}\n </igx-suffix>\n </igx-input-group>\n }\n</ng-template>\n<ng-container *ngTemplateOutlet=\"pinnedIndicatorTemplate; context: context\">\n</ng-container>\n<ng-container *ngTemplateOutlet=\"template; context: context\"></ng-container>\n\n@if (isInvalid) {\n <igx-icon\n family=\"default\"\n name=\"error\"\n #errorIcon\n [igxTooltipTarget]=\"tooltipRef\"\n (mouseover)=\"errorShowing = true\"\n (mouseout)=\"errorShowing = false\"\n >\n </igx-icon>\n <div [id]=\"ariaErrorMessage\" igxTooltip #error #tooltipRef=\"tooltip\">\n <div [style.width]=\"'max-content'\">\n <ng-container\n *ngTemplateOutlet=\"\n cellValidationErrorTemplate || defaultError;\n context: context\n \"\n ></ng-container>\n </div>\n </div>\n}\n\n<ng-template #defaultError>\n @let errors = formControl.errors;\n @if (errors?.['required']) {\n <div>\n {{ grid.resourceStrings.igx_grid_required_validation_error }}\n </div>\n }\n @if (errors?.['minlength']) {\n <div>\n {{\n grid.resourceStrings.igx_grid_min_length_validation_error!\n | igxStringReplace: '{0}' : errors.minlength.requiredLength\n }}\n </div>\n }\n @if (errors?.['maxlength']) {\n <div>\n {{\n grid.resourceStrings.igx_grid_max_length_validation_error!\n | igxStringReplace: '{0}' : errors.maxlength.requiredLength\n }}\n </div>\n }\n @if (errors?.['min']) {\n <div>\n {{\n grid.resourceStrings.igx_grid_min_validation_error!\n | igxStringReplace: '{0}' : errors.min.min\n }}\n </div>\n }\n @if (errors?.['max']) {\n <div>\n {{\n grid.resourceStrings.igx_grid_max_validation_error!\n | igxStringReplace: '{0}' : errors.max.max\n }}\n </div>\n }\n @if (errors?.['email']) {\n <div>\n {{ grid.resourceStrings.igx_grid_email_validation_error }}\n </div>\n }\n @if (errors?.['pattern']) {\n <div>\n {{ grid.resourceStrings.igx_grid_pattern_validation_error }}\n </div>\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number]:not([ngNoCva])[formControlName],input[type=number]:not([ngNoCva])[formControl],input[type=number]:not([ngNoCva])[ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: IgxChipComponent, selector: "igx-chip", inputs: ["variant", "id", "tabIndex", "data", "draggable", "animateOnRelease", "hideBaseOnDrag", "removable", "removeIcon", "selectable", "selectIcon", "class", "disabled", "selected", "color", "resourceStrings"], outputs: ["selectedChange", "moveStart", "moveEnd", "remove", "chipClick", "selectedChanging", "selectedChanged", "keyDown", "dragEnter", "dragLeave", "dragOver", "dragDrop"] }, { kind: "directive", type: IgxTextHighlightDirective, selector: "[igxTextHighlight]", inputs: ["cssClass", "activeCssClass", "containerClass", "groupName", "value", "row", "column", "metadata"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxFocusDirective, selector: "[igxFocus]", inputs: ["igxFocus"], exportAs: ["igxFocus"] }, { kind: "directive", type: IgxTextSelectionDirective, selector: "[igxTextSelection]", inputs: ["igxTextSelection"], exportAs: ["igxTextSelection"] }, { kind: "component", type: IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["indeterminate", "checked", "disabled", "invalid", "readonly", "disableTransitions"] }, { kind: "component", type: IgxDatePickerComponent, selector: "igx-date-picker", inputs: ["hideOutsideDays", "displayMonthsCount", "orientation", "showWeekNumbers", "activeDate", "formatter", "todayButtonLabel", "cancelButtonLabel", "spinLoop", "spinDelta", "id", "formatViews", "disabledDates", "specialDates", "calendarFormat", "value", "minValue", "maxValue", "resourceStrings", "readOnly"], outputs: ["valueChange", "validationFailed"] }, { kind: "component", type: IgxTimePickerComponent, selector: "igx-time-picker", inputs: ["id", "displayFormat", "inputFormat", "mode", "minValue", "maxValue", "spinLoop", "formatter", "readOnly", "value", "resourceStrings", "okButtonLabel", "cancelButtonLabel", "itemsDelta"], outputs: ["selected", "valueChange", "validationFailed"] }, { kind: "directive", type: IgxDateTimeEditorDirective, selector: "[igxDateTimeEditor]", inputs: ["locale", "minValue", "maxValue", "spinLoop", "displayFormat", "igxDateTimeEditor", "value", "defaultFormatType", "spinDelta"], outputs: ["valueChange", "validationFailed"], exportAs: ["igxDateTimeEditor"] }, { kind: "directive", type: IgxPrefixDirective, selector: "[igxPrefix],[igxStart],igx-prefix" }, { kind: "directive", type: IgxSuffixDirective, selector: "[igxSuffix],[igxEnd],igx-suffix" }, { kind: "directive", type: IgxTooltipTargetDirective, selector: "[igxTooltipTarget]", inputs: ["showDelay", "hideDelay", "hasArrow", "sticky", "closeButtonTemplate", "positionSettings", "tooltipDisabled", "showTriggers", "hideTriggers", "igxTooltipTarget", "tooltip"], outputs: ["tooltipShow", "tooltipHide"], exportAs: ["tooltipTarget"] }, { kind: "directive", type: IgxTooltipDirective, selector: "[igxTooltip]", inputs: ["context", "id", "role"], exportAs: ["tooltip"] }, { kind: "pipe", type: IgxNumberFormatterPipe, name: "number" }, { kind: "pipe", type: IgxPercentFormatterPipe, name: "percent" }, { kind: "pipe", type: IgxCurrencyFormatterPipe, name: "currency" }, { kind: "pipe", type: IgxDateFormatterPipe, name: "date" }, { kind: "pipe", type: IgxGridCellImageAltPipe, name: "igxCellImageAlt" }, { kind: "pipe", type: IgxStringReplacePipe, name: "igxStringReplace" }, { kind: "pipe", type: IgxColumnFormatterPipe, name: "columnFormatter" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24078
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: IgxGridCellComponent, isStandalone: true, selector: "igx-grid-cell", inputs: { column: "column", isPlaceholder: "isPlaceholder", isMerged: "isMerged", intRow: "intRow", row: "row", rowData: "rowData", columnData: "columnData", cellTemplate: "cellTemplate", cellValidationErrorTemplate: "cellValidationErrorTemplate", pinnedIndicator: "pinnedIndicator", value: "value", formatter: "formatter", visibleColumnIndex: "visibleColumnIndex", cellSelectionMode: "cellSelectionMode", lastSearchInfo: "lastSearchInfo", lastPinned: "lastPinned", firstPinned: "firstPinned", editMode: ["editMode", "editMode", booleanAttribute], width: "width", active: "active", displayPinnedChip: "displayPinnedChip" }, host: { listeners: { "dblclick": "onDoubleClick($event)", "click": "onClick($event)" }, properties: { "class.igx-grid__td--new": "this.isEmptyAddRowCell", "attr.data-rowIndex": "this.rowIndex", "attr.data-visibleIndex": "this.visibleColumnIndex", "attr.id": "this.attrCellID", "attr.title": "this.title", "class.igx-grid__td--bool-true": "this.booleanClass", "class.igx-grid__td--pinned-last": "this.lastPinned", "class.igx-grid__td--pinned-first": "this.firstPinned", "class.igx-grid__td--editing": "this.editMode", "attr.role": "this.role", "attr.aria-readonly": "this.readonly", "attr.aria-describedby": "this.ariaDescribeBy", "class.igx-grid__td--invalid": "this.isInvalid", "attr.aria-invalid": "this.isInvalid", "class.igx-grid__td--valid": "this.isValidAfterEdit", "class.igx-grid__td--active": "this.active", "attr.aria-selected": "this.ariaSelected", "class.igx-grid__td--selected": "this.selected", "class.igx-grid__td--column-selected": "this.columnSelected", "class.igx-grid__td--row-pinned-first": "this.displayPinnedChip", "style.min-height.px": "this.minHeight", "attr.aria-rowindex": "this.ariaRowIndex", "attr.aria-colindex": "this.ariaColIndex" } }, viewQueries: [{ propertyName: "errorIcon", first: true, predicate: ["errorIcon"], descendants: true, read: IgxIconComponent }, { propertyName: "defaultErrorTemplate", first: true, predicate: ["defaultError"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultCellTemplate", first: true, predicate: ["defaultCell"], descendants: true, read: TemplateRef, static: true }, { propertyName: "emptyCellTemplate", first: true, predicate: ["emptyCell"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultPinnedIndicator", first: true, predicate: ["defaultPinnedIndicator"], descendants: true, read: TemplateRef, static: true }, { propertyName: "inlineEditorTemplate", first: true, predicate: ["inlineEditor"], descendants: true, read: TemplateRef, static: true }, { propertyName: "addRowCellTemplate", first: true, predicate: ["addRowCell"], descendants: true, read: TemplateRef, static: true }, { propertyName: "highlight", first: true, predicate: IgxTextHighlightDirective, descendants: true, read: IgxTextHighlightDirective }, { propertyName: "errorTooltip", predicate: ["error"], descendants: true, read: IgxTooltipDirective }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultPinnedIndicator>\n @if (displayPinnedChip) {\n <igx-chip\n class=\"igx-grid__td--pinned-chip\"\n [disabled]=\"true\"\n [style.--ig-size]=\"1\"\n >{{ grid.resourceStrings.igx_grid_pinned_row_indicator }}</igx-chip\n >\n }\n</ng-template>\n<ng-template #defaultCell>\n @if (\n (column.dataType !== 'boolean' && column.dataType !== 'image') ||\n (column.dataType === 'boolean' && this.formatter)\n ) {\n <div\n igxTextHighlight\n class=\"igx-grid__td-text\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"\n formatter\n ? (value | columnFormatter: formatter : rowData : columnData)\n : column.dataType === 'number'\n ? (value | number: column.pipeArgs.digitsInfo : grid.locale)\n : column.dataType === 'date' ||\n column.dataType === 'time' ||\n column.dataType === 'dateTime'\n ? (value\n | date\n : column.pipeArgs.format\n : column.pipeArgs.timezone\n : grid.locale)\n : column.dataType === 'currency'\n ? (value\n | currency\n : currencyCode\n : column.pipeArgs.display\n : column.pipeArgs.digitsInfo\n : grid.locale)\n : column.dataType === 'percent'\n ? (value | percent: column.pipeArgs.digitsInfo : grid.locale)\n : value\n \"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\"\n >\n {{\n formatter\n ? (value | columnFormatter: formatter : rowData : columnData)\n : column.dataType === 'number'\n ? (value | number: column.pipeArgs.digitsInfo : grid.locale)\n : column.dataType === 'date' ||\n column.dataType === 'time' ||\n column.dataType === 'dateTime'\n ? (value\n | date\n : column.pipeArgs.format\n : column.pipeArgs.timezone\n : grid.locale)\n : column.dataType === 'currency'\n ? (value\n | currency\n : currencyCode\n : column.pipeArgs.display\n : column.pipeArgs.digitsInfo\n : grid.locale)\n : column.dataType === 'percent'\n ? (value | percent: column.pipeArgs.digitsInfo : grid.locale)\n : value\n }}\n </div>\n }\n @if (column.dataType === 'boolean' && !this.formatter) {\n <igx-icon\n family=\"default\"\n [name]=\"value ? 'confirm' : 'close'\"\n [ngClass]=\"{ 'igx-icon--success': value, 'igx-icon--error': !value }\"\n >\n </igx-icon>\n }\n @if (column.dataType === 'image') {\n <img [src]=\"value\" [alt]=\"value | igxCellImageAlt\" />\n }\n</ng-template>\n\n<ng-template #emptyCell></ng-template>\n<ng-template #addRowCell let-cell=\"cell\">\n @if (\n column.dataType !== 'boolean' ||\n (column.dataType === 'boolean' && this.formatter)\n ) {\n <div\n igxTextHighlight\n class=\"igx-grid__td-text\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"\n formatter\n ? (value | columnFormatter: formatter : rowData)\n : column.dataType === 'number'\n ? (value | number: column.pipeArgs.digitsInfo : grid.locale)\n : column.dataType === 'date' ||\n column.dataType === 'time' ||\n column.dataType === 'dateTime'\n ? (value\n | date\n : column.pipeArgs.format\n : column.pipeArgs.timezone\n : grid.locale)\n : column.dataType === 'currency'\n ? (value\n | currency\n : currencyCode\n : column.pipeArgs.display\n : column.pipeArgs.digitsInfo\n : grid.locale)\n : column.dataType === 'percent'\n ? (value | percent: column.pipeArgs.digitsInfo : grid.locale)\n : value\n \"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\"\n >\n {{ !isEmptyAddRowCell ? value : column.header || column.field }}\n </div>\n }\n</ng-template>\n<ng-template #inlineEditor let-cell=\"cell\">\n @if (column.dataType === 'string' || column.dataType === 'image') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-input-group>\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [formControl]=\"formControl\"\n (compositionstart)=\"grid.crudService.isInCompositionMode = true\"\n (compositionend)=\"grid.crudService.isInCompositionMode = false\"\n />\n </igx-input-group>\n </ng-container>\n }\n @if (column.dataType === 'number') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n </igx-input-group>\n }\n @if (column.dataType === 'boolean') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-checkbox\n [checked]=\"editValue\"\n [igxFocus]=\"true\"\n [disableRipple]=\"true\"\n [formControl]=\"formControl\"\n ></igx-checkbox>\n </ng-container>\n }\n @if (column.dataType === 'date') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-date-picker\n [style.width.%]=\"100\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [weekStart]=\"column.pipeArgs.weekStart\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n [formControl]=\"formControl\"\n [inputFormat]=\"\n $safeNavigationMigration(column.editorOptions?.dateTimeFormat)\n \"\n [displayFormat]=\"column.pipeArgs.format\"\n >\n </igx-date-picker>\n </ng-container>\n }\n @if (column.dataType === 'time') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-time-picker\n [style.width.%]=\"100\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [inputFormat]=\"\n $safeNavigationMigration(column.editorOptions?.dateTimeFormat)\n \"\n [displayFormat]=\"column.pipeArgs.format\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n [formControl]=\"formControl\"\n ></igx-time-picker>\n </ng-container>\n }\n @if (column.dataType === 'dateTime') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n type=\"text\"\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [formControl]=\"formControl\"\n igxInput\n [locale]=\"grid.locale\"\n [igxDateTimeEditor]=\"\n $safeNavigationMigration(column.editorOptions?.dateTimeFormat)\n \"\n [defaultFormatType]=\"column.dataType\"\n [displayFormat]=\"column.pipeArgs.format\"\n [igxFocus]=\"true\"\n />\n </igx-input-group>\n }\n @if (column.dataType === 'currency') {\n <igx-input-group [formGroup]=\"formGroup\">\n @if (grid.currencyPositionLeft) {\n <igx-prefix>{{ currencyCodeSymbol }}</igx-prefix>\n }\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n @if (!grid.currencyPositionLeft) {\n <igx-suffix>{{ currencyCodeSymbol }}</igx-suffix>\n }\n </igx-input-group>\n }\n @if (column.dataType === 'percent') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n <igx-suffix>\n {{ editValue | percent: column.pipeArgs.digitsInfo : grid.locale }}\n </igx-suffix>\n </igx-input-group>\n }\n</ng-template>\n<ng-container *ngTemplateOutlet=\"pinnedIndicatorTemplate; context: context\">\n</ng-container>\n<ng-container *ngTemplateOutlet=\"template; context: context\"></ng-container>\n\n@if (isInvalid) {\n <igx-icon\n family=\"default\"\n name=\"error\"\n #errorIcon\n [igxTooltipTarget]=\"tooltipRef\"\n (mouseover)=\"errorShowing = true\"\n (mouseout)=\"errorShowing = false\"\n >\n </igx-icon>\n <div [id]=\"ariaErrorMessage\" igxTooltip #error #tooltipRef=\"tooltip\">\n <div [style.width]=\"'max-content'\">\n <ng-container\n *ngTemplateOutlet=\"\n cellValidationErrorTemplate || defaultError;\n context: context\n \"\n ></ng-container>\n </div>\n </div>\n}\n\n<ng-template #defaultError>\n @let errors = formControl.errors;\n @if (errors?.['required']) {\n <div>\n {{ grid.resourceStrings.igx_grid_required_validation_error }}\n </div>\n }\n @if (errors?.['minlength']) {\n <div>\n {{\n grid.resourceStrings.igx_grid_min_length_validation_error\n | igxStringReplace: '{0}' : errors.minlength.requiredLength\n }}\n </div>\n }\n @if (errors?.['maxlength']) {\n <div>\n {{\n grid.resourceStrings.igx_grid_max_length_validation_error\n | igxStringReplace: '{0}' : errors.maxlength.requiredLength\n }}\n </div>\n }\n @if (errors?.['min']) {\n <div>\n {{\n grid.resourceStrings.igx_grid_min_validation_error\n | igxStringReplace: '{0}' : errors.min.min\n }}\n </div>\n }\n @if (errors?.['max']) {\n <div>\n {{\n grid.resourceStrings.igx_grid_max_validation_error\n | igxStringReplace: '{0}' : errors.max.max\n }}\n </div>\n }\n @if (errors?.['email']) {\n <div>\n {{ grid.resourceStrings.igx_grid_email_validation_error }}\n </div>\n }\n @if (errors?.['pattern']) {\n <div>\n {{ grid.resourceStrings.igx_grid_pattern_validation_error }}\n </div>\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number]:not([ngNoCva])[formControlName],input[type=number]:not([ngNoCva])[formControl],input[type=number]:not([ngNoCva])[ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: IgxChipComponent, selector: "igx-chip", inputs: ["variant", "id", "tabIndex", "data", "draggable", "animateOnRelease", "hideBaseOnDrag", "removable", "removeIcon", "selectable", "selectIcon", "class", "disabled", "selected", "color", "resourceStrings"], outputs: ["selectedChange", "moveStart", "moveEnd", "remove", "chipClick", "selectedChanging", "selectedChanged", "keyDown", "dragEnter", "dragLeave", "dragOver", "dragDrop"] }, { kind: "directive", type: IgxTextHighlightDirective, selector: "[igxTextHighlight]", inputs: ["cssClass", "activeCssClass", "containerClass", "groupName", "value", "row", "column", "metadata"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxFocusDirective, selector: "[igxFocus]", inputs: ["igxFocus"], exportAs: ["igxFocus"] }, { kind: "directive", type: IgxTextSelectionDirective, selector: "[igxTextSelection]", inputs: ["igxTextSelection"], exportAs: ["igxTextSelection"] }, { kind: "component", type: IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["indeterminate", "checked", "disabled", "invalid", "readonly", "disableTransitions"] }, { kind: "component", type: IgxDatePickerComponent, selector: "igx-date-picker", inputs: ["hideOutsideDays", "displayMonthsCount", "orientation", "showWeekNumbers", "activeDate", "formatter", "todayButtonLabel", "cancelButtonLabel", "spinLoop", "spinDelta", "id", "formatViews", "disabledDates", "specialDates", "calendarFormat", "value", "minValue", "maxValue", "resourceStrings", "readOnly"], outputs: ["valueChange", "validationFailed"] }, { kind: "component", type: IgxTimePickerComponent, selector: "igx-time-picker", inputs: ["id", "displayFormat", "inputFormat", "mode", "minValue", "maxValue", "spinLoop", "formatter", "readOnly", "value", "resourceStrings", "okButtonLabel", "cancelButtonLabel", "itemsDelta"], outputs: ["selected", "valueChange", "validationFailed"] }, { kind: "directive", type: IgxDateTimeEditorDirective, selector: "[igxDateTimeEditor]", inputs: ["locale", "minValue", "maxValue", "spinLoop", "displayFormat", "igxDateTimeEditor", "value", "defaultFormatType", "spinDelta"], outputs: ["valueChange", "validationFailed"], exportAs: ["igxDateTimeEditor"] }, { kind: "directive", type: IgxPrefixDirective, selector: "[igxPrefix],[igxStart],igx-prefix" }, { kind: "directive", type: IgxSuffixDirective, selector: "[igxSuffix],[igxEnd],igx-suffix" }, { kind: "directive", type: IgxTooltipTargetDirective, selector: "[igxTooltipTarget]", inputs: ["showDelay", "hideDelay", "hasArrow", "sticky", "closeButtonTemplate", "positionSettings", "tooltipDisabled", "showTriggers", "hideTriggers", "igxTooltipTarget", "tooltip"], outputs: ["tooltipShow", "tooltipHide"], exportAs: ["tooltipTarget"] }, { kind: "directive", type: IgxTooltipDirective, selector: "[igxTooltip]", inputs: ["context", "id", "role"], exportAs: ["tooltip"] }, { kind: "pipe", type: IgxNumberFormatterPipe, name: "number" }, { kind: "pipe", type: IgxPercentFormatterPipe, name: "percent" }, { kind: "pipe", type: IgxCurrencyFormatterPipe, name: "currency" }, { kind: "pipe", type: IgxDateFormatterPipe, name: "date" }, { kind: "pipe", type: IgxGridCellImageAltPipe, name: "igxCellImageAlt" }, { kind: "pipe", type: IgxStringReplacePipe, name: "igxStringReplace" }, { kind: "pipe", type: IgxColumnFormatterPipe, name: "columnFormatter" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23794
24079
  }
23795
24080
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: IgxGridCellComponent, decorators: [{
23796
24081
  type: Component,
@@ -23820,7 +24105,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImpor
23820
24105
  IgxGridCellImageAltPipe,
23821
24106
  IgxStringReplacePipe,
23822
24107
  IgxColumnFormatterPipe
23823
- ], template: "<ng-template #defaultPinnedIndicator>\n @if (displayPinnedChip) {\n <igx-chip\n class=\"igx-grid__td--pinned-chip\"\n [disabled]=\"true\"\n [style.--ig-size]=\"1\"\n >{{ grid.resourceStrings.igx_grid_pinned_row_indicator }}</igx-chip\n >\n }\n</ng-template>\n<ng-template #defaultCell>\n @if (\n (column.dataType !== 'boolean' && column.dataType !== 'image') ||\n (column.dataType === 'boolean' && this.formatter)\n ) {\n <div\n igxTextHighlight\n class=\"igx-grid__td-text\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"\n formatter\n ? (value | columnFormatter: formatter : rowData : columnData)\n : column.dataType === 'number'\n ? (value | number: column.pipeArgs.digitsInfo : grid.locale)\n : column.dataType === 'date' ||\n column.dataType === 'time' ||\n column.dataType === 'dateTime'\n ? (value\n | date\n : column.pipeArgs.format\n : column.pipeArgs.timezone\n : grid.locale)\n : column.dataType === 'currency'\n ? (value\n | currency\n : currencyCode\n : column.pipeArgs.display\n : column.pipeArgs.digitsInfo\n : grid.locale)\n : column.dataType === 'percent'\n ? (value | percent: column.pipeArgs.digitsInfo : grid.locale)\n : value\n \"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\"\n >\n {{\n formatter\n ? (value | columnFormatter: formatter : rowData : columnData)\n : column.dataType === 'number'\n ? (value | number: column.pipeArgs.digitsInfo : grid.locale)\n : column.dataType === 'date' ||\n column.dataType === 'time' ||\n column.dataType === 'dateTime'\n ? (value\n | date\n : column.pipeArgs.format\n : column.pipeArgs.timezone\n : grid.locale)\n : column.dataType === 'currency'\n ? (value\n | currency\n : currencyCode\n : column.pipeArgs.display\n : column.pipeArgs.digitsInfo\n : grid.locale)\n : column.dataType === 'percent'\n ? (value | percent: column.pipeArgs.digitsInfo : grid.locale)\n : value\n }}\n </div>\n }\n @if (column.dataType === 'boolean' && !this.formatter) {\n <igx-icon\n family=\"default\"\n [name]=\"value ? 'confirm' : 'close'\"\n [ngClass]=\"{ 'igx-icon--success': value, 'igx-icon--error': !value }\"\n >\n </igx-icon>\n }\n @if (column.dataType === 'image') {\n <img [src]=\"value\" [alt]=\"value | igxCellImageAlt\" />\n }\n</ng-template>\n\n<ng-template #emptyCell></ng-template>\n<ng-template #addRowCell let-cell=\"cell\">\n @if (\n column.dataType !== 'boolean' ||\n (column.dataType === 'boolean' && this.formatter)\n ) {\n <div\n igxTextHighlight\n class=\"igx-grid__td-text\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"\n formatter\n ? (value | columnFormatter: formatter : rowData)\n : column.dataType === 'number'\n ? (value | number: column.pipeArgs.digitsInfo : grid.locale)\n : column.dataType === 'date' ||\n column.dataType === 'time' ||\n column.dataType === 'dateTime'\n ? (value\n | date\n : column.pipeArgs.format\n : column.pipeArgs.timezone\n : grid.locale)\n : column.dataType === 'currency'\n ? (value\n | currency\n : currencyCode\n : column.pipeArgs.display\n : column.pipeArgs.digitsInfo\n : grid.locale)\n : column.dataType === 'percent'\n ? (value | percent: column.pipeArgs.digitsInfo : grid.locale)\n : value\n \"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\"\n >\n {{ !isEmptyAddRowCell ? value : column.header || column.field }}\n </div>\n }\n</ng-template>\n<ng-template #inlineEditor let-cell=\"cell\">\n @if (column.dataType === 'string' || column.dataType === 'image') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-input-group>\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [formControl]=\"formControl\"\n (compositionstart)=\"grid.crudService.isInCompositionMode = true\"\n (compositionend)=\"grid.crudService.isInCompositionMode = false\"\n />\n </igx-input-group>\n </ng-container>\n }\n @if (column.dataType === 'number') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n </igx-input-group>\n }\n @if (column.dataType === 'boolean') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-checkbox\n [checked]=\"editValue\"\n [igxFocus]=\"true\"\n [disableRipple]=\"true\"\n [formControl]=\"formControl\"\n ></igx-checkbox>\n </ng-container>\n }\n @if (column.dataType === 'date') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-date-picker\n [style.width.%]=\"100\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [weekStart]=\"column.pipeArgs.weekStart!\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n [formControl]=\"formControl\"\n [inputFormat]=\"column.editorOptions?.dateTimeFormat!\"\n [displayFormat]=\"column.pipeArgs.format!\"\n >\n </igx-date-picker>\n </ng-container>\n }\n @if (column.dataType === 'time') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-time-picker\n [style.width.%]=\"100\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [inputFormat]=\"column.editorOptions?.dateTimeFormat!\"\n [displayFormat]=\"column.pipeArgs.format!\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n [formControl]=\"formControl\"\n ></igx-time-picker>\n </ng-container>\n }\n @if (column.dataType === 'dateTime') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n type=\"text\"\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [formControl]=\"formControl\"\n igxInput\n [locale]=\"grid.locale\"\n [igxDateTimeEditor]=\"column.editorOptions?.dateTimeFormat!\"\n [defaultFormatType]=\"column.dataType\"\n [displayFormat]=\"column.pipeArgs.format!\"\n [igxFocus]=\"true\"\n />\n </igx-input-group>\n }\n @if (column.dataType === 'currency') {\n <igx-input-group [formGroup]=\"formGroup\">\n @if (grid.currencyPositionLeft) {\n <igx-prefix>{{ currencyCodeSymbol }}</igx-prefix>\n }\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n @if (!grid.currencyPositionLeft) {\n <igx-suffix>{{ currencyCodeSymbol }}</igx-suffix>\n }\n </igx-input-group>\n }\n @if (column.dataType === 'percent') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n <igx-suffix>\n {{ editValue | percent: column.pipeArgs.digitsInfo : grid.locale }}\n </igx-suffix>\n </igx-input-group>\n }\n</ng-template>\n<ng-container *ngTemplateOutlet=\"pinnedIndicatorTemplate; context: context\">\n</ng-container>\n<ng-container *ngTemplateOutlet=\"template; context: context\"></ng-container>\n\n@if (isInvalid) {\n <igx-icon\n family=\"default\"\n name=\"error\"\n #errorIcon\n [igxTooltipTarget]=\"tooltipRef\"\n (mouseover)=\"errorShowing = true\"\n (mouseout)=\"errorShowing = false\"\n >\n </igx-icon>\n <div [id]=\"ariaErrorMessage\" igxTooltip #error #tooltipRef=\"tooltip\">\n <div [style.width]=\"'max-content'\">\n <ng-container\n *ngTemplateOutlet=\"\n cellValidationErrorTemplate || defaultError;\n context: context\n \"\n ></ng-container>\n </div>\n </div>\n}\n\n<ng-template #defaultError>\n @let errors = formControl.errors;\n @if (errors?.['required']) {\n <div>\n {{ grid.resourceStrings.igx_grid_required_validation_error }}\n </div>\n }\n @if (errors?.['minlength']) {\n <div>\n {{\n grid.resourceStrings.igx_grid_min_length_validation_error!\n | igxStringReplace: '{0}' : errors.minlength.requiredLength\n }}\n </div>\n }\n @if (errors?.['maxlength']) {\n <div>\n {{\n grid.resourceStrings.igx_grid_max_length_validation_error!\n | igxStringReplace: '{0}' : errors.maxlength.requiredLength\n }}\n </div>\n }\n @if (errors?.['min']) {\n <div>\n {{\n grid.resourceStrings.igx_grid_min_validation_error!\n | igxStringReplace: '{0}' : errors.min.min\n }}\n </div>\n }\n @if (errors?.['max']) {\n <div>\n {{\n grid.resourceStrings.igx_grid_max_validation_error!\n | igxStringReplace: '{0}' : errors.max.max\n }}\n </div>\n }\n @if (errors?.['email']) {\n <div>\n {{ grid.resourceStrings.igx_grid_email_validation_error }}\n </div>\n }\n @if (errors?.['pattern']) {\n <div>\n {{ grid.resourceStrings.igx_grid_pattern_validation_error }}\n </div>\n }\n</ng-template>\n" }]
24108
+ ], template: "<ng-template #defaultPinnedIndicator>\n @if (displayPinnedChip) {\n <igx-chip\n class=\"igx-grid__td--pinned-chip\"\n [disabled]=\"true\"\n [style.--ig-size]=\"1\"\n >{{ grid.resourceStrings.igx_grid_pinned_row_indicator }}</igx-chip\n >\n }\n</ng-template>\n<ng-template #defaultCell>\n @if (\n (column.dataType !== 'boolean' && column.dataType !== 'image') ||\n (column.dataType === 'boolean' && this.formatter)\n ) {\n <div\n igxTextHighlight\n class=\"igx-grid__td-text\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"\n formatter\n ? (value | columnFormatter: formatter : rowData : columnData)\n : column.dataType === 'number'\n ? (value | number: column.pipeArgs.digitsInfo : grid.locale)\n : column.dataType === 'date' ||\n column.dataType === 'time' ||\n column.dataType === 'dateTime'\n ? (value\n | date\n : column.pipeArgs.format\n : column.pipeArgs.timezone\n : grid.locale)\n : column.dataType === 'currency'\n ? (value\n | currency\n : currencyCode\n : column.pipeArgs.display\n : column.pipeArgs.digitsInfo\n : grid.locale)\n : column.dataType === 'percent'\n ? (value | percent: column.pipeArgs.digitsInfo : grid.locale)\n : value\n \"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\"\n >\n {{\n formatter\n ? (value | columnFormatter: formatter : rowData : columnData)\n : column.dataType === 'number'\n ? (value | number: column.pipeArgs.digitsInfo : grid.locale)\n : column.dataType === 'date' ||\n column.dataType === 'time' ||\n column.dataType === 'dateTime'\n ? (value\n | date\n : column.pipeArgs.format\n : column.pipeArgs.timezone\n : grid.locale)\n : column.dataType === 'currency'\n ? (value\n | currency\n : currencyCode\n : column.pipeArgs.display\n : column.pipeArgs.digitsInfo\n : grid.locale)\n : column.dataType === 'percent'\n ? (value | percent: column.pipeArgs.digitsInfo : grid.locale)\n : value\n }}\n </div>\n }\n @if (column.dataType === 'boolean' && !this.formatter) {\n <igx-icon\n family=\"default\"\n [name]=\"value ? 'confirm' : 'close'\"\n [ngClass]=\"{ 'igx-icon--success': value, 'igx-icon--error': !value }\"\n >\n </igx-icon>\n }\n @if (column.dataType === 'image') {\n <img [src]=\"value\" [alt]=\"value | igxCellImageAlt\" />\n }\n</ng-template>\n\n<ng-template #emptyCell></ng-template>\n<ng-template #addRowCell let-cell=\"cell\">\n @if (\n column.dataType !== 'boolean' ||\n (column.dataType === 'boolean' && this.formatter)\n ) {\n <div\n igxTextHighlight\n class=\"igx-grid__td-text\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"\n formatter\n ? (value | columnFormatter: formatter : rowData)\n : column.dataType === 'number'\n ? (value | number: column.pipeArgs.digitsInfo : grid.locale)\n : column.dataType === 'date' ||\n column.dataType === 'time' ||\n column.dataType === 'dateTime'\n ? (value\n | date\n : column.pipeArgs.format\n : column.pipeArgs.timezone\n : grid.locale)\n : column.dataType === 'currency'\n ? (value\n | currency\n : currencyCode\n : column.pipeArgs.display\n : column.pipeArgs.digitsInfo\n : grid.locale)\n : column.dataType === 'percent'\n ? (value | percent: column.pipeArgs.digitsInfo : grid.locale)\n : value\n \"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\"\n >\n {{ !isEmptyAddRowCell ? value : column.header || column.field }}\n </div>\n }\n</ng-template>\n<ng-template #inlineEditor let-cell=\"cell\">\n @if (column.dataType === 'string' || column.dataType === 'image') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-input-group>\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [formControl]=\"formControl\"\n (compositionstart)=\"grid.crudService.isInCompositionMode = true\"\n (compositionend)=\"grid.crudService.isInCompositionMode = false\"\n />\n </igx-input-group>\n </ng-container>\n }\n @if (column.dataType === 'number') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n </igx-input-group>\n }\n @if (column.dataType === 'boolean') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-checkbox\n [checked]=\"editValue\"\n [igxFocus]=\"true\"\n [disableRipple]=\"true\"\n [formControl]=\"formControl\"\n ></igx-checkbox>\n </ng-container>\n }\n @if (column.dataType === 'date') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-date-picker\n [style.width.%]=\"100\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [weekStart]=\"column.pipeArgs.weekStart\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n [formControl]=\"formControl\"\n [inputFormat]=\"\n $safeNavigationMigration(column.editorOptions?.dateTimeFormat)\n \"\n [displayFormat]=\"column.pipeArgs.format\"\n >\n </igx-date-picker>\n </ng-container>\n }\n @if (column.dataType === 'time') {\n <ng-container [formGroup]=\"formGroup\">\n <igx-time-picker\n [style.width.%]=\"100\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [inputFormat]=\"\n $safeNavigationMigration(column.editorOptions?.dateTimeFormat)\n \"\n [displayFormat]=\"column.pipeArgs.format\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n [formControl]=\"formControl\"\n ></igx-time-picker>\n </ng-container>\n }\n @if (column.dataType === 'dateTime') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n type=\"text\"\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [formControl]=\"formControl\"\n igxInput\n [locale]=\"grid.locale\"\n [igxDateTimeEditor]=\"\n $safeNavigationMigration(column.editorOptions?.dateTimeFormat)\n \"\n [defaultFormatType]=\"column.dataType\"\n [displayFormat]=\"column.pipeArgs.format\"\n [igxFocus]=\"true\"\n />\n </igx-input-group>\n }\n @if (column.dataType === 'currency') {\n <igx-input-group [formGroup]=\"formGroup\">\n @if (grid.currencyPositionLeft) {\n <igx-prefix>{{ currencyCodeSymbol }}</igx-prefix>\n }\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n @if (!grid.currencyPositionLeft) {\n <igx-suffix>{{ currencyCodeSymbol }}</igx-suffix>\n }\n </igx-input-group>\n }\n @if (column.dataType === 'percent') {\n <igx-input-group [formGroup]=\"formGroup\">\n <input\n igxInput\n [attr.aria-describedby]=\"ariaDescribeBy\"\n [attr.aria-invalid]=\"isInvalid\"\n [igxFocus]=\"true\"\n [igxTextSelection]=\"true\"\n [step]=\"step\"\n type=\"number\"\n [formControl]=\"formControl\"\n />\n <igx-suffix>\n {{ editValue | percent: column.pipeArgs.digitsInfo : grid.locale }}\n </igx-suffix>\n </igx-input-group>\n }\n</ng-template>\n<ng-container *ngTemplateOutlet=\"pinnedIndicatorTemplate; context: context\">\n</ng-container>\n<ng-container *ngTemplateOutlet=\"template; context: context\"></ng-container>\n\n@if (isInvalid) {\n <igx-icon\n family=\"default\"\n name=\"error\"\n #errorIcon\n [igxTooltipTarget]=\"tooltipRef\"\n (mouseover)=\"errorShowing = true\"\n (mouseout)=\"errorShowing = false\"\n >\n </igx-icon>\n <div [id]=\"ariaErrorMessage\" igxTooltip #error #tooltipRef=\"tooltip\">\n <div [style.width]=\"'max-content'\">\n <ng-container\n *ngTemplateOutlet=\"\n cellValidationErrorTemplate || defaultError;\n context: context\n \"\n ></ng-container>\n </div>\n </div>\n}\n\n<ng-template #defaultError>\n @let errors = formControl.errors;\n @if (errors?.['required']) {\n <div>\n {{ grid.resourceStrings.igx_grid_required_validation_error }}\n </div>\n }\n @if (errors?.['minlength']) {\n <div>\n {{\n grid.resourceStrings.igx_grid_min_length_validation_error\n | igxStringReplace: '{0}' : errors.minlength.requiredLength\n }}\n </div>\n }\n @if (errors?.['maxlength']) {\n <div>\n {{\n grid.resourceStrings.igx_grid_max_length_validation_error\n | igxStringReplace: '{0}' : errors.maxlength.requiredLength\n }}\n </div>\n }\n @if (errors?.['min']) {\n <div>\n {{\n grid.resourceStrings.igx_grid_min_validation_error\n | igxStringReplace: '{0}' : errors.min.min\n }}\n </div>\n }\n @if (errors?.['max']) {\n <div>\n {{\n grid.resourceStrings.igx_grid_max_validation_error\n | igxStringReplace: '{0}' : errors.max.max\n }}\n </div>\n }\n @if (errors?.['email']) {\n <div>\n {{ grid.resourceStrings.igx_grid_email_validation_error }}\n </div>\n }\n @if (errors?.['pattern']) {\n <div>\n {{ grid.resourceStrings.igx_grid_pattern_validation_error }}\n </div>\n }\n</ng-template>\n" }]
23824
24109
  }], propDecorators: { isEmptyAddRowCell: [{
23825
24110
  type: HostBinding,
23826
24111
  args: ['class.igx-grid__td--new']
@@ -24021,7 +24306,7 @@ class IgxGridMRLNavigationService extends IgxGridNavigationService {
24021
24306
  scrollPos.leftScroll : scrollPos.rightScroll - this.displayContainerWidth;
24022
24307
  this.forOfDir().getScroll().scrollLeft = nextScroll;
24023
24308
  this.grid.parentVirtDir.chunkLoad
24024
- .pipe(first())
24309
+ .pipe(first$1())
24025
24310
  .subscribe(() => {
24026
24311
  if (cb) {
24027
24312
  cb();
@@ -24048,7 +24333,7 @@ class IgxGridMRLNavigationService extends IgxGridNavigationService {
24048
24333
  this.grid.verticalScrollContainer.addScrollTop(Math.abs(pos.rowBottom - this.scrollTop - containerHeight));
24049
24334
  }
24050
24335
  this.grid.verticalScrollContainer.chunkLoad
24051
- .pipe(first()).subscribe(() => {
24336
+ .pipe(first$1()).subscribe(() => {
24052
24337
  if (cb) {
24053
24338
  cb();
24054
24339
  }
@@ -24109,7 +24394,7 @@ class IgxGridMRLNavigationService extends IgxGridNavigationService {
24109
24394
  this.activeNode.column = col.visibleIndex;
24110
24395
  const layout = this.layout(this.activeNode.column);
24111
24396
  const nextLayout = { ...this.activeNode.layout, rowStart: layout.rowStart, rowEnd: layout.rowEnd };
24112
- this.setActiveNode({ row: this.activeNode.row, column: this.activeNode.column, layout: nextLayout });
24397
+ this.setActiveNode({ row: this.activeNode.row, layout: nextLayout });
24113
24398
  return;
24114
24399
  }
24115
24400
  this.horizontalNav(event, key, -1, 'headerCell');
@@ -24366,7 +24651,7 @@ class GridBaseAPIService {
24366
24651
  }
24367
24652
  }
24368
24653
  get_row_by_index(rowIndex) {
24369
- return this.grid.rowList.find(row => row.index === rowIndex);
24654
+ return this.grid.rowList.find((row) => row.index === rowIndex);
24370
24655
  }
24371
24656
  /**
24372
24657
  * Gets the rowID of the record at the specified data view index
@@ -24387,7 +24672,6 @@ class GridBaseAPIService {
24387
24672
  if (row && row.cells) {
24388
24673
  return row.cells.find((cell) => cell.column.field === field);
24389
24674
  }
24390
- return undefined;
24391
24675
  }
24392
24676
  get_cell_by_index(rowIndex, columnID) {
24393
24677
  const row = this.get_row_by_index(rowIndex);
@@ -24398,18 +24682,16 @@ class GridBaseAPIService {
24398
24682
  if (hasCells && typeof columnID === 'string') {
24399
24683
  return row.cells.find((cell) => cell.column.field === columnID);
24400
24684
  }
24401
- return undefined;
24402
24685
  }
24403
24686
  get_cell_by_visible_index(rowIndex, columnIndex) {
24404
24687
  const row = this.get_row_by_index(rowIndex);
24405
24688
  if (row && row.cells) {
24406
24689
  return row.cells.find((cell) => cell.visibleColumnIndex === columnIndex);
24407
24690
  }
24408
- return undefined;
24409
24691
  }
24410
24692
  update_cell(cell) {
24411
24693
  if (!cell) {
24412
- return undefined;
24694
+ return;
24413
24695
  }
24414
24696
  const args = cell.createCellEditEventArgs(true);
24415
24697
  if (!this.grid.crudService.row) { // should not recalculate summaries when there is row in edit mode
@@ -24802,7 +25084,7 @@ class GridBaseAPIService {
24802
25084
  if (index === -1) {
24803
25085
  return;
24804
25086
  }
24805
- const eventArgs = this.get_pin_row_event_args(rowID, undefined, row, false);
25087
+ const eventArgs = this.get_pin_row_event_args(rowID, null, row, false);
24806
25088
  grid.rowPinning.emit(eventArgs);
24807
25089
  if (eventArgs.cancel) {
24808
25090
  return;
@@ -24955,5 +25237,5 @@ const IGX_GRID_COMMON_DIRECTIVES = [
24955
25237
  * Generated bundle index. Do not edit.
24956
25238
  */
24957
25239
 
24958
- export { ActiveElement, CharSeparatedValueData, ColumnDisplayOrder, CsvFileTypes, DEFAULT_OWNER, DEFAULT_PIVOT_KEYS, DimensionValuesFilteringStrategy, DropPosition, ExportHeaderType, ExportRecordType, ExportUtilities, ExpressionUI, FilterListItem, FilterMode, GRID_LEVEL_COL, GRID_PARENT, GRID_ROOT_SUMMARY, GridBaseAPIService, GridCellMergeMode, GridPagingMode, GridSelectionMode, GridSummaryPosition, HEADER_KEYS, HORIZONTAL_NAV_KEYS, IGX_GRID_BASE, IGX_GRID_COMMON_DIRECTIVES, IGX_GRID_SERVICE_BASE, IGX_GRID_VALIDATION_DIRECTIVES, INPUT_DEBOUNCE_TIME, INPUT_DEBOUNCE_TIME_DEFAULT, IgxAddRow, IgxAdvancedFilteringDialogComponent, IgxBaseExporter, IgxCSVTextDirective, IgxCell, IgxCellCrudState, IgxCellEditorTemplateDirective, IgxCellFooterTemplateDirective, IgxCellHeaderTemplateDirective, IgxCellTemplateDirective, IgxCellValidationErrorDirective, IgxCollapsibleIndicatorTemplateDirective, IgxColumnActionsBaseDirective, IgxColumnActionsComponent, IgxColumnComponent, IgxColumnEmailValidatorDirective, IgxColumnFormatterPipe, IgxColumnGroupComponent, IgxColumnHidingDirective, IgxColumnLayoutComponent, IgxColumnMaxLengthValidatorDirective, IgxColumnMaxValidatorDirective, IgxColumnMinLengthValidatorDirective, IgxColumnMinValidatorDirective, IgxColumnMovingDragDirective, IgxColumnMovingDropDirective, IgxColumnMovingService, IgxColumnPatternValidatorDirective, IgxColumnPinningDirective, IgxColumnRequiredValidatorDirective, IgxColumnResizerDirective, IgxColumnResizingService, IgxCsvExporterOptions, IgxCsvExporterService, IgxDragIndicatorIconDirective, IgxEditRow, IgxExcelExporterOptions, IgxExcelExporterService, IgxExcelStyleClearFiltersComponent, IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleConditionalFilterComponent, IgxExcelStyleDateExpressionComponent, IgxExcelStyleFilterOperationsTemplateDirective, IgxExcelStyleHeaderComponent, IgxExcelStyleHeaderIconDirective, IgxExcelStyleHidingComponent, IgxExcelStyleLoadingValuesTemplateDirective, IgxExcelStyleMovingComponent, IgxExcelStylePinningComponent, IgxExcelStyleSearchComponent, IgxExcelStyleSelectingComponent, IgxExcelStyleSortingComponent, IgxExcelTextDirective, IgxExporterOptionsBase, IgxFilterCellTemplateDirective, IgxFilteringService, IgxGridActionButtonComponent, IgxGridActionsBaseDirective, IgxGridAddRowPipe, IgxGridBodyDirective, IgxGridCRUDService, IgxGridCell, IgxGridCellComponent, IgxGridCellImageAltPipe, IgxGridCellStyleClassesPipe, IgxGridCellStylesPipe, IgxGridColumnResizerComponent, IgxGridDataMapperPipe, IgxGridDetailTemplateDirective, IgxGridDragSelectDirective, IgxGridEditingActionsComponent, IgxGridEmptyTemplateDirective, IgxGridExcelStyleFilteringComponent, IgxGridFilterConditionPipe, IgxGridFilteringCellComponent, IgxGridFilteringRowComponent, IgxGridFooterComponent, IgxGridHeaderComponent, IgxGridHeaderGroupComponent, IgxGridHeaderRowComponent, IgxGridLoadingTemplateDirective, IgxGridMRLNavigationService, IgxGridNavigationService, IgxGridNotGroupedPipe, IgxGridPaginatorOptionsPipe, IgxGridPinningActionsComponent, IgxGridRow, IgxGridRowClassesPipe, IgxGridRowPinningPipe, IgxGridRowStylesPipe, IgxGridSelectionService, IgxGridStateBaseDirective, IgxGridStateDirective, IgxGridSummaryService, IgxGridToolbarActionsComponent, IgxGridToolbarAdvancedFilteringComponent, IgxGridToolbarComponent, IgxGridToolbarDirective, IgxGridToolbarExporterComponent, IgxGridToolbarHidingComponent, IgxGridToolbarPinningComponent, IgxGridToolbarTitleComponent, IgxGridTopLevelColumns, IgxGridTransactionPipe, IgxGridTransactionStatePipe, IgxGridValidationService, IgxGroupAreaDropDirective, IgxGroupByAreaDirective, IgxGroupByMetaPipe, IgxGroupByRow, IgxGroupByRowSelectorDirective, IgxGroupByRowTemplateDirective, IgxHasVisibleColumnsPipe, IgxHeadSelectorDirective, IgxHeaderCollapsedIndicatorDirective, IgxHeaderExpandedIndicatorDirective, IgxHeaderGroupStylePipe, IgxHierarchicalGridRow, IgxPdfExporterOptions, IgxPdfExporterService, IgxPdfTextDirective, IgxPivotAggregate, IgxPivotColumnResizingService, IgxPivotDateAggregate, IgxPivotDateDimension, IgxPivotGridColumnResizerComponent, IgxPivotNumericAggregate, IgxPivotResizeHandleDirective, IgxPivotTimeAggregate, IgxRowAddCrudState, IgxRowAddTextDirective, IgxRowCollapsedIndicatorDirective, IgxRowCrudState, IgxRowDirective, IgxRowDragDirective, IgxRowDragGhostDirective, IgxRowEditActionsDirective, IgxRowEditTabStopDirective, IgxRowEditTemplateDirective, IgxRowEditTextDirective, IgxRowExpandedIndicatorDirective, IgxRowSelectorDirective, IgxSortAscendingHeaderIconDirective, IgxSortDescendingHeaderIconDirective, IgxSortHeaderIconDirective, IgxStringReplacePipe, IgxSummaryDataPipe, IgxSummaryFormatterPipe, IgxSummaryRow, IgxSummaryRowComponent, IgxSummaryTemplateDirective, IgxToolbarToken, IgxTreeGridRow, NoopPivotDimensionsStrategy, PivotColumnDimensionsStrategy, PivotDimensionType, PivotRowDimensionsStrategy, PivotRowLayoutType, PivotSummaryPosition, PivotUtil, ROW_ADD_KEYS, ROW_COLLAPSE_KEYS, ROW_EXPAND_KEYS, RowEditPositionStrategy, RowPinningPosition, SUPPORTED_KEYS, SortingIndexPipe, WatchChanges, WatchColumnChanges, generateExpressionsList, getUUID, notifyChanges };
25240
+ export { ActiveElement, CharSeparatedValueData, ColumnDisplayOrder, CsvFileTypes, DEFAULT_OWNER, DEFAULT_PIVOT_KEYS, DimensionValuesFilteringStrategy, DropPosition, ExportHeaderType, ExportRecordType, ExportUtilities, ExpressionUI, FilterListItem, FilterMode, GRID_LEVEL_COL, GRID_PARENT, GRID_ROOT_SUMMARY, GridBaseAPIService, GridCellMergeMode, GridPagingMode, GridSelectionMode, GridSummaryPosition, HEADER_KEYS, HORIZONTAL_NAV_KEYS, IGX_GRID_BASE, IGX_GRID_COMMON_DIRECTIVES, IGX_GRID_SERVICE_BASE, IGX_GRID_VALIDATION_DIRECTIVES, INPUT_DEBOUNCE_TIME, INPUT_DEBOUNCE_TIME_DEFAULT, IgxAddRow, IgxAdvancedFilteringDialogComponent, IgxBaseExporter, IgxCSVTextDirective, IgxCell, IgxCellCrudState, IgxCellEditorTemplateDirective, IgxCellFooterTemplateDirective, IgxCellHeaderTemplateDirective, IgxCellTemplateDirective, IgxCellValidationErrorDirective, IgxCollapsibleIndicatorTemplateDirective, IgxColumnActionsBaseDirective, IgxColumnActionsComponent, IgxColumnComponent, IgxColumnEmailValidatorDirective, IgxColumnFormatterPipe, IgxColumnGroupComponent, IgxColumnHidingDirective, IgxColumnLayoutComponent, IgxColumnMaxLengthValidatorDirective, IgxColumnMaxValidatorDirective, IgxColumnMinLengthValidatorDirective, IgxColumnMinValidatorDirective, IgxColumnMovingDragDirective, IgxColumnMovingDropDirective, IgxColumnMovingService, IgxColumnPatternValidatorDirective, IgxColumnPinningDirective, IgxColumnRequiredValidatorDirective, IgxColumnResizerDirective, IgxColumnResizingService, IgxCsvExporterOptions, IgxCsvExporterService, IgxDateSummaryOperand, IgxDragIndicatorIconDirective, IgxEditRow, IgxExcelExporterOptions, IgxExcelExporterService, IgxExcelStyleClearFiltersComponent, IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleConditionalFilterComponent, IgxExcelStyleDateExpressionComponent, IgxExcelStyleFilterOperationsTemplateDirective, IgxExcelStyleHeaderComponent, IgxExcelStyleHeaderIconDirective, IgxExcelStyleHidingComponent, IgxExcelStyleLoadingValuesTemplateDirective, IgxExcelStyleMovingComponent, IgxExcelStylePinningComponent, IgxExcelStyleSearchComponent, IgxExcelStyleSelectingComponent, IgxExcelStyleSortingComponent, IgxExcelTextDirective, IgxExporterOptionsBase, IgxFilterCellTemplateDirective, IgxFilteringService, IgxGridActionButtonComponent, IgxGridActionsBaseDirective, IgxGridAddRowPipe, IgxGridBodyDirective, IgxGridCRUDService, IgxGridCell, IgxGridCellComponent, IgxGridCellImageAltPipe, IgxGridCellStyleClassesPipe, IgxGridCellStylesPipe, IgxGridColumnResizerComponent, IgxGridDataMapperPipe, IgxGridDetailTemplateDirective, IgxGridDragSelectDirective, IgxGridEditingActionsComponent, IgxGridEmptyTemplateDirective, IgxGridExcelStyleFilteringComponent, IgxGridFilterConditionPipe, IgxGridFilteringCellComponent, IgxGridFilteringRowComponent, IgxGridFooterComponent, IgxGridHeaderComponent, IgxGridHeaderGroupComponent, IgxGridHeaderRowComponent, IgxGridLoadingTemplateDirective, IgxGridMRLNavigationService, IgxGridNavigationService, IgxGridNotGroupedPipe, IgxGridPaginatorOptionsPipe, IgxGridPinningActionsComponent, IgxGridRow, IgxGridRowClassesPipe, IgxGridRowPinningPipe, IgxGridRowStylesPipe, IgxGridSelectionService, IgxGridStateBaseDirective, IgxGridStateDirective, IgxGridSummaryService, IgxGridToolbarActionsComponent, IgxGridToolbarAdvancedFilteringComponent, IgxGridToolbarComponent, IgxGridToolbarDirective, IgxGridToolbarExporterComponent, IgxGridToolbarHidingComponent, IgxGridToolbarPinningComponent, IgxGridToolbarTitleComponent, IgxGridTopLevelColumns, IgxGridTransaction, IgxGridTransactionPipe, IgxGridTransactionStatePipe, IgxGridValidationService, IgxGroupAreaDropDirective, IgxGroupByAreaDirective, IgxGroupByMetaPipe, IgxGroupByRow, IgxGroupByRowSelectorDirective, IgxGroupByRowTemplateDirective, IgxHasVisibleColumnsPipe, IgxHeadSelectorDirective, IgxHeaderCollapsedIndicatorDirective, IgxHeaderExpandedIndicatorDirective, IgxHeaderGroupStylePipe, IgxHierarchicalGridRow, IgxNumberSummaryOperand, IgxPdfExporterOptions, IgxPdfExporterService, IgxPdfTextDirective, IgxPivotAggregate, IgxPivotColumnResizingService, IgxPivotDateAggregate, IgxPivotDateDimension, IgxPivotGridColumnResizerComponent, IgxPivotNumericAggregate, IgxPivotResizeHandleDirective, IgxPivotTimeAggregate, IgxRowAddCrudState, IgxRowAddTextDirective, IgxRowCollapsedIndicatorDirective, IgxRowCrudState, IgxRowDirective, IgxRowDragDirective, IgxRowDragGhostDirective, IgxRowEditActionsDirective, IgxRowEditTabStopDirective, IgxRowEditTemplateDirective, IgxRowEditTextDirective, IgxRowExpandedIndicatorDirective, IgxRowSelectorDirective, IgxSortAscendingHeaderIconDirective, IgxSortDescendingHeaderIconDirective, IgxSortHeaderIconDirective, IgxStringReplacePipe, IgxSummaryDataPipe, IgxSummaryFormatterPipe, IgxSummaryOperand, IgxSummaryRow, IgxSummaryRowComponent, IgxSummaryTemplateDirective, IgxTimeSummaryOperand, IgxToolbarToken, IgxTreeGridRow, NoopPivotDimensionsStrategy, PivotColumnDimensionsStrategy, PivotDimensionType, PivotRowDimensionsStrategy, PivotRowLayoutType, PivotSummaryPosition, PivotUtil, ROW_ADD_KEYS, ROW_COLLAPSE_KEYS, ROW_EXPAND_KEYS, RowEditPositionStrategy, RowPinningPosition, SUPPORTED_KEYS, SortingIndexPipe, WatchChanges, WatchColumnChanges, generateExpressionsList, getUUID, notifyChanges };
24959
25241
  //# sourceMappingURL=igniteui-angular-grids-core.mjs.map