igniteui-angular 21.2.0-rc.0 → 21.2.0-rc.2
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/fesm2022/igniteui-angular-accordion.mjs +7 -7
- package/fesm2022/igniteui-angular-action-strip.mjs +10 -10
- package/fesm2022/igniteui-angular-avatar.mjs +7 -7
- package/fesm2022/igniteui-angular-badge.mjs +7 -8
- package/fesm2022/igniteui-angular-badge.mjs.map +1 -1
- package/fesm2022/igniteui-angular-banner.mjs +10 -10
- package/fesm2022/igniteui-angular-bottom-nav.mjs +22 -22
- package/fesm2022/igniteui-angular-button-group.mjs +7 -7
- package/fesm2022/igniteui-angular-calendar.mjs +61 -61
- package/fesm2022/igniteui-angular-card.mjs +31 -31
- package/fesm2022/igniteui-angular-carousel.mjs +32 -33
- package/fesm2022/igniteui-angular-carousel.mjs.map +1 -1
- package/fesm2022/igniteui-angular-chat-extras.mjs +6 -6
- package/fesm2022/igniteui-angular-chat.mjs +12 -12
- package/fesm2022/igniteui-angular-checkbox.mjs +7 -7
- package/fesm2022/igniteui-angular-chips.mjs +10 -10
- package/fesm2022/igniteui-angular-combo.mjs +52 -52
- package/fesm2022/igniteui-angular-core.mjs +63 -110
- package/fesm2022/igniteui-angular-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-date-picker.mjs +38 -38
- package/fesm2022/igniteui-angular-dialog.mjs +13 -13
- package/fesm2022/igniteui-angular-directives.mjs +191 -191
- package/fesm2022/igniteui-angular-drop-down.mjs +29 -29
- package/fesm2022/igniteui-angular-expansion-panel.mjs +28 -28
- package/fesm2022/igniteui-angular-grids-core.mjs +454 -453
- package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-grid.mjs +49 -49
- package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +37 -37
- package/fesm2022/igniteui-angular-grids-lite.mjs +12 -12
- package/fesm2022/igniteui-angular-grids-pivot-grid.mjs +79 -79
- package/fesm2022/igniteui-angular-grids-tree-grid.mjs +55 -55
- package/fesm2022/igniteui-angular-icon.mjs +10 -10
- package/fesm2022/igniteui-angular-input-group.mjs +25 -25
- package/fesm2022/igniteui-angular-list.mjs +40 -40
- package/fesm2022/igniteui-angular-navbar.mjs +13 -13
- package/fesm2022/igniteui-angular-navigation-drawer.mjs +16 -16
- package/fesm2022/igniteui-angular-paginator.mjs +19 -19
- package/fesm2022/igniteui-angular-progressbar.mjs +19 -19
- package/fesm2022/igniteui-angular-query-builder.mjs +22 -22
- package/fesm2022/igniteui-angular-radio.mjs +14 -14
- package/fesm2022/igniteui-angular-radio.mjs.map +1 -1
- package/fesm2022/igniteui-angular-select.mjs +25 -25
- package/fesm2022/igniteui-angular-simple-combo.mjs +7 -7
- package/fesm2022/igniteui-angular-slider.mjs +39 -42
- package/fesm2022/igniteui-angular-slider.mjs.map +1 -1
- package/fesm2022/igniteui-angular-snackbar.mjs +7 -7
- package/fesm2022/igniteui-angular-splitter.mjs +13 -13
- package/fesm2022/igniteui-angular-stepper.mjs +38 -38
- package/fesm2022/igniteui-angular-stepper.mjs.map +1 -1
- package/fesm2022/igniteui-angular-switch.mjs +7 -7
- package/fesm2022/igniteui-angular-tabs.mjs +44 -43
- package/fesm2022/igniteui-angular-tabs.mjs.map +1 -1
- package/fesm2022/igniteui-angular-time-picker.mjs +19 -19
- package/fesm2022/igniteui-angular-toast.mjs +7 -7
- package/fesm2022/igniteui-angular-tree.mjs +28 -28
- package/lib/core/styles/components/badge/_badge-theme.scss +6 -1
- package/lib/core/styles/components/button-group/_button-group-theme.scss +78 -324
- package/lib/core/styles/components/chip/_chip-theme.scss +6 -2
- package/lib/core/styles/components/grid/_excel-filtering-theme.scss +16 -118
- package/lib/core/styles/components/grid/_grid-theme-builder.scss +391 -0
- package/lib/core/styles/components/grid/_grid-theme.scss +37 -39
- package/lib/core/styles/components/input/_input-group-theme.scss +1 -1
- package/lib/core/styles/components/progress/circular/_circular-theme.scss +1 -1
- package/lib/core/styles/components/query-builder/_query-builder-theme.scss +8 -8
- package/lib/core/styles/components/select/_select-theme.scss +1 -1
- package/migrations/common/ServerHost.js +35 -2
- package/migrations/common/UpdateChanges.js +37 -4
- package/migrations/common/tsLogger.js +34 -1
- package/migrations/common/tsUtils.js +35 -2
- package/migrations/common/util.d.ts +1 -1
- package/migrations/common/util.js +34 -1
- package/migrations/migration-collection.json +5 -0
- package/migrations/update-11_0_0/index.js +2 -3
- package/migrations/update-12_0_0/index.d.ts +1 -1
- package/migrations/update-12_0_0/index.js +2 -3
- package/migrations/update-12_1_0/index.js +2 -3
- package/migrations/update-13_0_0/index.js +2 -3
- package/migrations/update-13_1_0/index.js +2 -3
- package/migrations/update-15_1_0/index.js +2 -3
- package/migrations/update-16_1_0/index.js +2 -3
- package/migrations/update-17_0_0/index.js +36 -4
- package/migrations/update-17_1_0/index.js +2 -3
- package/migrations/update-18_0_0/index.js +2 -2
- package/migrations/update-20_0_6/index.js +3 -4
- package/migrations/update-21_0_0_import-migration/index.js +34 -1
- package/migrations/update-21_1_0_import-migration/index.js +34 -1
- package/migrations/update-21_2_0/changes/theme-changes.json +11 -0
- package/migrations/update-21_2_0/index.d.ts +3 -0
- package/migrations/update-21_2_0/index.js +18 -0
- package/package.json +2 -2
- package/schematics/ng-add/add-normalize.js +34 -1
- package/schematics/ng-add/index.spec.js +34 -1
- package/schematics/tsconfig.tsbuildinfo +1 -1
- package/skills/igniteui-angular-components/references/charts.md +4 -4
- package/skills/igniteui-angular-grids/SKILL.md +2 -0
- package/skills/igniteui-angular-grids/references/data-operations.md +3 -2
- package/skills/igniteui-angular-grids/references/sizing.md +204 -0
- package/skills/igniteui-angular-theming/SKILL.md +0 -3
- 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
- package/types/igniteui-angular-badge.d.ts +0 -2
- package/types/igniteui-angular-carousel.d.ts +0 -2
- package/types/igniteui-angular-core.d.ts +8 -35
- package/types/igniteui-angular-grids-core.d.ts +5 -0
- package/types/igniteui-angular-radio.d.ts +1 -1
- package/types/igniteui-angular-slider.d.ts +0 -2
- package/types/igniteui-angular-stepper.d.ts +0 -1
- package/types/igniteui-angular-tabs.d.ts +2 -4
- package/migrations/common/import-helper.js +0 -14
- package/skills/igniteui-angular-theming/references/contributing.md +0 -471
|
@@ -3,7 +3,7 @@ import { IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-g
|
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { inject, EventEmitter, booleanAttribute, Input, Output, ViewChild, ContentChild, Directive, ElementRef, HostBinding, Component, HostListener, ContentChildren, NgZone, NgModule } from '@angular/core';
|
|
5
5
|
import { CarouselAnimationDirection, IgxCarouselComponentBase } from 'igniteui-angular/carousel';
|
|
6
|
-
import { PlatformUtil,
|
|
6
|
+
import { PlatformUtil, isLeftToRight, getResizeObserver } from 'igniteui-angular/core';
|
|
7
7
|
import { NgClass, NgTemplateOutlet } from '@angular/common';
|
|
8
8
|
import { IgxRippleDirective, IgxIconButtonDirective } from 'igniteui-angular/directives';
|
|
9
9
|
import { IgxIconComponent } from 'igniteui-angular/icon';
|
|
@@ -50,10 +50,10 @@ class IgxTabItemDirective {
|
|
|
50
50
|
this.selectedChange.emit(this._selected);
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
54
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.2.
|
|
53
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
54
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.2.9", type: IgxTabItemDirective, isStandalone: true, inputs: { disabled: ["disabled", "disabled", booleanAttribute], selected: ["selected", "selected", booleanAttribute] }, outputs: { selectedChange: "selectedChange" }, queries: [{ propertyName: "headerComponent", first: true, predicate: IgxTabHeaderBase, descendants: true }, { propertyName: "panelComponent", first: true, predicate: IgxTabContentBase, descendants: true }], viewQueries: [{ propertyName: "headerTemplate", first: true, predicate: ["headerTemplate"], descendants: true, static: true }, { propertyName: "panelTemplate", first: true, predicate: ["panelTemplate"], descendants: true, static: true }], ngImport: i0 }); }
|
|
55
55
|
}
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabItemDirective, decorators: [{
|
|
57
57
|
type: Directive
|
|
58
58
|
}], propDecorators: { headerComponent: [{
|
|
59
59
|
type: ContentChild,
|
|
@@ -98,10 +98,10 @@ class IgxTabContentDirective {
|
|
|
98
98
|
get nativeElement() {
|
|
99
99
|
return this.elementRef.nativeElement;
|
|
100
100
|
}
|
|
101
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
102
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
101
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
102
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: IgxTabContentDirective, isStandalone: true, host: { properties: { "attr.role": "this.role", "attr.tabindex": "this.tabIndex", "style.z-index": "this.zIndex" } }, ngImport: i0 }); }
|
|
103
103
|
}
|
|
104
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabContentDirective, decorators: [{
|
|
105
105
|
type: Directive
|
|
106
106
|
}], propDecorators: { role: [{
|
|
107
107
|
type: HostBinding,
|
|
@@ -120,10 +120,10 @@ class IgxTabContentComponent extends IgxTabContentDirective {
|
|
|
120
120
|
/** @hidden */
|
|
121
121
|
this.cssClass = true;
|
|
122
122
|
}
|
|
123
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
124
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
123
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabContentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
124
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: IgxTabContentComponent, isStandalone: true, selector: "igx-tab-content", host: { properties: { "class.igx-tabs__panel": "this.cssClass" } }, providers: [{ provide: IgxTabContentBase, useExisting: IgxTabContentComponent }], usesInheritance: true, ngImport: i0, template: "@if (tab.selected || tab.previous) {\n <ng-content></ng-content>\n}\n" }); }
|
|
125
125
|
}
|
|
126
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabContentComponent, decorators: [{
|
|
127
127
|
type: Component,
|
|
128
128
|
args: [{ selector: 'igx-tab-content', providers: [{ provide: IgxTabContentBase, useExisting: IgxTabContentComponent }], imports: [], template: "@if (tab.selected || tab.previous) {\n <ng-content></ng-content>\n}\n" }]
|
|
129
129
|
}], propDecorators: { cssClass: [{
|
|
@@ -166,10 +166,10 @@ class IgxTabHeaderDirective {
|
|
|
166
166
|
get nativeElement() {
|
|
167
167
|
return this.elementRef.nativeElement;
|
|
168
168
|
}
|
|
169
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
170
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
169
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
170
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: IgxTabHeaderDirective, isStandalone: true, host: { listeners: { "click": "onClick()" }, properties: { "attr.role": "this.role", "attr.tabindex": "this.tabIndex", "attr.aria-selected": "this.ariaSelected", "attr.aria-disabled": "this.ariaDisabled" } }, ngImport: i0 }); }
|
|
171
171
|
}
|
|
172
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
172
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabHeaderDirective, decorators: [{
|
|
173
173
|
type: Directive
|
|
174
174
|
}], propDecorators: { role: [{
|
|
175
175
|
type: HostBinding,
|
|
@@ -191,8 +191,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
191
191
|
class IgxTabsDirective extends IgxCarouselComponentBase {
|
|
192
192
|
constructor() {
|
|
193
193
|
super(...arguments);
|
|
194
|
-
|
|
195
|
-
this.dir = inject(_IgxDirectionality);
|
|
194
|
+
this._element = inject(ElementRef);
|
|
196
195
|
/**
|
|
197
196
|
* Enables/disables the transition animation of the contents.
|
|
198
197
|
*/
|
|
@@ -387,13 +386,14 @@ class IgxTabsDirective extends IgxCarouselComponentBase {
|
|
|
387
386
|
}
|
|
388
387
|
triggerPanelAnimations(oldSelectedIndex) {
|
|
389
388
|
const item = this.items.get(this._selectedIndex);
|
|
389
|
+
const rtl = !isLeftToRight(this._element.nativeElement);
|
|
390
390
|
if (item &&
|
|
391
391
|
!this.disableAnimation &&
|
|
392
392
|
this.hasPanels &&
|
|
393
393
|
this.currentItem &&
|
|
394
394
|
!this.currentItem.selected) {
|
|
395
|
-
item.direction = (!
|
|
396
|
-
(
|
|
395
|
+
item.direction = (!rtl && this._selectedIndex > oldSelectedIndex) ||
|
|
396
|
+
(rtl && this._selectedIndex < oldSelectedIndex)
|
|
397
397
|
? CarouselAnimationDirection.NEXT : CarouselAnimationDirection.PREV;
|
|
398
398
|
if (this.previousItem && this.previousItem.previous) {
|
|
399
399
|
this.previousItem.previous = false;
|
|
@@ -407,10 +407,10 @@ class IgxTabsDirective extends IgxCarouselComponentBase {
|
|
|
407
407
|
this.currentItem = item;
|
|
408
408
|
}
|
|
409
409
|
}
|
|
410
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
411
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.2.
|
|
410
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabsDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
411
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "21.2.9", type: IgxTabsDirective, isStandalone: true, inputs: { selectedIndex: "selectedIndex", disableAnimation: ["disableAnimation", "disableAnimation", booleanAttribute] }, outputs: { selectedIndexChange: "selectedIndexChange", selectedIndexChanging: "selectedIndexChanging", selectedItemChange: "selectedItemChange" }, queries: [{ propertyName: "items", predicate: IgxTabItemDirective }, { propertyName: "panels", predicate: IgxTabContentBase, descendants: true }], usesInheritance: true, ngImport: i0 }); }
|
|
412
412
|
}
|
|
413
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
413
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabsDirective, decorators: [{
|
|
414
414
|
type: Directive
|
|
415
415
|
}], propDecorators: { selectedIndex: [{
|
|
416
416
|
type: Input
|
|
@@ -680,15 +680,16 @@ class IgxTabsComponent extends IgxTabsDirective {
|
|
|
680
680
|
return itemsContainerWidth;
|
|
681
681
|
}
|
|
682
682
|
getOffset(offset) {
|
|
683
|
-
return this.
|
|
683
|
+
return isLeftToRight(this._element.nativeElement) ? offset : -offset;
|
|
684
684
|
}
|
|
685
685
|
getElementOffset(element) {
|
|
686
|
-
|
|
686
|
+
const rtl = !isLeftToRight(this._element.nativeElement);
|
|
687
|
+
return rtl ? this.itemsWrapper.nativeElement.offsetWidth - element.offsetLeft - element.offsetWidth : element.offsetLeft;
|
|
687
688
|
}
|
|
688
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
689
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
689
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
690
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", 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 @for (tab of items; track tab; let i = $index) {\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n }\n </div>\n @if (items.length > 0) {\n <div #selectedIndicator class=\"igx-tabs__header-active-indicator\">\n </div>\n }\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 @for (tab of items; track tab; let i = $index) {\n <ng-container *ngTemplateOutlet=\"tab.panelTemplate\"></ng-container>\n }\n</div>\n", dependencies: [{ kind: "directive", type: IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["ariaHidden", "family", "name", "active"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IgxIconButtonDirective, selector: "[igxIconButton]", inputs: ["igxIconButton"] }] }); }
|
|
690
691
|
}
|
|
691
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
692
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabsComponent, decorators: [{
|
|
692
693
|
type: Component,
|
|
693
694
|
args: [{ selector: 'igx-tabs', providers: [{ provide: IgxTabsBase, useExisting: IgxTabsComponent }], imports: [IgxRippleDirective, IgxIconComponent, NgClass, NgTemplateOutlet, IgxIconButtonDirective], 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 @for (tab of items; track tab; let i = $index) {\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n }\n </div>\n @if (items.length > 0) {\n <div #selectedIndicator class=\"igx-tabs__header-active-indicator\">\n </div>\n }\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 @for (tab of items; track tab; let i = $index) {\n <ng-container *ngTemplateOutlet=\"tab.panelTemplate\"></ng-container>\n }\n</div>\n" }]
|
|
694
695
|
}], propDecorators: { tabAlignment: [{
|
|
@@ -726,7 +727,6 @@ class IgxTabHeaderComponent extends IgxTabHeaderDirective {
|
|
|
726
727
|
super(...arguments);
|
|
727
728
|
this.tabs = inject(IgxTabsComponent);
|
|
728
729
|
this.ngZone = inject(NgZone);
|
|
729
|
-
this.dir = inject(_IgxDirectionality);
|
|
730
730
|
/** @hidden @internal */
|
|
731
731
|
this.cssClass = true;
|
|
732
732
|
}
|
|
@@ -803,7 +803,8 @@ class IgxTabHeaderComponent extends IgxTabHeaderDirective {
|
|
|
803
803
|
});
|
|
804
804
|
}
|
|
805
805
|
getNewSelectionIndex(newIndex, itemsArray, key, hasDisabledItems) {
|
|
806
|
-
|
|
806
|
+
const rtl = !isLeftToRight(this.nativeElement);
|
|
807
|
+
if ((key === this.platform.KEYMAP.ARROW_RIGHT && !rtl) || (key === this.platform.KEYMAP.ARROW_LEFT && rtl)) {
|
|
807
808
|
newIndex = newIndex === itemsArray.length - 1 ? 0 : newIndex + 1;
|
|
808
809
|
while (hasDisabledItems && itemsArray[newIndex].disabled && newIndex < itemsArray.length) {
|
|
809
810
|
newIndex = newIndex === itemsArray.length - 1 ? 0 : newIndex + 1;
|
|
@@ -817,10 +818,10 @@ class IgxTabHeaderComponent extends IgxTabHeaderDirective {
|
|
|
817
818
|
}
|
|
818
819
|
return newIndex;
|
|
819
820
|
}
|
|
820
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
821
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
821
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabHeaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
822
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: IgxTabHeaderComponent, isStandalone: true, selector: "igx-tab-header", host: { listeners: { "keydown": "keyDown($event)" }, properties: { "class.igx-tabs__header-item--selected": "this.provideCssClassSelected", "class.igx-tabs__header-item--disabled": "this.provideCssClassDisabled", "class.igx-tabs__header-item": "this.cssClass" } }, providers: [{ provide: IgxTabHeaderBase, useExisting: IgxTabHeaderComponent }], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n\n<div class=\"igx-tabs__header-item-inner\">\n <ng-content></ng-content>\n</div>\n\n<ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n" }); }
|
|
822
823
|
}
|
|
823
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
824
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabHeaderComponent, decorators: [{
|
|
824
825
|
type: Component,
|
|
825
826
|
args: [{ selector: 'igx-tab-header', providers: [{ provide: IgxTabHeaderBase, useExisting: IgxTabHeaderComponent }], standalone: true, template: "<ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n\n<div class=\"igx-tabs__header-item-inner\">\n <ng-content></ng-content>\n</div>\n\n<ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n" }]
|
|
826
827
|
}], propDecorators: { provideCssClassSelected: [{
|
|
@@ -838,19 +839,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
838
839
|
}] } });
|
|
839
840
|
|
|
840
841
|
class IgxTabItemComponent extends IgxTabItemDirective {
|
|
841
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
842
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
842
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
843
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: IgxTabItemComponent, isStandalone: true, selector: "igx-tab-item", providers: [{ provide: IgxTabItemDirective, useExisting: IgxTabItemComponent }], usesInheritance: true, ngImport: i0, template: "<ng-template #headerTemplate>\n <ng-content select=\"igx-tab-header\"></ng-content>\n</ng-template>\n<ng-template #panelTemplate>\n <ng-content select=\"igx-tab-content\"></ng-content>\n</ng-template>\n" }); }
|
|
843
844
|
}
|
|
844
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
845
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabItemComponent, decorators: [{
|
|
845
846
|
type: Component,
|
|
846
847
|
args: [{ selector: 'igx-tab-item', providers: [{ provide: IgxTabItemDirective, useExisting: IgxTabItemComponent }], standalone: true, template: "<ng-template #headerTemplate>\n <ng-content select=\"igx-tab-header\"></ng-content>\n</ng-template>\n<ng-template #panelTemplate>\n <ng-content select=\"igx-tab-content\"></ng-content>\n</ng-template>\n" }]
|
|
847
848
|
}] });
|
|
848
849
|
|
|
849
850
|
class IgxTabHeaderLabelDirective {
|
|
850
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
851
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
851
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabHeaderLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
852
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: IgxTabHeaderLabelDirective, isStandalone: true, selector: "[igxTabHeaderLabel],igx-tab-header-label", ngImport: i0 }); }
|
|
852
853
|
}
|
|
853
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
854
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabHeaderLabelDirective, decorators: [{
|
|
854
855
|
type: Directive,
|
|
855
856
|
args: [{
|
|
856
857
|
selector: '[igxTabHeaderLabel],igx-tab-header-label',
|
|
@@ -858,10 +859,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
858
859
|
}]
|
|
859
860
|
}] });
|
|
860
861
|
class IgxTabHeaderIconDirective {
|
|
861
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
862
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
862
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabHeaderIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
863
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.9", type: IgxTabHeaderIconDirective, isStandalone: true, selector: "[igxTabHeaderIcon],igx-tab-header-icon", ngImport: i0 }); }
|
|
863
864
|
}
|
|
864
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
865
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabHeaderIconDirective, decorators: [{
|
|
865
866
|
type: Directive,
|
|
866
867
|
args: [{
|
|
867
868
|
selector: '[igxTabHeaderIcon],igx-tab-header-icon',
|
|
@@ -886,11 +887,11 @@ const IGX_TABS_DIRECTIVES = [
|
|
|
886
887
|
* IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components
|
|
887
888
|
*/
|
|
888
889
|
class IgxTabsModule {
|
|
889
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
890
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.
|
|
891
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.
|
|
890
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
891
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: IgxTabsModule, imports: [IgxTabsComponent, IgxTabItemComponent, IgxTabHeaderComponent, IgxTabContentComponent, IgxTabHeaderLabelDirective, IgxTabHeaderIconDirective, i6.IgxPrefixDirective, i6.IgxSuffixDirective], exports: [IgxTabsComponent, IgxTabItemComponent, IgxTabHeaderComponent, IgxTabContentComponent, IgxTabHeaderLabelDirective, IgxTabHeaderIconDirective, i6.IgxPrefixDirective, i6.IgxSuffixDirective] }); }
|
|
892
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabsModule, imports: [IgxTabsComponent] }); }
|
|
892
893
|
}
|
|
893
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
894
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: IgxTabsModule, decorators: [{
|
|
894
895
|
type: NgModule,
|
|
895
896
|
args: [{
|
|
896
897
|
imports: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igniteui-angular-tabs.mjs","sources":["../../../projects/igniteui-angular/tabs/src/tabs/tabs.base.ts","../../../projects/igniteui-angular/tabs/src/tabs/tab-item.directive.ts","../../../projects/igniteui-angular/tabs/src/tabs/tab-content.directive.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-content.component.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-content.component.html","../../../projects/igniteui-angular/tabs/src/tabs/tab-header.directive.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs.directive.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tabs.component.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tabs.component.html","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-header.component.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-header.component.html","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-item.component.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-item.component.html","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tabs.directives.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/public_api.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tabs.module.ts","../../../projects/igniteui-angular/tabs/src/igniteui-angular-tabs.ts"],"sourcesContent":["import { QueryList, TemplateRef } from '@angular/core';\n\n/** @hidden */\nexport abstract class IgxTabsBase {\n public items: QueryList<IgxTabItemBase>;\n public selectedIndex: number;\n public abstract selectTab(tab: IgxTabItemBase, selected: boolean);\n}\n\n/** @hidden */\nexport abstract class IgxTabItemBase {\n public disabled: boolean;\n public selected: boolean;\n public headerTemplate: TemplateRef<any>;\n public panelTemplate: TemplateRef<any>;\n public headerComponent: IgxTabHeaderBase;\n public panelComponent: IgxTabContentBase;\n}\n\n/** @hidden */\nexport abstract class IgxTabHeaderBase {\n public nativeElement: HTMLElement;\n}\n\n/** @hidden */\nexport abstract class IgxTabContentBase {\n public nativeElement: HTMLElement;\n}\n\n","import { ContentChild, Directive, EventEmitter, Input, Output, TemplateRef, ViewChild, booleanAttribute, inject } from '@angular/core';\nimport { IgxTabHeaderBase, IgxTabItemBase, IgxTabContentBase, IgxTabsBase } from './tabs.base';\nimport { CarouselAnimationDirection, IgxSlideComponentBase } from 'igniteui-angular/carousel';\n\n@Directive()\nexport abstract class IgxTabItemDirective implements IgxTabItemBase, IgxSlideComponentBase {\n /** @hidden */\n private tabs = inject(IgxTabsBase);\n\n /** @hidden */\n @ContentChild(IgxTabHeaderBase)\n public headerComponent: IgxTabHeaderBase;\n\n /** @hidden */\n @ContentChild(IgxTabContentBase)\n public panelComponent: IgxTabContentBase;\n\n /** @hidden */\n @ViewChild('headerTemplate', { static: true })\n public headerTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('panelTemplate', { static: true })\n public panelTemplate: TemplateRef<any>;\n\n /**\n * Output to enable support for two-way binding on [(selected)]\n */\n @Output()\n public selectedChange = new EventEmitter<boolean>();\n\n /**\n * Disables the item.\n */\n @Input({ transform: booleanAttribute })\n public disabled = false;\n\n /** @hidden */\n public direction = CarouselAnimationDirection.NONE;\n /** @hidden */\n public previous: boolean;\n\n private _selected = false;\n\n /**\n * Gets/Sets whether an item is selected.\n */\n @Input({ transform: booleanAttribute })\n public get selected(): boolean {\n return this._selected;\n }\n\n public set selected(value: boolean) {\n if (this._selected !== value) {\n this._selected = value;\n this.tabs.selectTab(this, this._selected);\n this.selectedChange.emit(this._selected);\n }\n }\n}\n","import { Directive, ElementRef, HostBinding, inject } from '@angular/core';\nimport { IgxTabItemDirective } from './tab-item.directive';\nimport { IgxTabContentBase } from './tabs.base';\n\n@Directive()\nexport abstract class IgxTabContentDirective implements IgxTabContentBase {\n /** @hidden */\n public tab = inject(IgxTabItemDirective);\n /** @hidden */\n private elementRef = inject(ElementRef<HTMLElement>);\n\n /** @hidden */\n @HostBinding('attr.role')\n public role = 'tabpanel';\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n public get tabIndex() {\n return this.tab.selected ? 0 : -1;\n }\n\n /** @hidden */\n @HostBinding('style.z-index')\n public get zIndex() {\n return this.tab.selected ? 'auto' : -1;\n }\n\n /** @hidden */\n public get nativeElement() {\n return this.elementRef.nativeElement;\n }\n}\n","import { Component, HostBinding } from '@angular/core';\nimport { IgxTabContentDirective } from '../tab-content.directive';\nimport { IgxTabContentBase } from '../tabs.base';\n\n@Component({\n selector: 'igx-tab-content',\n templateUrl: 'tab-content.component.html',\n providers: [{ provide: IgxTabContentBase, useExisting: IgxTabContentComponent }],\n imports: []\n})\nexport class IgxTabContentComponent extends IgxTabContentDirective {\n /** @hidden */\n @HostBinding('class.igx-tabs__panel')\n public cssClass = true;\n}\n","@if (tab.selected || tab.previous) {\n <ng-content></ng-content>\n}\n","\nimport { Directive, ElementRef, HostBinding, HostListener, inject } from '@angular/core';\nimport { PlatformUtil } from 'igniteui-angular/core';\nimport { IgxTabItemDirective } from './tab-item.directive';\nimport { IgxTabHeaderBase, IgxTabsBase } from './tabs.base';\n\n@Directive()\nexport abstract class IgxTabHeaderDirective implements IgxTabHeaderBase {\n /** @hidden */\n protected tabs = inject(IgxTabsBase);\n /** @hidden */\n public tab = inject(IgxTabItemDirective);\n /** @hidden */\n private elementRef = inject(ElementRef<HTMLElement>);\n /** @hidden */\n protected platform = inject(PlatformUtil);\n\n /** @hidden */\n @HostBinding('attr.role')\n public role = 'tab';\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n public get tabIndex() {\n return this.tab.selected ? 0 : -1;\n }\n\n /** @hidden */\n @HostBinding('attr.aria-selected')\n public get ariaSelected() {\n return this.tab.selected;\n }\n\n /** @hidden */\n @HostBinding('attr.aria-disabled')\n public get ariaDisabled() {\n return this.tab.disabled;\n }\n\n /** @hidden */\n @HostListener('click')\n public onClick() {\n if (this.tab.panelComponent) {\n this.tabs.selectTab(this.tab, true);\n }\n }\n\n /** @hidden */\n public get nativeElement() {\n return this.elementRef.nativeElement;\n }\n}\n","import {\n AfterViewInit, ContentChildren, Directive, EventEmitter,\n Input, OnDestroy, Output, QueryList, booleanAttribute,\n inject\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { IBaseEventArgs, ɵIgxDirectionality } from 'igniteui-angular/core';\nimport { IgxTabItemDirective } from './tab-item.directive';\nimport { IgxTabContentBase, IgxTabsBase } from './tabs.base';\nimport { IgxCarouselComponentBase, CarouselAnimationDirection } from 'igniteui-angular/carousel';\n\nexport interface ITabsBaseEventArgs extends IBaseEventArgs {\n readonly owner: IgxTabsDirective;\n}\n\nexport interface ITabsSelectedIndexChangingEventArgs extends ITabsBaseEventArgs {\n cancel: boolean;\n readonly oldIndex: number;\n newIndex: number;\n}\n\nexport interface ITabsSelectedItemChangeEventArgs extends ITabsBaseEventArgs {\n readonly oldItem: IgxTabItemDirective;\n readonly newItem: IgxTabItemDirective;\n}\n\n@Directive()\nexport abstract class IgxTabsDirective extends IgxCarouselComponentBase implements IgxTabsBase, AfterViewInit, OnDestroy {\n /** @hidden */\n public dir = inject(ɵIgxDirectionality);\n\n /**\n * Gets/Sets the index of the selected item.\n * Default value is 0 if contents are defined otherwise defaults to -1.\n */\n @Input()\n public get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n public set selectedIndex(value: number) {\n if (this._selectedIndex !== value) {\n let newIndex = value;\n const oldIndex = this._selectedIndex;\n const args: ITabsSelectedIndexChangingEventArgs = {\n owner: this,\n cancel: false,\n oldIndex,\n newIndex\n };\n this.selectedIndexChanging.emit(args);\n\n if (!args.cancel) {\n newIndex = args.newIndex;\n this._selectedIndex = newIndex;\n this.selectedIndexChange.emit(this._selectedIndex);\n }\n\n this.updateSelectedTabs(oldIndex);\n }\n }\n\n /**\n * Enables/disables the transition animation of the contents.\n */\n @Input({ transform: booleanAttribute })\n public disableAnimation = false;\n\n /**\n * Output to enable support for two-way binding on [(selectedIndex)]\n */\n @Output()\n public selectedIndexChange = new EventEmitter<number>();\n\n /**\n * Emitted when the selected index is about to change.\n */\n @Output()\n public selectedIndexChanging = new EventEmitter<ITabsSelectedIndexChangingEventArgs>();\n\n /**\n * Emitted when the selected item is changed.\n */\n @Output()\n public selectedItemChange = new EventEmitter<ITabsSelectedItemChangeEventArgs>();\n\n /**\n * Returns the items.\n */\n @ContentChildren(IgxTabItemDirective)\n public items: QueryList<IgxTabItemDirective>;\n\n /**\n * Gets the selected item.\n */\n public get selectedItem(): IgxTabItemDirective {\n return this.items && this.selectedIndex >= 0 && this.selectedIndex < this.items.length ?\n this.items.get(this.selectedIndex) : null;\n }\n\n /** @hidden */\n @ContentChildren(IgxTabContentBase, { descendants: true })\n public panels: QueryList<IgxTabContentBase>;\n\n /** @hidden */\n protected override currentItem: IgxTabItemDirective;\n /** @hidden */\n protected override previousItem: IgxTabItemDirective;\n /** @hidden */\n protected componentName: string;\n\n private _selectedIndex = -1;\n private _itemChanges$: Subscription;\n\n /** @hidden */\n public ngAfterViewInit(): void {\n if (this._selectedIndex === -1) {\n const hasSelectedTab = this.items.some((tab, i) => {\n if (tab.selected) {\n this._selectedIndex = i;\n }\n return tab.selected;\n });\n\n if (!hasSelectedTab && this.hasPanels) {\n this._selectedIndex = 0;\n }\n }\n\n // Use promise to avoid expression changed after check error\n Promise.resolve().then(() => {\n this.updateSelectedTabs(null, false);\n });\n\n this._itemChanges$ = this.items.changes.subscribe(() => {\n this.onItemChanges();\n });\n\n this.setAttributes();\n }\n\n /** @hidden */\n public override ngOnDestroy(): void {\n super.ngOnDestroy();\n if (this._itemChanges$) {\n this._itemChanges$.unsubscribe();\n }\n }\n\n /** @hidden */\n public selectTab(tab: IgxTabItemDirective, selected: boolean): void {\n if (!this.items) {\n return;\n }\n\n const tabs = this.items.toArray();\n\n if (selected) {\n const index = tabs.indexOf(tab);\n if (index > -1) {\n this.selectedIndex = index;\n }\n } else {\n if (tabs.every(t => !t.selected)) {\n this.selectedIndex = -1;\n }\n }\n }\n\n /** @hidden */\n protected getPreviousElement(): HTMLElement {\n return this.previousItem.panelComponent.nativeElement;\n }\n\n /** @hidden */\n protected getCurrentElement(): HTMLElement {\n return this.currentItem.panelComponent.nativeElement;\n }\n\n /** @hidden */\n protected scrollTabHeaderIntoView() {\n }\n\n /** @hidden */\n protected onItemChanges() {\n this.setAttributes();\n\n // Check if there is selected tab\n let selectedIndex = -1;\n this.items.some((tab, i) => {\n if (tab.selected) {\n selectedIndex = i;\n }\n return tab.selected;\n });\n\n if (selectedIndex >= 0) {\n // Set the selected index to the tab that has selected=true\n Promise.resolve().then(() => {\n this.selectedIndex = selectedIndex;\n });\n } else {\n if (this.selectedIndex >= 0 && this.selectedIndex < this.items.length) {\n // Select the tab on the same index the previous selected tab was\n Promise.resolve().then(() => {\n this.updateSelectedTabs(null);\n });\n } else if (this.selectedIndex >= this.items.length) {\n // Select the last tab\n Promise.resolve().then(() => {\n this.selectedIndex = this.items.length - 1;\n });\n }\n }\n }\n\n private setAttributes() {\n this.items.forEach(item => {\n if (item.panelComponent && !item.headerComponent.nativeElement.getAttribute('id')) {\n const id = this.getNextTabId();\n const tabHeaderId = `${this.componentName}-header-${id}`;\n const tabPanelId = `${this.componentName}-content-${id}`;\n\n this.setHeaderAttribute(item, 'id', tabHeaderId);\n this.setHeaderAttribute(item, 'aria-controls', tabPanelId);\n this.setPanelAttribute(item, 'id', tabPanelId);\n this.setPanelAttribute(item, 'aria-labelledby', tabHeaderId);\n }\n });\n }\n\n private setHeaderAttribute(item: IgxTabItemDirective, attrName: string, value: string) {\n item.headerComponent.nativeElement.setAttribute(attrName, value);\n }\n\n private setPanelAttribute(item: IgxTabItemDirective, attrName: string, value: string) {\n item.panelComponent.nativeElement.setAttribute(attrName, value);\n }\n\n private get hasPanels() {\n return this.panels && this.panels.length;\n }\n\n private updateSelectedTabs(oldSelectedIndex: number, raiseEvent = true) {\n if (!this.items) {\n return;\n }\n\n let newTab: IgxTabItemDirective;\n const oldTab = this.currentItem;\n\n // First select the new tab\n if (this._selectedIndex >= 0 && this._selectedIndex < this.items.length) {\n newTab = this.items.get(this._selectedIndex);\n newTab.selected = true;\n }\n // Then unselect the other tabs\n this.items.forEach((tab, i) => {\n if (i !== this._selectedIndex) {\n tab.selected = false;\n }\n });\n\n if (this._selectedIndex !== oldSelectedIndex) {\n this.scrollTabHeaderIntoView();\n this.triggerPanelAnimations(oldSelectedIndex);\n\n if (raiseEvent && newTab !== oldTab) {\n this.selectedItemChange.emit({\n owner: this,\n newItem: newTab,\n oldItem: oldTab\n });\n }\n }\n }\n\n private triggerPanelAnimations(oldSelectedIndex: number) {\n const item = this.items.get(this._selectedIndex);\n\n if (item &&\n !this.disableAnimation &&\n this.hasPanels &&\n this.currentItem &&\n !this.currentItem.selected) {\n item.direction = (!this.dir.rtl && this._selectedIndex > oldSelectedIndex) ||\n (this.dir.rtl && this._selectedIndex < oldSelectedIndex)\n ? CarouselAnimationDirection.NEXT : CarouselAnimationDirection.PREV;\n\n if (this.previousItem && this.previousItem.previous) {\n this.previousItem.previous = false;\n }\n this.currentItem.direction = item.direction;\n\n this.previousItem = this.currentItem;\n this.currentItem = item;\n this.triggerAnimations();\n } else {\n this.currentItem = item;\n }\n }\n\n /** @hidden */\n protected abstract getNextTabId();\n}\n","import { AfterViewInit, Component, ElementRef, HostBinding, inject, Input, NgZone, OnDestroy, ViewChild } from '@angular/core';\nimport { IgxTabsBase } from '../tabs.base';\nimport { IgxTabsDirective } from '../tabs.directive';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { IgxIconButtonDirective, IgxRippleDirective } from 'igniteui-angular/directives';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { getResizeObserver, PlatformUtil } from 'igniteui-angular/core';\n\nexport const IgxTabsAlignment = {\n start: 'start',\n end: 'end',\n center: 'center',\n justify: 'justify'\n} as const;\n\n/** @hidden */\nconst enum TabScrollButtonStyle {\n Enabled = 'enabled',\n Disabled = 'disabled',\n NotDisplayed = 'not_displayed'\n}\n\nexport type IgxTabsAlignment = (typeof IgxTabsAlignment)[keyof typeof IgxTabsAlignment];\n\n/** @hidden */\nlet NEXT_TAB_ID = 0;\n\n/**\n * Tabs component is used to organize or switch between similar data sets.\n *\n * @igxModule IgxTabsModule\n *\n * @igxTheme igx-tabs-theme\n *\n * @igxKeywords tabs\n *\n * @igxGroup Layouts\n *\n * @remarks\n * The Ignite UI for Angular Tabs component places tabs at the top and allows for scrolling when there are multiple tab items on the screen.\n *\n * @example\n * ```html\n * <igx-tabs>\n * <igx-tab-item>\n * <igx-tab-header>\n * <igx-icon igxTabHeaderIcon>folder</igx-icon>\n * <span igxTabHeaderLabel>Tab 1</span>\n * </igx-tab-header>\n * <igx-tab-content>\n * Content 1\n * </igx-tab-content>\n * </igx-tab-item>\n * ...\n * </igx-tabs>\n * ```\n */\n@Component({\n selector: 'igx-tabs',\n templateUrl: 'tabs.component.html',\n providers: [{ provide: IgxTabsBase, useExisting: IgxTabsComponent }],\n imports: [IgxRippleDirective, IgxIconComponent, NgClass, NgTemplateOutlet, IgxIconButtonDirective]\n})\n\nexport class IgxTabsComponent extends IgxTabsDirective implements AfterViewInit, OnDestroy {\n private ngZone = inject(NgZone);\n private platform = inject(PlatformUtil);\n\n\n /**\n * Gets/Sets the tab alignment. Defaults to `start`.\n */\n @Input()\n public get tabAlignment(): string | IgxTabsAlignment {\n return this._tabAlignment;\n }\n\n public set tabAlignment(value: string | IgxTabsAlignment) {\n this._tabAlignment = value;\n requestAnimationFrame(() => {\n this.updateScrollButtons();\n this.realignSelectedIndicator();\n });\n }\n\n /**\n * Determines the tab activation.\n * 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.\n * When set to manual, the tab is only focused. The selection happens after pressing Space or Enter.\n * Defaults is auto.\n */\n @Input()\n public activation: 'auto' | 'manual' = 'auto';\n\n /** @hidden */\n @ViewChild('headerContainer', { static: true })\n public headerContainer: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild('viewPort', { static: true })\n public viewPort: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild('itemsWrapper', { static: true })\n public itemsWrapper: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild('itemsContainer', { static: true })\n public itemsContainer: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild('selectedIndicator')\n public selectedIndicator: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild('scrollPrevButton')\n public scrollPrevButton: ElementRef<HTMLButtonElement>;\n\n /** @hidden */\n @ViewChild('scrollNextButton')\n public scrollNextButton: ElementRef<HTMLButtonElement>;\n\n /** @hidden */\n @HostBinding('class.igx-tabs')\n public defaultClass = true;\n\n /** @hidden */\n public offset = 0;\n\n /** @hidden */\n protected override componentName = 'igx-tabs';\n\n private _tabAlignment: string | IgxTabsAlignment = 'start';\n private _resizeObserver: ResizeObserver;\n\n /** @hidden @internal */\n public override ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n this.ngZone.runOutsideAngular(() => {\n if (this.platform.isBrowser) {\n this._resizeObserver = new (getResizeObserver())(() => {\n this.updateScrollButtons();\n this.realignSelectedIndicator();\n });\n this._resizeObserver.observe(this.headerContainer.nativeElement);\n this._resizeObserver.observe(this.viewPort.nativeElement);\n }\n });\n }\n\n /** @hidden @internal */\n public override ngOnDestroy(): void {\n super.ngOnDestroy();\n\n this.ngZone.runOutsideAngular(() => {\n this._resizeObserver?.disconnect();\n });\n }\n\n /** @hidden */\n public scrollPrev() {\n this.scroll(false);\n }\n\n /** @hidden */\n public scrollNext() {\n this.scroll(true);\n }\n\n /** @hidden */\n public realignSelectedIndicator() {\n if (this.selectedIndex >= 0 && this.selectedIndex < this.items.length) {\n const header = this.items.get(this.selectedIndex).headerComponent.nativeElement;\n this.alignSelectedIndicator(header, 0);\n }\n }\n\n /** @hidden */\n public resolveHeaderScrollClasses() {\n return {\n 'igx-tabs__header-scroll--start': this.tabAlignment === 'start',\n 'igx-tabs__header-scroll--end': this.tabAlignment === 'end',\n 'igx-tabs__header-scroll--center': this.tabAlignment === 'center',\n 'igx-tabs__header-scroll--justify': this.tabAlignment === 'justify',\n };\n }\n\n /** @hidden */\n protected override scrollTabHeaderIntoView() {\n if (this.selectedIndex >= 0) {\n const tabItems = this.items.toArray();\n const tabHeaderNativeElement = tabItems[this.selectedIndex].headerComponent.nativeElement;\n\n // Scroll left if there is need\n if (this.getElementOffset(tabHeaderNativeElement) < this.offset) {\n this.scrollElement(tabHeaderNativeElement, false);\n }\n\n // Scroll right if there is need\n const viewPortOffsetWidth = this.viewPort.nativeElement.offsetWidth;\n const delta = (this.getElementOffset(tabHeaderNativeElement) + tabHeaderNativeElement.offsetWidth) - (viewPortOffsetWidth + this.offset);\n\n // Fix for IE 11, a difference is accumulated from the widths calculations\n if (delta > 1) {\n this.scrollElement(tabHeaderNativeElement, true);\n }\n\n this.alignSelectedIndicator(tabHeaderNativeElement);\n } else {\n this.hideSelectedIndicator();\n }\n }\n\n /** @hidden */\n protected getNextTabId() {\n return NEXT_TAB_ID++;\n }\n\n /** @hidden */\n protected override onItemChanges() {\n super.onItemChanges();\n\n Promise.resolve().then(() => {\n this.updateScrollButtons();\n });\n }\n\n private alignSelectedIndicator(element: HTMLElement, duration = 0.3): void {\n if (this.selectedIndicator) {\n this.selectedIndicator.nativeElement.style.visibility = 'visible';\n this.selectedIndicator.nativeElement.style.transitionDuration = duration > 0 ? `${duration}s` : 'initial';\n this.selectedIndicator.nativeElement.style.width = `${element.offsetWidth}px`;\n this.selectedIndicator.nativeElement.style.transform = `translate(${element.offsetLeft}px)`;\n }\n }\n\n private hideSelectedIndicator(): void {\n if (this.selectedIndicator) {\n this.selectedIndicator.nativeElement.style.visibility = 'hidden';\n }\n }\n\n private scroll(scrollNext: boolean): void {\n const tabsArray = this.items.toArray();\n\n for (let index = 0; index < tabsArray.length; index++) {\n const tab = tabsArray[index];\n const element = tab.headerComponent.nativeElement;\n if (scrollNext) {\n if (element.offsetWidth + this.getElementOffset(element) > this.viewPort.nativeElement.offsetWidth + this.offset) {\n this.scrollElement(element, scrollNext);\n break;\n }\n } else {\n if (this.getElementOffset(element) >= this.offset) {\n this.scrollElement(tabsArray[index - 1].headerComponent.nativeElement, scrollNext);\n break;\n }\n }\n }\n }\n\n private scrollElement(element: any, scrollNext: boolean): void {\n const viewPortWidth = this.viewPort.nativeElement.offsetWidth;\n\n this.offset = (scrollNext) ? element.offsetWidth + this.getElementOffset(element) - viewPortWidth : this.getElementOffset(element);\n this.viewPort.nativeElement.scrollLeft = this.getOffset(this.offset);\n this.updateScrollButtons();\n }\n\n private updateScrollButtons() {\n const itemsContainerWidth = this.getTabItemsContainerWidth();\n\n const scrollPrevButtonStyle = this.resolveLeftScrollButtonStyle(itemsContainerWidth);\n this.setScrollButtonStyle(this.scrollPrevButton.nativeElement, scrollPrevButtonStyle);\n\n const scrollNextButtonStyle = this.resolveRightScrollButtonStyle(itemsContainerWidth);\n this.setScrollButtonStyle(this.scrollNextButton.nativeElement, scrollNextButtonStyle);\n }\n\n private setScrollButtonStyle(button: HTMLButtonElement, buttonStyle: TabScrollButtonStyle) {\n if (buttonStyle === TabScrollButtonStyle.Enabled) {\n button.disabled = false;\n button.style.display = '';\n } else if (buttonStyle === TabScrollButtonStyle.Disabled) {\n button.disabled = true;\n button.style.display = '';\n } else if (buttonStyle === TabScrollButtonStyle.NotDisplayed) {\n button.style.display = 'none';\n }\n }\n private resolveLeftScrollButtonStyle(itemsContainerWidth: number): TabScrollButtonStyle {\n const headerContainerWidth = this.headerContainer.nativeElement.offsetWidth;\n const offset = this.offset;\n\n if (offset === 0) {\n // Fix for IE 11, a difference is accumulated from the widths calculations.\n if (itemsContainerWidth - headerContainerWidth <= 1) {\n return TabScrollButtonStyle.NotDisplayed;\n }\n return TabScrollButtonStyle.Disabled;\n } else {\n return TabScrollButtonStyle.Enabled;\n }\n }\n\n private resolveRightScrollButtonStyle(itemsContainerWidth: number): TabScrollButtonStyle {\n const viewPortWidth = this.viewPort.nativeElement.offsetWidth;\n const headerContainerWidth = this.headerContainer.nativeElement.offsetWidth;\n const offset = this.offset;\n const total = offset + viewPortWidth;\n\n // Fix for IE 11, a difference is accumulated from the widths calculations.\n if (itemsContainerWidth - headerContainerWidth <= 1 && offset === 0) {\n return TabScrollButtonStyle.NotDisplayed;\n }\n\n if (itemsContainerWidth > total) {\n return TabScrollButtonStyle.Enabled;\n } else {\n return TabScrollButtonStyle.Disabled;\n }\n }\n\n private getTabItemsContainerWidth() {\n // We use this hacky way to get the width of the itemsContainer,\n // because there is inconsistency in IE we cannot use offsetWidth or scrollOffset.\n const itemsContainerChildrenCount = this.itemsContainer.nativeElement.children.length;\n let itemsContainerWidth = 0;\n\n if (itemsContainerChildrenCount > 1) {\n const lastTab = this.itemsContainer.nativeElement.children[itemsContainerChildrenCount - 1] as HTMLElement;\n itemsContainerWidth = this.getElementOffset(lastTab) + lastTab.offsetWidth;\n }\n\n return itemsContainerWidth;\n }\n\n private getOffset(offset: number): number {\n return this.dir.rtl ? -offset : offset;\n }\n\n private getElementOffset(element: HTMLElement): number {\n return this.dir.rtl ? this.itemsWrapper.nativeElement.offsetWidth - element.offsetLeft - element.offsetWidth : element.offsetLeft;\n }\n}\n","<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 @for (tab of items; track tab; let i = $index) {\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n }\n </div>\n @if (items.length > 0) {\n <div #selectedIndicator class=\"igx-tabs__header-active-indicator\">\n </div>\n }\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 @for (tab of items; track tab; let i = $index) {\n <ng-container *ngTemplateOutlet=\"tab.panelTemplate\"></ng-container>\n }\n</div>\n","import { AfterViewInit, Component, HostBinding, HostListener, NgZone, OnDestroy, inject } from '@angular/core';\nimport { IgxTabHeaderDirective } from '../tab-header.directive';\nimport { IgxTabHeaderBase } from '../tabs.base';\nimport { IgxTabsComponent } from './tabs.component';\nimport { getResizeObserver, ɵIgxDirectionality } from 'igniteui-angular/core';\n\n@Component({\n selector: 'igx-tab-header',\n templateUrl: 'tab-header.component.html',\n providers: [{ provide: IgxTabHeaderBase, useExisting: IgxTabHeaderComponent }],\n standalone: true\n})\nexport class IgxTabHeaderComponent extends IgxTabHeaderDirective implements AfterViewInit, OnDestroy {\n protected override tabs = inject(IgxTabsComponent);\n private ngZone = inject(NgZone);\n private dir = inject(ɵIgxDirectionality);\n\n /** @hidden @internal */\n @HostBinding('class.igx-tabs__header-item--selected')\n public get provideCssClassSelected(): boolean {\n return this.tab.selected;\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-tabs__header-item--disabled')\n public get provideCssClassDisabled(): boolean {\n return this.tab.disabled;\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-tabs__header-item')\n public cssClass = true;\n\n private _resizeObserver: ResizeObserver;\n\n /** @hidden @internal */\n @HostListener('keydown', ['$event'])\n public keyDown(event: KeyboardEvent) {\n let unsupportedKey = false;\n const itemsArray = this.tabs.items.toArray();\n const previousIndex = itemsArray.indexOf(this.tab);\n let newIndex = previousIndex;\n const hasDisabledItems = itemsArray.some((item) => item.disabled);\n\n switch (event.key) {\n case this.platform.KEYMAP.ARROW_RIGHT:\n newIndex = this.getNewSelectionIndex(newIndex, itemsArray, event.key, hasDisabledItems);\n break;\n case this.platform.KEYMAP.ARROW_LEFT:\n newIndex = this.getNewSelectionIndex(newIndex, itemsArray, event.key, hasDisabledItems);\n break;\n case this.platform.KEYMAP.HOME:\n event.preventDefault();\n newIndex = 0;\n while (itemsArray[newIndex].disabled && newIndex < itemsArray.length) {\n newIndex = newIndex === itemsArray.length - 1 ? 0 : newIndex + 1;\n }\n break;\n case this.platform.KEYMAP.END:\n event.preventDefault();\n newIndex = itemsArray.length - 1;\n while (hasDisabledItems && itemsArray[newIndex].disabled && newIndex > 0) {\n newIndex = newIndex === 0 ? itemsArray.length - 1 : newIndex - 1;\n }\n break;\n case this.platform.KEYMAP.ENTER:\n case this.platform.KEYMAP.SPACE:\n event.preventDefault();\n if (this.tabs.activation === 'manual') {\n this.nativeElement.click();\n }\n unsupportedKey = true;\n break;\n default:\n unsupportedKey = true;\n break;\n }\n\n if (!unsupportedKey) {\n itemsArray[newIndex].headerComponent.nativeElement.focus({ preventScroll: true });\n if (this.tabs.activation === 'auto') {\n this.tabs.selectedIndex = newIndex;\n }\n }\n }\n\n /** @hidden @internal */\n public ngAfterViewInit(): void {\n this.ngZone.runOutsideAngular(() => {\n if (this.platform.isBrowser) {\n this._resizeObserver = new (getResizeObserver())(() => {\n this.tabs.realignSelectedIndicator();\n });\n this._resizeObserver.observe(this.nativeElement);\n }\n });\n }\n\n /** @hidden @internal */\n public ngOnDestroy(): void {\n this.ngZone.runOutsideAngular(() => {\n this._resizeObserver?.disconnect();\n });\n }\n\n private getNewSelectionIndex(newIndex: number, itemsArray: any[], key: string, hasDisabledItems: boolean): number {\n if ((key === this.platform.KEYMAP.ARROW_RIGHT && !this.dir.rtl) || (key === this.platform.KEYMAP.ARROW_LEFT && this.dir.rtl)) {\n newIndex = newIndex === itemsArray.length - 1 ? 0 : newIndex + 1;\n while (hasDisabledItems && itemsArray[newIndex].disabled && newIndex < itemsArray.length) {\n newIndex = newIndex === itemsArray.length - 1 ? 0 : newIndex + 1;\n }\n } else {\n newIndex = newIndex === 0 ? itemsArray.length - 1 : newIndex - 1;\n while (hasDisabledItems && itemsArray[newIndex].disabled && newIndex >= 0) {\n newIndex = newIndex === 0 ? itemsArray.length - 1 : newIndex - 1;\n }\n }\n return newIndex;\n }\n}\n","<ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n\n<div class=\"igx-tabs__header-item-inner\">\n <ng-content></ng-content>\n</div>\n\n<ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n","import { Component } from '@angular/core';\nimport { IgxTabItemDirective } from '../tab-item.directive';\n\n@Component({\n selector: 'igx-tab-item',\n templateUrl: 'tab-item.component.html',\n providers: [{ provide: IgxTabItemDirective, useExisting: IgxTabItemComponent }],\n standalone: true\n})\nexport class IgxTabItemComponent extends IgxTabItemDirective {\n\n}\n","<ng-template #headerTemplate>\n <ng-content select=\"igx-tab-header\"></ng-content>\n</ng-template>\n<ng-template #panelTemplate>\n <ng-content select=\"igx-tab-content\"></ng-content>\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[igxTabHeaderLabel],igx-tab-header-label',\n standalone: true\n})\nexport class IgxTabHeaderLabelDirective { }\n\n@Directive({\n selector: '[igxTabHeaderIcon],igx-tab-header-icon',\n standalone: true\n})\nexport class IgxTabHeaderIconDirective { }\n","import { IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxTabContentComponent } from './tab-content.component';\nimport { IgxTabHeaderComponent } from './tab-header.component';\nimport { IgxTabItemComponent } from './tab-item.component';\nimport { IgxTabsComponent } from './tabs.component';\nimport { IgxTabHeaderIconDirective, IgxTabHeaderLabelDirective } from './tabs.directives';\n\nexport * from './tabs.component';\nexport * from './tab-item.component';\nexport * from './tab-header.component';\nexport * from './tabs.directives';\nexport * from './tab-content.component';\nexport {\n ITabsSelectedIndexChangingEventArgs,\n ITabsSelectedItemChangeEventArgs\n} from '../tabs.directive'\n\n/* NOTE: Tabs directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_TABS_DIRECTIVES = [\n IgxTabsComponent,\n IgxTabItemComponent,\n IgxTabHeaderComponent,\n IgxTabContentComponent,\n IgxTabHeaderLabelDirective,\n IgxTabHeaderIconDirective,\n IgxPrefixDirective,\n IgxSuffixDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_TABS_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_TABS_DIRECTIVES\n ],\n exports: [\n ...IGX_TABS_DIRECTIVES\n ]\n})\nexport class IgxTabsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵIgxDirectionality","i1.IgxTabsComponent","i2.IgxTabItemComponent","i3.IgxTabHeaderComponent","i4.IgxTabContentComponent","i5.IgxTabHeaderLabelDirective","i5.IgxTabHeaderIconDirective"],"mappings":";;;;;;;;;;AAEA;MACsB,WAAW,CAAA;AAIhC;AAED;MACsB,cAAc,CAAA;AAOnC;AAED;MACsB,gBAAgB,CAAA;AAErC;AAED;MACsB,iBAAiB,CAAA;AAEtC;;MCtBqB,mBAAmB,CAAA;AADzC,IAAA,WAAA,GAAA;;AAGY,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;AAkBlC;;AAEG;AAEI,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW;AAEnD;;AAEG;QAEI,IAAA,CAAA,QAAQ,GAAG,KAAK;;AAGhB,QAAA,IAAA,CAAA,SAAS,GAAG,0BAA0B,CAAC,IAAI;QAI1C,IAAA,CAAA,SAAS,GAAG,KAAK;AAiB5B,IAAA;AAfG;;AAEG;AACH,IAAA,IACW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,IAAW,QAAQ,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;YACtB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5C;IACJ;8GArDkB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,mEA6BjB,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAahB,gBAAgB,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EArCtB,gBAAgB,iFAIhB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FATb,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBADxC;;sBAMI,YAAY;uBAAC,gBAAgB;;sBAI7B,YAAY;uBAAC,iBAAiB;;sBAI9B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAI5C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAM3C;;sBAMA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAarC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;;MC1CpB,sBAAsB,CAAA;AAD5C,IAAA,WAAA,GAAA;;AAGW,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,mBAAmB,CAAC;;AAEhC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC;;QAI7C,IAAA,CAAA,IAAI,GAAG,UAAU;AAkB3B,IAAA;;AAfG,IAAA,IACW,QAAQ,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC;;AAGA,IAAA,IACW,MAAM,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,MAAM,GAAG,CAAC,CAAC;IAC1C;;AAGA,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa;IACxC;8GAzBkB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,aAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAD3C;;sBAQI,WAAW;uBAAC,WAAW;;sBAIvB,WAAW;uBAAC,eAAe;;sBAM3B,WAAW;uBAAC,eAAe;;;ACZ1B,MAAO,sBAAuB,SAAQ,sBAAsB,CAAA;AANlE,IAAA,WAAA,GAAA;;;QASW,IAAA,CAAA,QAAQ,GAAG,IAAI;AACzB,IAAA;8GAJY,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAHpB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC,iDCPpF,0EAGA,EAAA,CAAA,CAAA;;2FDOa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,SAAA,EAEhB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,sBAAwB,EAAE,CAAC,EAAA,OAAA,EACvE,EAAE,EAAA,QAAA,EAAA,0EAAA,EAAA;;sBAIV,WAAW;uBAAC,uBAAuB;;;MELlB,qBAAqB,CAAA;AAD3C,IAAA,WAAA,GAAA;;AAGc,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;;AAE7B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,mBAAmB,CAAC;;AAEhC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC;;AAE1C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC;;QAIlC,IAAA,CAAA,IAAI,GAAG,KAAK;AAgCtB,IAAA;;AA7BG,IAAA,IACW,QAAQ,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC;;AAGA,IAAA,IACW,YAAY,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ;IAC5B;;AAGA,IAAA,IACW,YAAY,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ;IAC5B;;IAIO,OAAO,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;QACvC;IACJ;;AAGA,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa;IACxC;8GA3CkB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAD1C;;sBAYI,WAAW;uBAAC,WAAW;;sBAIvB,WAAW;uBAAC,eAAe;;sBAM3B,WAAW;uBAAC,oBAAoB;;sBAMhC,WAAW;uBAAC,oBAAoB;;sBAMhC,YAAY;uBAAC,OAAO;;;ACbnB,MAAgB,gBAAiB,SAAQ,wBAAwB,CAAA;AADvE,IAAA,WAAA,GAAA;;;AAGW,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAACA,kBAAkB,CAAC;AAiCvC;;AAEG;QAEI,IAAA,CAAA,gBAAgB,GAAG,KAAK;AAE/B;;AAEG;AAEI,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAU;AAEvD;;AAEG;AAEI,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAuC;AAEtF;;AAEG;AAEI,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAoC;QA2BxE,IAAA,CAAA,cAAc,GAAG,CAAC,CAAC;AAiM9B,IAAA;AAjRG;;;AAGG;AACH,IAAA,IACW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc;IAC9B;IAEA,IAAW,aAAa,CAAC,KAAa,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;YAC/B,IAAI,QAAQ,GAAG,KAAK;AACpB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc;AACpC,YAAA,MAAM,IAAI,GAAwC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,MAAM,EAAE,KAAK;gBACb,QAAQ;gBACR;aACH;AACD,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;AAErC,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,gBAAA,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACxB,gBAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;gBAC9B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YACtD;AAEA,YAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;QACrC;IACJ;AAgCA;;AAEG;AACH,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;AAClF,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI;IACjD;;IAiBO,eAAe,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC,EAAE;AAC5B,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;AAC9C,gBAAA,IAAI,GAAG,CAAC,QAAQ,EAAE;AACd,oBAAA,IAAI,CAAC,cAAc,GAAG,CAAC;gBAC3B;gBACA,OAAO,GAAG,CAAC,QAAQ;AACvB,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,EAAE;AACnC,gBAAA,IAAI,CAAC,cAAc,GAAG,CAAC;YAC3B;QACJ;;AAGA,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AACxB,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC;AACxC,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;YACnD,IAAI,CAAC,aAAa,EAAE;AACxB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE;IACxB;;IAGgB,WAAW,GAAA;QACvB,KAAK,CAAC,WAAW,EAAE;AACnB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;QACpC;IACJ;;IAGO,SAAS,CAAC,GAAwB,EAAE,QAAiB,EAAA;AACxD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb;QACJ;QAEA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;QAEjC,IAAI,QAAQ,EAAE;YACV,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAC/B,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACZ,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK;YAC9B;QACJ;aAAO;AACH,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;AAC9B,gBAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YAC3B;QACJ;IACJ;;IAGU,kBAAkB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,aAAa;IACzD;;IAGU,iBAAiB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,aAAa;IACxD;;IAGU,uBAAuB,GAAA;IACjC;;IAGU,aAAa,GAAA;QACnB,IAAI,CAAC,aAAa,EAAE;;AAGpB,QAAA,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;AACvB,YAAA,IAAI,GAAG,CAAC,QAAQ,EAAE;gBACd,aAAa,GAAG,CAAC;YACrB;YACA,OAAO,GAAG,CAAC,QAAQ;AACvB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,aAAa,IAAI,CAAC,EAAE;;AAEpB,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AACxB,gBAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AACtC,YAAA,CAAC,CAAC;QACN;aAAO;AACH,YAAA,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;;AAEnE,gBAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AACxB,oBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACjC,gBAAA,CAAC,CAAC;YACN;iBAAO,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;;AAEhD,gBAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;oBACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;AAC9C,gBAAA,CAAC,CAAC;YACN;QACJ;IACJ;IAEQ,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACtB,YAAA,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AAC/E,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;gBAC9B,MAAM,WAAW,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,QAAA,EAAW,EAAE,CAAA,CAAE;gBACxD,MAAM,UAAU,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,SAAA,EAAY,EAAE,CAAA,CAAE;gBAExD,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC;gBAChD,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC;gBAC1D,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC;gBAC9C,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,EAAE,WAAW,CAAC;YAChE;AACJ,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,kBAAkB,CAAC,IAAyB,EAAE,QAAgB,EAAE,KAAa,EAAA;QACjF,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC;IACpE;AAEQ,IAAA,iBAAiB,CAAC,IAAyB,EAAE,QAAgB,EAAE,KAAa,EAAA;QAChF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC;IACnE;AAEA,IAAA,IAAY,SAAS,GAAA;QACjB,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM;IAC5C;AAEQ,IAAA,kBAAkB,CAAC,gBAAwB,EAAE,UAAU,GAAG,IAAI,EAAA;AAClE,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb;QACJ;AAEA,QAAA,IAAI,MAA2B;AAC/B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW;;AAG/B,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACrE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;AAC5C,YAAA,MAAM,CAAC,QAAQ,GAAG,IAAI;QAC1B;;QAEA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;AAC1B,YAAA,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,EAAE;AAC3B,gBAAA,GAAG,CAAC,QAAQ,GAAG,KAAK;YACxB;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,gBAAgB,EAAE;YAC1C,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC;AAE7C,YAAA,IAAI,UAAU,IAAI,MAAM,KAAK,MAAM,EAAE;AACjC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACzB,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,OAAO,EAAE;AACZ,iBAAA,CAAC;YACN;QACJ;IACJ;AAEQ,IAAA,sBAAsB,CAAC,gBAAwB,EAAA;AACnD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;AAEhD,QAAA,IAAI,IAAI;YACJ,CAAC,IAAI,CAAC,gBAAgB;AACtB,YAAA,IAAI,CAAC,SAAS;AACd,YAAA,IAAI,CAAC,WAAW;AAChB,YAAA,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,GAAG,gBAAgB;iBACpE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,GAAG,gBAAgB;kBACrD,0BAA0B,CAAC,IAAI,GAAG,0BAA0B,CAAC,IAAI;YAEvE,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AACjD,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,KAAK;YACtC;YACA,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;AAE3C,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW;AACpC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YACvB,IAAI,CAAC,iBAAiB,EAAE;QAC5B;aAAO;AACH,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QAC3B;IACJ;8GAjRkB,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,EAsCd,gBAAgB,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAwBnB,mBAAmB,yCAYnB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FA1EhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBADrC;;sBASI;;sBA8BA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAMrC;;sBAMA;;sBAMA;;sBAMA,eAAe;uBAAC,mBAAmB;;sBAYnC,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;;AC7FtD,MAAM,gBAAgB,GAAG;AAC5B,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,OAAO,EAAE;;AAYb;AACA,IAAI,WAAW,GAAG,CAAC;AAEnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;AAQG,MAAO,gBAAiB,SAAQ,gBAAgB,CAAA;AAPtD,IAAA,WAAA,GAAA;;AAQY,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC;AAmBvC;;;;;AAKG;QAEI,IAAA,CAAA,UAAU,GAAsB,MAAM;;QAgCtC,IAAA,CAAA,YAAY,GAAG,IAAI;;QAGnB,IAAA,CAAA,MAAM,GAAG,CAAC;;QAGE,IAAA,CAAA,aAAa,GAAG,UAAU;QAErC,IAAA,CAAA,aAAa,GAA8B,OAAO;AAsN7D,IAAA;AArRG;;AAEG;AACH,IAAA,IACW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa;IAC7B;IAEA,IAAW,YAAY,CAAC,KAAgC,EAAA;AACpD,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;QAC1B,qBAAqB,CAAC,MAAK;YACvB,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,wBAAwB,EAAE;AACnC,QAAA,CAAC,CAAC;IACN;;IAqDgB,eAAe,GAAA;QAC3B,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAC/B,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;gBACzB,IAAI,CAAC,eAAe,GAAG,KAAK,iBAAiB,EAAE,EAAE,MAAK;oBAClD,IAAI,CAAC,mBAAmB,EAAE;oBAC1B,IAAI,CAAC,wBAAwB,EAAE;AACnC,gBAAA,CAAC,CAAC;gBACF,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;gBAChE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC7D;AACJ,QAAA,CAAC,CAAC;IACN;;IAGgB,WAAW,GAAA;QACvB,KAAK,CAAC,WAAW,EAAE;AAEnB,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAC/B,YAAA,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE;AACtC,QAAA,CAAC,CAAC;IACN;;IAGO,UAAU,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IACtB;;IAGO,UAAU,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IACrB;;IAGO,wBAAwB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACnE,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,aAAa;AAC/E,YAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1C;IACJ;;IAGO,0BAA0B,GAAA;QAC7B,OAAO;AACH,YAAA,gCAAgC,EAAE,IAAI,CAAC,YAAY,KAAK,OAAO;AAC/D,YAAA,8BAA8B,EAAE,IAAI,CAAC,YAAY,KAAK,KAAK;AAC3D,YAAA,iCAAiC,EAAE,IAAI,CAAC,YAAY,KAAK,QAAQ;AACjE,YAAA,kCAAkC,EAAE,IAAI,CAAC,YAAY,KAAK,SAAS;SACtE;IACL;;IAGmB,uBAAuB,GAAA;AACtC,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACrC,YAAA,MAAM,sBAAsB,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,aAAa;;YAGzF,IAAI,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AAC7D,gBAAA,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,KAAK,CAAC;YACrD;;YAGA,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW;YACnE,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,GAAG,sBAAsB,CAAC,WAAW,KAAK,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;;AAGxI,YAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACX,gBAAA,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,IAAI,CAAC;YACpD;AAEA,YAAA,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC;QACvD;aAAO;YACH,IAAI,CAAC,qBAAqB,EAAE;QAChC;IACJ;;IAGU,YAAY,GAAA;QAClB,OAAO,WAAW,EAAE;IACxB;;IAGmB,aAAa,GAAA;QAC5B,KAAK,CAAC,aAAa,EAAE;AAErB,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;YACxB,IAAI,CAAC,mBAAmB,EAAE;AAC9B,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,sBAAsB,CAAC,OAAoB,EAAE,QAAQ,GAAG,GAAG,EAAA;AAC/D,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;YACjE,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,kBAAkB,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAA,EAAG,QAAQ,GAAG,GAAG,SAAS;AACzG,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,OAAO,CAAC,WAAW,IAAI;AAC7E,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,UAAA,EAAa,OAAO,CAAC,UAAU,KAAK;QAC/F;IACJ;IAEQ,qBAAqB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;QACpE;IACJ;AAEQ,IAAA,MAAM,CAAC,UAAmB,EAAA;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AAEtC,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACnD,YAAA,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC;AAC5B,YAAA,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,aAAa;YACjD,IAAI,UAAU,EAAE;gBACZ,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;AAC9G,oBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC;oBACvC;gBACJ;YACJ;iBAAO;gBACH,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;AAC/C,oBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,aAAa,EAAE,UAAU,CAAC;oBAClF;gBACJ;YACJ;QACJ;IACJ;IAEQ,aAAa,CAAC,OAAY,EAAE,UAAmB,EAAA;QACnD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW;AAE7D,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAClI,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;QACpE,IAAI,CAAC,mBAAmB,EAAE;IAC9B;IAEQ,mBAAmB,GAAA;AACvB,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,EAAE;QAE5D,MAAM,qBAAqB,GAAG,IAAI,CAAC,4BAA4B,CAAC,mBAAmB,CAAC;QACpF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,qBAAqB,CAAC;QAErF,MAAM,qBAAqB,GAAG,IAAI,CAAC,6BAA6B,CAAC,mBAAmB,CAAC;QACrF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,qBAAqB,CAAC;IACzF;IAEQ,oBAAoB,CAAC,MAAyB,EAAE,WAAiC,EAAA;QACrF,IAAI,WAAW,KAAA,SAAA,qCAAmC;AAC9C,YAAA,MAAM,CAAC,QAAQ,GAAG,KAAK;AACvB,YAAA,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE;QAC7B;aAAO,IAAI,WAAW,KAAA,UAAA,sCAAoC;AACtD,YAAA,MAAM,CAAC,QAAQ,GAAG,IAAI;AACtB,YAAA,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE;QAC7B;aAAO,IAAI,WAAW,KAAA,eAAA,0CAAwC;AAC1D,YAAA,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;QACjC;IACJ;AACQ,IAAA,4BAA4B,CAAC,mBAA2B,EAAA;QAC5D,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,WAAW;AAC3E,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAE1B,QAAA,IAAI,MAAM,KAAK,CAAC,EAAE;;AAEd,YAAA,IAAI,mBAAmB,GAAG,oBAAoB,IAAI,CAAC,EAAE;gBACjD,OAAA,eAAA;YACJ;YACA,OAAA,UAAA;QACJ;aAAO;YACH,OAAA,SAAA;QACJ;IACJ;AAEQ,IAAA,6BAA6B,CAAC,mBAA2B,EAAA;QAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW;QAC7D,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,WAAW;AAC3E,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAC1B,QAAA,MAAM,KAAK,GAAG,MAAM,GAAG,aAAa;;QAGpC,IAAI,mBAAmB,GAAG,oBAAoB,IAAI,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE;YACjE,OAAA,eAAA;QACJ;AAEA,QAAA,IAAI,mBAAmB,GAAG,KAAK,EAAE;YAC7B,OAAA,SAAA;QACJ;aAAO;YACH,OAAA,UAAA;QACJ;IACJ;IAEQ,yBAAyB,GAAA;;;QAG7B,MAAM,2BAA2B,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM;QACrF,IAAI,mBAAmB,GAAG,CAAC;AAE3B,QAAA,IAAI,2BAA2B,GAAG,CAAC,EAAE;AACjC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,2BAA2B,GAAG,CAAC,CAAgB;YAC1G,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,WAAW;QAC9E;AAEA,QAAA,OAAO,mBAAmB;IAC9B;AAEQ,IAAA,SAAS,CAAC,MAAc,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM;IAC1C;AAEQ,IAAA,gBAAgB,CAAC,OAAoB,EAAA;AACzC,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU;IACrI;8GAzRS,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EAJd,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5DxE,s0CA0BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDmCc,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,yGAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGxF,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;+BACI,UAAU,EAAA,SAAA,EAET,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAA,gBAAkB,EAAE,CAAC,WAC3D,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,CAAC,EAAA,QAAA,EAAA,s0CAAA,EAAA;;sBAWjG;;sBAmBA;;sBAIA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAI7C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAItC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAI1C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAI5C,SAAS;uBAAC,mBAAmB;;sBAI7B,SAAS;uBAAC,kBAAkB;;sBAI5B,SAAS;uBAAC,kBAAkB;;sBAI5B,WAAW;uBAAC,gBAAgB;;;AE/G3B,MAAO,qBAAsB,SAAQ,qBAAqB,CAAA;AANhE,IAAA,WAAA,GAAA;;AAOuB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC1C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAACA,kBAAkB,CAAC;;QAgBjC,IAAA,CAAA,QAAQ,GAAG,IAAI;AAwFzB,IAAA;;AArGG,IAAA,IACW,uBAAuB,GAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ;IAC5B;;AAGA,IAAA,IACW,uBAAuB,GAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ;IAC5B;;AAUO,IAAA,OAAO,CAAC,KAAoB,EAAA;QAC/B,IAAI,cAAc,GAAG,KAAK;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;QAC5C,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAClD,IAAI,QAAQ,GAAG,aAAa;AAC5B,QAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;AAEjE,QAAA,QAAQ,KAAK,CAAC,GAAG;AACb,YAAA,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW;AACjC,gBAAA,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;gBACvF;AACJ,YAAA,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU;AAChC,gBAAA,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC;gBACvF;AACJ,YAAA,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI;gBAC1B,KAAK,CAAC,cAAc,EAAE;gBACtB,QAAQ,GAAG,CAAC;AACZ,gBAAA,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,IAAI,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE;AAClE,oBAAA,QAAQ,GAAG,QAAQ,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC;gBACpE;gBACA;AACJ,YAAA,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG;gBACzB,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,QAAQ,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;AAChC,gBAAA,OAAO,gBAAgB,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,IAAI,QAAQ,GAAG,CAAC,EAAE;AACtE,oBAAA,QAAQ,GAAG,QAAQ,KAAK,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC;gBACpE;gBACA;AACJ,YAAA,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK;AAC/B,YAAA,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK;gBAC3B,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;AACnC,oBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;gBAC9B;gBACA,cAAc,GAAG,IAAI;gBACrB;AACJ,YAAA;gBACI,cAAc,GAAG,IAAI;gBACrB;;QAGR,IAAI,CAAC,cAAc,EAAE;AACjB,YAAA,UAAU,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;YACjF,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE;AACjC,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,QAAQ;YACtC;QACJ;IACJ;;IAGO,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAC/B,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;gBACzB,IAAI,CAAC,eAAe,GAAG,KAAK,iBAAiB,EAAE,EAAE,MAAK;AAClD,oBAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;AACxC,gBAAA,CAAC,CAAC;gBACF,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YACpD;AACJ,QAAA,CAAC,CAAC;IACN;;IAGO,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAC/B,YAAA,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE;AACtC,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,oBAAoB,CAAC,QAAgB,EAAE,UAAiB,EAAE,GAAW,EAAE,gBAAyB,EAAA;AACpG,QAAA,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC1H,YAAA,QAAQ,GAAG,QAAQ,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC;AAChE,YAAA,OAAO,gBAAgB,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,IAAI,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE;AACtF,gBAAA,QAAQ,GAAG,QAAQ,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC;YACpE;QACJ;aAAO;AACH,YAAA,QAAQ,GAAG,QAAQ,KAAK,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC;AAChE,YAAA,OAAO,gBAAgB,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,IAAI,QAAQ,IAAI,CAAC,EAAE;AACvE,gBAAA,QAAQ,GAAG,QAAQ,KAAK,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC;YACpE;QACJ;AACA,QAAA,OAAO,QAAQ;IACnB;8GA1GS,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uCAAA,EAAA,8BAAA,EAAA,uCAAA,EAAA,8BAAA,EAAA,6BAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAHnB,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC,iDCTlF,oNAOA,EAAA,CAAA,CAAA;;2FDKa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,SAAA,EAEf,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAA,qBAAuB,EAAE,CAAC,EAAA,UAAA,EAClE,IAAI,EAAA,QAAA,EAAA,oNAAA,EAAA;;sBAQf,WAAW;uBAAC,uCAAuC;;sBAMnD,WAAW;uBAAC,uCAAuC;;sBAMnD,WAAW;uBAAC,6BAA6B;;sBAMzC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AE3BjC,MAAO,mBAAoB,SAAQ,mBAAmB,CAAA;8GAA/C,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAHjB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC,iDCNnF,kNAMA,EAAA,CAAA,CAAA;;2FDGa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,SAAA,EAEb,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAA,mBAAqB,EAAE,CAAC,EAAA,UAAA,EACnE,IAAI,EAAA,QAAA,EAAA,kNAAA,EAAA;;;MEDP,0BAA0B,CAAA;8GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0CAA0C;AACpD,oBAAA,UAAU,EAAE;AACf,iBAAA;;MAOY,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wCAAwC;AAClD,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACMD;AACO,MAAM,mBAAmB,GAAG;IAC/B,gBAAgB;IAChB,mBAAmB;IACnB,qBAAqB;IACrB,sBAAsB;IACtB,0BAA0B;IAC1B,yBAAyB;IACzB,kBAAkB;IAClB;;;ACvBJ;;;AAGG;MASU,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAb,aAAa,EAAA,OAAA,EAAA,CAAAC,gBAAA,EAAAC,mBAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,0BAAA,EAAAC,yBAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAAL,gBAAA,EAAAC,mBAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,0BAAA,EAAAC,yBAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,CAAA;+GAAb,aAAa,EAAA,OAAA,EAAA,CAAAL,gBAAA,CAAA,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;AACL,wBAAA,GAAG;AACN,qBAAA;AACD,oBAAA,OAAO,EAAE;AACL,wBAAA,GAAG;AACN;AACJ,iBAAA;;;ACdD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"igniteui-angular-tabs.mjs","sources":["../../../projects/igniteui-angular/tabs/src/tabs/tabs.base.ts","../../../projects/igniteui-angular/tabs/src/tabs/tab-item.directive.ts","../../../projects/igniteui-angular/tabs/src/tabs/tab-content.directive.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-content.component.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-content.component.html","../../../projects/igniteui-angular/tabs/src/tabs/tab-header.directive.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs.directive.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tabs.component.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tabs.component.html","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-header.component.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-header.component.html","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-item.component.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tab-item.component.html","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tabs.directives.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/public_api.ts","../../../projects/igniteui-angular/tabs/src/tabs/tabs/tabs.module.ts","../../../projects/igniteui-angular/tabs/src/igniteui-angular-tabs.ts"],"sourcesContent":["import { QueryList, TemplateRef } from '@angular/core';\n\n/** @hidden */\nexport abstract class IgxTabsBase {\n public items: QueryList<IgxTabItemBase>;\n public selectedIndex: number;\n public abstract selectTab(tab: IgxTabItemBase, selected: boolean);\n}\n\n/** @hidden */\nexport abstract class IgxTabItemBase {\n public disabled: boolean;\n public selected: boolean;\n public headerTemplate: TemplateRef<any>;\n public panelTemplate: TemplateRef<any>;\n public headerComponent: IgxTabHeaderBase;\n public panelComponent: IgxTabContentBase;\n}\n\n/** @hidden */\nexport abstract class IgxTabHeaderBase {\n public nativeElement: HTMLElement;\n}\n\n/** @hidden */\nexport abstract class IgxTabContentBase {\n public nativeElement: HTMLElement;\n}\n\n","import { ContentChild, Directive, EventEmitter, Input, Output, TemplateRef, ViewChild, booleanAttribute, inject } from '@angular/core';\nimport { IgxTabHeaderBase, IgxTabItemBase, IgxTabContentBase, IgxTabsBase } from './tabs.base';\nimport { CarouselAnimationDirection, IgxSlideComponentBase } from 'igniteui-angular/carousel';\n\n@Directive()\nexport abstract class IgxTabItemDirective implements IgxTabItemBase, IgxSlideComponentBase {\n /** @hidden */\n private tabs = inject(IgxTabsBase);\n\n /** @hidden */\n @ContentChild(IgxTabHeaderBase)\n public headerComponent: IgxTabHeaderBase;\n\n /** @hidden */\n @ContentChild(IgxTabContentBase)\n public panelComponent: IgxTabContentBase;\n\n /** @hidden */\n @ViewChild('headerTemplate', { static: true })\n public headerTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('panelTemplate', { static: true })\n public panelTemplate: TemplateRef<any>;\n\n /**\n * Output to enable support for two-way binding on [(selected)]\n */\n @Output()\n public selectedChange = new EventEmitter<boolean>();\n\n /**\n * Disables the item.\n */\n @Input({ transform: booleanAttribute })\n public disabled = false;\n\n /** @hidden */\n public direction = CarouselAnimationDirection.NONE;\n /** @hidden */\n public previous: boolean;\n\n private _selected = false;\n\n /**\n * Gets/Sets whether an item is selected.\n */\n @Input({ transform: booleanAttribute })\n public get selected(): boolean {\n return this._selected;\n }\n\n public set selected(value: boolean) {\n if (this._selected !== value) {\n this._selected = value;\n this.tabs.selectTab(this, this._selected);\n this.selectedChange.emit(this._selected);\n }\n }\n}\n","import { Directive, ElementRef, HostBinding, inject } from '@angular/core';\nimport { IgxTabItemDirective } from './tab-item.directive';\nimport { IgxTabContentBase } from './tabs.base';\n\n@Directive()\nexport abstract class IgxTabContentDirective implements IgxTabContentBase {\n /** @hidden */\n public tab = inject(IgxTabItemDirective);\n /** @hidden */\n private elementRef = inject(ElementRef<HTMLElement>);\n\n /** @hidden */\n @HostBinding('attr.role')\n public role = 'tabpanel';\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n public get tabIndex() {\n return this.tab.selected ? 0 : -1;\n }\n\n /** @hidden */\n @HostBinding('style.z-index')\n public get zIndex() {\n return this.tab.selected ? 'auto' : -1;\n }\n\n /** @hidden */\n public get nativeElement() {\n return this.elementRef.nativeElement;\n }\n}\n","import { Component, HostBinding } from '@angular/core';\nimport { IgxTabContentDirective } from '../tab-content.directive';\nimport { IgxTabContentBase } from '../tabs.base';\n\n@Component({\n selector: 'igx-tab-content',\n templateUrl: 'tab-content.component.html',\n providers: [{ provide: IgxTabContentBase, useExisting: IgxTabContentComponent }],\n imports: []\n})\nexport class IgxTabContentComponent extends IgxTabContentDirective {\n /** @hidden */\n @HostBinding('class.igx-tabs__panel')\n public cssClass = true;\n}\n","@if (tab.selected || tab.previous) {\n <ng-content></ng-content>\n}\n","\nimport { Directive, ElementRef, HostBinding, HostListener, inject } from '@angular/core';\nimport { PlatformUtil } from 'igniteui-angular/core';\nimport { IgxTabItemDirective } from './tab-item.directive';\nimport { IgxTabHeaderBase, IgxTabsBase } from './tabs.base';\n\n@Directive()\nexport abstract class IgxTabHeaderDirective implements IgxTabHeaderBase {\n /** @hidden */\n protected tabs = inject(IgxTabsBase);\n /** @hidden */\n public tab = inject(IgxTabItemDirective);\n /** @hidden */\n private elementRef = inject(ElementRef<HTMLElement>);\n /** @hidden */\n protected platform = inject(PlatformUtil);\n\n /** @hidden */\n @HostBinding('attr.role')\n public role = 'tab';\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n public get tabIndex() {\n return this.tab.selected ? 0 : -1;\n }\n\n /** @hidden */\n @HostBinding('attr.aria-selected')\n public get ariaSelected() {\n return this.tab.selected;\n }\n\n /** @hidden */\n @HostBinding('attr.aria-disabled')\n public get ariaDisabled() {\n return this.tab.disabled;\n }\n\n /** @hidden */\n @HostListener('click')\n public onClick() {\n if (this.tab.panelComponent) {\n this.tabs.selectTab(this.tab, true);\n }\n }\n\n /** @hidden */\n public get nativeElement() {\n return this.elementRef.nativeElement;\n }\n}\n","import {\n AfterViewInit, ContentChildren, Directive, ElementRef, EventEmitter,\n Input, OnDestroy, Output, QueryList, booleanAttribute,\n inject\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { IBaseEventArgs, isLeftToRight } from 'igniteui-angular/core';\nimport { IgxTabItemDirective } from './tab-item.directive';\nimport { IgxTabContentBase, IgxTabsBase } from './tabs.base';\nimport { IgxCarouselComponentBase, CarouselAnimationDirection } from 'igniteui-angular/carousel';\n\nexport interface ITabsBaseEventArgs extends IBaseEventArgs {\n readonly owner: IgxTabsDirective;\n}\n\nexport interface ITabsSelectedIndexChangingEventArgs extends ITabsBaseEventArgs {\n cancel: boolean;\n readonly oldIndex: number;\n newIndex: number;\n}\n\nexport interface ITabsSelectedItemChangeEventArgs extends ITabsBaseEventArgs {\n readonly oldItem: IgxTabItemDirective;\n readonly newItem: IgxTabItemDirective;\n}\n\n@Directive()\nexport abstract class IgxTabsDirective extends IgxCarouselComponentBase implements IgxTabsBase, AfterViewInit, OnDestroy {\n protected readonly _element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Gets/Sets the index of the selected item.\n * Default value is 0 if contents are defined otherwise defaults to -1.\n */\n @Input()\n public get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n public set selectedIndex(value: number) {\n if (this._selectedIndex !== value) {\n let newIndex = value;\n const oldIndex = this._selectedIndex;\n const args: ITabsSelectedIndexChangingEventArgs = {\n owner: this,\n cancel: false,\n oldIndex,\n newIndex\n };\n this.selectedIndexChanging.emit(args);\n\n if (!args.cancel) {\n newIndex = args.newIndex;\n this._selectedIndex = newIndex;\n this.selectedIndexChange.emit(this._selectedIndex);\n }\n\n this.updateSelectedTabs(oldIndex);\n }\n }\n\n /**\n * Enables/disables the transition animation of the contents.\n */\n @Input({ transform: booleanAttribute })\n public disableAnimation = false;\n\n /**\n * Output to enable support for two-way binding on [(selectedIndex)]\n */\n @Output()\n public selectedIndexChange = new EventEmitter<number>();\n\n /**\n * Emitted when the selected index is about to change.\n */\n @Output()\n public selectedIndexChanging = new EventEmitter<ITabsSelectedIndexChangingEventArgs>();\n\n /**\n * Emitted when the selected item is changed.\n */\n @Output()\n public selectedItemChange = new EventEmitter<ITabsSelectedItemChangeEventArgs>();\n\n /**\n * Returns the items.\n */\n @ContentChildren(IgxTabItemDirective)\n public items: QueryList<IgxTabItemDirective>;\n\n /**\n * Gets the selected item.\n */\n public get selectedItem(): IgxTabItemDirective {\n return this.items && this.selectedIndex >= 0 && this.selectedIndex < this.items.length ?\n this.items.get(this.selectedIndex) : null;\n }\n\n /** @hidden */\n @ContentChildren(IgxTabContentBase, { descendants: true })\n public panels: QueryList<IgxTabContentBase>;\n\n /** @hidden */\n protected override currentItem: IgxTabItemDirective;\n /** @hidden */\n protected override previousItem: IgxTabItemDirective;\n /** @hidden */\n protected componentName: string;\n\n private _selectedIndex = -1;\n private _itemChanges$: Subscription;\n\n /** @hidden */\n public ngAfterViewInit(): void {\n if (this._selectedIndex === -1) {\n const hasSelectedTab = this.items.some((tab, i) => {\n if (tab.selected) {\n this._selectedIndex = i;\n }\n return tab.selected;\n });\n\n if (!hasSelectedTab && this.hasPanels) {\n this._selectedIndex = 0;\n }\n }\n\n // Use promise to avoid expression changed after check error\n Promise.resolve().then(() => {\n this.updateSelectedTabs(null, false);\n });\n\n this._itemChanges$ = this.items.changes.subscribe(() => {\n this.onItemChanges();\n });\n\n this.setAttributes();\n }\n\n /** @hidden */\n public override ngOnDestroy(): void {\n super.ngOnDestroy();\n if (this._itemChanges$) {\n this._itemChanges$.unsubscribe();\n }\n }\n\n /** @hidden */\n public selectTab(tab: IgxTabItemDirective, selected: boolean): void {\n if (!this.items) {\n return;\n }\n\n const tabs = this.items.toArray();\n\n if (selected) {\n const index = tabs.indexOf(tab);\n if (index > -1) {\n this.selectedIndex = index;\n }\n } else {\n if (tabs.every(t => !t.selected)) {\n this.selectedIndex = -1;\n }\n }\n }\n\n /** @hidden */\n protected getPreviousElement(): HTMLElement {\n return this.previousItem.panelComponent.nativeElement;\n }\n\n /** @hidden */\n protected getCurrentElement(): HTMLElement {\n return this.currentItem.panelComponent.nativeElement;\n }\n\n /** @hidden */\n protected scrollTabHeaderIntoView() {\n }\n\n /** @hidden */\n protected onItemChanges() {\n this.setAttributes();\n\n // Check if there is selected tab\n let selectedIndex = -1;\n this.items.some((tab, i) => {\n if (tab.selected) {\n selectedIndex = i;\n }\n return tab.selected;\n });\n\n if (selectedIndex >= 0) {\n // Set the selected index to the tab that has selected=true\n Promise.resolve().then(() => {\n this.selectedIndex = selectedIndex;\n });\n } else {\n if (this.selectedIndex >= 0 && this.selectedIndex < this.items.length) {\n // Select the tab on the same index the previous selected tab was\n Promise.resolve().then(() => {\n this.updateSelectedTabs(null);\n });\n } else if (this.selectedIndex >= this.items.length) {\n // Select the last tab\n Promise.resolve().then(() => {\n this.selectedIndex = this.items.length - 1;\n });\n }\n }\n }\n\n private setAttributes() {\n this.items.forEach(item => {\n if (item.panelComponent && !item.headerComponent.nativeElement.getAttribute('id')) {\n const id = this.getNextTabId();\n const tabHeaderId = `${this.componentName}-header-${id}`;\n const tabPanelId = `${this.componentName}-content-${id}`;\n\n this.setHeaderAttribute(item, 'id', tabHeaderId);\n this.setHeaderAttribute(item, 'aria-controls', tabPanelId);\n this.setPanelAttribute(item, 'id', tabPanelId);\n this.setPanelAttribute(item, 'aria-labelledby', tabHeaderId);\n }\n });\n }\n\n private setHeaderAttribute(item: IgxTabItemDirective, attrName: string, value: string) {\n item.headerComponent.nativeElement.setAttribute(attrName, value);\n }\n\n private setPanelAttribute(item: IgxTabItemDirective, attrName: string, value: string) {\n item.panelComponent.nativeElement.setAttribute(attrName, value);\n }\n\n private get hasPanels() {\n return this.panels && this.panels.length;\n }\n\n private updateSelectedTabs(oldSelectedIndex: number, raiseEvent = true) {\n if (!this.items) {\n return;\n }\n\n let newTab: IgxTabItemDirective;\n const oldTab = this.currentItem;\n\n // First select the new tab\n if (this._selectedIndex >= 0 && this._selectedIndex < this.items.length) {\n newTab = this.items.get(this._selectedIndex);\n newTab.selected = true;\n }\n // Then unselect the other tabs\n this.items.forEach((tab, i) => {\n if (i !== this._selectedIndex) {\n tab.selected = false;\n }\n });\n\n if (this._selectedIndex !== oldSelectedIndex) {\n this.scrollTabHeaderIntoView();\n this.triggerPanelAnimations(oldSelectedIndex);\n\n if (raiseEvent && newTab !== oldTab) {\n this.selectedItemChange.emit({\n owner: this,\n newItem: newTab,\n oldItem: oldTab\n });\n }\n }\n }\n\n private triggerPanelAnimations(oldSelectedIndex: number) {\n const item = this.items.get(this._selectedIndex);\n const rtl = !isLeftToRight(this._element.nativeElement);\n\n if (item &&\n !this.disableAnimation &&\n this.hasPanels &&\n this.currentItem &&\n !this.currentItem.selected) {\n item.direction = (!rtl && this._selectedIndex > oldSelectedIndex) ||\n (rtl && this._selectedIndex < oldSelectedIndex)\n ? CarouselAnimationDirection.NEXT : CarouselAnimationDirection.PREV;\n\n if (this.previousItem && this.previousItem.previous) {\n this.previousItem.previous = false;\n }\n this.currentItem.direction = item.direction;\n\n this.previousItem = this.currentItem;\n this.currentItem = item;\n this.triggerAnimations();\n } else {\n this.currentItem = item;\n }\n }\n\n /** @hidden */\n protected abstract getNextTabId();\n}\n","import { AfterViewInit, Component, ElementRef, HostBinding, inject, Input, NgZone, OnDestroy, ViewChild } from '@angular/core';\nimport { IgxTabsBase } from '../tabs.base';\nimport { IgxTabsDirective } from '../tabs.directive';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { IgxIconButtonDirective, IgxRippleDirective } from 'igniteui-angular/directives';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { getResizeObserver, PlatformUtil, isLeftToRight } from 'igniteui-angular/core';\n\nexport const IgxTabsAlignment = {\n start: 'start',\n end: 'end',\n center: 'center',\n justify: 'justify'\n} as const;\n\n/** @hidden */\nconst enum TabScrollButtonStyle {\n Enabled = 'enabled',\n Disabled = 'disabled',\n NotDisplayed = 'not_displayed'\n}\n\nexport type IgxTabsAlignment = (typeof IgxTabsAlignment)[keyof typeof IgxTabsAlignment];\n\n/** @hidden */\nlet NEXT_TAB_ID = 0;\n\n/**\n * Tabs component is used to organize or switch between similar data sets.\n *\n * @igxModule IgxTabsModule\n *\n * @igxTheme igx-tabs-theme\n *\n * @igxKeywords tabs\n *\n * @igxGroup Layouts\n *\n * @remarks\n * The Ignite UI for Angular Tabs component places tabs at the top and allows for scrolling when there are multiple tab items on the screen.\n *\n * @example\n * ```html\n * <igx-tabs>\n * <igx-tab-item>\n * <igx-tab-header>\n * <igx-icon igxTabHeaderIcon>folder</igx-icon>\n * <span igxTabHeaderLabel>Tab 1</span>\n * </igx-tab-header>\n * <igx-tab-content>\n * Content 1\n * </igx-tab-content>\n * </igx-tab-item>\n * ...\n * </igx-tabs>\n * ```\n */\n@Component({\n selector: 'igx-tabs',\n templateUrl: 'tabs.component.html',\n providers: [{ provide: IgxTabsBase, useExisting: IgxTabsComponent }],\n imports: [IgxRippleDirective, IgxIconComponent, NgClass, NgTemplateOutlet, IgxIconButtonDirective]\n})\n\nexport class IgxTabsComponent extends IgxTabsDirective implements AfterViewInit, OnDestroy {\n private ngZone = inject(NgZone);\n private platform = inject(PlatformUtil);\n\n\n /**\n * Gets/Sets the tab alignment. Defaults to `start`.\n */\n @Input()\n public get tabAlignment(): string | IgxTabsAlignment {\n return this._tabAlignment;\n }\n\n public set tabAlignment(value: string | IgxTabsAlignment) {\n this._tabAlignment = value;\n requestAnimationFrame(() => {\n this.updateScrollButtons();\n this.realignSelectedIndicator();\n });\n }\n\n /**\n * Determines the tab activation.\n * 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.\n * When set to manual, the tab is only focused. The selection happens after pressing Space or Enter.\n * Defaults is auto.\n */\n @Input()\n public activation: 'auto' | 'manual' = 'auto';\n\n /** @hidden */\n @ViewChild('headerContainer', { static: true })\n public headerContainer: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild('viewPort', { static: true })\n public viewPort: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild('itemsWrapper', { static: true })\n public itemsWrapper: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild('itemsContainer', { static: true })\n public itemsContainer: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild('selectedIndicator')\n public selectedIndicator: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild('scrollPrevButton')\n public scrollPrevButton: ElementRef<HTMLButtonElement>;\n\n /** @hidden */\n @ViewChild('scrollNextButton')\n public scrollNextButton: ElementRef<HTMLButtonElement>;\n\n /** @hidden */\n @HostBinding('class.igx-tabs')\n public defaultClass = true;\n\n /** @hidden */\n public offset = 0;\n\n /** @hidden */\n protected override componentName = 'igx-tabs';\n\n private _tabAlignment: string | IgxTabsAlignment = 'start';\n private _resizeObserver: ResizeObserver;\n\n /** @hidden @internal */\n public override ngAfterViewInit(): void {\n super.ngAfterViewInit();\n\n this.ngZone.runOutsideAngular(() => {\n if (this.platform.isBrowser) {\n this._resizeObserver = new (getResizeObserver())(() => {\n this.updateScrollButtons();\n this.realignSelectedIndicator();\n });\n this._resizeObserver.observe(this.headerContainer.nativeElement);\n this._resizeObserver.observe(this.viewPort.nativeElement);\n }\n });\n }\n\n /** @hidden @internal */\n public override ngOnDestroy(): void {\n super.ngOnDestroy();\n\n this.ngZone.runOutsideAngular(() => {\n this._resizeObserver?.disconnect();\n });\n }\n\n /** @hidden */\n public scrollPrev() {\n this.scroll(false);\n }\n\n /** @hidden */\n public scrollNext() {\n this.scroll(true);\n }\n\n /** @hidden */\n public realignSelectedIndicator() {\n if (this.selectedIndex >= 0 && this.selectedIndex < this.items.length) {\n const header = this.items.get(this.selectedIndex).headerComponent.nativeElement;\n this.alignSelectedIndicator(header, 0);\n }\n }\n\n /** @hidden */\n public resolveHeaderScrollClasses() {\n return {\n 'igx-tabs__header-scroll--start': this.tabAlignment === 'start',\n 'igx-tabs__header-scroll--end': this.tabAlignment === 'end',\n 'igx-tabs__header-scroll--center': this.tabAlignment === 'center',\n 'igx-tabs__header-scroll--justify': this.tabAlignment === 'justify',\n };\n }\n\n /** @hidden */\n protected override scrollTabHeaderIntoView() {\n if (this.selectedIndex >= 0) {\n const tabItems = this.items.toArray();\n const tabHeaderNativeElement = tabItems[this.selectedIndex].headerComponent.nativeElement;\n\n // Scroll left if there is need\n if (this.getElementOffset(tabHeaderNativeElement) < this.offset) {\n this.scrollElement(tabHeaderNativeElement, false);\n }\n\n // Scroll right if there is need\n const viewPortOffsetWidth = this.viewPort.nativeElement.offsetWidth;\n const delta = (this.getElementOffset(tabHeaderNativeElement) + tabHeaderNativeElement.offsetWidth) - (viewPortOffsetWidth + this.offset);\n\n // Fix for IE 11, a difference is accumulated from the widths calculations\n if (delta > 1) {\n this.scrollElement(tabHeaderNativeElement, true);\n }\n\n this.alignSelectedIndicator(tabHeaderNativeElement);\n } else {\n this.hideSelectedIndicator();\n }\n }\n\n /** @hidden */\n protected getNextTabId() {\n return NEXT_TAB_ID++;\n }\n\n /** @hidden */\n protected override onItemChanges() {\n super.onItemChanges();\n\n Promise.resolve().then(() => {\n this.updateScrollButtons();\n });\n }\n\n private alignSelectedIndicator(element: HTMLElement, duration = 0.3): void {\n if (this.selectedIndicator) {\n this.selectedIndicator.nativeElement.style.visibility = 'visible';\n this.selectedIndicator.nativeElement.style.transitionDuration = duration > 0 ? `${duration}s` : 'initial';\n this.selectedIndicator.nativeElement.style.width = `${element.offsetWidth}px`;\n this.selectedIndicator.nativeElement.style.transform = `translate(${element.offsetLeft}px)`;\n }\n }\n\n private hideSelectedIndicator(): void {\n if (this.selectedIndicator) {\n this.selectedIndicator.nativeElement.style.visibility = 'hidden';\n }\n }\n\n private scroll(scrollNext: boolean): void {\n const tabsArray = this.items.toArray();\n\n for (let index = 0; index < tabsArray.length; index++) {\n const tab = tabsArray[index];\n const element = tab.headerComponent.nativeElement;\n if (scrollNext) {\n if (element.offsetWidth + this.getElementOffset(element) > this.viewPort.nativeElement.offsetWidth + this.offset) {\n this.scrollElement(element, scrollNext);\n break;\n }\n } else {\n if (this.getElementOffset(element) >= this.offset) {\n this.scrollElement(tabsArray[index - 1].headerComponent.nativeElement, scrollNext);\n break;\n }\n }\n }\n }\n\n private scrollElement(element: any, scrollNext: boolean): void {\n const viewPortWidth = this.viewPort.nativeElement.offsetWidth;\n\n this.offset = (scrollNext) ? element.offsetWidth + this.getElementOffset(element) - viewPortWidth : this.getElementOffset(element);\n this.viewPort.nativeElement.scrollLeft = this.getOffset(this.offset);\n this.updateScrollButtons();\n }\n\n private updateScrollButtons() {\n const itemsContainerWidth = this.getTabItemsContainerWidth();\n\n const scrollPrevButtonStyle = this.resolveLeftScrollButtonStyle(itemsContainerWidth);\n this.setScrollButtonStyle(this.scrollPrevButton.nativeElement, scrollPrevButtonStyle);\n\n const scrollNextButtonStyle = this.resolveRightScrollButtonStyle(itemsContainerWidth);\n this.setScrollButtonStyle(this.scrollNextButton.nativeElement, scrollNextButtonStyle);\n }\n\n private setScrollButtonStyle(button: HTMLButtonElement, buttonStyle: TabScrollButtonStyle) {\n if (buttonStyle === TabScrollButtonStyle.Enabled) {\n button.disabled = false;\n button.style.display = '';\n } else if (buttonStyle === TabScrollButtonStyle.Disabled) {\n button.disabled = true;\n button.style.display = '';\n } else if (buttonStyle === TabScrollButtonStyle.NotDisplayed) {\n button.style.display = 'none';\n }\n }\n private resolveLeftScrollButtonStyle(itemsContainerWidth: number): TabScrollButtonStyle {\n const headerContainerWidth = this.headerContainer.nativeElement.offsetWidth;\n const offset = this.offset;\n\n if (offset === 0) {\n // Fix for IE 11, a difference is accumulated from the widths calculations.\n if (itemsContainerWidth - headerContainerWidth <= 1) {\n return TabScrollButtonStyle.NotDisplayed;\n }\n return TabScrollButtonStyle.Disabled;\n } else {\n return TabScrollButtonStyle.Enabled;\n }\n }\n\n private resolveRightScrollButtonStyle(itemsContainerWidth: number): TabScrollButtonStyle {\n const viewPortWidth = this.viewPort.nativeElement.offsetWidth;\n const headerContainerWidth = this.headerContainer.nativeElement.offsetWidth;\n const offset = this.offset;\n const total = offset + viewPortWidth;\n\n // Fix for IE 11, a difference is accumulated from the widths calculations.\n if (itemsContainerWidth - headerContainerWidth <= 1 && offset === 0) {\n return TabScrollButtonStyle.NotDisplayed;\n }\n\n if (itemsContainerWidth > total) {\n return TabScrollButtonStyle.Enabled;\n } else {\n return TabScrollButtonStyle.Disabled;\n }\n }\n\n private getTabItemsContainerWidth() {\n // We use this hacky way to get the width of the itemsContainer,\n // because there is inconsistency in IE we cannot use offsetWidth or scrollOffset.\n const itemsContainerChildrenCount = this.itemsContainer.nativeElement.children.length;\n let itemsContainerWidth = 0;\n\n if (itemsContainerChildrenCount > 1) {\n const lastTab = this.itemsContainer.nativeElement.children[itemsContainerChildrenCount - 1] as HTMLElement;\n itemsContainerWidth = this.getElementOffset(lastTab) + lastTab.offsetWidth;\n }\n\n return itemsContainerWidth;\n }\n\n private getOffset(offset: number): number {\n return isLeftToRight(this._element.nativeElement) ? offset : -offset;\n }\n\n private getElementOffset(element: HTMLElement): number {\n const rtl = !isLeftToRight(this._element.nativeElement);\n return rtl ? this.itemsWrapper.nativeElement.offsetWidth - element.offsetLeft - element.offsetWidth : element.offsetLeft;\n }\n}\n","<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 @for (tab of items; track tab; let i = $index) {\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n }\n </div>\n @if (items.length > 0) {\n <div #selectedIndicator class=\"igx-tabs__header-active-indicator\">\n </div>\n }\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 @for (tab of items; track tab; let i = $index) {\n <ng-container *ngTemplateOutlet=\"tab.panelTemplate\"></ng-container>\n }\n</div>\n","import { AfterViewInit, Component, HostBinding, HostListener, NgZone, OnDestroy, inject } from '@angular/core';\nimport { IgxTabHeaderDirective } from '../tab-header.directive';\nimport { IgxTabHeaderBase } from '../tabs.base';\nimport { IgxTabsComponent } from './tabs.component';\nimport { getResizeObserver, isLeftToRight } from 'igniteui-angular/core';\n\n@Component({\n selector: 'igx-tab-header',\n templateUrl: 'tab-header.component.html',\n providers: [{ provide: IgxTabHeaderBase, useExisting: IgxTabHeaderComponent }],\n standalone: true\n})\nexport class IgxTabHeaderComponent extends IgxTabHeaderDirective implements AfterViewInit, OnDestroy {\n protected override tabs = inject(IgxTabsComponent);\n private ngZone = inject(NgZone);\n\n /** @hidden @internal */\n @HostBinding('class.igx-tabs__header-item--selected')\n public get provideCssClassSelected(): boolean {\n return this.tab.selected;\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-tabs__header-item--disabled')\n public get provideCssClassDisabled(): boolean {\n return this.tab.disabled;\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-tabs__header-item')\n public cssClass = true;\n\n private _resizeObserver: ResizeObserver;\n\n /** @hidden @internal */\n @HostListener('keydown', ['$event'])\n public keyDown(event: KeyboardEvent) {\n let unsupportedKey = false;\n const itemsArray = this.tabs.items.toArray();\n const previousIndex = itemsArray.indexOf(this.tab);\n let newIndex = previousIndex;\n const hasDisabledItems = itemsArray.some((item) => item.disabled);\n\n switch (event.key) {\n case this.platform.KEYMAP.ARROW_RIGHT:\n newIndex = this.getNewSelectionIndex(newIndex, itemsArray, event.key, hasDisabledItems);\n break;\n case this.platform.KEYMAP.ARROW_LEFT:\n newIndex = this.getNewSelectionIndex(newIndex, itemsArray, event.key, hasDisabledItems);\n break;\n case this.platform.KEYMAP.HOME:\n event.preventDefault();\n newIndex = 0;\n while (itemsArray[newIndex].disabled && newIndex < itemsArray.length) {\n newIndex = newIndex === itemsArray.length - 1 ? 0 : newIndex + 1;\n }\n break;\n case this.platform.KEYMAP.END:\n event.preventDefault();\n newIndex = itemsArray.length - 1;\n while (hasDisabledItems && itemsArray[newIndex].disabled && newIndex > 0) {\n newIndex = newIndex === 0 ? itemsArray.length - 1 : newIndex - 1;\n }\n break;\n case this.platform.KEYMAP.ENTER:\n case this.platform.KEYMAP.SPACE:\n event.preventDefault();\n if (this.tabs.activation === 'manual') {\n this.nativeElement.click();\n }\n unsupportedKey = true;\n break;\n default:\n unsupportedKey = true;\n break;\n }\n\n if (!unsupportedKey) {\n itemsArray[newIndex].headerComponent.nativeElement.focus({ preventScroll: true });\n if (this.tabs.activation === 'auto') {\n this.tabs.selectedIndex = newIndex;\n }\n }\n }\n\n /** @hidden @internal */\n public ngAfterViewInit(): void {\n this.ngZone.runOutsideAngular(() => {\n if (this.platform.isBrowser) {\n this._resizeObserver = new (getResizeObserver())(() => {\n this.tabs.realignSelectedIndicator();\n });\n this._resizeObserver.observe(this.nativeElement);\n }\n });\n }\n\n /** @hidden @internal */\n public ngOnDestroy(): void {\n this.ngZone.runOutsideAngular(() => {\n this._resizeObserver?.disconnect();\n });\n }\n\n private getNewSelectionIndex(newIndex: number, itemsArray: any[], key: string, hasDisabledItems: boolean): number {\n const rtl = !isLeftToRight(this.nativeElement);\n\n if ((key === this.platform.KEYMAP.ARROW_RIGHT && !rtl) || (key === this.platform.KEYMAP.ARROW_LEFT && rtl)) {\n newIndex = newIndex === itemsArray.length - 1 ? 0 : newIndex + 1;\n while (hasDisabledItems && itemsArray[newIndex].disabled && newIndex < itemsArray.length) {\n newIndex = newIndex === itemsArray.length - 1 ? 0 : newIndex + 1;\n }\n } else {\n newIndex = newIndex === 0 ? itemsArray.length - 1 : newIndex - 1;\n while (hasDisabledItems && itemsArray[newIndex].disabled && newIndex >= 0) {\n newIndex = newIndex === 0 ? itemsArray.length - 1 : newIndex - 1;\n }\n }\n return newIndex;\n }\n}\n","<ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n\n<div class=\"igx-tabs__header-item-inner\">\n <ng-content></ng-content>\n</div>\n\n<ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n","import { Component } from '@angular/core';\nimport { IgxTabItemDirective } from '../tab-item.directive';\n\n@Component({\n selector: 'igx-tab-item',\n templateUrl: 'tab-item.component.html',\n providers: [{ provide: IgxTabItemDirective, useExisting: IgxTabItemComponent }],\n standalone: true\n})\nexport class IgxTabItemComponent extends IgxTabItemDirective {\n\n}\n","<ng-template #headerTemplate>\n <ng-content select=\"igx-tab-header\"></ng-content>\n</ng-template>\n<ng-template #panelTemplate>\n <ng-content select=\"igx-tab-content\"></ng-content>\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[igxTabHeaderLabel],igx-tab-header-label',\n standalone: true\n})\nexport class IgxTabHeaderLabelDirective { }\n\n@Directive({\n selector: '[igxTabHeaderIcon],igx-tab-header-icon',\n standalone: true\n})\nexport class IgxTabHeaderIconDirective { }\n","import { IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxTabContentComponent } from './tab-content.component';\nimport { IgxTabHeaderComponent } from './tab-header.component';\nimport { IgxTabItemComponent } from './tab-item.component';\nimport { IgxTabsComponent } from './tabs.component';\nimport { IgxTabHeaderIconDirective, IgxTabHeaderLabelDirective } from './tabs.directives';\n\nexport * from './tabs.component';\nexport * from './tab-item.component';\nexport * from './tab-header.component';\nexport * from './tabs.directives';\nexport * from './tab-content.component';\nexport {\n ITabsSelectedIndexChangingEventArgs,\n ITabsSelectedItemChangeEventArgs\n} from '../tabs.directive'\n\n/* NOTE: Tabs directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_TABS_DIRECTIVES = [\n IgxTabsComponent,\n IgxTabItemComponent,\n IgxTabHeaderComponent,\n IgxTabContentComponent,\n IgxTabHeaderLabelDirective,\n IgxTabHeaderIconDirective,\n IgxPrefixDirective,\n IgxSuffixDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_TABS_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_TABS_DIRECTIVES\n ],\n exports: [\n ...IGX_TABS_DIRECTIVES\n ]\n})\nexport class IgxTabsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxTabsComponent","i2.IgxTabItemComponent","i3.IgxTabHeaderComponent","i4.IgxTabContentComponent","i5.IgxTabHeaderLabelDirective","i5.IgxTabHeaderIconDirective"],"mappings":"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"}
|