igniteui-angular 18.2.4 → 18.2.5

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 (43) hide show
  1. package/esm2022/lib/calendar/common/calendar-view.directive.mjs +3 -2
  2. package/esm2022/lib/calendar/common/model.mjs +3 -2
  3. package/esm2022/lib/core/utils.mjs +23 -11
  4. package/esm2022/lib/directives/drag-drop/drag-drop.directive.mjs +20 -22
  5. package/esm2022/lib/directives/for-of/for_of.directive.mjs +5 -3
  6. package/esm2022/lib/grids/grid-base.directive.mjs +7 -2
  7. package/esm2022/lib/grids/moving/moving.drag.directive.mjs +3 -3
  8. package/esm2022/lib/grids/pivot-grid/pivot-grid.component.mjs +6 -8
  9. package/esm2022/lib/services/animation/angular-animation-player.mjs +4 -2
  10. package/esm2022/lib/tabs/tabs/tab-header.component.mjs +7 -5
  11. package/esm2022/lib/tabs/tabs/tabs.component.mjs +14 -10
  12. package/fesm2022/igniteui-angular.mjs +80 -58
  13. package/fesm2022/igniteui-angular.mjs.map +1 -1
  14. package/lib/core/styles/themes/generators/_base.scss +3 -2
  15. package/lib/core/styles/themes/generators/_bootstrap.scss +9 -6
  16. package/lib/core/styles/themes/generators/_fluent.scss +9 -6
  17. package/lib/core/styles/themes/generators/_indigo.scss +9 -6
  18. package/lib/directives/drag-drop/drag-drop.directive.d.ts +1 -0
  19. package/lib/grids/grid-base.directive.d.ts +1 -0
  20. package/lib/grids/pivot-grid/pivot-grid.component.d.ts +0 -1
  21. package/lib/tabs/tabs/tabs.component.d.ts +3 -1
  22. package/package.json +1 -1
  23. package/styles/igniteui-angular-dark.css +1 -1
  24. package/styles/igniteui-bootstrap-dark.css +1 -1
  25. package/styles/igniteui-dark-green.css +1 -1
  26. package/styles/igniteui-fluent-light-excel.css +1 -1
  27. package/styles/igniteui-fluent-light-word.css +1 -1
  28. package/styles/igniteui-fluent-light.css +1 -1
  29. package/styles/igniteui-indigo-dark.css +1 -1
  30. package/styles/igniteui-indigo-light.css +1 -1
  31. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  32. package/styles/maps/igniteui-angular.css.map +1 -1
  33. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  34. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  35. package/styles/maps/igniteui-dark-green.css.map +1 -1
  36. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  37. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  38. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  39. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  40. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  41. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  42. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  43. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { Injectable, Directive, Input, HostListener, EventEmitter, InjectionToken, isDevMode, inject, PLATFORM_ID, Inject, ElementRef, ViewContainerRef, createComponent, Output, HostBinding, Self, Optional, booleanAttribute, SecurityContext, Component, ContentChildren, ContentChild, RendererStyleFlags2, Pipe, ViewChild, DestroyRef, LOCALE_ID, forwardRef, Host, QueryList, ViewChildren, TemplateRef, ChangeDetectionStrategy, SimpleChange, SkipSelf, CUSTOM_ELEMENTS_SCHEMA, reflectComponentType, NgModule } from '@angular/core';
3
3
  import * as i4 from '@angular/forms';
4
4
  import { NgModel, NgControl, FormControlName, NG_VALUE_ACCESSOR, Validators, NG_VALIDATORS, FormGroup, FormsModule, RequiredValidator, MinValidator, MaxValidator, EmailValidator, MinLengthValidator, MaxLengthValidator, PatternValidator, FormControl, ReactiveFormsModule } from '@angular/forms';
5
- import { Observable, Subject, fromEvent, BehaviorSubject, interval, animationFrameScheduler, noop, merge, Subscription, timer, pipe } from 'rxjs';
5
+ import { Observable, NEVER, Subject, fromEvent, BehaviorSubject, interval, animationFrameScheduler, noop, merge, Subscription, timer, takeUntil as takeUntil$1, pipe } from 'rxjs';
6
6
  import { takeUntil, filter, throttle, throttleTime, first as first$2, startWith, take, debounce, tap, switchMap, skipLast, debounceTime, map, shareReplay, takeWhile, timeout, pluck } from 'rxjs/operators';
