igniteui-angular 20.1.8 → 20.1.10

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 (56) hide show
  1. package/fesm2022/igniteui-angular.mjs +49 -27
  2. package/fesm2022/igniteui-angular.mjs.map +1 -1
  3. package/index.d.ts +7 -3
  4. package/lib/core/styles/components/badge/_badge-theme.scss +1 -1
  5. package/lib/core/styles/components/bottom-nav/_bottom-nav-theme.scss +2 -2
  6. package/lib/core/styles/components/button/_button-theme.scss +54 -23
  7. package/lib/core/styles/components/button-group/_button-group-theme.scss +4 -3
  8. package/lib/core/styles/components/card/_card-theme.scss +2 -2
  9. package/lib/core/styles/components/carousel/_carousel-theme.scss +2 -2
  10. package/lib/core/styles/components/chip/_chip-theme.scss +1 -1
  11. package/lib/core/styles/components/combo/_combo-theme.scss +2 -2
  12. package/lib/core/styles/components/date-range-picker/_date-range-picker-theme.scss +21 -0
  13. package/lib/core/styles/components/dialog/_dialog-theme.scss +1 -1
  14. package/lib/core/styles/components/drop-down/_drop-down-theme.scss +1 -1
  15. package/lib/core/styles/components/grid/_grid-theme.scss +29 -6
  16. package/lib/core/styles/components/input/_input-group-component.scss +0 -6
  17. package/lib/core/styles/components/input/_input-group-theme.scss +43 -48
  18. package/lib/core/styles/components/list/_list-theme.scss +2 -1
  19. package/lib/core/styles/components/navbar/_navbar-theme.scss +1 -1
  20. package/lib/core/styles/components/navdrawer/_navdrawer-theme.scss +1 -1
  21. package/lib/core/styles/components/radio/_radio-component.scss +4 -0
  22. package/lib/core/styles/components/radio/_radio-theme.scss +19 -23
  23. package/lib/core/styles/components/snackbar/_snackbar-theme.scss +1 -1
  24. package/lib/core/styles/components/stepper/_stepper-theme.scss +31 -31
  25. package/lib/core/styles/components/switch/_switch-theme.scss +10 -15
  26. package/lib/core/styles/components/tabs/_tabs-theme.scss +36 -28
  27. package/lib/core/styles/components/time-picker/_time-picker-theme.scss +2 -2
  28. package/lib/core/styles/components/toast/_toast-theme.scss +1 -1
  29. package/lib/core/styles/components/tooltip/_tooltip-theme.scss +1 -1
  30. package/package.json +2 -2
  31. package/styles/igniteui-angular-dark.css +1 -1
  32. package/styles/igniteui-angular.css +1 -1
  33. package/styles/igniteui-bootstrap-dark.css +1 -1
  34. package/styles/igniteui-bootstrap-light.css +1 -1
  35. package/styles/igniteui-dark-green.css +1 -1
  36. package/styles/igniteui-fluent-dark-excel.css +1 -1
  37. package/styles/igniteui-fluent-dark-word.css +1 -1
  38. package/styles/igniteui-fluent-dark.css +1 -1
  39. package/styles/igniteui-fluent-light-excel.css +1 -1
  40. package/styles/igniteui-fluent-light-word.css +1 -1
  41. package/styles/igniteui-fluent-light.css +1 -1
  42. package/styles/igniteui-indigo-dark.css +1 -1
  43. package/styles/igniteui-indigo-light.css +1 -1
  44. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  45. package/styles/maps/igniteui-angular.css.map +1 -1
  46. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  47. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  48. package/styles/maps/igniteui-dark-green.css.map +1 -1
  49. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  50. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  51. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  52. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  53. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  54. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  55. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  56. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -8056,7 +8056,13 @@ class IgxOverlayService {
8056
8056
  }
8057
8057
  }
8058
8058
  this.updateSize(info);
8059
+ const openAnimation = info.settings.positionStrategy.settings.openAnimation;
8060
+ const closeAnimation = info.settings.positionStrategy.settings.closeAnimation;
8059
8061
  info.settings.positionStrategy.position(info.elementRef.nativeElement.parentElement, { width: info.initialSize.width, height: info.initialSize.height }, this._document, true, info.settings.target);
8062
+ if (openAnimation !== info.settings.positionStrategy.settings.openAnimation ||
8063
+ closeAnimation !== info.settings.positionStrategy.settings.closeAnimation) {
8064
+ this.buildAnimationPlayers(info);
8065
+ }
8060
8066
  this.addModalClasses(info);
