igniteui-angular 19.2.7 → 19.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/fesm2022/igniteui-angular.mjs +213 -174
  2. package/fesm2022/igniteui-angular.mjs.map +1 -1
  3. package/lib/core/styles/components/grid/_excel-filtering-theme.scss +1 -1
  4. package/lib/core/styles/components/input/_input-group-component.scss +2 -1
  5. package/lib/core/styles/components/input/_input-group-theme.scss +53 -5
  6. package/lib/core/styles/components/label/_label-theme.scss +4 -1
  7. package/lib/core/styles/components/radio/_radio-component.scss +12 -0
  8. package/lib/core/styles/components/radio/_radio-theme.scss +30 -8
  9. package/lib/core/utils.d.ts +4 -4
  10. package/lib/data-operations/filtering-strategy.d.ts +4 -5
  11. package/lib/directives/radio/radio-group.directive.d.ts +33 -15
  12. package/lib/directives/tooltip/tooltip.directive.d.ts +11 -2
  13. package/lib/grids/common/pipes.d.ts +1 -1
  14. package/lib/grids/common/strategy.d.ts +1 -1
  15. package/lib/grids/grid/grid-validation.service.d.ts +1 -1
  16. package/lib/grids/grid-public-cell.d.ts +2 -2
  17. package/lib/grids/summaries/grid-summary.service.d.ts +1 -1
  18. package/lib/grids/tree-grid/tree-grid.filtering.strategy.d.ts +4 -4
  19. package/package.json +1 -1
  20. package/styles/igniteui-angular-dark.css +1 -1
  21. package/styles/igniteui-angular.css +1 -1
  22. package/styles/igniteui-bootstrap-dark.css +1 -1
  23. package/styles/igniteui-bootstrap-light.css +1 -1
  24. package/styles/igniteui-dark-green.css +1 -1
  25. package/styles/igniteui-fluent-dark-excel.css +1 -1
  26. package/styles/igniteui-fluent-dark-word.css +1 -1
  27. package/styles/igniteui-fluent-dark.css +1 -1
  28. package/styles/igniteui-fluent-light-excel.css +1 -1
  29. package/styles/igniteui-fluent-light-word.css +1 -1
  30. package/styles/igniteui-fluent-light.css +1 -1
  31. package/styles/igniteui-indigo-dark.css +1 -1
  32. package/styles/igniteui-indigo-light.css +1 -1
  33. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  34. package/styles/maps/igniteui-angular.css.map +1 -1
  35. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  36. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  37. package/styles/maps/igniteui-dark-green.css.map +1 -1
  38. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  39. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  40. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  41. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  42. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  43. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  44. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  45. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -308,7 +308,7 @@
308
308
  }
309
309
 