7
7
  import { isPlatformBrowser, formatDate as formatDate$1, CurrencyPipe, formatPercent, formatNumber, getLocaleCurrencyCode, DatePipe, getLocaleDateFormat, FormatWidth, getLocaleDateTimeFormat, DOCUMENT, NgTemplateOutlet, NgIf, NgClass, NgSwitch, NgSwitchCase, NgSwitchDefault, NgFor, TitleCasePipe, getLocaleFirstDayOfWeek, NgStyle, getLocaleCurrencySymbol, formatCurrency as formatCurrency$1, getLocaleNumberFormat, NumberFormatStyle, DecimalPipe, PercentPipe, getCurrencySymbol, AsyncPipe } from '@angular/common';
8
8
  import { mergeWith, isEqual as isEqual$1 } from 'lodash-es';
@@ -402,7 +402,9 @@ const isObject = (value) => !!(value && value.toString() === '[object Object]');
402
402
  * @returns true if provided variable is Date
403
403
  * @hidden
404
404
  */
405
- const isDate = (value) => value instanceof Date;
405
+ const isDate = (value) => {
406
+ return Object.prototype.toString.call(value) === "[object Date]";
407
+ };
406
408
  /**
407
409
  * Checks if the two passed arguments are equal
408
410
  * Currently supports date objects
@@ -599,14 +601,24 @@ const HEADER_KEYS = new Set([...Array.from(NAVIGATION_KEYS), 'escape', 'esc', 'l
599
601
  * Run the resizeObservable outside angular zone, because it patches the MutationObserver which causes an infinite loop.
600
602
  * Related issue: https://github.com/angular/angular/issues/31712
601
603
  */