8061
8067
  if (info.settings.positionStrategy.settings.openAnimation) {
8062
8068
  // TODO: should we build players again. This was already done in attach!!!
@@ -20861,6 +20867,9 @@ class IgxToggleDirective {
20861
20867
  get hiddenClass() {
20862
20868
  return this.collapsed;
20863
20869
  }
20870
+ /**
20871
+ * @hidden
20872
+ */
20864
20873
  get hiddenWebkitClass() {
20865
20874
  const isSafari = this.platform?.isSafari;
20866
20875
  const browserVersion = this.platform?.browserVersion;
@@ -21000,6 +21009,14 @@ class IgxToggleDirective {
21000
21009
  return;
21001
21010
  }
21002
21011
  this._collapsed = false;
21012
+ // TODO: this is a workaround for the issue introduced by Angular's with Ivy renderer.
21013
+ // When calling detectChanges(), Angular marks the element for check, but does not update the classes
21014
+ // immediately, which causes the overlay to calculate incorrect dimensions of target element.
21015
+ // Overlay show should be called in the next tick to ensure the classes are updated and target element is measured correctly.
21016
+ // Note: across the codebase, each host binding should be checked and similar fix applied if needed!!!
21017
+ this.elementRef.nativeElement.className = this.elementRef.nativeElement.className.replace('igx-toggle--hidden', 'igx-toggle');
21018
+ this.elementRef.nativeElement.className = this.elementRef.nativeElement.className.replace('igx-toggle--hidden-webkit', 'igx-toggle');
21019
+ this.elementRef.nativeElement.removeAttribute('aria-hidden');
21003
21020
  this.cdr.detectChanges();
21004
21021
  if (!info) {
21005
21022
  this.unsubscribe();
@@ -21150,14 +21167,20 @@ class IgxToggleDirective {
21150
21167
  }
21151
21168
  }
21152
21169
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxToggleDirective, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: IgxOverlayService }, { token: IgxNavigationService, optional: true }, { token: PlatformUtil, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
21153
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.6", type: IgxToggleDirective, isStandalone: true, selector: "[igxToggle]", inputs: { id: "id" }, outputs: { opened: "opened", opening: "opening", closed: "closed", closing: "closing", appended: "appended" }, host: { properties: { "class.igx-toggle--hidden": "this.hiddenClass", "attr.aria-hidden": "this.hiddenClass", "class.igx-toggle--hidden-webkit": "this.hiddenWebkitClass", "class.igx-toggle": "this.defaultClass" } }, exportAs: ["toggle"], ngImport: i0 }); }
21170
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.6", type: IgxToggleDirective, isStandalone: true, selector: "[igxToggle]", inputs: { id: "id" }, outputs: { opened: "opened", opening: "opening", closed: "closed", closing: "closing", appended: "appended" }, host: { properties: { "class.igx-toggle--hidden": "hiddenClass", "attr.aria-hidden": "hiddenClass", "class.igx-toggle--hidden-webkit": "hiddenWebkitClass", "class.igx-toggle": "defaultClass" } }, exportAs: ["toggle"], ngImport: i0 }); }
21154
21171
  }
21155
21172
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxToggleDirective, decorators: [{
21156
21173
  type: Directive,
21157
21174
  args: [{
21158
21175
  exportAs: 'toggle',
21159
21176
  selector: '[igxToggle]',
21160
- standalone: true
21177
+ standalone: true,
21178
+ host: {
21179
+ '[class.igx-toggle--hidden]': 'hiddenClass',
21180
+ '[attr.aria-hidden]': 'hiddenClass',
21181
+ '[class.igx-toggle--hidden-webkit]': 'hiddenWebkitClass',
21182
+ '[class.igx-toggle]': 'defaultClass'
21183
+ }
21161
21184
  }]
21162
21185
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: IgxOverlayService, decorators: [{
21163
21186
  type: Inject,
@@ -21178,18 +21201,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
21178
21201
  type: Output
21179
21202
  }], id: [{
21180
21203
  type: Input
21181
- }], hiddenClass: [{
21182
- type: HostBinding,
21183
- args: ['class.igx-toggle--hidden']
21184
- }, {
21185
- type: HostBinding,
21186
- args: ['attr.aria-hidden']
21187
- }], hiddenWebkitClass: [{
21188
- type: HostBinding,
21189
- args: ['class.igx-toggle--hidden-webkit']
21190
- }], defaultClass: [{
21191
- type: HostBinding,
21192
- args: ['class.igx-toggle']
21193
21204
  }] } });
21194
21205
  class IgxToggleActionDirective {
21195
21206
  /**
@@ -26413,8 +26424,11 @@ class IgxCellCrudState {
26413
26424
  return args;
26414
26425
  }
26415
26426
  /** Clears cell editing state */
26416
- endCellEdit() {
26427
+ endCellEdit(restoreFocus = false) {
26417
26428
  this.cell = null;
26429
+ if (restoreFocus) {
26430
+ this.grid.tbody.nativeElement.focus();
26431
+ }
26418
26432
  }
26419
26433
  /** Returns whether the targeted cell is in edit mode */
26420
26434
  targetInEdit(rowIndex, columnIndex) {
@@ -44548,7 +44562,7 @@ class IgxGridCell {
44548
44562
  this.grid.crudService.enterEditMode(this);
44549
44563
  }
44550
44564
  else {
44551
- this.grid.crudService.endCellEdit();
44565
+ this.grid.crudService.endCellEdit(true);
44552
44566
  }
44553
44567
  this.grid.notifyChanges();
44554
44568
  }
@@ -76255,7 +76269,7 @@ class IgxGridComponent extends IgxGridBaseDirective {
76255
76269
  if (!this._init) {
76256
76270
  this.validation.updateAll(this._data);
76257
76271
  }
76258
- if (this.autoGenerate && this._data.length > 0 && this.shouldRecreateColumns(oldData, this._data)) {
76272
+ if (this.autoGenerate && this._data.length > 0 && this.shouldRecreateColumns(oldData, this._data) && this.gridAPI.grid) {
76259
76273
  this.setupColumns();
76260
76274
  }
76261
76275
  this.cdr.markForCheck();
@@ -79732,11 +79746,11 @@ class IgxPivotRowComponent extends IgxRowDirective {
79732
79746
  };
79733
79747
  }
79734
79748
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxPivotRowComponent, deps: [{ token: IGX_GRID_BASE }, { token: IgxGridSelectionService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
79735
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.6", type: IgxPivotRowComponent, isStandalone: true, selector: "igx-pivot-row", inputs: { selected: "selected", data: "data" }, host: { properties: { "attr.aria-selected": "this.selected" } }, providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxPivotRowComponent) }], usesInheritance: true, ngImport: i0, template: "<ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\"\n [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForSizePropName]='\"calcPixelWidth\"'\n [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth'\n [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n <igx-grid-cell #cell class=\"igx-grid__td igx-grid__td--fw\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [class.igx-grid__td--bool]=\"col.dataType === 'boolean'\"\n [ngClass]=\"this.getCellClass(col) | igxPivotCellStyleClasses:data[col.field]:data:getColumnData(col):viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:pivotAggregationData[col.field]:pivotAggregationData:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\" [column]=\"col\"\n [formatter]=\"col.formatter\" [intRow]=\"this\" [active]=\"isCellActive(col.visibleIndex)\"\n [rowData]=\"data\" [columnData]='getColumnData(col)'\n [style.min-width]=\"col.resolvedWidth\" [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\" [width]=\"col.getCellWidth()\" [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"pivotAggregationData[col.field] | dataMapper:col.field:grid.pipeTrigger:pivotAggregationData[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\" [lastSearchInfo]=\"grid.lastSearchInfo\"\n [cellSelectionMode]=\"grid.cellSelection\" [displayPinnedChip]=\"shouldDisplayPinnedChip(col)\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-cell>\n</ng-template>\n\n<ng-template #rowSelectorBaseTemplate>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox [tabindex]=\"-1\" [readonly]=\"true\" [checked]=\"selected\" [disableRipple]=\"true\" [disabled]=\"deleted\"\n [disableTransitions]=\"grid.disableTransitions\" [aria-label]=\"rowCheckboxAriaLabel\">\n </igx-checkbox>\n </div>\n</ng-template>\n\n", dependencies: [{ kind: "directive", type: IgxGridForOfDirective, selector: "[igxGridFor][igxGridForOf]", inputs: ["igxGridForOf", "igxGridForOfUniqueSizeCache", "igxGridForOfVariableSizes"], outputs: ["dataChanging"] }, { kind: "component", type: IgxGridCellComponent, selector: "igx-grid-cell", inputs: ["column", "isPlaceholder", "isMerged", "intRow", "row", "rowData", "columnData", "cellTemplate", "cellValidationErrorTemplate", "pinnedIndicator", "value", "formatter", "visibleColumnIndex", "cellSelectionMode", "lastSearchInfo", "lastPinned", "firstPinned", "editMode", "width", "active", "displayPinnedChip"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["indeterminate", "checked", "disabled", "invalid", "readonly", "disableTransitions"] }, { kind: "pipe", type: IgxGridNotGroupedPipe, name: "igxNotGrouped" }, { kind: "pipe", type: IgxGridCellStylesPipe, name: "igxCellStyles" }, { kind: "pipe", type: IgxGridDataMapperPipe, name: "dataMapper" }, { kind: "pipe", type: IgxGridTransactionStatePipe, name: "transactionState" }, { kind: "pipe", type: IgxPivotGridCellStyleClassesPipe, name: "igxPivotCellStyleClasses" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
79749
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.6", type: IgxPivotRowComponent, isStandalone: true, selector: "igx-pivot-row", inputs: { selected: "selected", data: "data" }, host: { properties: { "attr.aria-selected": "this.selected" } }, providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxPivotRowComponent) }], usesInheritance: true, ngImport: i0, template: "<ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\"\n [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForSizePropName]='\"calcPixelWidth\"'\n [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth'\n [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n <igx-grid-cell #cell class=\"igx-grid__td igx-grid__td--fw\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [class.igx-grid__td--bool]=\"col.dataType === 'boolean'\"\n [ngClass]=\"this.getCellClass(col) | igxPivotCellStyleClasses:data[col.field]:data:getColumnData(col):viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:pivotAggregationData[col.field]:pivotAggregationData:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\" [column]=\"col\"\n [formatter]=\"col.formatter\" [intRow]=\"this\" [active]=\"isCellActive(col.visibleIndex)\"\n [rowData]=\"data\" [columnData]='getColumnData(col)'\n [style.min-width]=\"col.resolvedWidth\" [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\" [width]=\"col.getCellWidth()\" [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"pivotAggregationData[col.field]\"\n [cellTemplate]=\"col.bodyTemplate\" [lastSearchInfo]=\"grid.lastSearchInfo\"\n [cellSelectionMode]=\"grid.cellSelection\" [displayPinnedChip]=\"shouldDisplayPinnedChip(col)\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-cell>\n</ng-template>\n\n<ng-template #rowSelectorBaseTemplate>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox [tabindex]=\"-1\" [readonly]=\"true\" [checked]=\"selected\" [disableRipple]=\"true\" [disabled]=\"deleted\"\n [disableTransitions]=\"grid.disableTransitions\" [aria-label]=\"rowCheckboxAriaLabel\">\n </igx-checkbox>\n </div>\n</ng-template>\n\n", dependencies: [{ kind: "directive", type: IgxGridForOfDirective, selector: "[igxGridFor][igxGridForOf]", inputs: ["igxGridForOf", "igxGridForOfUniqueSizeCache", "igxGridForOfVariableSizes"], outputs: ["dataChanging"] }, { kind: "component", type: IgxGridCellComponent, selector: "igx-grid-cell", inputs: ["column", "isPlaceholder", "isMerged", "intRow", "row", "rowData", "columnData", "cellTemplate", "cellValidationErrorTemplate", "pinnedIndicator", "value", "formatter", "visibleColumnIndex", "cellSelectionMode", "lastSearchInfo", "lastPinned", "firstPinned", "editMode", "width", "active", "displayPinnedChip"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["indeterminate", "checked", "disabled", "invalid", "readonly", "disableTransitions"] }, { kind: "pipe", type: IgxGridNotGroupedPipe, name: "igxNotGrouped" }, { kind: "pipe", type: IgxGridCellStylesPipe, name: "igxCellStyles" }, { kind: "pipe", type: IgxGridTransactionStatePipe, name: "transactionState" }, { kind: "pipe", type: IgxPivotGridCellStyleClassesPipe, name: "igxPivotCellStyleClasses" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
79736
79750
  }
79737
79751
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxPivotRowComponent, decorators: [{
79738
79752
  type: Component,
79739
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-pivot-row', providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxPivotRowComponent) }], imports: [IgxGridForOfDirective, IgxGridCellComponent, NgClass, NgStyle, IgxCheckboxComponent, IgxGridNotGroupedPipe, IgxGridCellStylesPipe, IgxGridDataMapperPipe, IgxGridTransactionStatePipe, IgxPivotGridCellStyleClassesPipe], template: "<ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\"\n [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForSizePropName]='\"calcPixelWidth\"'\n [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth'\n [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n <igx-grid-cell #cell class=\"igx-grid__td igx-grid__td--fw\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [class.igx-grid__td--bool]=\"col.dataType === 'boolean'\"\n [ngClass]=\"this.getCellClass(col) | igxPivotCellStyleClasses:data[col.field]:data:getColumnData(col):viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:pivotAggregationData[col.field]:pivotAggregationData:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\" [column]=\"col\"\n [formatter]=\"col.formatter\" [intRow]=\"this\" [active]=\"isCellActive(col.visibleIndex)\"\n [rowData]=\"data\" [columnData]='getColumnData(col)'\n [style.min-width]=\"col.resolvedWidth\" [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\" [width]=\"col.getCellWidth()\" [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"pivotAggregationData[col.field] | dataMapper:col.field:grid.pipeTrigger:pivotAggregationData[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\" [lastSearchInfo]=\"grid.lastSearchInfo\"\n [cellSelectionMode]=\"grid.cellSelection\" [displayPinnedChip]=\"shouldDisplayPinnedChip(col)\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-cell>\n</ng-template>\n\n<ng-template #rowSelectorBaseTemplate>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox [tabindex]=\"-1\" [readonly]=\"true\" [checked]=\"selected\" [disableRipple]=\"true\" [disabled]=\"deleted\"\n [disableTransitions]=\"grid.disableTransitions\" [aria-label]=\"rowCheckboxAriaLabel\">\n </igx-checkbox>\n </div>\n</ng-template>\n\n" }]
79753
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-pivot-row', providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxPivotRowComponent) }], imports: [IgxGridForOfDirective, IgxGridCellComponent, NgClass, NgStyle, IgxCheckboxComponent, IgxGridNotGroupedPipe, IgxGridCellStylesPipe, IgxGridTransactionStatePipe, IgxPivotGridCellStyleClassesPipe], template: "<ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\"\n [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForSizePropName]='\"calcPixelWidth\"'\n [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth'\n [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n <igx-grid-cell #cell class=\"igx-grid__td igx-grid__td--fw\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [class.igx-grid__td--bool]=\"col.dataType === 'boolean'\"\n [ngClass]=\"this.getCellClass(col) | igxPivotCellStyleClasses:data[col.field]:data:getColumnData(col):viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:pivotAggregationData[col.field]:pivotAggregationData:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\" [column]=\"col\"\n [formatter]=\"col.formatter\" [intRow]=\"this\" [active]=\"isCellActive(col.visibleIndex)\"\n [rowData]=\"data\" [columnData]='getColumnData(col)'\n [style.min-width]=\"col.resolvedWidth\" [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\" [width]=\"col.getCellWidth()\" [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"pivotAggregationData[col.field]\"\n [cellTemplate]=\"col.bodyTemplate\" [lastSearchInfo]=\"grid.lastSearchInfo\"\n [cellSelectionMode]=\"grid.cellSelection\" [displayPinnedChip]=\"shouldDisplayPinnedChip(col)\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-cell>\n</ng-template>\n\n<ng-template #rowSelectorBaseTemplate>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox [tabindex]=\"-1\" [readonly]=\"true\" [checked]=\"selected\" [disableRipple]=\"true\" [disabled]=\"deleted\"\n [disableTransitions]=\"grid.disableTransitions\" [aria-label]=\"rowCheckboxAriaLabel\">\n </igx-checkbox>\n </div>\n</ng-template>\n\n" }]
79740
79754
  }], ctorParameters: () => [{ type: undefined, decorators: [{
79741
79755
  type: Inject,
79742
79756
  args: [IGX_GRID_BASE]
@@ -83195,7 +83209,7 @@ class BaseToolbarDirective {
83195
83209
  this.columnToggle = new EventEmitter();
83196
83210
  this.$destroy = new Subject();
83197
83211
  this._overlaySettings = {
83198
- positionStrategy: new ConnectedPositioningStrategy({
83212
+ positionStrategy: new AutoPositionStrategy({
83199
83213
  horizontalDirection: HorizontalAlignment.Left,
83200
83214
  horizontalStartPoint: HorizontalAlignment.Right,
83201
83215
  verticalDirection: VerticalAlignment.Bottom,
@@ -88426,7 +88440,7 @@ class IgxRowIslandComponent extends IgxHierarchicalGridBaseDirective {
88426
88440
  IgxRowIslandAPIService,
88427
88441
  IgxFilteringService,
88428
88442
  IgxGridSelectionService
88429
- ], queries: [{ propertyName: "toolbarDirectiveTemplate", first: true, predicate: IgxGridToolbarDirective, descendants: true, read: TemplateRef }, { propertyName: "paginatorDirectiveTemplate", first: true, predicate: IgxPaginatorDirective, descendants: true, read: TemplateRef }, { propertyName: "children", predicate: i0.forwardRef(() => IgxRowIslandComponent), read: IgxRowIslandComponent }, { propertyName: "childLayoutList", predicate: i0.forwardRef(() => IgxRowIslandComponent), read: IgxRowIslandComponent }, { propertyName: "childColumns", predicate: IgxColumnComponent, read: IgxColumnComponent }, { propertyName: "actionStripComponents", predicate: IgxActionStripToken, read: IgxActionStripToken }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `@if (platform.isElements) {
88443
+ ], queries: [{ propertyName: "toolbarDirectiveTemplate", first: true, predicate: IgxGridToolbarDirective, read: TemplateRef }, { propertyName: "paginatorDirectiveTemplate", first: true, predicate: IgxPaginatorDirective, read: TemplateRef }, { propertyName: "children", predicate: i0.forwardRef(() => IgxRowIslandComponent), read: IgxRowIslandComponent }, { propertyName: "childLayoutList", predicate: i0.forwardRef(() => IgxRowIslandComponent), read: IgxRowIslandComponent }, { propertyName: "childColumns", predicate: IgxColumnComponent, read: IgxColumnComponent }, { propertyName: "actionStripComponents", predicate: IgxActionStripToken, read: IgxActionStripToken }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `@if (platform.isElements) {
88430
88444
  <ng-content select="igx-column,igc-column,igx-column-group,igc-column-group,igx-action-strip,igc-action-strip"></ng-content>
88431
88445
  <ng-content select="igx-row-island,igc-row-island"></ng-content>
88432
88446
  }`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -88474,10 +88488,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
88474
88488
  args: [IgxColumnComponent, { read: IgxColumnComponent, descendants: false }]
88475
88489
  }], toolbarDirectiveTemplate: [{
88476
88490
  type: ContentChild,
88477
- args: [IgxGridToolbarDirective, { read: TemplateRef }]
88491
+ args: [IgxGridToolbarDirective, { read: TemplateRef, descendants: false }]
88478
88492
  }], paginatorDirectiveTemplate: [{
88479
88493
  type: ContentChild,
88480
- args: [IgxPaginatorDirective, { read: TemplateRef }]
88494
+ args: [IgxPaginatorDirective, { read: TemplateRef, descendants: false }]
88481
88495
  }], toolbarTemplate: [{
88482
88496
  type: Input
88483
88497
  }], paginatorTemplate: [{
@@ -89377,7 +89391,7 @@ class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirective {
89377
89391
  if (!this._init) {
89378
89392
  this.validation.updateAll(this._data);
89379
89393
  }
89380
- if (this.autoGenerate && this._data.length > 0 && this.shouldRecreateColumns(oldData, this._data)) {
89394
+ if (this.autoGenerate && this._data.length > 0 && this.shouldRecreateColumns(oldData, this._data) && this.gridAPI.grid) {
89381
89395
  this.setupColumns();
89382
89396
  this.reflow();
89383
89397
  }
@@ -97028,7 +97042,12 @@ class IgxDateRangePickerComponent extends PickerBaseDirective {
97028
97042
  }
97029
97043
  /** @hidden @internal */
97030
97044
  get separatorClass() {
97031
- return 'igx-date-range-picker__label';
97045
+ const classes = ['igx-date-range-picker__label'];
97046
+ if (this.label)
97047
+ classes.push('input-has-label');
97048
+ if (this.hint)
97049
+ classes.push('input-has-hint');
97050
+ return classes.join(' ');
97032
97051
  }
97033
97052
  get toggleContainer() {
97034
97053
  return this._calendarContainer;
@@ -97384,7 +97403,7 @@ class IgxDateRangePickerComponent extends PickerBaseDirective {
97384
97403
  }
97385
97404
  /** @hidden @internal */
97386
97405
  getEditElement() {
97387
- return this.inputDirective?.nativeElement;
97406
+ return this.inputDirective.nativeElement;
97388
97407
  }
97389
97408
  setValidityState(inputDirective, isFocused) {
97390
97409
  if (this._ngControl && !this._ngControl.disabled && this.isTouchedOrDirty) {
@@ -97823,7 +97842,7 @@ class IgxDateRangePickerComponent extends PickerBaseDirective {
97823
97842
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.6", type: IgxDateRangePickerComponent, isStandalone: true, selector: "igx-date-range-picker", inputs: { displayMonthsCount: "displayMonthsCount", orientation: "orientation", hideOutsideDays: ["hideOutsideDays", "hideOutsideDays", booleanAttribute], formatter: "formatter", doneButtonText: "doneButtonText", cancelButtonText: "cancelButtonText", overlaySettings: "overlaySettings", displayFormat: "displayFormat", inputFormat: "inputFormat", minValue: "minValue", maxValue: "maxValue", disabledDates: "disabledDates", specialDates: "specialDates", resourceStrings: "resourceStrings", placeholder: "placeholder", outlet: "outlet", showWeekNumbers: ["showWeekNumbers", "showWeekNumbers", booleanAttribute], readOnly: ["readOnly", "readOnly", booleanAttribute], usePredefinedRanges: "usePredefinedRanges", customRanges: "customRanges", activeDate: "activeDate", locale: "locale", value: "value" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "keydown": "onKeyDown($event)" }, properties: { "class.igx-date-range-picker": "this.cssClass" } }, providers: [
97824
97843
  { provide: NG_VALUE_ACCESSOR, useExisting: IgxDateRangePickerComponent, multi: true },
97825
97844
  { provide: NG_VALIDATORS, useExisting: IgxDateRangePickerComponent, multi: true }
97826
- ], queries: [{ propertyName: "label", first: true, predicate: IgxLabelDirective, descendants: true }, { propertyName: "pickerActions", first: true, predicate: IgxPickerActionsDirective, descendants: true }, { propertyName: "dateSeparatorTemplate", first: true, predicate: IgxDateRangeSeparatorDirective, descendants: true, read: TemplateRef }, { propertyName: "headerTitleTemplate", first: true, predicate: IgxCalendarHeaderTitleTemplateDirective, descendants: true }, { propertyName: "headerTemplate", first: true, predicate: IgxCalendarHeaderTemplateDirective, descendants: true }, { propertyName: "subheaderTemplate", first: true, predicate: IgxCalendarSubheaderTemplateDirective, descendants: true }, { propertyName: "projectedInputs", predicate: IgxDateRangeInputsBaseComponent }], viewQueries: [{ propertyName: "viewContainerRef", first: true, predicate: IgxInputGroupComponent, descendants: true, read: ViewContainerRef }, { propertyName: "inputDirective", first: true, predicate: IgxInputDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"hasProjectedInputs ? startEndTemplate : defTemplate\"></ng-container>\n\n<ng-template #singleTemplate>\n <div (click)=\"open()\" class=\"content-wrap\">\n <ng-content select=\"igx-date-single\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #startEndTemplate>\n <ng-content select=\"igx-date-range-start\"></ng-content>\n <div [className]=\"separatorClass\">\n <ng-container *ngTemplateOutlet=\"dateSeparatorTemplate || defDateSeparatorTemplate;\">\n </ng-container>\n </div>\n <ng-content select=\"igx-date-range-end\"></ng-content>\n</ng-template>\n\n<ng-template #defIcon>\n <igx-icon family=\"default\" name=\"date_range\"></igx-icon>\n</ng-template>\n\n<ng-template #clearIcon>\n <igx-icon family=\"default\" name=\"input_clear\" [attr.aria-hidden]=\"true\"></igx-icon>\n</ng-template>\n\n<ng-template #defDateSeparatorTemplate>{{ dateSeparator }}</ng-template>\n\n<ng-template #defTemplate>\n <igx-input-group [type]=\"type\">\n <!-- only set mask placeholder when empty, otherwise input group might use it as label if none is set -->\n <input #singleInput igxInput type=\"text\" [igxReadOnlyInput]=\"readOnly\" readonly [disabled]=\"disabled\" [placeholder]=\"value ? '' : singleInputFormat\"\n role=\"combobox\" aria-haspopup=\"grid\" [attr.aria-expanded]=\"!collapsed\" [attr.aria-labelledby]=\"label?.id\"\n [value]=\"value | dateRange: appliedFormat : locale : formatter\" />\n\n @if (!toggleComponents.length) {\n <igx-prefix (click)=\"toggle()\">\n <ng-container *ngTemplateOutlet=\"defIcon\"></ng-container>\n </igx-prefix>\n }\n\n @if (!clearComponents.length && value) {\n <igx-suffix (click)=\"clear()\">\n <ng-container *ngTemplateOutlet=\"clearIcon\"></ng-container>\n </igx-suffix>\n }\n\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint\">\n <ng-content select=\"igx-hint,[igxHint]\"></ng-content>\n </ng-container>\n </igx-input-group>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: IgxPrefixDirective, selector: "igx-prefix,[igxPrefix],[igxStart]" }, { kind: "directive", type: IgxSuffixDirective, selector: "igx-suffix,[igxSuffix],[igxEnd]" }, { kind: "directive", type: IgxReadOnlyInputDirective, selector: "[igxReadOnlyInput]", inputs: ["igxReadOnlyInput"], exportAs: ["igxReadOnlyInput"] }, { kind: "pipe", type: DateRangePickerFormatPipe, name: "dateRange" }] }); }
97845
+ ], queries: [{ propertyName: "label", first: true, predicate: IgxLabelDirective, descendants: true }, { propertyName: "hint", first: true, predicate: IgxHintDirective, descendants: true }, { propertyName: "pickerActions", first: true, predicate: IgxPickerActionsDirective, descendants: true }, { propertyName: "dateSeparatorTemplate", first: true, predicate: IgxDateRangeSeparatorDirective, descendants: true, read: TemplateRef }, { propertyName: "headerTitleTemplate", first: true, predicate: IgxCalendarHeaderTitleTemplateDirective, descendants: true }, { propertyName: "headerTemplate", first: true, predicate: IgxCalendarHeaderTemplateDirective, descendants: true }, { propertyName: "subheaderTemplate", first: true, predicate: IgxCalendarSubheaderTemplateDirective, descendants: true }, { propertyName: "projectedInputs", predicate: IgxDateRangeInputsBaseComponent }], viewQueries: [{ propertyName: "viewContainerRef", first: true, predicate: IgxInputGroupComponent, descendants: true, read: ViewContainerRef }, { propertyName: "inputDirective", first: true, predicate: IgxInputDirective, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"hasProjectedInputs ? startEndTemplate : defTemplate\"></ng-container>\n\n<ng-template #singleTemplate>\n <div (click)=\"open()\" class=\"content-wrap\">\n <ng-content select=\"igx-date-single\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #startEndTemplate>\n <ng-content select=\"igx-date-range-start\"></ng-content>\n <div [className]=\"separatorClass\">\n <ng-container *ngTemplateOutlet=\"dateSeparatorTemplate || defDateSeparatorTemplate;\">\n </ng-container>\n </div>\n <ng-content select=\"igx-date-range-end\"></ng-content>\n</ng-template>\n\n<ng-template #defIcon>\n <igx-icon family=\"default\" name=\"date_range\"></igx-icon>\n</ng-template>\n\n<ng-template #clearIcon>\n <igx-icon family=\"default\" name=\"input_clear\" [attr.aria-hidden]=\"true\"></igx-icon>\n</ng-template>\n\n<ng-template #defDateSeparatorTemplate>{{ dateSeparator }}</ng-template>\n\n<ng-template #defTemplate>\n <igx-input-group [type]=\"type\">\n <!-- only set mask placeholder when empty, otherwise input group might use it as label if none is set -->\n <input #singleInput igxInput type=\"text\" [igxReadOnlyInput]=\"readOnly\" readonly [disabled]=\"disabled\" [placeholder]=\"value ? '' : singleInputFormat\"\n role=\"combobox\" aria-haspopup=\"grid\" [attr.aria-expanded]=\"!collapsed\" [attr.aria-labelledby]=\"label?.id\"\n [value]=\"value | dateRange: appliedFormat : locale : formatter\" />\n\n @if (!toggleComponents.length) {\n <igx-prefix (click)=\"toggle()\">\n <ng-container *ngTemplateOutlet=\"defIcon\"></ng-container>\n </igx-prefix>\n }\n\n @if (!clearComponents.length && value) {\n <igx-suffix (click)=\"clear()\">\n <ng-container *ngTemplateOutlet=\"clearIcon\"></ng-container>\n </igx-suffix>\n }\n\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint\">\n <ng-content select=\"igx-hint,[igxHint]\"></ng-content>\n </ng-container>\n </igx-input-group>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: IgxPrefixDirective, selector: "igx-prefix,[igxPrefix],[igxStart]" }, { kind: "directive", type: IgxSuffixDirective, selector: "igx-suffix,[igxSuffix],[igxEnd]" }, { kind: "directive", type: IgxReadOnlyInputDirective, selector: "[igxReadOnlyInput]", inputs: ["igxReadOnlyInput"], exportAs: ["igxReadOnlyInput"] }, { kind: "pipe", type: DateRangePickerFormatPipe, name: "dateRange" }] }); }
97827
97846
  }
97828
97847
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: IgxDateRangePickerComponent, decorators: [{
97829
97848
  type: Component,
@@ -97911,6 +97930,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImpor
97911
97930
  }], label: [{
97912
97931
  type: ContentChild,
97913
97932
  args: [IgxLabelDirective]
97933
+ }], hint: [{
97934
+ type: ContentChild,
97935
+ args: [IgxHintDirective]
97914
97936
  }], pickerActions: [{
97915
97937
  type: ContentChild,
97916
97938
  args: [IgxPickerActionsDirective]