310
310
  igx-icon {
311
- --component-size: #{if($variant == 'indigo', 2, var(--grid-size))};
311
+ --component-size: #{if($variant == 'indigo', 2, 1)};
312
312
 
313
313
  display: initial;
314
314
  width: var(--size) !important;
@@ -51,7 +51,7 @@
51
51
 
52
52
  @include e(input) {
53
53
  @extend %form-group-input !optional;
54
- @extend %chrome-autofill-fix !optional;
54
+ @extend %autofill-background-fix !optional;
55
55
  @extend %edge-clear-icon-fix !optional;
56
56
 
57
57
  &:hover {
@@ -421,6 +421,7 @@
421
421
 
422
422
  // Type border START
423
423
  @include m(border) {
424
+ @extend %form-group-display--border !optional;
424
425
  @extend %form-group-display--no-margin !optional;
425
426
 
426
427
  @include e(bundle) {
@@ -394,6 +394,25 @@
394
394
  }
395
395
  }
396
396
 
397
+ @if $variant == 'material' {
398
+ %form-group-display--border {
399
+ &:has(input:-webkit-autofill, input:autofill) {
400
+ %igx-input-group__notch--border {
401
+ border-block-start-color: transparent;
402
+ }
403
+
404
+ %form-group-label {
405
+ --label-position: #{sizable(18px, 22px, 26px)};
406
+
407
+ transform: translateY(calc(var(--label-position) * -1));
408
+ margin-top: 0;
409
+ overflow: hidden;
410
+ will-change: font-size, color, transform;
411
+ }
412
+ }
413
+ }
414
+ }
415
+
397
416
  %form-group-display--box {
398
417
  %form-group-border {
399
418
  margin-bottom: 0;
@@ -464,6 +483,20 @@
464
483
  --size: var(--input-icon) !important;
465
484
  }
466
485
  }
486
+
487
+ @if $variant == 'material' {
488
+ &:not(%form-group-display--border) {
489
+ &:has(input:-webkit-autofill, input:autofill) {
490
+ %form-group-label {
491
+ --floating-label-position: -73%;
492
+
493
+ @include type-style('caption');
494
+
495
+ transform: translateY(var(--floating-label-position));
496
+ }
497
+ }
498
+ }
499
+ }
467
500
  }
468
501
 
469
502
  %form-group-placeholder {
@@ -1234,13 +1267,20 @@
1234
1267
  }
1235
1268
  }
1236
1269
 
1237
- %chrome-autofill-fix {
1270
+ // This is a hack that removes the autofill background and it's essential,
1271
+ // otherwise the background is on top of the floating label in material theme.
1272
+ // The !important flag is because bootstrap theme(and potentially feature themes) is overriding the transition delay.
1273
+ %autofill-background-fix {
1238
1274
  &:-webkit-autofill,
1239
1275
  &:-webkit-autofill:hover,
1240
1276
  &:-webkit-autofill:focus,
1241
- &:-webkit-autofill:active {
1242
- -webkit-transition-delay: 99999s;
1243
- transition-delay: 99999s;
1277
+ &:-webkit-autofill:active,
1278
+ &:autofill,
1279
+ &:autofill:hover,
1280
+ &:autofill:focus,
1281
+ &:autofill:active, {
1282
+ -webkit-transition-delay: 99999s !important;
1283
+ transition-delay: 99999s !important;
1244
1284
  }
1245
1285
  }
1246
1286
 
@@ -2092,7 +2132,15 @@
2092
2132
  map.get($bootstrap-inline-padding, 'cosy'),
2093
2133
  map.get($bootstrap-inline-padding, 'comfortable')
2094
2134
  );
2095
- transition: box-shadow .15s ease-out, border .15s ease-out;
2135
+ }
2136
+
2137
+ // The :not selector is needed otherwise bootstrap will override the %autofill-background-fix
2138
+ %form-group-display--bootstrap {
2139
+ :not(:has(input:-webkit-autofill, input:autofill)) {
2140
+ %bootstrap-input {
2141
+ transition: box-shadow .15s ease-out, border .15s ease-out;
2142
+ }
2143
+ }
2096
2144
  }
2097
2145
 
2098
2146
  %bootstrap-input,
@@ -11,9 +11,11 @@
11
11
 
12
12
  /// @param {Map} $schema [$light-material-schema] - The schema used as basis for styling the component.
13
13
  /// @param {Map} $color [null] - The text color.
14
+ /// @param {Map} $disabled-color [null] - The disabled text color.
14
15
  @function label-theme(
15
16
  $schema: $light-material-schema,
16
- $color: null
17
+ $color: null,
18
+ $disabled-color: null,
17
19
  ) {
18
20
  $name: 'igx-label';
19
21
  $selector: '[igxLabel]';
@@ -31,6 +33,7 @@
31
33
  name: $name,
32
34
  selector: $selector,
33
35
  color: $color,
36
+ disabled-color: $disabled-color,
34
37
  theme: map.get($schema, '_meta', 'theme'),
35
38
  variant: map.get($schema, '_meta', 'theme'),
36
39
  ));
@@ -115,6 +115,10 @@
115
115
  @include e(label) {
116
116
  @extend %radio-label--disabled !optional;
117
117
  }
118
+
119
+ @include e(label, $m: before) {
120
+ @extend %radio-label--disabled !optional;
121
+ }
118
122
  }
119
123
 
