@eui/ecl 23.0.0-alpha.6 → 23.0.0-alpha.8
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/docs/changelog.html +86 -0
- package/docs/classes/EclLanguageService.html +8 -8
- package/docs/components/EclBannerComponent.html +28 -56
- package/docs/components/EclCardComponent.html +12 -24
- package/docs/components/EclCarouselComponent.html +33 -65
- package/docs/components/EclCarouselItemComponent.html +4 -8
- package/docs/components/EclCategoryFilterComponent.html +4 -8
- package/docs/components/EclCategoryFilterItemComponent.html +5 -9
- package/docs/components/EclCategoryFilterListComponent.html +5 -9
- package/docs/components/EclContentItemComponent.html +20 -40
- package/docs/components/EclFactFiguresItemComponent.html +4 -8
- package/docs/components/EclFactFiguresViewAllComponent.html +4 -8
- package/docs/components/EclFeaturedItemComponent.html +4 -10
- package/docs/components/EclFileComponent.html +4 -8
- package/docs/components/EclFileItemsComponent.html +4 -8
- package/docs/components/EclFormGroupComponent.html +4 -8
- package/docs/components/EclGalleryComponent.html +21 -41
- package/docs/components/EclGalleryItemComponent.html +8 -16
- package/docs/components/EclIconComponent.html +4 -8
- package/docs/components/EclInpageNavigationComponent.html +20 -40
- package/docs/components/EclInpageNavigationItemComponent.html +4 -8
- package/docs/components/EclListIllustrationComponent.html +4 -8
- package/docs/components/EclListIllustrationItemComponent.html +9 -17
- package/docs/components/EclMediaContainerComponent.html +21 -41
- package/docs/components/EclMegaMenuComponent.html +4 -8
- package/docs/components/EclMegaMenuFeaturedComponent.html +12 -24
- package/docs/components/EclMegaMenuInfoComponent.html +4 -8
- package/docs/components/EclMegaMenuItemComponent.html +37 -73
- package/docs/components/EclMegaMenuSubitemComponent.html +21 -43
- package/docs/components/EclMenuComponent.html +20 -40
- package/docs/components/EclMenuItemComponent.html +12 -24
- package/docs/components/EclMenuMegaItemComponent.html +12 -24
- package/docs/components/EclModalComponent.html +1 -1
- package/docs/components/EclMultiselectComponent.html +4 -8
- package/docs/components/EclMultiselectDropdownComponent.html +21 -41
- package/docs/components/EclMultiselectInputComponent.html +4 -8
- package/docs/components/EclMultiselectOptionComponent.html +4 -8
- package/docs/components/EclNavigationListComponent.html +4 -8
- package/docs/components/EclNavigationListItemComponent.html +4 -8
- package/docs/components/EclNewsTickerComponent.html +28 -48
- package/docs/components/EclNewsTickerItemComponent.html +4 -8
- package/docs/components/EclPageHeaderComponent.html +8 -16
- package/docs/components/EclPaginationComponent.html +4 -8
- package/docs/components/EclPopoverComponent.html +12 -24
- package/docs/components/EclSiteHeaderComponent.html +44 -88
- package/docs/components/EclSiteHeaderCustomActionComponent.html +8 -16
- package/docs/components/EclSiteHeaderLanguageComponent.html +10 -18
- package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +6 -10
- package/docs/components/EclSiteHeaderLoginComponent.html +4 -8
- package/docs/components/EclSiteHeaderSearchComponent.html +4 -8
- package/docs/components/EclTabComponent.html +12 -24
- package/docs/components/EclTabsComponent.html +29 -57
- package/docs/components/EclTimelineComponent.html +4 -8
- package/docs/components/EclTimelineItemComponent.html +16 -32
- package/docs/directives/EclCheckboxDirective.html +16 -32
- package/docs/directives/EclDescriptionListDirective.html +4 -8
- package/docs/directives/EclGalleryMediaDirective.html +2 -2
- package/docs/directives/EclGalleryPictureDirective.html +1 -1
- package/docs/directives/EclListIllustrationPictureDirective.html +4 -8
- package/docs/directives/EclMediaContainerItemDirective.html +4 -8
- package/docs/directives/EclMegaMenuSublistDirective.html +8 -16
- package/docs/directives/EclMultiselectOptionDirective.html +4 -8
- package/docs/directives/EclPageHeaderMetaItemDirective.html +9 -0
- package/docs/directives/EclRadioDirective.html +8 -16
- package/docs/directives/EclSocialMediaFollowLinkDirective.html +4 -8
- package/docs/directives/EclTableDirective.html +4 -8
- package/docs/directives/EclTableHeadDirective.html +4 -8
- package/docs/injectables/EclDefaultLanguageService.html +7 -7
- package/docs/injectables/EclMegaMenuService.html +2 -2
- package/docs/interfaces/EclMegaMenuItem.html +2 -2
- package/docs/interfaces/EclMenuItem.html +2 -2
- package/docs/js/search/search_index.js +2 -2
- package/docs/json/EclMegaMenuItemComponent.md +1 -1
- package/docs/json/EclMegaMenuSubitemComponent.md +1 -1
- package/docs/json/EclSiteHeaderLanguagePopoverComponent.md +2 -2
- package/docs/json/documentation.json +1365 -2133
- package/docs/llms.txt +182 -182
- package/docs/miscellaneous/variables.html +16 -16
- package/docs/properties.html +1 -1
- package/fesm2022/eui-ecl-components-ecl-banner.mjs +37 -40
- package/fesm2022/eui-ecl-components-ecl-banner.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-card.mjs +23 -17
- package/fesm2022/eui-ecl-components-ecl-card.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-carousel.mjs +105 -82
- package/fesm2022/eui-ecl-components-ecl-carousel.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-category-filter.mjs +36 -29
- package/fesm2022/eui-ecl-components-ecl-category-filter.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-checkbox.mjs +30 -20
- package/fesm2022/eui-ecl-components-ecl-checkbox.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-content-item.mjs +46 -27
- package/fesm2022/eui-ecl-components-ecl-content-item.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-date-picker.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-fact-figures.mjs +25 -15
- package/fesm2022/eui-ecl-components-ecl-fact-figures.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-featured.mjs +10 -9
- package/fesm2022/eui-ecl-components-ecl-featured.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-file.mjs +17 -13
- package/fesm2022/eui-ecl-components-ecl-file.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-form-group.mjs +12 -7
- package/fesm2022/eui-ecl-components-ecl-form-group.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-gallery.mjs +44 -49
- package/fesm2022/eui-ecl-components-ecl-gallery.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-icon.mjs +7 -8
- package/fesm2022/eui-ecl-components-ecl-icon.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs +48 -50
- package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-link.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs +19 -24
- package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-list.mjs +6 -7
- package/fesm2022/eui-ecl-components-ecl-list.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-media-container.mjs +31 -34
- package/fesm2022/eui-ecl-components-ecl-media-container.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs +237 -197
- package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-menu.mjs +108 -86
- package/fesm2022/eui-ecl-components-ecl-menu.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-modal.mjs +0 -1
- package/fesm2022/eui-ecl-components-ecl-modal.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-multiselect.mjs +70 -67
- package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs +16 -14
- package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs +67 -51
- package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-page-header.mjs +17 -12
- package/fesm2022/eui-ecl-components-ecl-page-header.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-pagination.mjs +9 -7
- package/fesm2022/eui-ecl-components-ecl-pagination.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-popover.mjs +44 -38
- package/fesm2022/eui-ecl-components-ecl-popover.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-radio.mjs +22 -14
- package/fesm2022/eui-ecl-components-ecl-radio.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-site-footer.mjs +1 -1
- package/fesm2022/eui-ecl-components-ecl-site-footer.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-site-header.mjs +123 -118
- package/fesm2022/eui-ecl-components-ecl-site-header.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-slogan-ticker.mjs +2 -2
- package/fesm2022/eui-ecl-components-ecl-slogan-ticker.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs +10 -8
- package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-table.mjs +17 -15
- package/fesm2022/eui-ecl-components-ecl-table.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-tabs.mjs +101 -81
- package/fesm2022/eui-ecl-components-ecl-tabs.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-timeline.mjs +47 -37
- package/fesm2022/eui-ecl-components-ecl-timeline.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-tooltip.mjs.map +1 -1
- package/fesm2022/eui-ecl-core.mjs +1 -1
- package/fesm2022/eui-ecl-core.mjs.map +1 -1
- package/package.json +1 -1
- package/types/eui-ecl-components-ecl-banner.d.ts +42 -43
- package/types/eui-ecl-components-ecl-banner.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-card.d.ts +34 -35
- package/types/eui-ecl-components-ecl-card.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-carousel.d.ts +10 -11
- package/types/eui-ecl-components-ecl-carousel.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-category-filter.d.ts +6 -6
- package/types/eui-ecl-components-ecl-category-filter.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-checkbox.d.ts +47 -49
- package/types/eui-ecl-components-ecl-checkbox.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-content-item.d.ts +16 -18
- package/types/eui-ecl-components-ecl-content-item.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-fact-figures.d.ts +3 -3
- package/types/eui-ecl-components-ecl-fact-figures.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-featured.d.ts +2 -2
- package/types/eui-ecl-components-ecl-featured.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-file.d.ts +42 -43
- package/types/eui-ecl-components-ecl-file.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-form-group.d.ts +1 -3
- package/types/eui-ecl-components-ecl-form-group.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-gallery.d.ts +12 -12
- package/types/eui-ecl-components-ecl-gallery.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-icon.d.ts +1 -1
- package/types/eui-ecl-components-ecl-icon.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-inpage-navigation.d.ts +8 -8
- package/types/eui-ecl-components-ecl-inpage-navigation.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-list-illustration.d.ts +44 -44
- package/types/eui-ecl-components-ecl-list-illustration.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-list.d.ts +2 -2
- package/types/eui-ecl-components-ecl-list.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-media-container.d.ts +33 -33
- package/types/eui-ecl-components-ecl-media-container.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-mega-menu.d.ts +185 -191
- package/types/eui-ecl-components-ecl-mega-menu.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-menu.d.ts +126 -128
- package/types/eui-ecl-components-ecl-menu.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-modal.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-multiselect.d.ts +10 -10
- package/types/eui-ecl-components-ecl-multiselect.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-navigation-list.d.ts +3 -4
- package/types/eui-ecl-components-ecl-navigation-list.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-news-ticker.d.ts +18 -18
- package/types/eui-ecl-components-ecl-news-ticker.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-page-header.d.ts +3 -3
- package/types/eui-ecl-components-ecl-page-header.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-pagination.d.ts +1 -1
- package/types/eui-ecl-components-ecl-pagination.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-popover.d.ts +3 -3
- package/types/eui-ecl-components-ecl-popover.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-radio.d.ts +28 -28
- package/types/eui-ecl-components-ecl-radio.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-site-header.d.ts +48 -48
- package/types/eui-ecl-components-ecl-site-header.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-social-media-follow.d.ts +1 -1
- package/types/eui-ecl-components-ecl-social-media-follow.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-table.d.ts +3 -3
- package/types/eui-ecl-components-ecl-table.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-tabs.d.ts +12 -12
- package/types/eui-ecl-components-ecl-tabs.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-timeline.d.ts +27 -28
- package/types/eui-ecl-components-ecl-timeline.d.ts.map +1 -1
- package/types/eui-ecl-core.d.ts +11 -11
- package/types/eui-ecl-core.d.ts.map +1 -1
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ElementRef, Component, input, model, booleanAttribute, signal, EventEmitter, computed, effect, HostBinding,
|
|
2
|
+
import { inject, ElementRef, Component, input, model, booleanAttribute, signal, EventEmitter, viewChild, contentChild, computed, effect, HostBinding, Output, output, contentChildren, forwardRef, IterableDiffers, ChangeDetectorRef, PLATFORM_ID, afterNextRender, HostListener, ViewEncapsulation } from '@angular/core';
|
|
3
3
|
import { ECLBaseDirective, EclBaseEvent, EclRtlService, KeyCode } from '@eui/ecl/core';
|
|
4
4
|
import * as i1 from '@eui/ecl/components/ecl-link';
|
|
5
5
|
import { EclLinkDirective, EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';
|
|
6
6
|
import { BreakpointObserver } from '@angular/cdk/layout';
|
|
7
7
|
import { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';
|
|
8
|
+
import { toObservable } from '@angular/core/rxjs-interop';
|
|
8
9
|
import { TranslatePipe } from '@ngx-translate/core';
|
|
9
|
-
import { Subject
|
|
10
|
-
import { takeUntil
|
|
10
|
+
import { Subject } from 'rxjs';
|
|
11
|
+
import { takeUntil } from 'rxjs/operators';
|
|
11
12
|
import * as i1$1 from '@eui/ecl/components/ecl-button';
|
|
12
13
|
import { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';
|
|
13
14
|
import * as i2 from '@eui/ecl/components/ecl-icon';
|
|
@@ -81,6 +82,22 @@ class EclTabComponent extends ECLBaseDirective {
|
|
|
81
82
|
* Emits when a keydown event occurs on the tab.
|
|
82
83
|
*/
|
|
83
84
|
this.keydownTab = new EventEmitter();
|
|
85
|
+
/**
|
|
86
|
+
* Reference to the tab content template.
|
|
87
|
+
*/
|
|
88
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
89
|
+
this.contentTemplate = viewChild('content', /* @ts-ignore */
|
|
90
|
+
...(ngDevMode ? [{ debugName: "contentTemplate" }] : /* istanbul ignore next */ []));
|
|
91
|
+
/**
|
|
92
|
+
* Reference to the internal link directive used in the tab.
|
|
93
|
+
*/
|
|
94
|
+
this.link = viewChild(EclLinkDirective, /* @ts-ignore */
|
|
95
|
+
...(ngDevMode ? [{ debugName: "link" }] : /* istanbul ignore next */ []));
|
|
96
|
+
/**
|
|
97
|
+
* Reference to the projected tab label component.
|
|
98
|
+
*/
|
|
99
|
+
this.label = contentChild(EclTabLabelComponent, /* @ts-ignore */
|
|
100
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
84
101
|
/**
|
|
85
102
|
* Contains the inner HTML of the tab label.
|
|
86
103
|
*/
|
|
@@ -127,7 +144,7 @@ class EclTabComponent extends ECLBaseDirective {
|
|
|
127
144
|
return false;
|
|
128
145
|
}
|
|
129
146
|
ngAfterViewInit() {
|
|
130
|
-
this.tabLabel = this.label.el.nativeElement.innerHTML;
|
|
147
|
+
this.tabLabel = this.label().el.nativeElement.innerHTML;
|
|
131
148
|
// this._isActive.set(this.isActive());
|
|
132
149
|
}
|
|
133
150
|
/**
|
|
@@ -140,7 +157,7 @@ class EclTabComponent extends ECLBaseDirective {
|
|
|
140
157
|
* Returns the inner HTML content of the tab label.
|
|
141
158
|
*/
|
|
142
159
|
getTabLabel() {
|
|
143
|
-
return this.label.el.nativeElement.innerHTML;
|
|
160
|
+
return this.label().el.nativeElement.innerHTML;
|
|
144
161
|
}
|
|
145
162
|
/**
|
|
146
163
|
* Returns the width of the tab element in pixels.
|
|
@@ -169,16 +186,16 @@ class EclTabComponent extends ECLBaseDirective {
|
|
|
169
186
|
* Calls the focus method on the inner link directive.
|
|
170
187
|
*/
|
|
171
188
|
onFocus() {
|
|
172
|
-
this.link.onFocus();
|
|
189
|
+
this.link().onFocus();
|
|
173
190
|
}
|
|
174
191
|
/**
|
|
175
192
|
* Calls the blur method on the inner link directive.
|
|
176
193
|
*/
|
|
177
194
|
onBlur() {
|
|
178
|
-
this.link.onBlur();
|
|
195
|
+
this.link().onBlur();
|
|
179
196
|
}
|
|
180
197
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
181
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
198
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.5", type: EclTabComponent, isStandalone: true, selector: "div[eclTab]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, anchorExtraClasses: { classPropertyName: "anchorExtraClasses", publicName: "anchorExtraClasses", isSignal: true, isRequired: false, transformFunction: null }, isHidden: { classPropertyName: "isHidden", publicName: "isHidden", isSignal: true, isRequired: false, transformFunction: null }, isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isHidden: "isHiddenChange", selectTab: "selectTab", keydownTab: "keydownTab" }, host: { properties: { "attr.id": "id()", "class.ecl-tabs__item--hidden": "isHidden()", "class": "this.cssClasses" } }, queries: [{ propertyName: "label", first: true, predicate: EclTabLabelComponent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "contentTemplate", first: true, predicate: ["content"], descendants: true, isSignal: true }, { propertyName: "link", first: true, predicate: EclLinkDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<a\n eclLink\n role=\"tab\"\n class=\"ecl-tabs__link eui-ecl-u-cursor-pointer {{anchorExtraClasses()}}\"\n [class.ecl-tabs__link--active]=\"_isActive()\"\n [attr.aria-selected]=\"_isActive()\"\n [tabindex]=\"hrefTabindex()\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"onTabClick()\"\n [id]=\"linkId()\"\n [attr.aria-controls]=\"ariaControls()\">\n <ng-content select=\"ecl-tab-label\"></ng-content>\n</a>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.EclLinkDirective, selector: "[eclLink]", inputs: ["extraAttributes", "isInverted", "isIconOnly", "isHighlight", "isNoVisited", "isBranded", "variant"] }] }); }
|
|
182
199
|
}
|
|
183
200
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclTabComponent, decorators: [{
|
|
184
201
|
type: Component,
|
|
@@ -190,16 +207,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
190
207
|
type: Output
|
|
191
208
|
}], keydownTab: [{
|
|
192
209
|
type: Output
|
|
193
|
-
}], contentTemplate: [{
|
|
194
|
-
type: ViewChild,
|
|
195
|
-
args: ['content']
|
|
196
|
-
}], link: [{
|
|
197
|
-
type: ViewChild,
|
|
198
|
-
args: [EclLinkDirective]
|
|
199
|
-
}], label: [{
|
|
200
|
-
type: ContentChild,
|
|
201
|
-
args: [EclTabLabelComponent]
|
|
202
|
-
}], cssClasses: [{
|
|
210
|
+
}], contentTemplate: [{ type: i0.ViewChild, args: ['content', { isSignal: true }] }], link: [{ type: i0.ViewChild, args: [i0.forwardRef(() => EclLinkDirective), { isSignal: true }] }], label: [{ type: i0.ContentChild, args: [i0.forwardRef(() => EclTabLabelComponent), { isSignal: true }] }], cssClasses: [{
|
|
203
211
|
type: HostBinding,
|
|
204
212
|
args: ['class']
|
|
205
213
|
}] } });
|
|
@@ -232,6 +240,41 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
232
240
|
* Emits an event when a tab is selected.
|
|
233
241
|
*/
|
|
234
242
|
this.tabSelect = output();
|
|
243
|
+
/**
|
|
244
|
+
* All projected tabs inside the component.
|
|
245
|
+
*/
|
|
246
|
+
this.tabs = contentChildren(forwardRef(() => EclTabComponent), /* @ts-ignore */
|
|
247
|
+
...(ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []));
|
|
248
|
+
/**
|
|
249
|
+
* Reference to the visible tab list container.
|
|
250
|
+
*/
|
|
251
|
+
this.tabsList = viewChild('tabsList', /* @ts-ignore */
|
|
252
|
+
...(ngDevMode ? [{ debugName: "tabsList" }] : /* istanbul ignore next */ []));
|
|
253
|
+
/**
|
|
254
|
+
* Reference to the "more" button.
|
|
255
|
+
*/
|
|
256
|
+
this.moreButton = viewChild('moreButton', /* @ts-ignore */
|
|
257
|
+
...(ngDevMode ? [{ debugName: "moreButton" }] : /* istanbul ignore next */ []));
|
|
258
|
+
/**
|
|
259
|
+
* Reference to the scroll previous button.
|
|
260
|
+
*/
|
|
261
|
+
this.btnPrev = viewChild('btnPrev', /* @ts-ignore */
|
|
262
|
+
...(ngDevMode ? [{ debugName: "btnPrev" }] : /* istanbul ignore next */ []));
|
|
263
|
+
/**
|
|
264
|
+
* Reference to the scroll next button.
|
|
265
|
+
*/
|
|
266
|
+
this.btnNext = viewChild('btnNext', /* @ts-ignore */
|
|
267
|
+
...(ngDevMode ? [{ debugName: "btnNext" }] : /* istanbul ignore next */ []));
|
|
268
|
+
/**
|
|
269
|
+
* Reference to the dropdown list containing overflowed tabs.
|
|
270
|
+
*/
|
|
271
|
+
this.dropdownList = viewChild('dropdownList', /* @ts-ignore */
|
|
272
|
+
...(ngDevMode ? [{ debugName: "dropdownList" }] : /* istanbul ignore next */ []));
|
|
273
|
+
/**
|
|
274
|
+
* Reference to the "more" item container in the tab list.
|
|
275
|
+
*/
|
|
276
|
+
this.moreItem = viewChild('moreItem', /* @ts-ignore */
|
|
277
|
+
...(ngDevMode ? [{ debugName: "moreItem" }] : /* istanbul ignore next */ []));
|
|
235
278
|
/**
|
|
236
279
|
* Tabs displayed in the visible list.
|
|
237
280
|
*/
|
|
@@ -270,6 +313,7 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
270
313
|
this.eclRtlService = inject(EclRtlService);
|
|
271
314
|
this.platformId = inject(PLATFORM_ID);
|
|
272
315
|
this.destroy$ = new Subject();
|
|
316
|
+
this.tabsChanges$ = toObservable(this.tabs);
|
|
273
317
|
this.isRtl = false;
|
|
274
318
|
this.TIMEOUT_INTERVAL = 0;
|
|
275
319
|
if (this.isUsingOldSelector) {
|
|
@@ -293,7 +337,7 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
293
337
|
this.destroy$.unsubscribe();
|
|
294
338
|
}
|
|
295
339
|
onClick(target) {
|
|
296
|
-
if (!this.moreButton.el.nativeElement.contains(target) && !this.dropdownList.nativeElement.contains(target)) {
|
|
340
|
+
if (!this.moreButton().el.nativeElement.contains(target) && !this.dropdownList().nativeElement.contains(target)) {
|
|
297
341
|
this.closeDropdown();
|
|
298
342
|
}
|
|
299
343
|
}
|
|
@@ -352,7 +396,7 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
352
396
|
* Returns the number of tabs hidden in dropdown.
|
|
353
397
|
*/
|
|
354
398
|
getHiddenTabsCount() {
|
|
355
|
-
return this.tabs.filter((item) => item.isHidden()).length;
|
|
399
|
+
return this.tabs().filter((item) => item.isHidden()).length;
|
|
356
400
|
}
|
|
357
401
|
/**
|
|
358
402
|
* Returns the label of the tab at the specified index.
|
|
@@ -374,7 +418,7 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
374
418
|
* @param tab Tab to activate.
|
|
375
419
|
*/
|
|
376
420
|
onTabSelect(tab) {
|
|
377
|
-
this.deactivateAllTabs(this.tabs
|
|
421
|
+
this.deactivateAllTabs(Array.from(this.tabs()), this.listTabs);
|
|
378
422
|
this.activateTab(tab);
|
|
379
423
|
this.sendTabSelectEvent(tab);
|
|
380
424
|
}
|
|
@@ -476,7 +520,7 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
476
520
|
if (index < 0)
|
|
477
521
|
return;
|
|
478
522
|
this.openDropdown();
|
|
479
|
-
this.moreButton.el.nativeElement.blur();
|
|
523
|
+
this.moreButton().el.nativeElement.blur();
|
|
480
524
|
this.focusOnDropdownTab(index);
|
|
481
525
|
}
|
|
482
526
|
onTabTab() {
|
|
@@ -490,10 +534,10 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
490
534
|
this.index = this.getShifIndex(dir, this.index);
|
|
491
535
|
this.isScrollPrevBtnShow.set(this.index >= 1);
|
|
492
536
|
this.isScrollNextBtnShow.set(this.index < this.getTabsCount() - 1);
|
|
493
|
-
const leftMargin = this.index === 0 ? 0 : this.btnPrev.el.nativeElement.getBoundingClientRect().width + 13;
|
|
537
|
+
const leftMargin = this.index === 0 ? 0 : this.btnPrev().el.nativeElement.getBoundingClientRect().width + 13;
|
|
494
538
|
let newOffset = 0;
|
|
495
539
|
if (this.isRtl) {
|
|
496
|
-
newOffset = Math.ceil(this.tabsList.nativeElement.offsetWidth -
|
|
540
|
+
newOffset = Math.ceil(this.tabsList().nativeElement.offsetWidth -
|
|
497
541
|
this.getTabsAsArray()[this.index].hostElement.offsetLeft -
|
|
498
542
|
this.getTabsAsArray()[this.index].hostElement.offsetWidth -
|
|
499
543
|
leftMargin);
|
|
@@ -533,7 +577,7 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
533
577
|
}
|
|
534
578
|
createSecondListForDropdown() {
|
|
535
579
|
this.listTabs = [];
|
|
536
|
-
this.tabs.forEach((tab) => {
|
|
580
|
+
this.tabs().forEach((tab) => {
|
|
537
581
|
const newTab = Object.assign({}, tab);
|
|
538
582
|
newTab.isHidden.set(true);
|
|
539
583
|
newTab._isActive.set(tab.isActive());
|
|
@@ -541,10 +585,10 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
541
585
|
});
|
|
542
586
|
}
|
|
543
587
|
getTabsAsArray() {
|
|
544
|
-
return this.tabs
|
|
588
|
+
return Array.from(this.tabs());
|
|
545
589
|
}
|
|
546
590
|
getTabsCount() {
|
|
547
|
-
return this.tabs
|
|
591
|
+
return this.tabs().length;
|
|
548
592
|
}
|
|
549
593
|
closeDropdown() {
|
|
550
594
|
this.isDropdownExpanded.set(false);
|
|
@@ -553,15 +597,12 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
553
597
|
this.isDropdownExpanded.set(true);
|
|
554
598
|
}
|
|
555
599
|
observeTabsChanges() {
|
|
556
|
-
this.
|
|
557
|
-
}
|
|
558
|
-
createTabsChangesObservable(tabs) {
|
|
559
|
-
return of(tabs).pipe(mergeWith(tabs.changes), takeUntil(this.destroy$));
|
|
600
|
+
this.tabsChanges$.pipe(takeUntil(this.destroy$)).subscribe(this.onTabsChanges.bind(this));
|
|
560
601
|
}
|
|
561
602
|
onTabsChanges() {
|
|
562
|
-
this.diff = this.differ.diff(this.tabs);
|
|
603
|
+
this.diff = this.differ.diff(this.tabs());
|
|
563
604
|
if (!this.diff) {
|
|
564
|
-
this.tabs.forEach((tab) => {
|
|
605
|
+
this.tabs().forEach((tab) => {
|
|
565
606
|
this.connectTabEvents(tab);
|
|
566
607
|
});
|
|
567
608
|
}
|
|
@@ -616,7 +657,7 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
616
657
|
}
|
|
617
658
|
}
|
|
618
659
|
focusOnDropdownTab(index) {
|
|
619
|
-
this.dropdownList.nativeElement.children[index].firstChild.focus();
|
|
660
|
+
this.dropdownList().nativeElement.children[index].firstChild.focus();
|
|
620
661
|
}
|
|
621
662
|
getLastTabFromArray() {
|
|
622
663
|
return this.getTabsAsArray()[this.getTabsAsArray().length - 1];
|
|
@@ -662,33 +703,33 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
662
703
|
this.isScrollNextBtnShow.set(false);
|
|
663
704
|
this.isScrollPrevBtnShow.set(false);
|
|
664
705
|
// Reset list width to auto for measurement (direct DOM, same as ECL)
|
|
665
|
-
this.tabsList.nativeElement.style.width = 'auto';
|
|
706
|
+
this.tabsList().nativeElement.style.width = 'auto';
|
|
666
707
|
// Temporarily show the more button to get its actual width
|
|
667
|
-
this.moreItem.nativeElement.classList.remove('ecl-tabs__item--hidden');
|
|
668
|
-
this.moreButton.el.nativeElement.classList.remove('ecl-tabs__toggle--hidden');
|
|
669
|
-
const moreButtonWidth = this.moreButton.el.nativeElement.getBoundingClientRect().width;
|
|
670
|
-
this.moreItem.nativeElement.classList.add('ecl-tabs__item--hidden');
|
|
671
|
-
this.moreButton.el.nativeElement.classList.add('ecl-tabs__toggle--hidden');
|
|
708
|
+
this.moreItem().nativeElement.classList.remove('ecl-tabs__item--hidden');
|
|
709
|
+
this.moreButton().el.nativeElement.classList.remove('ecl-tabs__toggle--hidden');
|
|
710
|
+
const moreButtonWidth = this.moreButton().el.nativeElement.getBoundingClientRect().width;
|
|
711
|
+
this.moreItem().nativeElement.classList.add('ecl-tabs__item--hidden');
|
|
712
|
+
this.moreButton().el.nativeElement.classList.add('ecl-tabs__toggle--hidden');
|
|
672
713
|
const hiddenItems = [];
|
|
673
714
|
const listWidth = this.getTabsListWidth();
|
|
674
715
|
// Measure all items first to check if they fit without the button
|
|
675
|
-
this.tabs.forEach((item) => {
|
|
716
|
+
this.tabs().forEach((item) => {
|
|
676
717
|
item.isHidden.set(false);
|
|
677
718
|
item.hostElement.classList.remove('ecl-tabs__item--hidden');
|
|
678
719
|
});
|
|
679
|
-
const itemWidths = this.tabs
|
|
720
|
+
const itemWidths = this.tabs().map((item) => {
|
|
680
721
|
const itemMargin = parseFloat(getComputedStyle(item.hostElement).marginInlineEnd) || 0;
|
|
681
722
|
return item.hostElement.getBoundingClientRect().width + itemMargin;
|
|
682
723
|
});
|
|
683
724
|
const totalWidth = itemWidths.reduce((sum, w) => sum + w, 0);
|
|
684
725
|
if (totalWidth > listWidth) {
|
|
685
726
|
// Reserve space for the more button and hide items that don't fit
|
|
686
|
-
this.tabs.forEach((item) => {
|
|
727
|
+
this.tabs().forEach((item) => {
|
|
687
728
|
item.isHidden.set(true);
|
|
688
729
|
item.hostElement.classList.add('ecl-tabs__item--hidden');
|
|
689
730
|
});
|
|
690
731
|
let stopWidth = moreButtonWidth;
|
|
691
|
-
this.tabs.forEach((item, i) => {
|
|
732
|
+
this.tabs().forEach((item, i) => {
|
|
692
733
|
item.isHidden.set(false);
|
|
693
734
|
item.hostElement.classList.remove('ecl-tabs__item--hidden');
|
|
694
735
|
if (listWidth >= stopWidth + itemWidths[i] && !hiddenItems.includes(i - 1)) {
|
|
@@ -706,14 +747,14 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
706
747
|
}
|
|
707
748
|
// Toggle the visibility of More button and items in dropdown
|
|
708
749
|
if (!hiddenItems.length) {
|
|
709
|
-
this.moreItem.nativeElement.classList.add('ecl-tabs__item--hidden');
|
|
710
|
-
this.moreButton.el.nativeElement.classList.add('ecl-tabs__toggle--hidden');
|
|
750
|
+
this.moreItem().nativeElement.classList.add('ecl-tabs__item--hidden');
|
|
751
|
+
this.moreButton().el.nativeElement.classList.add('ecl-tabs__toggle--hidden');
|
|
711
752
|
this.setActiveItemForMainTabs();
|
|
712
753
|
this.hideAllDropdownTabs();
|
|
713
754
|
}
|
|
714
755
|
else {
|
|
715
|
-
this.moreItem.nativeElement.classList.remove('ecl-tabs__item--hidden');
|
|
716
|
-
this.moreButton.el.nativeElement.classList.remove('ecl-tabs__toggle--hidden');
|
|
756
|
+
this.moreItem().nativeElement.classList.remove('ecl-tabs__item--hidden');
|
|
757
|
+
this.moreButton().el.nativeElement.classList.remove('ecl-tabs__toggle--hidden');
|
|
717
758
|
this.setHiddenItemsForDropdownTabs(hiddenItems);
|
|
718
759
|
}
|
|
719
760
|
this.cd.markForCheck();
|
|
@@ -724,13 +765,13 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
724
765
|
setActiveItemForMainTabs() {
|
|
725
766
|
this.listTabs.forEach((item, index) => {
|
|
726
767
|
if (item._isActive()) {
|
|
727
|
-
setTimeout(() => this.tabs
|
|
768
|
+
setTimeout(() => this.tabs()[index]._isActive.set(true));
|
|
728
769
|
}
|
|
729
770
|
});
|
|
730
771
|
this.cd.markForCheck();
|
|
731
772
|
}
|
|
732
773
|
getTabsListWidth() {
|
|
733
|
-
return this.tabsList.nativeElement.getBoundingClientRect().width;
|
|
774
|
+
return this.tabsList().nativeElement.getBoundingClientRect().width;
|
|
734
775
|
}
|
|
735
776
|
setHiddenItemsForDropdownTabs(hiddenItems) {
|
|
736
777
|
this.listTabs.forEach((item, index) => {
|
|
@@ -747,19 +788,19 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
747
788
|
this.isScrollNextBtnShow.set(true);
|
|
748
789
|
this.setAllTabsVisible();
|
|
749
790
|
// Hide the more item and button (direct DOM, same as ECL)
|
|
750
|
-
this.moreItem.nativeElement.classList.add('ecl-tabs__item--hidden');
|
|
751
|
-
this.moreButton.el.nativeElement.classList.add('ecl-tabs__toggle--hidden');
|
|
791
|
+
this.moreItem().nativeElement.classList.add('ecl-tabs__item--hidden');
|
|
792
|
+
this.moreButton().el.nativeElement.classList.add('ecl-tabs__toggle--hidden');
|
|
752
793
|
// Reset to auto so scrollWidth reflects the natural content width
|
|
753
|
-
this.tabsList.nativeElement.style.width = 'auto';
|
|
794
|
+
this.tabsList().nativeElement.style.width = 'auto';
|
|
754
795
|
// Remove hidden class directly from DOM elements
|
|
755
|
-
this.tabs.forEach((item) => {
|
|
796
|
+
this.tabs().forEach((item) => {
|
|
756
797
|
item.hostElement.classList.remove('ecl-tabs__item--hidden');
|
|
757
798
|
});
|
|
758
799
|
// Use scrollWidth to also include item margins
|
|
759
|
-
this.tabsList.nativeElement.style.width = `${this.tabsList.nativeElement.scrollWidth}px`;
|
|
800
|
+
this.tabsList().nativeElement.style.width = `${this.tabsList().nativeElement.scrollWidth}px`;
|
|
760
801
|
}
|
|
761
802
|
setAllTabsVisible() {
|
|
762
|
-
this.tabs.forEach((item) => {
|
|
803
|
+
this.tabs().forEach((item) => {
|
|
763
804
|
item.isHidden.set(false);
|
|
764
805
|
});
|
|
765
806
|
}
|
|
@@ -787,42 +828,21 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
787
828
|
setTimeout(() => {
|
|
788
829
|
this.handleResize();
|
|
789
830
|
}, this.TIMEOUT_INTERVAL);
|
|
790
|
-
}).observe(this.tabsList.nativeElement);
|
|
831
|
+
}).observe(this.tabsList().nativeElement);
|
|
791
832
|
}
|
|
792
833
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
793
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclTabsComponent, isStandalone: true, selector: "div[eclTabs]", inputs: { bodyClass: { classPropertyName: "bodyClass", publicName: "bodyClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tabSelect: "tabSelect" }, host: { listeners: { "document:click": "onClick($event.target)" }, properties: { "class.ecl-tabs": "this.hasClass", "attr.data-ecl-auto-initialized": "this.autoInitialized" } }, queries: [{ propertyName: "tabs", predicate: i0.forwardRef(() => EclTabComponent) }], viewQueries: [{ propertyName: "tabsList", first: true, predicate: ["tabsList"], descendants: true }, { propertyName: "moreButton", first: true, predicate: ["moreButton"], descendants: true }, { propertyName: "btnPrev", first: true, predicate: ["btnPrev"], descendants: true }, { propertyName: "btnNext", first: true, predicate: ["btnNext"], descendants: true }, { propertyName: "dropdownList", first: true, predicate: ["dropdownList"], descendants: true }, { propertyName: "moreItem", first: true, predicate: ["moreItem"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (isUsingOldSelector) {\n<div class=\"ecl-tabs\">\n <ng-container *ngTemplateOutlet=\"eclTabsTemplate\"></ng-container>\n</div>\n} @else {\n<ng-container *ngTemplateOutlet=\"eclTabsTemplate\"></ng-container>\n}\n\n<ng-template #eclTabsTemplate>\n <div class=\"ecl-tabs__container\" [class.ecl-tabs__container--right]=\"isScrollNextBtnShow()\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow()\">\n <div class=\"ecl-tabs__list\" role=\"tablist\" #tabsList\n [style.transform]=\"styleTransform\" [style.transition-duration]=\"getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <div class=\"ecl-tabs__item ecl-tabs__item--more\" #moreItem>\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded()\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <div eclTab [isActive]=\"tab._isActive()\" [isHidden]=\"tab.isHidden()\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" variant=\"tertiary\" [tabindex]=\"customTabIndex\"\n [attr.aria-expanded]=\"isDropdownExpanded()\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" (focus)=\"onMoreButtonFocus()\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button #btnPrev eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__prev\"\n [style.display]=\"isScrollPrevBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollPrev()\">\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n <button #btnNext eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__next\"\n [style.display]=\"isScrollNextBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollNext()\">\n <span eclButtonLabel>{{ 'ecl.common.NEXT' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n </div>\n</ng-template>\n\n@for (tab of tabs
|
|
834
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclTabsComponent, isStandalone: true, selector: "div[eclTabs]", inputs: { bodyClass: { classPropertyName: "bodyClass", publicName: "bodyClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tabSelect: "tabSelect" }, host: { listeners: { "document:click": "onClick($event.target)" }, properties: { "class.ecl-tabs": "this.hasClass", "attr.data-ecl-auto-initialized": "this.autoInitialized" } }, queries: [{ propertyName: "tabs", predicate: i0.forwardRef(() => EclTabComponent), isSignal: true }], viewQueries: [{ propertyName: "tabsList", first: true, predicate: ["tabsList"], descendants: true, isSignal: true }, { propertyName: "moreButton", first: true, predicate: ["moreButton"], descendants: true, isSignal: true }, { propertyName: "btnPrev", first: true, predicate: ["btnPrev"], descendants: true, isSignal: true }, { propertyName: "btnNext", first: true, predicate: ["btnNext"], descendants: true, isSignal: true }, { propertyName: "dropdownList", first: true, predicate: ["dropdownList"], descendants: true, isSignal: true }, { propertyName: "moreItem", first: true, predicate: ["moreItem"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (isUsingOldSelector) {\n<div class=\"ecl-tabs\">\n <ng-container *ngTemplateOutlet=\"eclTabsTemplate\"></ng-container>\n</div>\n} @else {\n<ng-container *ngTemplateOutlet=\"eclTabsTemplate\"></ng-container>\n}\n\n<ng-template #eclTabsTemplate>\n <div class=\"ecl-tabs__container\" [class.ecl-tabs__container--right]=\"isScrollNextBtnShow()\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow()\">\n <div class=\"ecl-tabs__list\" role=\"tablist\" #tabsList\n [style.transform]=\"styleTransform\" [style.transition-duration]=\"getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <div class=\"ecl-tabs__item ecl-tabs__item--more\" #moreItem>\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded()\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <div eclTab [isActive]=\"tab._isActive()\" [isHidden]=\"tab.isHidden()\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" variant=\"tertiary\" [tabindex]=\"customTabIndex\"\n [attr.aria-expanded]=\"isDropdownExpanded()\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" (focus)=\"onMoreButtonFocus()\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button #btnPrev eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__prev\"\n [style.display]=\"isScrollPrevBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollPrev()\">\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n <button #btnNext eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__next\"\n [style.display]=\"isScrollNextBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollNext()\">\n <span eclButtonLabel>{{ 'ecl.common.NEXT' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n </div>\n</ng-template>\n\n@for (tab of tabs(); track tab.tabLabel) {\n@if (tab._isActive()) {\n<div id=\"{{tab.finalId()}}-tabpanel\" role=\"tabpanel\" aria-labelledby=\"{{tab.finalId()}}-link\" class=\"{{ bodyClass() }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate()\"></ng-container>\n</div>\n}\n}\n@for (tab of listTabs; track tab.tabLabel) {\n@if (tab._isActive()) {\n<div id=\"{{tab.finalId()}}-tabpanel\" role=\"tabpanel\" aria-labelledby=\"{{tab.finalId()}}-link\" class=\"{{ bodyClass() }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate()\"></ng-container>\n</div>\n}\n}", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$1.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "eclStyle", "size", "containerStyleClass"] }, { kind: "directive", type: i1$1.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "component", type: i2.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "component", type: EclTabComponent, selector: "div[eclTab]", inputs: ["id", "anchorExtraClasses", "isHidden", "isActive"], outputs: ["isHiddenChange", "selectTab", "keydownTab"] }, { kind: "component", type: EclTabLabelComponent, selector: "ecl-tab-label" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
794
835
|
}
|
|
795
836
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclTabsComponent, decorators: [{
|
|
796
837
|
type: Component,
|
|
797
|
-
args: [{ selector: 'div[eclTabs]', imports: [TranslatePipe, NgTemplateOutlet, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON, EclTabComponent, EclTabLabelComponent], encapsulation: ViewEncapsulation.None, template: "@if (isUsingOldSelector) {\n<div class=\"ecl-tabs\">\n <ng-container *ngTemplateOutlet=\"eclTabsTemplate\"></ng-container>\n</div>\n} @else {\n<ng-container *ngTemplateOutlet=\"eclTabsTemplate\"></ng-container>\n}\n\n<ng-template #eclTabsTemplate>\n <div class=\"ecl-tabs__container\" [class.ecl-tabs__container--right]=\"isScrollNextBtnShow()\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow()\">\n <div class=\"ecl-tabs__list\" role=\"tablist\" #tabsList\n [style.transform]=\"styleTransform\" [style.transition-duration]=\"getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <div class=\"ecl-tabs__item ecl-tabs__item--more\" #moreItem>\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded()\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <div eclTab [isActive]=\"tab._isActive()\" [isHidden]=\"tab.isHidden()\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" variant=\"tertiary\" [tabindex]=\"customTabIndex\"\n [attr.aria-expanded]=\"isDropdownExpanded()\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" (focus)=\"onMoreButtonFocus()\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button #btnPrev eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__prev\"\n [style.display]=\"isScrollPrevBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollPrev()\">\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n <button #btnNext eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__next\"\n [style.display]=\"isScrollNextBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollNext()\">\n <span eclButtonLabel>{{ 'ecl.common.NEXT' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n </div>\n</ng-template>\n\n@for (tab of tabs
|
|
838
|
+
args: [{ selector: 'div[eclTabs]', imports: [TranslatePipe, NgTemplateOutlet, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON, EclTabComponent, EclTabLabelComponent], encapsulation: ViewEncapsulation.None, template: "@if (isUsingOldSelector) {\n<div class=\"ecl-tabs\">\n <ng-container *ngTemplateOutlet=\"eclTabsTemplate\"></ng-container>\n</div>\n} @else {\n<ng-container *ngTemplateOutlet=\"eclTabsTemplate\"></ng-container>\n}\n\n<ng-template #eclTabsTemplate>\n <div class=\"ecl-tabs__container\" [class.ecl-tabs__container--right]=\"isScrollNextBtnShow()\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow()\">\n <div class=\"ecl-tabs__list\" role=\"tablist\" #tabsList\n [style.transform]=\"styleTransform\" [style.transition-duration]=\"getTransitionDuration()\">\n <ng-content select=\"ecl-tab, [eclTab]\"></ng-content>\n <div class=\"ecl-tabs__item ecl-tabs__item--more\" #moreItem>\n @if (listTabs.length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded()\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs; track tab.id; let i = $index) {\n <div eclTab [isActive]=\"tab._isActive()\" [isHidden]=\"tab.isHidden()\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" variant=\"tertiary\" [tabindex]=\"customTabIndex\"\n [attr.aria-expanded]=\"isDropdownExpanded()\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive\"\n (click)=\"onDropdownToggle()\" (focus)=\"onMoreButtonFocus()\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ getHiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n </div>\n\n <div class=\"ecl-tabs__controls\">\n <button #btnPrev eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__prev\"\n [style.display]=\"isScrollPrevBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollPrev()\">\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n <button #btnNext eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__next\"\n [style.display]=\"isScrollNextBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollNext()\">\n <span eclButtonLabel>{{ 'ecl.common.NEXT' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n </div>\n</ng-template>\n\n@for (tab of tabs(); track tab.tabLabel) {\n@if (tab._isActive()) {\n<div id=\"{{tab.finalId()}}-tabpanel\" role=\"tabpanel\" aria-labelledby=\"{{tab.finalId()}}-link\" class=\"{{ bodyClass() }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate()\"></ng-container>\n</div>\n}\n}\n@for (tab of listTabs; track tab.tabLabel) {\n@if (tab._isActive()) {\n<div id=\"{{tab.finalId()}}-tabpanel\" role=\"tabpanel\" aria-labelledby=\"{{tab.finalId()}}-link\" class=\"{{ bodyClass() }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate()\"></ng-container>\n</div>\n}\n}" }]
|
|
798
839
|
}], ctorParameters: () => [], propDecorators: { hasClass: [{
|
|
799
840
|
type: HostBinding,
|
|
800
841
|
args: ['class.ecl-tabs']
|
|
801
842
|
}], autoInitialized: [{
|
|
802
843
|
type: HostBinding,
|
|
803
844
|
args: ['attr.data-ecl-auto-initialized']
|
|
804
|
-
}], bodyClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "bodyClass", required: false }] }], tabSelect: [{ type: i0.Output, args: ["tabSelect"] }], tabs: [{
|
|
805
|
-
type: ContentChildren,
|
|
806
|
-
args: [forwardRef(() => EclTabComponent)]
|
|
807
|
-
}], tabsList: [{
|
|
808
|
-
type: ViewChild,
|
|
809
|
-
args: ['tabsList']
|
|
810
|
-
}], moreButton: [{
|
|
811
|
-
type: ViewChild,
|
|
812
|
-
args: ['moreButton']
|
|
813
|
-
}], btnPrev: [{
|
|
814
|
-
type: ViewChild,
|
|
815
|
-
args: ['btnPrev']
|
|
816
|
-
}], btnNext: [{
|
|
817
|
-
type: ViewChild,
|
|
818
|
-
args: ['btnNext']
|
|
819
|
-
}], dropdownList: [{
|
|
820
|
-
type: ViewChild,
|
|
821
|
-
args: ['dropdownList']
|
|
822
|
-
}], moreItem: [{
|
|
823
|
-
type: ViewChild,
|
|
824
|
-
args: ['moreItem']
|
|
825
|
-
}], onClick: [{
|
|
845
|
+
}], bodyClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "bodyClass", required: false }] }], tabSelect: [{ type: i0.Output, args: ["tabSelect"] }], tabs: [{ type: i0.ContentChildren, args: [forwardRef(() => EclTabComponent), { isSignal: true }] }], tabsList: [{ type: i0.ViewChild, args: ['tabsList', { isSignal: true }] }], moreButton: [{ type: i0.ViewChild, args: ['moreButton', { isSignal: true }] }], btnPrev: [{ type: i0.ViewChild, args: ['btnPrev', { isSignal: true }] }], btnNext: [{ type: i0.ViewChild, args: ['btnNext', { isSignal: true }] }], dropdownList: [{ type: i0.ViewChild, args: ['dropdownList', { isSignal: true }] }], moreItem: [{ type: i0.ViewChild, args: ['moreItem', { isSignal: true }] }], onClick: [{
|
|
826
846
|
type: HostListener,
|
|
827
847
|
args: ['document:click', ['$event.target']]
|
|
828
848
|
}] } });
|