igniteui-angular 18.2.4 → 18.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/calendar/common/calendar-view.directive.mjs +3 -2
- package/esm2022/lib/calendar/common/model.mjs +3 -2
- package/esm2022/lib/combo/combo.component.mjs +3 -3
- package/esm2022/lib/core/utils.mjs +23 -11
- package/esm2022/lib/directives/drag-drop/drag-drop.directive.mjs +20 -22
- package/esm2022/lib/directives/for-of/for_of.directive.mjs +5 -3
- package/esm2022/lib/grids/filtering/excel-style/excel-style-conditional-filter.component.mjs +5 -2
- package/esm2022/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.mjs +1 -1
- package/esm2022/lib/grids/grid-base.directive.mjs +7 -2
- package/esm2022/lib/grids/moving/moving.drag.directive.mjs +3 -3
- package/esm2022/lib/grids/pivot-grid/pivot-grid.component.mjs +6 -8
- package/esm2022/lib/services/animation/angular-animation-player.mjs +4 -2
- package/esm2022/lib/tabs/tabs/tab-header.component.mjs +7 -5
- package/esm2022/lib/tabs/tabs/tabs.component.mjs +14 -10
- package/fesm2022/igniteui-angular.mjs +86 -61
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/core/styles/components/tree/_tree-theme.scss +7 -1
- package/lib/core/styles/themes/generators/_base.scss +3 -2
- package/lib/core/styles/themes/generators/_bootstrap.scss +9 -6
- package/lib/core/styles/themes/generators/_fluent.scss +9 -6
- package/lib/core/styles/themes/generators/_indigo.scss +9 -6
- package/lib/directives/drag-drop/drag-drop.directive.d.ts +1 -0
- package/lib/grids/grid-base.directive.d.ts +1 -0
- package/lib/grids/pivot-grid/pivot-grid.component.d.ts +0 -1
- package/lib/tabs/tabs/tabs.component.d.ts +3 -1
- package/package.json +1 -1
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- 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) =>
|
|
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) =>
|
|
603
|
-
const
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
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
|
-
|
|
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', (
|
|
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.
|
|
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', (
|
|
12215
|
-
|
|
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', (
|
|
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
|
-
|
|
14270
|
-
|
|
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
|
|
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
|
|
30219
|
+
if (!isDate(value))
|
|
30206
30220
|
return;
|
|
30207
30221
|
this._date = value;
|
|
30208
30222
|
}
|
|
@@ -39098,7 +39112,7 @@ class IgxComboComponent extends IgxComboBaseDirective {
|
|
|
39098
39112
|
IgxComboAPIService,
|
|
39099
39113
|
{ provide: IGX_COMBO_COMPONENT, useExisting: IgxComboComponent },
|
|
39100
39114
|
{ provide: NG_VALUE_ACCESSOR, useExisting: IgxComboComponent, multi: true }
|
|
39101
|
-
], viewQueries: [{ propertyName: "dropdown", first: true, predicate: IgxComboDropDownComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<igx-input-group #inputGroup [type]=\"type\" (click)=\"onClick($event)\">\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\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"displayValue\" [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\" family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\" family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <div class=\"igx-combo__search\">\n <igx-input-group
|
|
39115
|
+
], viewQueries: [{ propertyName: "dropdown", first: true, predicate: IgxComboDropDownComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<igx-input-group #inputGroup [type]=\"type\" (click)=\"onClick($event)\">\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\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"displayValue\" [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\" family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\" family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <div class=\"igx-combo__search\" *ngIf=\"displaySearchInput\">\n <igx-input-group>\n <input igxInput #searchInput name=\"searchInput\" autocomplete=\"off\" type=\"text\"\n [(ngModel)]=\"searchValue\" (ngModelChange)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (focus)=\"dropdown.onBlur($event)\" [attr.placeholder]=\"getSearchPlaceholderText()\"\n aria-autocomplete=\"list\" role=\"searchbox\" aria-label=\"search\"/>\n <igx-suffix *ngIf=\"showSearchCaseIcon\" (click)=\"toggleCaseSensitive()\">\n <span [ngClass]=\"filteringOptions.caseSensitive? 'igx-combo__case-icon--active' : 'igx-combo__case-icon'\">\n <igx-icon\n family=\"default\"\n name=\"case_sensitive\"\n [active]=\"filteringOptions.caseSensitive\">\n </igx-icon>\n </span>\n </igx-suffix>\n </igx-input-group>\n </div>\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\" aria-multiselectable=\"true\"\n [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-combo-item [itemHeight]=\"itemHeight\" *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\" [role]=\"item?.isHeader? 'group' : 'option'\">\n <ng-container *ngIf=\"item?.isHeader\">\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n </ng-container>\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n <ng-container *ngIf=\"!item?.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n</igx-combo-drop-down>\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: "igx-suffix,[igxSuffix],[igxEnd]" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "name", "active"] }, { kind: "component", type: IgxComboDropDownComponent, selector: "igx-combo-drop-down", inputs: ["singleMode"] }, { kind: "directive", type: IgxDropDownItemNavigationDirective, selector: "[igxDropDownItemNavigation]", inputs: ["igxDropDownItemNavigation"] }, { kind: "directive", type: IgxForOfDirective, selector: "[igxFor][igxForOf]", inputs: ["igxForOf", "igxForSizePropName", "igxForScrollOrientation", "igxForScrollContainer", "igxForContainerSize", "igxForItemSize", "igxForTotalItemCount", "igxForTrackBy"], outputs: ["chunkLoad", "scrollbarVisibilityChanged", "contentSizeChange", "dataChanged", "beforeViewDestroyed", "chunkPreload"] }, { kind: "component", type: IgxComboItemComponent, selector: "igx-combo-item", inputs: ["itemHeight", "ariaLabel", "singleMode"] }, { kind: "component", type: IgxComboAddItemComponent, selector: "igx-combo-add-item" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "directive", type: IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }, { kind: "pipe", type: IgxComboFilteringPipe, name: "comboFiltering" }, { kind: "pipe", type: IgxComboGroupingPipe, name: "comboGrouping" }] }); }
|
|
39102
39116
|
}
|
|
39103
39117
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxComboComponent, decorators: [{
|
|
39104
39118
|
type: Component,
|
|
@@ -39124,7 +39138,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
39124
39138
|
IgxRippleDirective,
|
|
39125
39139
|
IgxComboFilteringPipe,
|
|
39126
39140
|
IgxComboGroupingPipe
|
|
39127
|
-
], template: "<igx-input-group #inputGroup [type]=\"type\" (click)=\"onClick($event)\">\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\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"displayValue\" [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\" family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\" family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <div class=\"igx-combo__search\">\n <igx-input-group
|
|
39141
|
+
], template: "<igx-input-group #inputGroup [type]=\"type\" (click)=\"onClick($event)\">\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\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"displayValue\" [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\" family=\"default\" name=\"input_clear\"></igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\" family=\"default\" [name]=\"toggleIcon\"></igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <div class=\"igx-combo__search\" *ngIf=\"displaySearchInput\">\n <igx-input-group>\n <input igxInput #searchInput name=\"searchInput\" autocomplete=\"off\" type=\"text\"\n [(ngModel)]=\"searchValue\" (ngModelChange)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (focus)=\"dropdown.onBlur($event)\" [attr.placeholder]=\"getSearchPlaceholderText()\"\n aria-autocomplete=\"list\" role=\"searchbox\" aria-label=\"search\"/>\n <igx-suffix *ngIf=\"showSearchCaseIcon\" (click)=\"toggleCaseSensitive()\">\n <span [ngClass]=\"filteringOptions.caseSensitive? 'igx-combo__case-icon--active' : 'igx-combo__case-icon'\">\n <igx-icon\n family=\"default\"\n name=\"case_sensitive\"\n [active]=\"filteringOptions.caseSensitive\">\n </igx-icon>\n </span>\n </igx-suffix>\n </igx-input-group>\n </div>\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\" aria-multiselectable=\"true\"\n [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-combo-item [itemHeight]=\"itemHeight\" *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction:disableFiltering\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\" [role]=\"item?.isHeader? 'group' : 'option'\">\n <ng-container *ngIf=\"item?.isHeader\">\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n </ng-container>\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n <ng-container *ngIf=\"!item?.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n</igx-combo-drop-down>\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n" }]
|
|
39128
39142
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: IgxSelectionAPIService }, { type: IgxComboAPIService }, { type: undefined, decorators: [{
|
|
39129
39143
|
type: Inject,
|
|
39130
39144
|
args: [DOCUMENT]
|
|
@@ -50192,7 +50206,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
50192
50206
|
*/
|
|
50193
50207
|
class IgxExcelStyleConditionalFilterComponent {
|
|
50194
50208
|
get filterNumber() {
|
|
50195
|
-
return this.esf.expressionsList.length;
|
|
50209
|
+
return this.esf.expressionsList.filter(e => e.expression.condition).length;
|
|
50196
50210
|
}
|
|
50197
50211
|
constructor(esf, platform) {
|
|
50198
50212
|
this.esf = esf;
|
|
@@ -50284,6 +50298,9 @@ class IgxExcelStyleConditionalFilterComponent {
|
|
|
50284
50298
|
this.esf.expressionsList[0].expression.condition.name !== 'in') {
|
|
50285
50299
|
this.customDialog.expressionsList = this.esf.expressionsList;
|
|
50286
50300
|
}
|
|
50301
|
+
else {
|
|
50302
|
+
this.customDialog.expressionsList = this.customDialog.expressionsList.filter(e => e.expression.fieldName === this.esf.column.field && e.expression.condition);
|
|
50303
|
+
}
|
|
50287
50304
|
this.customDialog.selectedOperator = eventArgs.newSelection.value;
|
|
50288
50305
|
eventArgs.cancel = true;
|
|
50289
50306
|
if (this.esf.overlayComponentId) {
|
|
@@ -55389,7 +55406,7 @@ class IgxColumnMovingDragDirective extends IgxDragDirective {
|
|
|
55389
55406
|
source: this.column
|
|
55390
55407
|
};
|
|
55391
55408
|
this.column.grid.columnMovingStart.emit(movingStartArgs);
|
|
55392
|
-
this.subscription$ = fromEvent(this.column.grid.document.defaultView, 'keydown').subscribe((ev) => {
|
|
55409
|
+
this.subscription$ = fromEvent(this.column.grid.document.defaultView, 'keydown').pipe(takeUntil$1(this._destroy)).subscribe((ev) => {
|
|
55393
55410
|
if (ev.key === this.platformUtil.KEYMAP.ESCAPE) {
|
|
55394
55411
|
this.onEscape(ev);
|
|
55395
55412
|
}
|
|
@@ -64232,6 +64249,7 @@ class IgxGridBaseDirective {
|
|
|
64232
64249
|
this._rowSelectionMode = GridSelectionMode.none;
|
|
64233
64250
|
this._selectRowOnClick = true;
|
|
64234
64251
|
this._columnSelectionMode = GridSelectionMode.none;
|
|
64252
|
+
this.isColumnWidthSum = false;
|
|
64235
64253
|
this.rowEditPositioningStrategy = new RowEditPositionStrategy({
|
|
64236
64254
|
horizontalDirection: HorizontalAlignment.Right,
|
|
64237
64255
|
verticalDirection: VerticalAlignment.Bottom,
|
|
@@ -64816,7 +64834,7 @@ class IgxGridBaseDirective {
|
|
|
64816
64834
|
.subscribe((change) => {
|
|
64817
64835
|
this.onPinnedRowsChanged(change);
|
|
64818
64836
|
});
|
|
64819
|
-
this.addRowSnackbar?.clicked.subscribe(() => {
|
|
64837
|
+
this.addRowSnackbar?.clicked.pipe(takeUntil(this.destroy$)).subscribe(() => {
|
|
64820
64838
|
const rec = this.filteredSortedData[this.lastAddedRowIndex];
|
|
64821
64839
|
this.scrollTo(rec, 0);
|
|
64822
64840
|
this.addRowSnackbar.close();
|
|
@@ -67045,6 +67063,7 @@ class IgxGridBaseDirective {
|
|
|
67045
67063
|
}
|
|
67046
67064
|
if (this.width === null || !width) {
|
|
67047
67065
|
width = this.getColumnWidthSum();
|
|
67066
|
+
this.isColumnWidthSum = true;
|
|
67048
67067
|
}
|
|
67049
67068
|
if (this.hasVerticalScroll() && this.width !== null) {
|
|
67050
67069
|
width -= this.scrollSize;
|
|
@@ -67811,6 +67830,9 @@ class IgxGridBaseDirective {
|
|
|
67811
67830
|
this.resetCachedWidths();
|
|
67812
67831
|
this.cdr.detectChanges();
|
|
67813
67832
|
}
|
|
67833
|
+
if (this.isColumnWidthSum) {
|
|
67834
|
+
this.calcWidth = this.getColumnWidthSum();
|
|
67835
|
+
}
|
|
67814
67836
|
}
|
|
67815
67837
|
extractDataFromColumnsSelection(source, formatters = false, headers = false) {
|
|
67816
67838
|
let record = {};
|
|
@@ -76294,7 +76316,7 @@ class IgxPivotGridComponent extends IgxGridBaseDirective {
|
|
|
76294
76316
|
}
|
|
76295
76317
|
/** @hidden */
|
|
76296
76318
|
featureColumnsWidth() {
|
|
76297
|
-
return this.pivotRowWidths;
|
|
76319
|
+
return this.pivotRowWidths || 0;
|
|
76298
76320
|
}
|
|
76299
76321
|
/* blazorSuppress */
|
|
76300
76322
|
/**
|
|
@@ -76414,7 +76436,7 @@ class IgxPivotGridComponent extends IgxGridBaseDirective {
|
|
|
76414
76436
|
}
|
|
76415
76437
|
/** @hidden @internal */
|
|
76416
76438
|
get pivotPinnedWidth() {
|
|
76417
|
-
return this.isPinningToStart ? this.pinnedWidth : this.headerFeaturesWidth;
|
|
76439
|
+
return !this._init ? (this.isPinningToStart ? this.pinnedWidth : this.headerFeaturesWidth) : 0;
|
|
76418
76440
|
}
|
|
76419
76441
|
/** @hidden @internal */
|
|
76420
76442
|
get pivotUnpinnedWidth() {
|
|
@@ -76450,11 +76472,6 @@ class IgxPivotGridComponent extends IgxGridBaseDirective {
|
|
|
76450
76472
|
this.toggleRowGroup(col, newState);
|
|
76451
76473
|
this.reflow();
|
|
76452
76474
|
}
|
|
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
76475
|
/**
|
|
76459
76476
|
* @hidden @internal
|
|
76460
76477
|
*/
|
|
@@ -77283,6 +77300,9 @@ class IgxPivotGridComponent extends IgxGridBaseDirective {
|
|
|
77283
77300
|
dim.autoWidth = maxSize;
|
|
77284
77301
|
}
|
|
77285
77302
|
}
|
|
77303
|
+
if (this.isColumnWidthSum) {
|
|
77304
|
+
this.calcWidth = this.getColumnWidthSum();
|
|
77305
|
+
}
|
|
77286
77306
|
}
|
|
77287
77307
|
/** @hidden @internal */
|
|
77288
77308
|
get hasDimensionsToAutosize() {
|
|
@@ -89114,9 +89134,10 @@ class IgxTabsComponent extends IgxTabsDirective {
|
|
|
89114
89134
|
this.realignSelectedIndicator();
|
|
89115
89135
|
});
|
|
89116
89136
|
}
|
|
89117
|
-
constructor(animationService, cdr, ngZone, dir) {
|
|
89137
|
+
constructor(animationService, cdr, ngZone, dir, platform) {
|
|
89118
89138
|
super(animationService, cdr, dir);
|
|
89119
89139
|
this.ngZone = ngZone;
|
|
89140
|
+
this.platform = platform;
|
|
89120
89141
|
/**
|
|
89121
89142
|
* Determines the tab activation.
|
|
89122
89143
|
* 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 +89157,14 @@ class IgxTabsComponent extends IgxTabsDirective {
|
|
|
89136
89157
|
ngAfterViewInit() {
|
|
89137
89158
|
super.ngAfterViewInit();
|
|
89138
89159
|
this.ngZone.runOutsideAngular(() => {
|
|
89139
|
-
this.
|
|
89140
|
-
this.
|
|
89141
|
-
|
|
89142
|
-
|
|
89143
|
-
|
|
89144
|
-
|
|
89160
|
+
if (this.platform.isBrowser) {
|
|
89161
|
+
this._resizeObserver = new (getResizeObserver())(() => {
|
|
89162
|
+
this.updateScrollButtons();
|
|
89163
|
+
this.realignSelectedIndicator();
|
|
89164
|
+
});
|
|
89165
|
+
this._resizeObserver.observe(this.headerContainer.nativeElement);
|
|
89166
|
+
this._resizeObserver.observe(this.viewPort.nativeElement);
|
|
89167
|
+
}
|
|
89145
89168
|
});
|
|
89146
89169
|
}
|
|
89147
89170
|
/** @hidden @internal */
|
|
@@ -89313,7 +89336,7 @@ class IgxTabsComponent extends IgxTabsDirective {
|
|
|
89313
89336
|
getElementOffset(element) {
|
|
89314
89337
|
return this.dir.rtl ? this.itemsWrapper.nativeElement.offsetWidth - element.offsetLeft - element.offsetWidth : element.offsetLeft;
|
|
89315
89338
|
}
|
|
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 }); }
|
|
89339
|
+
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
89340
|
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
89341
|
}
|
|
89319
89342
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxTabsComponent, decorators: [{
|
|
@@ -89322,7 +89345,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
89322
89345
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
89323
89346
|
type: Inject,
|
|
89324
89347
|
args: [IgxAngularAnimationService]
|
|
89325
|
-
}] }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: IgxDirectionality }], propDecorators: { tabAlignment: [{
|
|
89348
|
+
}] }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: IgxDirectionality }, { type: PlatformUtil }], propDecorators: { tabAlignment: [{
|
|
89326
89349
|
type: Input
|
|
89327
89350
|
}], activation: [{
|
|
89328
89351
|
type: Input
|
|
@@ -89420,10 +89443,12 @@ class IgxTabHeaderComponent extends IgxTabHeaderDirective {
|
|
|
89420
89443
|
/** @hidden @internal */
|
|
89421
89444
|
ngAfterViewInit() {
|
|
89422
89445
|
this.ngZone.runOutsideAngular(() => {
|
|
89423
|
-
this.
|
|
89424
|
-
this.
|
|
89425
|
-
|
|
89426
|
-
|
|
89446
|
+
if (this.platform.isBrowser) {
|
|
89447
|
+
this._resizeObserver = new (getResizeObserver())(() => {
|
|
89448
|
+
this.tabs.realignSelectedIndicator();
|
|
89449
|
+
});
|
|
89450
|
+
this._resizeObserver.observe(this.nativeElement);
|
|
89451
|
+
}
|
|
89427
89452
|
});
|
|
89428
89453
|
}
|
|
89429
89454
|
/** @hidden @internal */
|