602
- const resizeObservable = (target) => new Observable((observer) => {
603
- const instance = new (getResizeObserver())((entries) => {
604
- observer.next(entries);
605
- });
606
- instance.observe(target);
607
- const unsubscribe = () => instance.disconnect();
608
- return unsubscribe;
609
- });
604
+ const resizeObservable = (target) => {
605
+ const resizeObserver = getResizeObserver();
606
+ // check whether we are on server env or client env
607
+ if (resizeObserver) {
608
+ return new Observable((observer) => {
609
+ const instance = new resizeObserver((entries) => {
610
+ observer.next(entries);
611
+ });
612
+ instance.observe(target);
613
+ const unsubscribe = () => instance.disconnect();
614
+ return unsubscribe;
615
+ });
616
+ }
617
+ else {
618
+ // if on a server env return a empty observable that does not complete immediately
619
+ return NEVER;
620
+ }
621
+ };
610
622
  /**
611
623
  * @hidden
612
624
  * @internal
@@ -4874,7 +4886,9 @@ class IgxAngularAnimationPlayer {
4874
4886
  // To workaround this we are getting the positions from the inner player.
4875
4887
  // This is logged in Angular here - https://github.com/angular/angular/issues/18891
4876
4888
  // As soon as this is resolved we can remove this hack
4877
- this._innerPlayer = innerRenderer.engine.players[innerRenderer.engine.players.length - 1];
4889
+ const rendererEngine = innerRenderer.engine || innerRenderer.delegate.engine;
4890
+ // A workaround because of Angular SSR is using some delegation.
4891
+ this._innerPlayer = rendererEngine.players[rendererEngine.players.length - 1];
4878
4892
  }
4879
4893
  init() {
4880
4894
  this.internalPlayer.init();
@@ -11710,9 +11724,7 @@ class IgxDragDirective {
11710
11724
  fromEvent(document.defaultView, 'mouseup').pipe(takeUntil(this._destroy))
11711
11725
  .subscribe((res) => this.onPointerUp(res));
11712
11726
  }
11713
- this.element.nativeElement.addEventListener('transitionend', (args) => {
11714
- this.onTransitionEnd(args);
11715
- });
11727
+ this.element.nativeElement.addEventListener('transitionend', this.onTransitionEnd.bind(this));
11716
11728
  });
11717
11729
  // Set transition duration to 0s. This also helps with setting `visibility: hidden` to the base to not lag.
11718
11730
  this.element.nativeElement.style.transitionDuration = '0.0s';
@@ -11731,6 +11743,7 @@ class IgxDragDirective {
11731
11743
  this._dynamicGhostRef = null;
11732
11744
  }
11733
11745
  }
11746
+ this.element.nativeElement.removeEventListener('transitionend', this.onTransitionEnd);
11734
11747
  if (this._containerScrollIntervalId) {
11735
11748
  clearInterval(this._containerScrollIntervalId);
11736
11749
  this._containerScrollIntervalId = null;
@@ -12115,12 +12128,7 @@ class IgxDragDirective {
12115
12128
  if (ghostDestroyArgs.cancel) {
12116
12129
  return;
12117
12130
  }
12118
- this.ghostElement.remove();
12119
- this.ghostElement = null;
12120
- if (this._dynamicGhostRef) {
12121
- this._dynamicGhostRef.destroy();
12122
- this._dynamicGhostRef = null;
12123
- }
12131
+ this.clearGhost();
12124
12132
  }
12125
12133
  else if (!this.ghost) {
12126
12134
  this.element.nativeElement.style.transitionProperty = '';
@@ -12142,6 +12150,18 @@ class IgxDragDirective {
12142
12150
  });
12143
12151
  });
12144
12152
  }
12153
+ clearGhost() {
12154
+ this.ghostElement.removeEventListener('pointermove', this.onPointerMove);
12155
+ this.ghostElement.removeEventListener('pointerup', this.onPointerUp);
12156
+ this.ghostElement.removeEventListener('lostpointercapture', this.onPointerLost);
12157
+ this.ghostElement.removeEventListener('transitionend', this.onTransitionEnd);
12158
+ this.ghostElement.remove();
12159
+ this.ghostElement = null;
12160
+ if (this._dynamicGhostRef) {
12161
+ this._dynamicGhostRef.destroy();
12162
+ this._dynamicGhostRef = null;
12163
+ }
12164
+ }
12145
12165
  /**
12146
12166
  * @hidden
12147
12167
  * Create ghost element - if a Node object is provided it creates a clone of that node,
@@ -12211,20 +12231,12 @@ class IgxDragDirective {
12211
12231
  if (this._pointerDownId !== null) {
12212
12232
  this.ghostElement.setPointerCapture(this._pointerDownId);
12213
12233
  }
12214
- this.ghostElement.addEventListener('pointermove', (args) => {
12215
- this.onPointerMove(args);
12216
- });
12217
- this.ghostElement.addEventListener('pointerup', (args) => {
12218
- this.onPointerUp(args);
12219
- });
12220
- this.ghostElement.addEventListener('lostpointercapture', (args) => {
12221
- this.onPointerLost(args);
12222
- });
12234
+ this.ghostElement.addEventListener('pointermove', this.onPointerMove.bind(this));
12235
+ this.ghostElement.addEventListener('pointerup', this.onPointerUp.bind(this));
12236
+ this.ghostElement.addEventListener('lostpointercapture', this.onPointerLost.bind(this));
12223
12237
  }
12224
12238
  // Transition animation when the ghostElement is released and it returns to it's original position.
12225
- this.ghostElement.addEventListener('transitionend', (args) => {
12226
- this.onTransitionEnd(args);
12227
- });
12239
+ this.ghostElement.addEventListener('transitionend', this.onTransitionEnd.bind(this));
12228
12240
  this.cdr.detectChanges();
12229
12241
  }
12230
12242
  /**
@@ -14266,8 +14278,10 @@ class IgxForOfDirective extends IgxForOfToken {
14266
14278
  ngAfterViewInit() {
14267
14279
  if (this.igxForScrollOrientation === 'vertical') {
14268
14280
  this._zone.runOutsideAngular(() => {
14269
- this.contentObserver = new (getResizeObserver())(() => this.contentResizeNotify.next());
14270
- this.contentObserver.observe(this.dc.instance._viewContainer.element.nativeElement);
14281
+ if (this.platformUtil.isBrowser) {
14282
+ this.contentObserver = new (getResizeObserver())(() => this.contentResizeNotify.next());
14283
+ this.contentObserver.observe(this.dc.instance._viewContainer.element.nativeElement);
14284
+ }
14271
14285
  });
14272
14286
  }
14273
14287
  }
@@ -29575,7 +29589,7 @@ const IGX_BUTTON_GROUP_DIRECTIVES = [
29575
29589
  const daysInWeek = 7;
29576
29590
  const millisecondsInDay = 86400000;
29577
29591
  function toCalendarDay(date) {
29578
- return date instanceof Date ? CalendarDay.from(date) : date;
29592
+ return isDate(date) ? CalendarDay.from(date) : date;
29579
29593
  }
29580
29594
  function checkRollover(original, modified) {
29581
29595
  return original.date !== modified.date
@@ -30202,7 +30216,7 @@ class IgxCalendarViewDirective {
30202
30216
  * @memberof IgxYearsViewComponent
30203
30217
  */