120
124
  @include m(invalid) {
@@ -217,5 +221,13 @@
217
221
  @include m(vertical) {
218
222
  @extend %radio-group-display--vertical !optional;
219
223
  }
224
+
225
+ @include m(before) {
226
+ @extend %radio-group-display--before !optional;
227
+ }
228
+
229
+ @include m(disabled) {
230
+ @extend %radio-group-display--disabled !optional;
231
+ }
220
232
  }
221
233
  }
@@ -597,18 +597,40 @@
597
597
  }
598
598
 
599
599
  %radio-group-display {
600
- display: block;
601
- %radio-display:not(:last-of-type) {
602
- margin-inline-end: $horizontal-group-margin;
600
+ display: grid;
601
+ column-gap: $horizontal-group-margin;
602
+ align-items: start;
603
+ width: max-content;
604
+ }
605
+
606
+ %radio-group-display:not(%radio-group-display--vertical) {
607
+ [igxLabel] {
608
+ margin-block-end: rem(16px);
609
+ }
610
+
611
+ igx-radio {
612
+ grid-row: 2;
603
613
  }
604
614
  }
605
615
 
606
616
  %radio-group-display--vertical {
607
- display: flex;
608
- flex-flow: column;
609
- %radio-display:not(:last-of-type) {
610
- margin-inline-end: 0;
611
- margin-block-end: $vertical-group-margin;
617
+ row-gap: $vertical-group-margin;
618
+
619
+ [igxLabel] {
620
+ margin-block-end: if($variant == 'material', rem(16px), rem(8px));
621
+ }
622
+
623
+ &%radio-group-display--before {
624
+ igx-radio,
625
+ [igxLabel] {
626
+ justify-self: flex-end;
627
+ }
628
+ }
629
+ }
630
+
631
+ %radio-group-display--disabled {
632
+ [igxLabel] {
633
+ color: var-get($theme, 'disabled-color');
612
634
  }
613
635
  }
614
636
  }
@@ -1,6 +1,6 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
- import { IgxTheme } from '../services/theme/theme.token';
3
+ import type { IgxTheme } from '../services/theme/theme.token';
4
4
  import * as i0 from "@angular/core";
5
5
  /** @hidden @internal */
6
6
  export declare const ELEMENTS_TOKEN: InjectionToken<boolean>;
@@ -22,7 +22,7 @@ export declare const getResizeObserver: () => {
22
22
  /**
23
23
  * @hidden
24
24
  */
25
- export declare const cloneArray: (array: any[], deep?: boolean) => any[];
25
+ export declare function cloneArray<T>(array: T[], deep?: boolean): T[];
26
26
  /**
27
27
  * Doesn't clone leaf items
28
28
  *
@@ -243,15 +243,15 @@ export declare const resizeObservable: (target: HTMLElement) => Observable<Resiz
243
243
  * Compares two maps.
244
244
  */
245
245
  export declare const compareMaps: (map1: Map<any, any>, map2: Map<any, any>) => boolean;
246
+ export declare function columnFieldPath(path?: string): string[];
246
247
  /**
247
- *
248
248
  * Given a property access path in the format `x.y.z` resolves and returns
249
249
  * the value of the `z` property in the passed object.
250
250
  *
251
251
  * @hidden
252
252
  * @internal
253
253
  */
254
- export declare const resolveNestedPath: (obj: any, path: string) => any;
254
+ export declare function resolveNestedPath<T extends object, U>(obj: unknown, pathParts: string[], defaultValue?: U): T | U | undefined;
255
255
  /**
256
256
  *
257
257
  * Given a property access path in the format `x.y.z` and a value
@@ -1,7 +1,7 @@
1
- import { IFilteringExpression } from './filtering-expression.interface';
2
- import { IFilteringExpressionsTree } from './filtering-expressions-tree';
3
- import { ColumnType, GridType } from '../grids/common/grid.interface';
4
- import { IFilteringState } from './filtering-state.interface';
1
+ import { type IFilteringExpression } from './filtering-expression.interface';
2
+ import { type IFilteringExpressionsTree } from './filtering-expressions-tree';
3
+ import type { ColumnType, GridType } from '../grids/common/grid.interface';
4
+ import type { IFilteringState } from './filtering-state.interface';
5
5
  export declare class FilterUtil {
6
6
  static filter<T>(data: T[], state: IFilteringState, grid?: GridType): T[];
7
7
  }
@@ -33,7 +33,6 @@ export declare class NoopFilteringStrategy extends BaseFilteringStrategy {
33
33
  }
34
34
  export declare class FilteringStrategy extends BaseFilteringStrategy {
35
35
  private static _instance;
36
- constructor();
37
36
  static instance(): FilteringStrategy;
38
37
  filter<T>(data: T[], expressionsTree: IFilteringExpressionsTree, advancedExpressionsTree: IFilteringExpressionsTree, grid: GridType): T[];
39
38
  protected getFieldValue(rec: any, fieldName: string, isDate?: boolean, isTime?: boolean, grid?: GridType): any;
@@ -1,4 +1,4 @@
1
- import { AfterContentInit, AfterViewInit, ChangeDetectorRef, DoCheck, EventEmitter, OnDestroy, QueryList } from '@angular/core';
1
+ import { ChangeDetectorRef, DoCheck, EventEmitter, OnDestroy, QueryList } from '@angular/core';
2
2
  import { ControlValueAccessor, NgControl } from '@angular/forms';
3
3
  import { IgxRadioComponent } from '../../radio/radio.component';
4
4
  import { IgxDirectionality } from '../../services/direction/directionality';
@@ -35,10 +35,12 @@ export type RadioGroupAlignment = typeof RadioGroupAlignment[keyof typeof RadioG
35
35
  * </igx-radio-group>
36
36
  * ```
37
37
  */
38
- export declare class IgxRadioGroupDirective implements AfterContentInit, AfterViewInit, ControlValueAccessor, OnDestroy, DoCheck {
38
+ export declare class IgxRadioGroupDirective implements ControlValueAccessor, OnDestroy, DoCheck {
39
39
  ngControl: NgControl;
40
40
  private _directionality;
41
41
  private cdr;
42
+ private _radioButtons;
43
+ private _radioButtonsList;
42
44
  /**
43
45
  * Returns reference to the child radio buttons.
44
46
  *
@@ -47,7 +49,7 @@ export declare class IgxRadioGroupDirective implements AfterContentInit, AfterVi
47
49
  * let radioButtons = this.radioGroup.radioButtons;
48
50
  * ```
49
51
  */
50
- radioButtons: QueryList<IgxRadioComponent>;
52
+ get radioButtons(): QueryList<IgxRadioComponent>;
51
53
  /**
52
54
  * Sets/gets the `value` attribute.
53
55
  *
@@ -134,6 +136,22 @@ export declare class IgxRadioGroupDirective implements AfterContentInit, AfterVi
134
136
  * ```
135
137
  */
136
138
  private vertical;
139
+ /**
140
+ * A css class applied to the component if any of the
141
+ * child radio buttons labelPosition is set to `before`.
142
+ *
143
+ * @hidden
144
+ * @internal
145
+ */
146
+ protected get labelBefore(): boolean;
147
+ /**
148
+ * A css class applied to the component if all
149
+ * child radio buttons are disabled.
150
+ *
151
+ * @hidden
152
+ * @internal
153
+ */
154
+ protected get disabled(): boolean;
137
155
  protected handleClick(event: MouseEvent): void;
138
156
  protected handleKeyDown(event: KeyboardEvent): void;
139
157
  /**
@@ -204,16 +222,6 @@ export declare class IgxRadioGroupDirective implements AfterContentInit, AfterVi
204
222
  * @internal
205
223
  */
206
224
  private queryChange$;
207
- /**
208
- * @hidden
209
- * @internal
210
- */
211
- ngAfterContentInit(): void;
212
- /**
213
- * @hidden
214
- * @internal
215
- */
216
- ngAfterViewInit(): void;
217
225
  /**
218
226
  * @hidden
219
227
  * @internal
@@ -263,7 +271,17 @@ export declare class IgxRadioGroupDirective implements AfterContentInit, AfterVi
263
271
  * @hidden
264
272
  * @internal
265
273
  */
266
- private _initRadioButtons;
274
+ private initialize;
275
+ /**
276
+ * @hidden
277
+ * @internal
278
+ */
279
+ private setRadioButtons;
280
+ /**
281
+ * @hidden
282
+ * @internal
283
+ */
284
+ private _setRadioButtonEvents;
267
285
  /**
268
286
  * @hidden
269
287
  * @internal
@@ -290,7 +308,7 @@ export declare class IgxRadioGroupDirective implements AfterContentInit, AfterVi
290
308
  */
291
309
  private _setRadioButtonsInvalid;
292
310
  static ɵfac: i0.ɵɵFactoryDeclaration<IgxRadioGroupDirective, [{ optional: true; self: true; }, null, null]>;
293
- static ɵdir: i0.ɵɵDirectiveDeclaration<IgxRadioGroupDirective, "igx-radio-group, [igxRadioGroup]", ["igxRadioGroup"], { "value": { "alias": "value"; "required": false; }; "name": { "alias": "name"; "required": false; }; "required": { "alias": "required"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "alignment": { "alias": "alignment"; "required": false; }; }, { "change": "change"; }, ["radioButtons"], never, true, never>;
311
+ static ɵdir: i0.ɵɵDirectiveDeclaration<IgxRadioGroupDirective, "igx-radio-group, [igxRadioGroup]", ["igxRadioGroup"], { "value": { "alias": "value"; "required": false; }; "name": { "alias": "name"; "required": false; }; "required": { "alias": "required"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "alignment": { "alias": "alignment"; "required": false; }; }, { "change": "change"; }, ["_radioButtons"], never, true, never>;
294
312
  static ngAcceptInputType_required: unknown;
295
313
  static ngAcceptInputType_invalid: unknown;
296
314
  }
@@ -1,8 +1,9 @@
1
- import { ElementRef, ChangeDetectorRef } from '@angular/core';
1
+ import { ElementRef, ChangeDetectorRef, OnDestroy } from '@angular/core';
2
2
  import { IgxOverlayService } from '../../services/overlay/overlay';
3
3
  import { OverlaySettings } from '../../services/public_api';
4
4
  import { IgxNavigationService } from '../../core/navigation';
5
5
  import { IgxToggleDirective } from '../toggle/toggle.directive';
6
+ import { IgxTooltipTargetDirective } from './tooltip-target.directive';
6
7
  import * as i0 from "@angular/core";
7
8
  /**
8
9
  * **Ignite UI for Angular Tooltip** -
@@ -18,7 +19,7 @@ import * as i0 from "@angular/core";
18
19
  * <span #tooltipRef="tooltip" igxTooltip>Hello there, I am a tooltip!</span>
19
20
  * ```
20
21
  */
21
- export declare class IgxTooltipDirective extends IgxToggleDirective {
22
+ export declare class IgxTooltipDirective extends IgxToggleDirective implements OnDestroy {
22
23
  /**
23
24
  * @hidden
24
25
  */
@@ -74,8 +75,15 @@ export declare class IgxTooltipDirective extends IgxToggleDirective {
74
75
  * Returns whether open time out has started
75
76
  */
76
77
  toBeShown: boolean;
78
+ /**
79
+ * @hidden
80
+ */
81
+ tooltipTarget: IgxTooltipTargetDirective;
82
+ private _destroy$;
77
83
  /** @hidden */
78
84
  constructor(elementRef: ElementRef, cdr: ChangeDetectorRef, overlayService: IgxOverlayService, navigationService: IgxNavigationService);
85
+ /** @hidden */
86
+ ngOnDestroy(): void;
79
87
  /**
80
88
  * If there is open animation in progress this method will finish is.
81
89
  * If there is no open animation in progress this method will open the toggle with no animation.
@@ -90,6 +98,7 @@ export declare class IgxTooltipDirective extends IgxToggleDirective {
90
98
  * @param overlaySettings settings to use for closing the toggle
91
99
  */
92
100
  protected forceClose(overlaySettings?: OverlaySettings): void;
101
+ private onDocumentTouchStart;
93
102
  static ɵfac: i0.ɵɵFactoryDeclaration<IgxTooltipDirective, [null, null, null, { optional: true; }]>;
94
103
  static ɵdir: i0.ɵɵDirectiveDeclaration<IgxTooltipDirective, "[igxTooltip]", ["tooltip"], { "context": { "alias": "context"; "required": false; }; "id": { "alias": "id"; "required": false; }; }, {}, never, never, true, never>;
95
104
  }
@@ -132,7 +132,7 @@ export declare class IgxStringReplacePipe implements PipeTransform {
132
132
  static ɵpipe: i0.ɵɵPipeDeclaration<IgxStringReplacePipe, "igxStringReplace", true>;
133
133
  }
134
134
  export declare class IgxGridTransactionStatePipe implements PipeTransform {
135
- transform(row_id: any, field: string, rowEditable: boolean, transactions: any, _: any, __: any, ___: any): any;
135
+ transform(row_id: any, field: string, rowEditable: boolean, transactions: any, _: any, __: any, ___: any): unknown;
136
136
  static ɵfac: i0.ɵɵFactoryDeclaration<IgxGridTransactionStatePipe, never>;
137
137
  static ɵpipe: i0.ɵɵPipeDeclaration<IgxGridTransactionStatePipe, "transactionState", true>;
138
138
  }
@@ -58,7 +58,7 @@ export declare class IgxSorting implements IGridSortingStrategy {
58
58
  * Returns the value of the specified field in the data object.
59
59
  * @internal
60
60
  */
61
- protected getFieldValue<T>(obj: T, key: string, isDate?: boolean, isTime?: boolean): any;
61
+ protected getFieldValue<T>(obj: T, key: string, isDate?: boolean, isTime?: boolean): unknown;
62
62
  /**
63
63
  * Groups the records in the provided data array based on the given grouping expression.
64
64
  * `groupingComparer`: (Optional) A custom grouping comparator to determine the members of the group.
@@ -1,5 +1,5 @@
1
1
  import { FormGroup } from '@angular/forms';
2
- import { GridType, IRecordValidationState } from '../common/grid.interface';
2
+ import type { GridType, IRecordValidationState } from '../common/grid.interface';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class IgxGridValidationService {
5
5
  /**
@@ -1,5 +1,5 @@
1
- import { CellType, ColumnType, GridType, IGridValidationState, RowType } from './common/grid.interface';
2
- import { ISelectionNode } from './common/types';
1
+ import type { CellType, ColumnType, GridType, IGridValidationState, RowType } from './common/grid.interface';
2
+ import type { ISelectionNode } from './common/types';
3
3
  export declare class IgxGridCell implements CellType {
4
4
  /**
5
5
  * Returns the grid containing the cell.
@@ -1,4 +1,4 @@
1
- import { GridType } from '../common/grid.interface';
1
+ import type { GridType } from '../common/grid.interface';
2
2
  import * as i0 from "@angular/core";
3
3
  /** @hidden */
4
4
  export declare class IgxGridSummaryService {
@@ -1,7 +1,7 @@
1
- import { IFilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
2
- import { BaseFilteringStrategy, IgxFilterItem } from '../../data-operations/filtering-strategy';
3
- import { ColumnType, GridType } from '../common/grid.interface';
4
- import { ITreeGridRecord } from './tree-grid.interfaces';
1
+ import { type IFilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
2
+ import { BaseFilteringStrategy, type IgxFilterItem } from '../../data-operations/filtering-strategy';
3
+ import type { ColumnType, GridType } from '../common/grid.interface';
4
+ import type { ITreeGridRecord } from './tree-grid.interfaces';
5
5
  export declare class TreeGridFilteringStrategy extends BaseFilteringStrategy {
6
6
  hierarchicalFilterFields?: string[];
7
7
  constructor(hierarchicalFilterFields?: string[]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "igniteui-angular",
3
- "version": "19.2.7",
3
+ "version": "19.2.9",
4
4
  "description": "Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps",
5
5
  "author": "Infragistics",
6
6
  "license": "SEE LICENSE IN LICENSE",