30204
30218
  set date(value) {
30205
- if (!(value instanceof Date))
30219
+ if (!isDate(value))
30206
30220
  return;
30207
30221
  this._date = value;
30208
30222
  }
@@ -55389,7 +55403,7 @@ class IgxColumnMovingDragDirective extends IgxDragDirective {
55389
55403
  source: this.column
55390
55404
  };
55391
55405
  this.column.grid.columnMovingStart.emit(movingStartArgs);
55392
- this.subscription$ = fromEvent(this.column.grid.document.defaultView, 'keydown').subscribe((ev) => {
55406
+ this.subscription$ = fromEvent(this.column.grid.document.defaultView, 'keydown').pipe(takeUntil$1(this._destroy)).subscribe((ev) => {
55393
55407
  if (ev.key === this.platformUtil.KEYMAP.ESCAPE) {
55394
55408
  this.onEscape(ev);
55395
55409
  }
@@ -64232,6 +64246,7 @@ class IgxGridBaseDirective {
64232
64246
  this._rowSelectionMode = GridSelectionMode.none;
64233
64247
  this._selectRowOnClick = true;
64234
64248
  this._columnSelectionMode = GridSelectionMode.none;
64249
+ this.isColumnWidthSum = false;
64235
64250
  this.rowEditPositioningStrategy = new RowEditPositionStrategy({
64236
64251
  horizontalDirection: HorizontalAlignment.Right,
64237
64252
  verticalDirection: VerticalAlignment.Bottom,
@@ -64816,7 +64831,7 @@ class IgxGridBaseDirective {
64816
64831
  .subscribe((change) => {
64817
64832
  this.onPinnedRowsChanged(change);
64818
64833
  });
64819
- this.addRowSnackbar?.clicked.subscribe(() => {
64834
+ this.addRowSnackbar?.clicked.pipe(takeUntil(this.destroy$)).subscribe(() => {
64820
64835
  const rec = this.filteredSortedData[this.lastAddedRowIndex];
64821
64836
  this.scrollTo(rec, 0);
64822
64837
  this.addRowSnackbar.close();
@@ -67045,6 +67060,7 @@ class IgxGridBaseDirective {
67045
67060
  }
67046
67061
  if (this.width === null || !width) {
67047
67062
  width = this.getColumnWidthSum();
67063
+ this.isColumnWidthSum = true;
67048
67064
  }
67049
67065
  if (this.hasVerticalScroll() && this.width !== null) {
67050
67066
  width -= this.scrollSize;
@@ -67811,6 +67827,9 @@ class IgxGridBaseDirective {
67811
67827
  this.resetCachedWidths();
67812
67828
  this.cdr.detectChanges();
67813
67829
  }
67830
+ if (this.isColumnWidthSum) {
67831
+ this.calcWidth = this.getColumnWidthSum();
67832
+ }
67814
67833
  }
67815
67834
  extractDataFromColumnsSelection(source, formatters = false, headers = false) {
67816
67835
  let record = {};
@@ -76294,7 +76313,7 @@ class IgxPivotGridComponent extends IgxGridBaseDirective {
76294
76313
  }
76295
76314
  /** @hidden */
76296
76315
  featureColumnsWidth() {
76297
- return this.pivotRowWidths;
76316
+ return this.pivotRowWidths || 0;
76298
76317
  }
76299
76318
  /* blazorSuppress */
76300
76319
  /**
@@ -76414,7 +76433,7 @@ class IgxPivotGridComponent extends IgxGridBaseDirective {
76414
76433
  }
76415
76434
  /** @hidden @internal */
76416
76435
  get pivotPinnedWidth() {
76417
- return this.isPinningToStart ? this.pinnedWidth : this.headerFeaturesWidth;
76436
+ return !this._init ? (this.isPinningToStart ? this.pinnedWidth : this.headerFeaturesWidth) : 0;
76418
76437
  }
76419
76438
  /** @hidden @internal */
76420
76439
  get pivotUnpinnedWidth() {
@@ -76450,11 +76469,6 @@ class IgxPivotGridComponent extends IgxGridBaseDirective {
76450
76469
  this.toggleRowGroup(col, newState);
76451
76470
  this.reflow();
76452
76471
  }
76453
- getColumnWidthSum() {
76454
- let colSum = super.getColumnWidthSum();
76455
- colSum += this.rowDimensions.map(dim => this.rowDimensionWidthToPixels(dim)).reduce((prev, cur) => prev + cur, 0);
76456
- return colSum;
76457
- }
76458
76472
  /**
76459
76473
  * @hidden @internal
76460
76474
  */
@@ -77283,6 +77297,9 @@ class IgxPivotGridComponent extends IgxGridBaseDirective {
77283
77297
  dim.autoWidth = maxSize;
77284
77298
  }
77285
77299
  }
77300
+ if (this.isColumnWidthSum) {
77301
+ this.calcWidth = this.getColumnWidthSum();
77302
+ }
77286
77303
  }
77287
77304
  /** @hidden @internal */
77288
77305
  get hasDimensionsToAutosize() {
@@ -89114,9 +89131,10 @@ class IgxTabsComponent extends IgxTabsDirective {
89114
89131
  this.realignSelectedIndicator();
89115
89132
  });
89116
89133
  }
89117
- constructor(animationService, cdr, ngZone, dir) {
89134
+ constructor(animationService, cdr, ngZone, dir, platform) {
89118
89135
  super(animationService, cdr, dir);
89119
89136
  this.ngZone = ngZone;
89137
+ this.platform = platform;
89120
89138
  /**
89121
89139
  * Determines the tab activation.
89122
89140
  * When set to auto, the tab is instantly selected while navigating with the Left/Right Arrows, Home or End keys and the corresponding panel is displayed.
@@ -89136,12 +89154,14 @@ class IgxTabsComponent extends IgxTabsDirective {
89136
89154
  ngAfterViewInit() {
89137
89155
  super.ngAfterViewInit();
89138
89156
  this.ngZone.runOutsideAngular(() => {
89139
- this._resizeObserver = new (getResizeObserver())(() => {
89140
- this.updateScrollButtons();
89141
- this.realignSelectedIndicator();
89142
- });
89143
- this._resizeObserver.observe(this.headerContainer.nativeElement);
89144
- this._resizeObserver.observe(this.viewPort.nativeElement);
89157
+ if (this.platform.isBrowser) {
89158
+ this._resizeObserver = new (getResizeObserver())(() => {
89159
+ this.updateScrollButtons();
89160
+ this.realignSelectedIndicator();
89161
+ });
89162
+ this._resizeObserver.observe(this.headerContainer.nativeElement);
89163
+ this._resizeObserver.observe(this.viewPort.nativeElement);
89164
+ }
89145
89165
  });
89146
89166
  }
89147
89167
  /** @hidden @internal */
@@ -89313,7 +89333,7 @@ class IgxTabsComponent extends IgxTabsDirective {
89313
89333
  getElementOffset(element) {
89314
89334
  return this.dir.rtl ? this.itemsWrapper.nativeElement.offsetWidth - element.offsetLeft - element.offsetWidth : element.offsetLeft;
89315
89335
  }
89316
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxTabsComponent, deps: [{ token: IgxAngularAnimationService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: IgxDirectionality }], target: i0.ɵɵFactoryTarget.Component }); }
89336
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxTabsComponent, deps: [{ token: IgxAngularAnimationService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: IgxDirectionality }, { token: PlatformUtil }], target: i0.ɵɵFactoryTarget.Component }); }
89317
89337
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: IgxTabsComponent, isStandalone: true, selector: "igx-tabs", inputs: { tabAlignment: "tabAlignment", activation: "activation" }, host: { properties: { "class.igx-tabs": "this.defaultClass" } }, providers: [{ provide: IgxTabsBase, useExisting: IgxTabsComponent }], viewQueries: [{ propertyName: "headerContainer", first: true, predicate: ["headerContainer"], descendants: true, static: true }, { propertyName: "viewPort", first: true, predicate: ["viewPort"], descendants: true, static: true }, { propertyName: "itemsWrapper", first: true, predicate: ["itemsWrapper"], descendants: true, static: true }, { propertyName: "itemsContainer", first: true, predicate: ["itemsContainer"], descendants: true, static: true }, { propertyName: "selectedIndicator", first: true, predicate: ["selectedIndicator"], descendants: true }, { propertyName: "scrollPrevButton", first: true, predicate: ["scrollPrevButton"], descendants: true }, { propertyName: "scrollNextButton", first: true, predicate: ["scrollNextButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #headerContainer class=\"igx-tabs__header\">\n <button #scrollPrevButton type=\"button\" igxIconButton=\"flat\" igxRipple tabindex=\"-1\" class=\"igx-tabs__header-button\" (click)=\"scrollPrev()\">\n <igx-icon family=\"default\" name=\"prev\"></igx-icon>\n </button>\n <div #viewPort class=\"igx-tabs__header-content\">\n <div #itemsWrapper class=\"igx-tabs__header-wrapper\" role=\"tablist\">\n <div #itemsContainer class=\"igx-tabs__header-scroll\" [ngClass]=\"resolveHeaderScrollClasses()\">\n <ng-container *ngFor=\"let tab of items; let i = index\">\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n </ng-container>\n </div>\n <div #selectedIndicator *ngIf=\"items.length > 0\" class=\"igx-tabs__header-active-indicator\">\n </div>\n </div>\n </div>\n <button #scrollNextButton type=\"button\" igxIconButton=\"flat\" igxRipple tabindex=\"-1\" class=\"igx-tabs__header-button\" (click)=\"scrollNext()\">\n <igx-icon family=\"default\" name=\"next\"></igx-icon>\n </button>\n</div>\n<div class=\"igx-tabs__panels\">\n <ng-container *ngFor=\"let tab of items; let i = index\">\n <ng-container *ngTemplateOutlet=\"tab.panelTemplate\"></ng-container>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "name", "active"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IgxIconButtonDirective, selector: "[igxIconButton]", inputs: ["igxIconButton"] }] }); }
89318
89338
  }
89319
89339
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxTabsComponent, decorators: [{
@@ -89322,7 +89342,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
89322
89342
  }], ctorParameters: () => [{ type: undefined, decorators: [{
89323
89343
  type: Inject,
89324
89344
  args: [IgxAngularAnimationService]
89325
- }] }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: IgxDirectionality }], propDecorators: { tabAlignment: [{
89345
+ }] }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: IgxDirectionality }, { type: PlatformUtil }], propDecorators: { tabAlignment: [{
89326
89346
  type: Input
89327
89347
  }], activation: [{
89328
89348
  type: Input
@@ -89420,10 +89440,12 @@ class IgxTabHeaderComponent extends IgxTabHeaderDirective {
89420
89440
  /** @hidden @internal */
89421
89441
  ngAfterViewInit() {
89422
89442
  this.ngZone.runOutsideAngular(() => {
89423
- this._resizeObserver = new (getResizeObserver())(() => {
89424
- this.tabs.realignSelectedIndicator();
89425
- });
89426
- this._resizeObserver.observe(this.nativeElement);
89443
+ if (this.platform.isBrowser) {
89444
+ this._resizeObserver = new (getResizeObserver())(() => {
89445
+ this.tabs.realignSelectedIndicator();
89446
+ });
89447
+ this._resizeObserver.observe(this.nativeElement);
89448
+ }
89427
89449
  });
89428
89450
  }
89429
89451
  /** @hidden @internal */