@eui/ecl 23.0.0-alpha.6 → 23.0.0-alpha.7
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 +41 -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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-tabs.mjs","sources":["../../components/ecl-tabs/ecl-tab-label.component.ts","../../components/ecl-tabs/ecl-tab-label.component.html","../../components/ecl-tabs/events/ecl-tab-select.event.ts","../../components/ecl-tabs/ecl-tab.component.ts","../../components/ecl-tabs/ecl-tab.component.html","../../components/ecl-tabs/ecl-tabs.component.ts","../../components/ecl-tabs/ecl-tabs.component.html","../../components/ecl-tabs/index.ts","../../components/ecl-tabs/eui-ecl-components-ecl-tabs.ts"],"sourcesContent":["import { Component, ElementRef, inject } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Component representing a tab label within ECL Tabs.\n * Used as a container for the tab's visual label content.\n */\n@Component({\n selector: 'ecl-tab-label',\n templateUrl: './ecl-tab-label.component.html',\n})\nexport class EclTabLabelComponent extends ECLBaseDirective {\n el = inject(ElementRef);\n}\n","<ng-content></ng-content>\n","import { EclBaseEvent } from '@eui/ecl/core';\nimport { EclTabComponent } from '../ecl-tab.component';\n\n/**\n * Event emitted when a tab is selected.\n *\n * Contains a reference to the selected tab instance.\n */\nexport class EclTabSelectEvent extends EclBaseEvent {\n /**\n * The tab instance that has been selected.\n */\n constructor(public tab: EclTabComponent) {\n super();\n }\n}\n","import {\n AfterViewInit,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Output,\n TemplateRef,\n ViewChild,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n signal,\n model,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclLinkDirective, EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { EclTabLabelComponent } from './ecl-tab-label.component';\nimport { EclTabSelectEvent } from './events/ecl-tab-select.event';\n\n/**\n * Represents a single tab inside the ECL Tabs component.\n * Manages its label, state (active, hidden), and interaction events like click or keydown.\n */\n@Component({\n selector: 'div[eclTab]',\n host: {\n '[attr.id]': 'id()',\n '[class.ecl-tabs__item--hidden]': 'isHidden()',\n },\n templateUrl: './ecl-tab.component.html',\n imports: [...EUI_ECL_LINK],\n})\nexport class EclTabComponent extends ECLBaseDirective implements AfterViewInit {\n /**\n * Unique identifier for the tab.\n */\n id = input<string>();\n\n /**\n * Extra classes to be added to the anchor tag.\n */\n readonly anchorExtraClasses = input<string>(undefined);\n\n /**\n * Hides the tab when true by applying the `ecl-tabs__item--hidden` CSS class.\n */\n readonly isHidden = model(false);\n\n /**\n * Marks the tab as active.\n */\n isActive = input(false, { transform: booleanAttribute });\n _isActive = signal(false);\n\n /**\n * Emits when the tab is selected via click.\n */\n @Output() selectTab = new EventEmitter<EclTabSelectEvent>();\n\n /**\n * Emits when a keydown event occurs on the tab.\n */\n @Output() keydownTab = new EventEmitter<Event>();\n\n /**\n * Reference to the tab content template.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @ViewChild('content') contentTemplate: TemplateRef<any>;\n\n /**\n * Reference to the internal link directive used in the tab.\n */\n @ViewChild(EclLinkDirective) link: EclLinkDirective;\n\n /**\n * Reference to the projected tab label component.\n */\n @ContentChild(EclTabLabelComponent) label: EclTabLabelComponent;\n\n /**\n * Contains the inner HTML of the tab label.\n */\n public tabLabel = '';\n\n /**\n * The tab index value for the tab's link.\n */\n hrefTabindex = computed(() => this._isActive() ? 0 : -1);\n\n finalId = computed(() => this.id() ?? this.generatedId());\n protected linkId = computed(() => {\n return `${this.finalId()}-link`;\n });\n\n protected ariaControls = computed(() => {\n return `${this.finalId()}-tabpanel`;\n });\n\n private generatedId = signal(crypto.randomUUID());\n private isFirstCall = true;\n private width: number;\n private elementRef = inject(ElementRef);\n\n constructor() {\n super();\n if (this.isUsingOldSelector) {\n console.warn('\"ecl-tab\" selector is deprecated; use \"div[eclTab]\" instead.');\n }\n effect(() => {\n this._isActive.set(this.isActive());\n });\n }\n\n /**\n * Returns the host HTML element of the tab component.\n */\n get hostElement(): HTMLElement {\n return this.elementRef?.nativeElement;\n }\n\n /**\n * Determines if the deprecated selector `<ecl-tab>` is used.\n */\n get isUsingOldSelector(): boolean {\n if (this.elementRef?.nativeElement.tagName.toLowerCase() === 'ecl-tab') {\n return true;\n }\n return false;\n }\n\n ngAfterViewInit(): void {\n this.tabLabel = this.label.el.nativeElement.innerHTML;\n // this._isActive.set(this.isActive());\n }\n\n /**\n * Returns the CSS classes applied to the host element.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-tabs__item')].join(' ').trim();\n }\n\n /**\n * Returns the inner HTML content of the tab label.\n */\n getTabLabel(): string {\n return this.label.el.nativeElement.innerHTML;\n }\n\n /**\n * Returns the width of the tab element in pixels.\n * The measurement is cached after the first call.\n */\n public getWidth(): number {\n if (this.isFirstCall) {\n this.width = this.hostElement.getBoundingClientRect().width;\n this.isFirstCall = false;\n }\n return this.width;\n }\n\n /**\n * Handles a click event on the tab and emits the `selectTab` event.\n */\n onTabClick(): void {\n this.selectTab.next(new EclTabSelectEvent(this));\n }\n\n /**\n * Handles a keydown event on the tab and emits the `keydownTab` event.\n */\n onKeydown(event: Event): void {\n this.keydownTab.next(event);\n }\n\n /**\n * Calls the focus method on the inner link directive.\n */\n onFocus(): void {\n this.link.onFocus();\n }\n\n /**\n * Calls the blur method on the inner link directive.\n */\n onBlur(): void {\n this.link.onBlur();\n }\n}\n","<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","import { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n afterNextRender,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n forwardRef,\n HostBinding,\n HostListener,\n inject,\n IterableChanges,\n IterableDiffer,\n IterableDiffers,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n QueryList,\n signal,\n ViewChild,\n ViewEncapsulation,\n output,\n input,\n} from '@angular/core';\nimport { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Observable, of, Subject } from 'rxjs';\nimport { mergeWith, takeUntil } from 'rxjs/operators';\nimport { EclRtlService } from '@eui/ecl/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclButtonComponent, EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EclTabComponent } from './ecl-tab.component';\nimport { EclTabSelectEvent } from './events/ecl-tab-select.event';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EclTabLabelComponent } from './ecl-tab-label.component';\n\nexport enum ShiftDirection {\n NEXT = 'next',\n PREVIOUS = 'prev',\n}\n\n/**\n * ECL Tabs component for displaying tabbed content and managing tab selection and navigation.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclTabs]',\n templateUrl: './ecl-tabs.component.html',\n imports: [TranslatePipe, NgTemplateOutlet, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON, EclTabComponent, EclTabLabelComponent],\n encapsulation: ViewEncapsulation.None,\n})\nexport class EclTabsComponent extends ECLBaseDirective implements OnInit, OnDestroy {\n /**\n * Adds `ecl-tabs` class to the host if not using the deprecated selector.\n */\n @HostBinding('class.ecl-tabs') hasClass = !this.isUsingOldSelector;\n\n /**\n * Marks the component as initialized, enabling ECL CSS that depends on this attribute.\n */\n @HostBinding('attr.data-ecl-auto-initialized') autoInitialized = 'true';\n\n /**\n * Class applied to the tab body container.\n */\n readonly bodyClass = input('ecl-u-mt-s');\n\n /**\n * Emits an event when a tab is selected.\n */\n readonly tabSelect = output<EclTabSelectEvent>();\n\n /**\n * All projected tabs inside the component.\n */\n @ContentChildren(forwardRef(() => EclTabComponent)) tabs: QueryList<EclTabComponent>;\n\n /**\n * Reference to the visible tab list container.\n */\n @ViewChild('tabsList') tabsList: ElementRef;\n\n /**\n * Reference to the \"more\" button.\n */\n @ViewChild('moreButton') moreButton: EclButtonComponent;\n\n /**\n * Reference to the scroll previous button.\n */\n @ViewChild('btnPrev') btnPrev: EclButtonComponent;\n\n /**\n * Reference to the scroll next button.\n */\n @ViewChild('btnNext') btnNext: EclButtonComponent;\n\n /**\n * Reference to the dropdown list containing overflowed tabs.\n */\n @ViewChild('dropdownList') dropdownList: ElementRef;\n\n /**\n * Reference to the \"more\" item container in the tab list.\n */\n @ViewChild('moreItem') moreItem: ElementRef;\n\n /**\n * Tabs displayed in the visible list.\n */\n listTabs: EclTabComponent[] = [];\n\n /**\n * Index of the active tab.\n */\n index = 0;\n\n /**\n * Indicates whether the dropdown is expanded.\n */\n isDropdownExpanded = signal(false);\n\n /**\n * Indicates whether the mobile breakpoint is active.\n */\n isMobileBreakpoint = false;\n\n /**\n * Indicates whether the scroll previous button is shown.\n */\n isScrollPrevBtnShow = signal(false);\n\n /**\n * Indicates whether the scroll next button is shown.\n */\n isScrollNextBtnShow = signal(false);\n\n /**\n * CSS transform applied to the scrollable tab list.\n */\n styleTransform = 'translate3d(0px, 0px, 0px)';\n\n private differs = inject(IterableDiffers);\n private cdkBreakpointObserver = inject(BreakpointObserver);\n private cd = inject(ChangeDetectorRef);\n private el = inject(ElementRef);\n private eclRtlService = inject(EclRtlService);\n private platformId = inject(PLATFORM_ID);\n private differ: IterableDiffer<EclTabComponent>;\n private diff: IterableChanges<EclTabComponent>;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private isRtl = false;\n private TIMEOUT_INTERVAL = 0;\n\n constructor() {\n super();\n if (this.isUsingOldSelector) {\n console.warn('\"ecl-tabs\" selector is deprecated; use \"div[eclTabs]\" instead.');\n }\n this.differ = this.differs.find([]).create();\n afterNextRender(() => {\n this.observeTabsChanges();\n this.observeElementSizeChanges();\n this.cd.detectChanges();\n });\n }\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.observeBreakpointChanges();\n this.handleRtlChangeState();\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n @HostListener('document:click', ['$event.target'])\n onClick(target): void {\n if (!this.moreButton.el.nativeElement.contains(target) && !this.dropdownList.nativeElement.contains(target)) {\n this.closeDropdown();\n }\n }\n\n /**\n * Whether the deprecated selector is being used.\n */\n get isUsingOldSelector(): boolean {\n if (this.el?.nativeElement.tagName.toLowerCase() === 'ecl-tabs') {\n return true;\n }\n return false;\n }\n\n /**\n * Whether any visible tab is active.\n */\n get isMoreButtonActive(): boolean {\n return this.listTabs.find((el) => el._isActive() && !el.isHidden()) !== undefined;\n }\n\n /**\n * Get the tabindex for more button.\n */\n get customTabIndex(): string {\n let result = '0';\n if (this.isMoreButtonActive) {\n if (this.isDropdownExpanded()) {\n result = '-1';\n } else {\n result = '0';\n }\n } else {\n result = '-1';\n }\n return result;\n }\n\n /**\n * Scrolls the tab list to the left.\n */\n onScrollPrev(): void {\n this.shiftTabs(ShiftDirection.PREVIOUS);\n }\n\n /**\n * Scrolls the tab list to the right.\n */\n onScrollNext(): void {\n this.shiftTabs(ShiftDirection.NEXT);\n }\n\n /**\n * Toggles the dropdown visibility.\n */\n onDropdownToggle(): void {\n this.isDropdownExpanded.set(!this.isDropdownExpanded());\n }\n\n /**\n * Returns the number of tabs hidden in dropdown.\n */\n getHiddenTabsCount(): number {\n return this.tabs.filter((item) => item.isHidden()).length;\n }\n\n /**\n * Returns the label of the tab at the specified index.\n */\n getTabLabel(index: number): string {\n return this.getTabsAsArray()[index].getTabLabel();\n }\n\n /**\n * Returns the duration of the transition animation.\n */\n getTransitionDuration(): string {\n if (this.isMobileBreakpoint) {\n return '0.4s';\n }\n return '0';\n }\n\n /**\n * Handles tab selection.\n * @param tab Tab to activate.\n */\n onTabSelect(tab: EclTabComponent): void {\n this.deactivateAllTabs(this.tabs.toArray(), this.listTabs);\n this.activateTab(tab);\n this.sendTabSelectEvent(tab);\n }\n\n /**\n * Handles right arrow key navigation.\n * @param index Current tab index.\n */\n onTabKeydownArrowRight(index: number): void {\n if (this.isMobileBreakpoint) {\n this.shiftTabs(ShiftDirection.NEXT);\n if (index === this.getTabsCount() - 1) {\n return;\n }\n }\n if (index === this.getTabsCount() - 1 && !this.isMobileBreakpoint) {\n this.focusOnFirstTab();\n } else {\n this.focusOnNextTab(index);\n }\n }\n\n /**\n * Handles left arrow key navigation.\n * @param index Current tab index.\n */\n onTabKeydownArrowLeft(index: number): void {\n if (this.isMobileBreakpoint) {\n this.shiftTabs(ShiftDirection.PREVIOUS);\n if (index === 0) {\n return;\n }\n }\n\n if (index === 0 && !this.isMobileBreakpoint) {\n this.focusOnLastTab();\n } else {\n this.focusOnPrevTab(index);\n }\n }\n\n /**\n * Focuses the first tab in the list.\n */\n onTabKeydownHome(): void {\n this.focusOnFirstTab();\n }\n\n /**\n * Focuses the last tab in the list.\n */\n onTabKeydownEnd(): void {\n this.focusOnLastTab();\n }\n\n /**\n * Handles all supported keyboard events for a tab.\n * @param event KeyboardEvent triggered.\n * @param tab Target tab.\n */\n onTabKeydown(event: Event, tab: EclTabComponent): void {\n if (!(event instanceof KeyboardEvent)) {\n return;\n }\n\n const index = this.getCurrentTabIndex(tab);\n switch (event.key) {\n case KeyCode.ARROW_LEFT: {\n event.preventDefault();\n this.onTabKeydownArrowLeft(index);\n break;\n }\n case KeyCode.ARROW_RIGHT: {\n event.preventDefault();\n this.onTabKeydownArrowRight(index);\n break;\n }\n case KeyCode.END: {\n event.preventDefault();\n this.onTabKeydownEnd();\n break;\n }\n case KeyCode.HOME: {\n event.preventDefault();\n this.onTabKeydownHome();\n break;\n }\n case KeyCode.ENTER: {\n event.preventDefault();\n this.onTabSelect(tab);\n break;\n }\n case KeyCode.TAB: {\n this.onTabTab();\n break;\n }\n default: {\n break;\n }\n }\n }\n\n onMoreButtonFocus(): void {\n const index = this.listTabs.findIndex(\n (el) => el._isActive() && !el.isHidden()\n );\n if (index < 0) return;\n this.openDropdown();\n this.moreButton.el.nativeElement.blur();\n this.focusOnDropdownTab(index);\n }\n\n private onTabTab(): void {\n this.closeDropdown();\n }\n\n private getCurrentTabIndex(tab: EclTabComponent): number {\n const index = this.getTabsAsArray().indexOf(tab)\n return index !== -1 ? index : this.listTabs.indexOf(tab);\n }\n\n private shiftTabs(dir: string): void {\n this.index = this.getShifIndex(dir, this.index);\n\n this.isScrollPrevBtnShow.set(this.index >= 1);\n this.isScrollNextBtnShow.set(this.index < this.getTabsCount() - 1);\n\n const leftMargin = this.index === 0 ? 0 : this.btnPrev.el.nativeElement.getBoundingClientRect().width + 13;\n\n let newOffset = 0;\n if (this.isRtl) {\n newOffset = Math.ceil(\n this.tabsList.nativeElement.offsetWidth -\n this.getTabsAsArray()[this.index].hostElement.offsetLeft -\n this.getTabsAsArray()[this.index].hostElement.offsetWidth -\n leftMargin,\n );\n } else {\n newOffset = Math.ceil(this.getTabsAsArray()[this.index]?.hostElement.offsetLeft - leftMargin);\n }\n\n const maxScroll = Math.ceil(this.getTabsListWidth() - this.el.nativeElement.getBoundingClientRect().width);\n\n if (newOffset > maxScroll) {\n this.isScrollNextBtnShow.set(false);\n newOffset = maxScroll;\n }\n\n if (this.isRtl) {\n this.styleTransform = `translate3d(${newOffset}px, 0px, 0px)`;\n } else {\n this.styleTransform = `translate3d(-${newOffset}px, 0px, 0px)`;\n }\n }\n\n private getShifIndex(dir: string, index: number): number {\n if (dir === ShiftDirection.NEXT) {\n if (index === this.getTabsCount() - 1 && !this.isMobileBreakpoint ) {\n return 0;\n } else {\n return index + 1;\n }\n } else {\n if (index === 0 && !this.isMobileBreakpoint) {\n return this.getTabsCount() - 1;\n } else {\n return index - 1;\n }\n }\n }\n\n private createSecondListForDropdown(): void {\n this.listTabs = [];\n this.tabs.forEach((tab) => {\n const newTab = Object.assign({}, tab) as EclTabComponent;\n newTab.isHidden.set(true);\n newTab._isActive.set(tab.isActive());\n this.listTabs.push(newTab as EclTabComponent);\n });\n }\n\n private getTabsAsArray(): EclTabComponent[] {\n return this.tabs.toArray();\n }\n\n private getTabsCount(): number {\n return this.tabs.toArray().length;\n }\n\n private closeDropdown(): void {\n this.isDropdownExpanded.set(false);\n }\n\n private openDropdown(): void {\n this.isDropdownExpanded.set(true);\n }\n\n private observeTabsChanges(): void {\n this.createTabsChangesObservable(this.tabs).pipe(takeUntil(this.destroy$)).subscribe(this.onTabsChanges.bind(this));\n }\n\n private createTabsChangesObservable(tabs: QueryList<EclTabComponent>): Observable<QueryList<EclTabComponent>> {\n return of(tabs).pipe(mergeWith(tabs.changes), takeUntil(this.destroy$));\n }\n\n private onTabsChanges(): void {\n this.diff = this.differ.diff(this.tabs);\n\n if (!this.diff) {\n this.tabs.forEach((tab) => {\n this.connectTabEvents(tab);\n });\n } else {\n this.diff.forEachAddedItem((change) => {\n this.connectTabEvents(change.item);\n });\n\n this.diff.forEachRemovedItem((change) => {\n this.disconnectTabEvents(change.item);\n });\n }\n this.createSecondListForDropdown();\n }\n\n private connectTabEvents(tab: EclTabComponent): void {\n tab.selectTab.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.onTabSelect(tab);\n });\n tab.keydownTab.pipe(takeUntil(this.destroy$)).subscribe((event) => {\n this.onTabKeydown(event, tab);\n });\n }\n\n private focusOnNextTab(index: number): void {\n if (this.getTabsAsArray()[index + 1].isHidden()) {\n this.openDropdown();\n this.focusOnDropdownTab(index + 1);\n } else {\n this.closeDropdown();\n this.getTabsAsArray()[index + 1].onFocus();\n }\n }\n\n private focusOnFirstTab(): void {\n this.closeDropdown();\n this.getFirstTabFromArray().onFocus();\n }\n\n private focusOnLastTab(): void {\n if (!this.getLastTabFromArray().isHidden()) {\n this.getLastTabFromArray().onFocus();\n } else {\n this.openDropdown();\n this.focusOnDropdownTab(this.getTabsCount() - 1);\n }\n }\n\n private focusOnPrevTab(index: number): void {\n if (!this.listTabs[index - 1].isHidden()) {\n this.focusOnDropdownTab(index - 1);\n } else {\n this.closeDropdown();\n this.getTabsAsArray()[index - 1].onFocus();\n }\n }\n\n private focusOnDropdownTab(index: number): void {\n this.dropdownList.nativeElement.children[index].firstChild.focus();\n }\n\n private getLastTabFromArray(): EclTabComponent {\n return this.getTabsAsArray()[this.getTabsAsArray().length - 1];\n }\n\n private getFirstTabFromArray(): EclTabComponent {\n return this.getTabsAsArray()[0];\n }\n\n private disconnectTabEvents(tab: EclTabComponent): void {\n if (tab && tab.selectTab) {\n tab.selectTab.unsubscribe();\n }\n }\n\n private deactivateAllTabs(tabs: EclTabComponent[], listTabs: EclTabComponent[]): void {\n tabs.forEach((it) => {\n it._isActive.set(false);\n });\n\n listTabs.forEach((it) => {\n it._isActive.set(false);\n });\n }\n\n private activateTab(tab: EclTabComponent): void {\n tab._isActive.set(true);\n }\n\n private sendTabSelectEvent(tab: EclTabComponent): void {\n this.tabSelect.emit(new EclTabSelectEvent(tab));\n }\n\n private observeBreakpointChanges(): void {\n this.cdkBreakpointObserver\n .observe(['(max-width: 480px)'])\n .pipe(takeUntil(this.destroy$))\n .subscribe((result) => {\n this.isMobileBreakpoint = result.matches;\n });\n }\n\n private handleResize(): void {\n this.closeDropdown();\n if (this.isMobileBreakpoint) {\n this.handleMobile();\n return;\n }\n\n this.styleTransform = 'translate3d(0px, 0px, 0px)';\n this.index = 0;\n this.isScrollNextBtnShow.set(false);\n this.isScrollPrevBtnShow.set(false);\n\n // Reset list width to auto for measurement (direct DOM, same as ECL)\n this.tabsList.nativeElement.style.width = 'auto';\n\n // Temporarily show the more button to get its actual width\n this.moreItem.nativeElement.classList.remove('ecl-tabs__item--hidden');\n this.moreButton.el.nativeElement.classList.remove('ecl-tabs__toggle--hidden');\n const moreButtonWidth = this.moreButton.el.nativeElement.getBoundingClientRect().width;\n this.moreItem.nativeElement.classList.add('ecl-tabs__item--hidden');\n this.moreButton.el.nativeElement.classList.add('ecl-tabs__toggle--hidden');\n\n const hiddenItems: number[] = [];\n const listWidth = this.getTabsListWidth();\n\n // Measure all items first to check if they fit without the button\n this.tabs.forEach((item) => {\n item.isHidden.set(false);\n item.hostElement.classList.remove('ecl-tabs__item--hidden');\n });\n const itemWidths = this.tabs.toArray().map((item) => {\n const itemMargin = parseFloat(getComputedStyle(item.hostElement).marginInlineEnd) || 0;\n return item.hostElement.getBoundingClientRect().width + itemMargin;\n });\n const totalWidth = itemWidths.reduce((sum, w) => sum + w, 0);\n\n if (totalWidth > listWidth) {\n // Reserve space for the more button and hide items that don't fit\n this.tabs.forEach((item) => {\n item.isHidden.set(true);\n item.hostElement.classList.add('ecl-tabs__item--hidden');\n });\n let stopWidth = moreButtonWidth;\n this.tabs.forEach((item, i) => {\n item.isHidden.set(false);\n item.hostElement.classList.remove('ecl-tabs__item--hidden');\n if (listWidth >= stopWidth + itemWidths[i] && !hiddenItems.includes(i - 1)) {\n stopWidth += itemWidths[i];\n } else {\n item.isHidden.set(true);\n item.hostElement.classList.add('ecl-tabs__item--hidden');\n if (item._isActive()) {\n this.listTabs[i]._isActive.set(true);\n }\n hiddenItems.push(i);\n }\n });\n }\n\n // Toggle the visibility of More button and items in dropdown\n if (!hiddenItems.length) {\n this.moreItem.nativeElement.classList.add('ecl-tabs__item--hidden');\n this.moreButton.el.nativeElement.classList.add('ecl-tabs__toggle--hidden');\n this.setActiveItemForMainTabs();\n this.hideAllDropdownTabs();\n } else {\n this.moreItem.nativeElement.classList.remove('ecl-tabs__item--hidden');\n this.moreButton.el.nativeElement.classList.remove('ecl-tabs__toggle--hidden');\n this.setHiddenItemsForDropdownTabs(hiddenItems);\n }\n this.cd.markForCheck();\n }\n\n private hideAllDropdownTabs(): void {\n this.listTabs.forEach(item => item.isHidden.set(true));\n }\n\n private setActiveItemForMainTabs(): void {\n this.listTabs.forEach((item, index) => {\n if (item._isActive()) {\n setTimeout(() => this.tabs.toArray()[index]._isActive.set(true));\n }\n });\n this.cd.markForCheck();\n }\n\n private getTabsListWidth(): number {\n return this.tabsList.nativeElement.getBoundingClientRect().width;\n }\n\n private setHiddenItemsForDropdownTabs(hiddenItems: number[]): void {\n this.listTabs.forEach((item, index) => {\n if (hiddenItems.includes(index)) {\n item.isHidden.set(false);\n } else {\n item.isHidden.set(true);\n }\n });\n }\n\n private handleMobile(): void {\n this.isScrollPrevBtnShow.set(false);\n this.isScrollNextBtnShow.set(true);\n this.setAllTabsVisible();\n\n // Hide the more item and button (direct DOM, same as ECL)\n this.moreItem.nativeElement.classList.add('ecl-tabs__item--hidden');\n this.moreButton.el.nativeElement.classList.add('ecl-tabs__toggle--hidden');\n\n // Reset to auto so scrollWidth reflects the natural content width\n this.tabsList.nativeElement.style.width = 'auto';\n // Remove hidden class directly from DOM elements\n this.tabs.forEach((item) => {\n item.hostElement.classList.remove('ecl-tabs__item--hidden');\n });\n // Use scrollWidth to also include item margins\n this.tabsList.nativeElement.style.width = `${this.tabsList.nativeElement.scrollWidth}px`;\n }\n\n private setAllTabsVisible(): void {\n this.tabs.forEach((item) => {\n item.isHidden.set(false);\n });\n }\n\n private handleRtlChangeState(): void {\n const isRtlOld = this.isRtl;\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n setTimeout(() => {\n this.isRtl = rtlState;\n if (this.isMobileBreakpoint && this.hasRtlChanged(isRtlOld)) {\n this.handleRtlChange();\n }\n });\n });\n }\n\n private hasRtlChanged(isRtlOld: boolean): boolean {\n return isRtlOld !== this.isRtl;\n }\n\n private handleRtlChange(): void {\n this.handleMobile();\n this.styleTransform = 'translate3d(0px, 0px, 0px)';\n this.index = 0;\n }\n\n private observeElementSizeChanges(): void {\n new ResizeObserver(() => {\n setTimeout(() => {\n this.handleResize();\n }, this.TIMEOUT_INTERVAL);\n }).observe(this.tabsList.nativeElement);\n }\n}\n","@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.toArray(); 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}","import { EclTabLabelComponent } from './ecl-tab-label.component';\nimport { EclTabComponent } from './ecl-tab.component';\nimport { EclTabsComponent } from './ecl-tabs.component';\n\nexport * from './ecl-tabs.component';\nexport * from './ecl-tab.component';\nexport * from './ecl-tab-label.component';\nexport * from './models/ecl-tab.model';\nexport * from './events/ecl-tab-select.event';\n\nexport const EUI_ECL_TABS = [\n EclTabsComponent, EclTabComponent, EclTabLabelComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-tabs.mjs","sources":["../../components/ecl-tabs/ecl-tab-label.component.ts","../../components/ecl-tabs/ecl-tab-label.component.html","../../components/ecl-tabs/events/ecl-tab-select.event.ts","../../components/ecl-tabs/ecl-tab.component.ts","../../components/ecl-tabs/ecl-tab.component.html","../../components/ecl-tabs/ecl-tabs.component.ts","../../components/ecl-tabs/ecl-tabs.component.html","../../components/ecl-tabs/index.ts","../../components/ecl-tabs/eui-ecl-components-ecl-tabs.ts"],"sourcesContent":["import { Component, ElementRef, inject } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Component representing a tab label within ECL Tabs.\n * Used as a container for the tab's visual label content.\n */\n@Component({\n selector: 'ecl-tab-label',\n templateUrl: './ecl-tab-label.component.html',\n})\nexport class EclTabLabelComponent extends ECLBaseDirective {\n el = inject(ElementRef);\n}\n","<ng-content></ng-content>\n","import { EclBaseEvent } from '@eui/ecl/core';\nimport { EclTabComponent } from '../ecl-tab.component';\n\n/**\n * Event emitted when a tab is selected.\n *\n * Contains a reference to the selected tab instance.\n */\nexport class EclTabSelectEvent extends EclBaseEvent {\n /**\n * The tab instance that has been selected.\n */\n constructor(public tab: EclTabComponent) {\n super();\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Output,\n TemplateRef,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n signal,\n model,\n viewChild,\n contentChild,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclLinkDirective, EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { EclTabLabelComponent } from './ecl-tab-label.component';\nimport { EclTabSelectEvent } from './events/ecl-tab-select.event';\n\n/**\n * Represents a single tab inside the ECL Tabs component.\n * Manages its label, state (active, hidden), and interaction events like click or keydown.\n */\n@Component({\n selector: 'div[eclTab]',\n host: {\n '[attr.id]': 'id()',\n '[class.ecl-tabs__item--hidden]': 'isHidden()',\n },\n templateUrl: './ecl-tab.component.html',\n imports: [...EUI_ECL_LINK],\n})\nexport class EclTabComponent extends ECLBaseDirective implements AfterViewInit {\n /**\n * Unique identifier for the tab.\n */\n id = input<string>();\n\n /**\n * Extra classes to be added to the anchor tag.\n */\n readonly anchorExtraClasses = input<string>(undefined);\n\n /**\n * Hides the tab when true by applying the `ecl-tabs__item--hidden` CSS class.\n */\n readonly isHidden = model(false);\n\n /**\n * Marks the tab as active.\n */\n isActive = input(false, { transform: booleanAttribute });\n _isActive = signal(false);\n\n /**\n * Emits when the tab is selected via click.\n */\n @Output() selectTab = new EventEmitter<EclTabSelectEvent>();\n\n /**\n * Emits when a keydown event occurs on the tab.\n */\n @Output() keydownTab = new EventEmitter<Event>();\n\n /**\n * Reference to the tab content template.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly contentTemplate = viewChild<TemplateRef<any>>('content');\n\n /**\n * Reference to the internal link directive used in the tab.\n */\n readonly link = viewChild(EclLinkDirective);\n\n /**\n * Reference to the projected tab label component.\n */\n readonly label = contentChild(EclTabLabelComponent);\n\n /**\n * Contains the inner HTML of the tab label.\n */\n public tabLabel = '';\n\n /**\n * The tab index value for the tab's link.\n */\n hrefTabindex = computed(() => this._isActive() ? 0 : -1);\n\n finalId = computed(() => this.id() ?? this.generatedId());\n protected linkId = computed(() => {\n return `${this.finalId()}-link`;\n });\n\n protected ariaControls = computed(() => {\n return `${this.finalId()}-tabpanel`;\n });\n\n private generatedId = signal(crypto.randomUUID());\n private isFirstCall = true;\n private width: number;\n private elementRef = inject(ElementRef);\n\n constructor() {\n super();\n if (this.isUsingOldSelector) {\n console.warn('\"ecl-tab\" selector is deprecated; use \"div[eclTab]\" instead.');\n }\n effect(() => {\n this._isActive.set(this.isActive());\n });\n }\n\n /**\n * Returns the host HTML element of the tab component.\n */\n get hostElement(): HTMLElement {\n return this.elementRef?.nativeElement;\n }\n\n /**\n * Determines if the deprecated selector `<ecl-tab>` is used.\n */\n get isUsingOldSelector(): boolean {\n if (this.elementRef?.nativeElement.tagName.toLowerCase() === 'ecl-tab') {\n return true;\n }\n return false;\n }\n\n ngAfterViewInit(): void {\n this.tabLabel = this.label().el.nativeElement.innerHTML;\n // this._isActive.set(this.isActive());\n }\n\n /**\n * Returns the CSS classes applied to the host element.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-tabs__item')].join(' ').trim();\n }\n\n /**\n * Returns the inner HTML content of the tab label.\n */\n getTabLabel(): string {\n return this.label().el.nativeElement.innerHTML;\n }\n\n /**\n * Returns the width of the tab element in pixels.\n * The measurement is cached after the first call.\n */\n public getWidth(): number {\n if (this.isFirstCall) {\n this.width = this.hostElement.getBoundingClientRect().width;\n this.isFirstCall = false;\n }\n return this.width;\n }\n\n /**\n * Handles a click event on the tab and emits the `selectTab` event.\n */\n onTabClick(): void {\n this.selectTab.next(new EclTabSelectEvent(this));\n }\n\n /**\n * Handles a keydown event on the tab and emits the `keydownTab` event.\n */\n onKeydown(event: Event): void {\n this.keydownTab.next(event);\n }\n\n /**\n * Calls the focus method on the inner link directive.\n */\n onFocus(): void {\n this.link().onFocus();\n }\n\n /**\n * Calls the blur method on the inner link directive.\n */\n onBlur(): void {\n this.link().onBlur();\n }\n}\n","<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","import { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n afterNextRender,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n HostListener,\n inject,\n IterableChanges,\n IterableDiffer,\n IterableDiffers,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n signal,\n ViewEncapsulation,\n output,\n input,\n contentChildren,\n viewChild,\n} from '@angular/core';\nimport { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { EclRtlService } from '@eui/ecl/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclButtonComponent, EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EclTabComponent } from './ecl-tab.component';\nimport { EclTabSelectEvent } from './events/ecl-tab-select.event';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EclTabLabelComponent } from './ecl-tab-label.component';\n\nexport enum ShiftDirection {\n NEXT = 'next',\n PREVIOUS = 'prev',\n}\n\n/**\n * ECL Tabs component for displaying tabbed content and managing tab selection and navigation.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclTabs]',\n templateUrl: './ecl-tabs.component.html',\n imports: [TranslatePipe, NgTemplateOutlet, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON, EclTabComponent, EclTabLabelComponent],\n encapsulation: ViewEncapsulation.None,\n})\nexport class EclTabsComponent extends ECLBaseDirective implements OnInit, OnDestroy {\n /**\n * Adds `ecl-tabs` class to the host if not using the deprecated selector.\n */\n @HostBinding('class.ecl-tabs') hasClass = !this.isUsingOldSelector;\n\n /**\n * Marks the component as initialized, enabling ECL CSS that depends on this attribute.\n */\n @HostBinding('attr.data-ecl-auto-initialized') autoInitialized = 'true';\n\n /**\n * Class applied to the tab body container.\n */\n readonly bodyClass = input('ecl-u-mt-s');\n\n /**\n * Emits an event when a tab is selected.\n */\n readonly tabSelect = output<EclTabSelectEvent>();\n\n /**\n * All projected tabs inside the component.\n */\n readonly tabs = contentChildren(forwardRef(() => EclTabComponent));\n\n /**\n * Reference to the visible tab list container.\n */\n readonly tabsList = viewChild<ElementRef>('tabsList');\n\n /**\n * Reference to the \"more\" button.\n */\n readonly moreButton = viewChild<EclButtonComponent>('moreButton');\n\n /**\n * Reference to the scroll previous button.\n */\n readonly btnPrev = viewChild<EclButtonComponent>('btnPrev');\n\n /**\n * Reference to the scroll next button.\n */\n readonly btnNext = viewChild<EclButtonComponent>('btnNext');\n\n /**\n * Reference to the dropdown list containing overflowed tabs.\n */\n readonly dropdownList = viewChild<ElementRef>('dropdownList');\n\n /**\n * Reference to the \"more\" item container in the tab list.\n */\n readonly moreItem = viewChild<ElementRef>('moreItem');\n\n /**\n * Tabs displayed in the visible list.\n */\n listTabs: EclTabComponent[] = [];\n\n /**\n * Index of the active tab.\n */\n index = 0;\n\n /**\n * Indicates whether the dropdown is expanded.\n */\n isDropdownExpanded = signal(false);\n\n /**\n * Indicates whether the mobile breakpoint is active.\n */\n isMobileBreakpoint = false;\n\n /**\n * Indicates whether the scroll previous button is shown.\n */\n isScrollPrevBtnShow = signal(false);\n\n /**\n * Indicates whether the scroll next button is shown.\n */\n isScrollNextBtnShow = signal(false);\n\n /**\n * CSS transform applied to the scrollable tab list.\n */\n styleTransform = 'translate3d(0px, 0px, 0px)';\n\n private differs = inject(IterableDiffers);\n private cdkBreakpointObserver = inject(BreakpointObserver);\n private cd = inject(ChangeDetectorRef);\n private el = inject(ElementRef);\n private eclRtlService = inject(EclRtlService);\n private platformId = inject(PLATFORM_ID);\n private differ: IterableDiffer<EclTabComponent>;\n private diff: IterableChanges<EclTabComponent>;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private tabsChanges$ = toObservable(this.tabs);\n private isRtl = false;\n private TIMEOUT_INTERVAL = 0;\n\n constructor() {\n super();\n if (this.isUsingOldSelector) {\n console.warn('\"ecl-tabs\" selector is deprecated; use \"div[eclTabs]\" instead.');\n }\n this.differ = this.differs.find([]).create();\n afterNextRender(() => {\n this.observeTabsChanges();\n this.observeElementSizeChanges();\n this.cd.detectChanges();\n });\n }\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.observeBreakpointChanges();\n this.handleRtlChangeState();\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n @HostListener('document:click', ['$event.target'])\n onClick(target): void {\n if (!this.moreButton().el.nativeElement.contains(target) && !this.dropdownList().nativeElement.contains(target)) {\n this.closeDropdown();\n }\n }\n\n /**\n * Whether the deprecated selector is being used.\n */\n get isUsingOldSelector(): boolean {\n if (this.el?.nativeElement.tagName.toLowerCase() === 'ecl-tabs') {\n return true;\n }\n return false;\n }\n\n /**\n * Whether any visible tab is active.\n */\n get isMoreButtonActive(): boolean {\n return this.listTabs.find((el) => el._isActive() && !el.isHidden()) !== undefined;\n }\n\n /**\n * Get the tabindex for more button.\n */\n get customTabIndex(): string {\n let result = '0';\n if (this.isMoreButtonActive) {\n if (this.isDropdownExpanded()) {\n result = '-1';\n } else {\n result = '0';\n }\n } else {\n result = '-1';\n }\n return result;\n }\n\n /**\n * Scrolls the tab list to the left.\n */\n onScrollPrev(): void {\n this.shiftTabs(ShiftDirection.PREVIOUS);\n }\n\n /**\n * Scrolls the tab list to the right.\n */\n onScrollNext(): void {\n this.shiftTabs(ShiftDirection.NEXT);\n }\n\n /**\n * Toggles the dropdown visibility.\n */\n onDropdownToggle(): void {\n this.isDropdownExpanded.set(!this.isDropdownExpanded());\n }\n\n /**\n * Returns the number of tabs hidden in dropdown.\n */\n getHiddenTabsCount(): number {\n return this.tabs().filter((item) => item.isHidden()).length;\n }\n\n /**\n * Returns the label of the tab at the specified index.\n */\n getTabLabel(index: number): string {\n return this.getTabsAsArray()[index].getTabLabel();\n }\n\n /**\n * Returns the duration of the transition animation.\n */\n getTransitionDuration(): string {\n if (this.isMobileBreakpoint) {\n return '0.4s';\n }\n return '0';\n }\n\n /**\n * Handles tab selection.\n * @param tab Tab to activate.\n */\n onTabSelect(tab: EclTabComponent): void {\n this.deactivateAllTabs(Array.from(this.tabs()), this.listTabs);\n this.activateTab(tab);\n this.sendTabSelectEvent(tab);\n }\n\n /**\n * Handles right arrow key navigation.\n * @param index Current tab index.\n */\n onTabKeydownArrowRight(index: number): void {\n if (this.isMobileBreakpoint) {\n this.shiftTabs(ShiftDirection.NEXT);\n if (index === this.getTabsCount() - 1) {\n return;\n }\n }\n if (index === this.getTabsCount() - 1 && !this.isMobileBreakpoint) {\n this.focusOnFirstTab();\n } else {\n this.focusOnNextTab(index);\n }\n }\n\n /**\n * Handles left arrow key navigation.\n * @param index Current tab index.\n */\n onTabKeydownArrowLeft(index: number): void {\n if (this.isMobileBreakpoint) {\n this.shiftTabs(ShiftDirection.PREVIOUS);\n if (index === 0) {\n return;\n }\n }\n\n if (index === 0 && !this.isMobileBreakpoint) {\n this.focusOnLastTab();\n } else {\n this.focusOnPrevTab(index);\n }\n }\n\n /**\n * Focuses the first tab in the list.\n */\n onTabKeydownHome(): void {\n this.focusOnFirstTab();\n }\n\n /**\n * Focuses the last tab in the list.\n */\n onTabKeydownEnd(): void {\n this.focusOnLastTab();\n }\n\n /**\n * Handles all supported keyboard events for a tab.\n * @param event KeyboardEvent triggered.\n * @param tab Target tab.\n */\n onTabKeydown(event: Event, tab: EclTabComponent): void {\n if (!(event instanceof KeyboardEvent)) {\n return;\n }\n\n const index = this.getCurrentTabIndex(tab);\n switch (event.key) {\n case KeyCode.ARROW_LEFT: {\n event.preventDefault();\n this.onTabKeydownArrowLeft(index);\n break;\n }\n case KeyCode.ARROW_RIGHT: {\n event.preventDefault();\n this.onTabKeydownArrowRight(index);\n break;\n }\n case KeyCode.END: {\n event.preventDefault();\n this.onTabKeydownEnd();\n break;\n }\n case KeyCode.HOME: {\n event.preventDefault();\n this.onTabKeydownHome();\n break;\n }\n case KeyCode.ENTER: {\n event.preventDefault();\n this.onTabSelect(tab);\n break;\n }\n case KeyCode.TAB: {\n this.onTabTab();\n break;\n }\n default: {\n break;\n }\n }\n }\n\n onMoreButtonFocus(): void {\n const index = this.listTabs.findIndex(\n (el) => el._isActive() && !el.isHidden()\n );\n if (index < 0) return;\n this.openDropdown();\n this.moreButton().el.nativeElement.blur();\n this.focusOnDropdownTab(index);\n }\n\n private onTabTab(): void {\n this.closeDropdown();\n }\n\n private getCurrentTabIndex(tab: EclTabComponent): number {\n const index = this.getTabsAsArray().indexOf(tab)\n return index !== -1 ? index : this.listTabs.indexOf(tab);\n }\n\n private shiftTabs(dir: string): void {\n this.index = this.getShifIndex(dir, this.index);\n\n this.isScrollPrevBtnShow.set(this.index >= 1);\n this.isScrollNextBtnShow.set(this.index < this.getTabsCount() - 1);\n\n const leftMargin = this.index === 0 ? 0 : this.btnPrev().el.nativeElement.getBoundingClientRect().width + 13;\n\n let newOffset = 0;\n if (this.isRtl) {\n newOffset = Math.ceil(\n this.tabsList().nativeElement.offsetWidth -\n this.getTabsAsArray()[this.index].hostElement.offsetLeft -\n this.getTabsAsArray()[this.index].hostElement.offsetWidth -\n leftMargin,\n );\n } else {\n newOffset = Math.ceil(this.getTabsAsArray()[this.index]?.hostElement.offsetLeft - leftMargin);\n }\n\n const maxScroll = Math.ceil(this.getTabsListWidth() - this.el.nativeElement.getBoundingClientRect().width);\n\n if (newOffset > maxScroll) {\n this.isScrollNextBtnShow.set(false);\n newOffset = maxScroll;\n }\n\n if (this.isRtl) {\n this.styleTransform = `translate3d(${newOffset}px, 0px, 0px)`;\n } else {\n this.styleTransform = `translate3d(-${newOffset}px, 0px, 0px)`;\n }\n }\n\n private getShifIndex(dir: string, index: number): number {\n if (dir === ShiftDirection.NEXT) {\n if (index === this.getTabsCount() - 1 && !this.isMobileBreakpoint ) {\n return 0;\n } else {\n return index + 1;\n }\n } else {\n if (index === 0 && !this.isMobileBreakpoint) {\n return this.getTabsCount() - 1;\n } else {\n return index - 1;\n }\n }\n }\n\n private createSecondListForDropdown(): void {\n this.listTabs = [];\n this.tabs().forEach((tab) => {\n const newTab = Object.assign({}, tab) as EclTabComponent;\n newTab.isHidden.set(true);\n newTab._isActive.set(tab.isActive());\n this.listTabs.push(newTab as EclTabComponent);\n });\n }\n\n private getTabsAsArray(): EclTabComponent[] {\n return Array.from(this.tabs());\n }\n\n private getTabsCount(): number {\n return this.tabs().length;\n }\n\n private closeDropdown(): void {\n this.isDropdownExpanded.set(false);\n }\n\n private openDropdown(): void {\n this.isDropdownExpanded.set(true);\n }\n\n private observeTabsChanges(): void {\n this.tabsChanges$.pipe(takeUntil(this.destroy$)).subscribe(this.onTabsChanges.bind(this));\n }\n\n private onTabsChanges(): void {\n this.diff = this.differ.diff(this.tabs());\n\n if (!this.diff) {\n this.tabs().forEach((tab) => {\n this.connectTabEvents(tab);\n });\n } else {\n this.diff.forEachAddedItem((change) => {\n this.connectTabEvents(change.item);\n });\n\n this.diff.forEachRemovedItem((change) => {\n this.disconnectTabEvents(change.item);\n });\n }\n this.createSecondListForDropdown();\n }\n\n private connectTabEvents(tab: EclTabComponent): void {\n tab.selectTab.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.onTabSelect(tab);\n });\n tab.keydownTab.pipe(takeUntil(this.destroy$)).subscribe((event) => {\n this.onTabKeydown(event, tab);\n });\n }\n\n private focusOnNextTab(index: number): void {\n if (this.getTabsAsArray()[index + 1].isHidden()) {\n this.openDropdown();\n this.focusOnDropdownTab(index + 1);\n } else {\n this.closeDropdown();\n this.getTabsAsArray()[index + 1].onFocus();\n }\n }\n\n private focusOnFirstTab(): void {\n this.closeDropdown();\n this.getFirstTabFromArray().onFocus();\n }\n\n private focusOnLastTab(): void {\n if (!this.getLastTabFromArray().isHidden()) {\n this.getLastTabFromArray().onFocus();\n } else {\n this.openDropdown();\n this.focusOnDropdownTab(this.getTabsCount() - 1);\n }\n }\n\n private focusOnPrevTab(index: number): void {\n if (!this.listTabs[index - 1].isHidden()) {\n this.focusOnDropdownTab(index - 1);\n } else {\n this.closeDropdown();\n this.getTabsAsArray()[index - 1].onFocus();\n }\n }\n\n private focusOnDropdownTab(index: number): void {\n this.dropdownList().nativeElement.children[index].firstChild.focus();\n }\n\n private getLastTabFromArray(): EclTabComponent {\n return this.getTabsAsArray()[this.getTabsAsArray().length - 1];\n }\n\n private getFirstTabFromArray(): EclTabComponent {\n return this.getTabsAsArray()[0];\n }\n\n private disconnectTabEvents(tab: EclTabComponent): void {\n if (tab && tab.selectTab) {\n tab.selectTab.unsubscribe();\n }\n }\n\n private deactivateAllTabs(tabs: EclTabComponent[], listTabs: EclTabComponent[]): void {\n tabs.forEach((it) => {\n it._isActive.set(false);\n });\n\n listTabs.forEach((it) => {\n it._isActive.set(false);\n });\n }\n\n private activateTab(tab: EclTabComponent): void {\n tab._isActive.set(true);\n }\n\n private sendTabSelectEvent(tab: EclTabComponent): void {\n this.tabSelect.emit(new EclTabSelectEvent(tab));\n }\n\n private observeBreakpointChanges(): void {\n this.cdkBreakpointObserver\n .observe(['(max-width: 480px)'])\n .pipe(takeUntil(this.destroy$))\n .subscribe((result) => {\n this.isMobileBreakpoint = result.matches;\n });\n }\n\n private handleResize(): void {\n this.closeDropdown();\n if (this.isMobileBreakpoint) {\n this.handleMobile();\n return;\n }\n\n this.styleTransform = 'translate3d(0px, 0px, 0px)';\n this.index = 0;\n this.isScrollNextBtnShow.set(false);\n this.isScrollPrevBtnShow.set(false);\n\n // Reset list width to auto for measurement (direct DOM, same as ECL)\n this.tabsList().nativeElement.style.width = 'auto';\n\n // Temporarily show the more button to get its actual width\n this.moreItem().nativeElement.classList.remove('ecl-tabs__item--hidden');\n this.moreButton().el.nativeElement.classList.remove('ecl-tabs__toggle--hidden');\n const moreButtonWidth = this.moreButton().el.nativeElement.getBoundingClientRect().width;\n this.moreItem().nativeElement.classList.add('ecl-tabs__item--hidden');\n this.moreButton().el.nativeElement.classList.add('ecl-tabs__toggle--hidden');\n\n const hiddenItems: number[] = [];\n const listWidth = this.getTabsListWidth();\n\n // Measure all items first to check if they fit without the button\n this.tabs().forEach((item) => {\n item.isHidden.set(false);\n item.hostElement.classList.remove('ecl-tabs__item--hidden');\n });\n const itemWidths = this.tabs().map((item) => {\n const itemMargin = parseFloat(getComputedStyle(item.hostElement).marginInlineEnd) || 0;\n return item.hostElement.getBoundingClientRect().width + itemMargin;\n });\n const totalWidth = itemWidths.reduce((sum, w) => sum + w, 0);\n\n if (totalWidth > listWidth) {\n // Reserve space for the more button and hide items that don't fit\n this.tabs().forEach((item) => {\n item.isHidden.set(true);\n item.hostElement.classList.add('ecl-tabs__item--hidden');\n });\n let stopWidth = moreButtonWidth;\n this.tabs().forEach((item, i) => {\n item.isHidden.set(false);\n item.hostElement.classList.remove('ecl-tabs__item--hidden');\n if (listWidth >= stopWidth + itemWidths[i] && !hiddenItems.includes(i - 1)) {\n stopWidth += itemWidths[i];\n } else {\n item.isHidden.set(true);\n item.hostElement.classList.add('ecl-tabs__item--hidden');\n if (item._isActive()) {\n this.listTabs[i]._isActive.set(true);\n }\n hiddenItems.push(i);\n }\n });\n }\n\n // Toggle the visibility of More button and items in dropdown\n if (!hiddenItems.length) {\n this.moreItem().nativeElement.classList.add('ecl-tabs__item--hidden');\n this.moreButton().el.nativeElement.classList.add('ecl-tabs__toggle--hidden');\n this.setActiveItemForMainTabs();\n this.hideAllDropdownTabs();\n } else {\n this.moreItem().nativeElement.classList.remove('ecl-tabs__item--hidden');\n this.moreButton().el.nativeElement.classList.remove('ecl-tabs__toggle--hidden');\n this.setHiddenItemsForDropdownTabs(hiddenItems);\n }\n this.cd.markForCheck();\n }\n\n private hideAllDropdownTabs(): void {\n this.listTabs.forEach(item => item.isHidden.set(true));\n }\n\n private setActiveItemForMainTabs(): void {\n this.listTabs.forEach((item, index) => {\n if (item._isActive()) {\n setTimeout(() => this.tabs()[index]._isActive.set(true));\n }\n });\n this.cd.markForCheck();\n }\n\n private getTabsListWidth(): number {\n return this.tabsList().nativeElement.getBoundingClientRect().width;\n }\n\n private setHiddenItemsForDropdownTabs(hiddenItems: number[]): void {\n this.listTabs.forEach((item, index) => {\n if (hiddenItems.includes(index)) {\n item.isHidden.set(false);\n } else {\n item.isHidden.set(true);\n }\n });\n }\n\n private handleMobile(): void {\n this.isScrollPrevBtnShow.set(false);\n this.isScrollNextBtnShow.set(true);\n this.setAllTabsVisible();\n\n // Hide the more item and button (direct DOM, same as ECL)\n this.moreItem().nativeElement.classList.add('ecl-tabs__item--hidden');\n this.moreButton().el.nativeElement.classList.add('ecl-tabs__toggle--hidden');\n\n // Reset to auto so scrollWidth reflects the natural content width\n this.tabsList().nativeElement.style.width = 'auto';\n // Remove hidden class directly from DOM elements\n this.tabs().forEach((item) => {\n item.hostElement.classList.remove('ecl-tabs__item--hidden');\n });\n // Use scrollWidth to also include item margins\n this.tabsList().nativeElement.style.width = `${this.tabsList().nativeElement.scrollWidth}px`;\n }\n\n private setAllTabsVisible(): void {\n this.tabs().forEach((item) => {\n item.isHidden.set(false);\n });\n }\n\n private handleRtlChangeState(): void {\n const isRtlOld = this.isRtl;\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n setTimeout(() => {\n this.isRtl = rtlState;\n if (this.isMobileBreakpoint && this.hasRtlChanged(isRtlOld)) {\n this.handleRtlChange();\n }\n });\n });\n }\n\n private hasRtlChanged(isRtlOld: boolean): boolean {\n return isRtlOld !== this.isRtl;\n }\n\n private handleRtlChange(): void {\n this.handleMobile();\n this.styleTransform = 'translate3d(0px, 0px, 0px)';\n this.index = 0;\n }\n\n private observeElementSizeChanges(): void {\n new ResizeObserver(() => {\n setTimeout(() => {\n this.handleResize();\n }, this.TIMEOUT_INTERVAL);\n }).observe(this.tabsList().nativeElement);\n }\n}\n","@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}","import { EclTabLabelComponent } from './ecl-tab-label.component';\nimport { EclTabComponent } from './ecl-tab.component';\nimport { EclTabsComponent } from './ecl-tabs.component';\n\nexport * from './ecl-tabs.component';\nexport * from './ecl-tab.component';\nexport * from './ecl-tab-label.component';\nexport * from './models/ecl-tab.model';\nexport * from './events/ecl-tab-select.event';\n\nexport const EUI_ECL_TABS = [\n EclTabsComponent, EclTabComponent, EclTabLabelComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { HostBinding, Directive, EventEmitter, HostListener, Output, Component, input, booleanAttribute, model,
|
|
2
|
+
import { HostBinding, Directive, EventEmitter, HostListener, Output, Component, input, booleanAttribute, model, contentChild, forwardRef, ElementRef, viewChild, inject, Renderer2, ViewEncapsulation, contentChildren } from '@angular/core';
|
|
3
3
|
import { ECLBaseDirective, EclBaseEvent } from '@eui/ecl/core';
|
|
4
4
|
import { NgTemplateOutlet } from '@angular/common';
|
|
5
5
|
import * as i2 from '@eui/ecl/components/ecl-button';
|
|
@@ -134,6 +134,23 @@ class EclTimelineItemComponent extends ECLBaseDirective {
|
|
|
134
134
|
*/
|
|
135
135
|
this.isTogglerExpanded = model(false, /* @ts-ignore */
|
|
136
136
|
...(ngDevMode ? [{ debugName: "isTogglerExpanded" }] : /* istanbul ignore next */ []));
|
|
137
|
+
// @HostBinding('attr.style') customStyle = '';
|
|
138
|
+
/**
|
|
139
|
+
* Reference to a projected custom toggler component.
|
|
140
|
+
*/
|
|
141
|
+
this.timelineItemToggler = contentChild(forwardRef(() => EclTimelineItemTogglerComponent), /* @ts-ignore */
|
|
142
|
+
...(ngDevMode ? [{ debugName: "timelineItemToggler" }] : /* istanbul ignore next */ []));
|
|
143
|
+
this.timelineTitle = contentChild(forwardRef(() => EclTimelineItemTitleDirective), /* @ts-ignore */
|
|
144
|
+
...(ngDevMode ? [{ debugName: "timelineTitle" }] : /* istanbul ignore next */ []));
|
|
145
|
+
/**
|
|
146
|
+
* Reference to a projected ECL link, used for setting focus after toggle.
|
|
147
|
+
*/
|
|
148
|
+
this.eclLink = contentChild(forwardRef(() => EclLinkDirective), /* @ts-ignore */
|
|
149
|
+
...(ngDevMode ? [{ debugName: "eclLink" }] : /* istanbul ignore next */ []));
|
|
150
|
+
/**
|
|
151
|
+
* Reference to a projected label for the item. Used to set height, when item has no content and title.
|
|
152
|
+
*/
|
|
153
|
+
this.eclTimelineItemLabel = contentChild(forwardRef(() => EclTimelineItemLabelDirective), { ...(ngDevMode ? { debugName: "eclTimelineItemLabel" } : /* istanbul ignore next */ {}), read: ElementRef });
|
|
137
154
|
/**
|
|
138
155
|
* Whether the item is collapsed.
|
|
139
156
|
* Adds the `ecl-timeline__item--collapsed` CSS class when true.
|
|
@@ -156,6 +173,8 @@ class EclTimelineItemComponent extends ECLBaseDirective {
|
|
|
156
173
|
*/
|
|
157
174
|
// eslint-disable-next-line
|
|
158
175
|
this.toggle = new EventEmitter();
|
|
176
|
+
this.contentSlotRef = viewChild('contentSlot', /* @ts-ignore */
|
|
177
|
+
...(ngDevMode ? [{ debugName: "contentSlotRef" }] : /* istanbul ignore next */ []));
|
|
159
178
|
this.destroy$ = new Subject();
|
|
160
179
|
this.hasContent = false;
|
|
161
180
|
this.hasHeight = false;
|
|
@@ -174,13 +193,14 @@ class EclTimelineItemComponent extends ECLBaseDirective {
|
|
|
174
193
|
ngAfterViewChecked() {
|
|
175
194
|
if (!this.hasHeight) {
|
|
176
195
|
setTimeout(() => {
|
|
177
|
-
const node = this.contentSlotRef?.nativeElement;
|
|
196
|
+
const node = this.contentSlotRef()?.nativeElement;
|
|
178
197
|
if (node) {
|
|
179
198
|
this.hasContent =
|
|
180
199
|
(node.textContent?.trim().length ?? 0) > 0 || node.children.length > 0;
|
|
181
200
|
}
|
|
182
|
-
|
|
183
|
-
|
|
201
|
+
const eclTimelineItemLabel = this.eclTimelineItemLabel();
|
|
202
|
+
if (!this.isToggler() && eclTimelineItemLabel) {
|
|
203
|
+
const labelHeight = eclTimelineItemLabel.nativeElement.getBoundingClientRect().height;
|
|
184
204
|
this.hasHeight = labelHeight > 0;
|
|
185
205
|
this.host.nativeElement.style.setProperty('--ecl-timeline-label-height', `${labelHeight}px`);
|
|
186
206
|
this.renderer.setStyle(this.host.nativeElement, 'box-sizing', 'unset');
|
|
@@ -192,8 +212,9 @@ class EclTimelineItemComponent extends ECLBaseDirective {
|
|
|
192
212
|
* Lifecycle hook that sets up event subscriptions after content is initialized.
|
|
193
213
|
*/
|
|
194
214
|
ngAfterContentInit() {
|
|
195
|
-
|
|
196
|
-
|
|
215
|
+
const timelineItemToggler = this.timelineItemToggler();
|
|
216
|
+
if (timelineItemToggler) {
|
|
217
|
+
timelineItemToggler.toggle.pipe(takeUntil(this.destroy$)).subscribe(() => {
|
|
197
218
|
this.handleToggler();
|
|
198
219
|
});
|
|
199
220
|
}
|
|
@@ -222,7 +243,7 @@ class EclTimelineItemComponent extends ECLBaseDirective {
|
|
|
222
243
|
* Returns true if this is a toggler and no custom toggler component is projected.
|
|
223
244
|
*/
|
|
224
245
|
hasDefaultToggler() {
|
|
225
|
-
return this.isToggler() && !this.timelineItemToggler;
|
|
246
|
+
return this.isToggler() && !this.timelineItemToggler();
|
|
226
247
|
}
|
|
227
248
|
/**
|
|
228
249
|
* Handles click events from the default toggler element.
|
|
@@ -241,7 +262,7 @@ class EclTimelineItemComponent extends ECLBaseDirective {
|
|
|
241
262
|
}
|
|
242
263
|
}
|
|
243
264
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclTimelineItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
244
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclTimelineItemComponent, isStandalone: true, selector: "ecl-timeline-item, li[eclTimelineItem]", inputs: { expandLabel: { classPropertyName: "expandLabel", publicName: "expandLabel", isSignal: true, isRequired: false, transformFunction: null }, collapseLabel: { classPropertyName: "collapseLabel", publicName: "collapseLabel", isSignal: true, isRequired: false, transformFunction: null }, isHeadline: { classPropertyName: "isHeadline", publicName: "isHeadline", isSignal: true, isRequired: false, transformFunction: null }, isTogglerExpanded: { classPropertyName: "isTogglerExpanded", publicName: "isTogglerExpanded", isSignal: true, isRequired: false, transformFunction: null }, isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null }, isToggler: { classPropertyName: "isToggler", publicName: "isToggler", isSignal: true, isRequired: false, transformFunction: null }, toggleGroup: { classPropertyName: "toggleGroup", publicName: "toggleGroup", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isTogglerExpanded: "isTogglerExpandedChange", toggle: "toggle" }, host: { properties: { "class": "this.cssClasses", "class.ecl-timeline__item--collapsed": "this.isCollapsed", "class.ecl-timeline__item--toggle": "this.isToggler" } }, queries: [{ propertyName: "timelineItemToggler", first: true, predicate: i0.forwardRef(() => EclTimelineItemTogglerComponent), descendants: true }, { propertyName: "timelineTitle", first: true, predicate: i0.forwardRef(() => EclTimelineItemTitleDirective), descendants: true }, { propertyName: "eclLink", first: true, predicate: i0.forwardRef(() => EclLinkDirective), descendants: true }, { propertyName: "eclTimelineItemLabel", first: true, predicate: i0.forwardRef(() => EclTimelineItemLabelDirective), descendants: true, read: ElementRef }], viewQueries: [{ propertyName: "contentSlotRef", first: true, predicate: ["contentSlot"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (isToggler()) {\n <div class=\"ecl-timeline__content\">\n @if (hasDefaultToggler()) {\n <button eclButton (click)=\"onTogglerClick($event)\" variant=\"secondary\">\n @if (isShowExpandLabel) {\n <span eclButtonLabel> {{ expandLabel() }} </span>\n }\n @if (isShowCollapseLabel) {\n <span eclButtonLabel> {{ collapseLabel() }} </span>\n }\n <ecl-icon icon=\"corner-arrow\" size=\"fluid\" [transform]=\"!isTogglerExpanded() ? 'rotate-180' : ''\"></ecl-icon>\n </button>\n }\n\n\n <ng-content select=\"ecl-timeline-item-toggler\"></ng-content>\n\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n}\n@else {\n <div class=\"ecl-timeline__tooltip\">\n <div class=\"ecl-timeline__tooltip-arrow\"></div>\n <ng-content select=\"[eclTimelineItemLabel]\"></ng-content>\n\n <ng-content select=\"[eclTimelineItemTitle]\"></ng-content>\n\n <div class=\"ecl-timeline__content\" #contentSlot>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n </div>\n}\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", styles: ["ecl-timeline-item{display:list-item}\n"], dependencies: [{ kind: "component", type: i1.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "component", type: i2.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "eclStyle", "size", "containerStyleClass"] }, { kind: "directive", type: i2.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
265
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclTimelineItemComponent, isStandalone: true, selector: "ecl-timeline-item, li[eclTimelineItem]", inputs: { expandLabel: { classPropertyName: "expandLabel", publicName: "expandLabel", isSignal: true, isRequired: false, transformFunction: null }, collapseLabel: { classPropertyName: "collapseLabel", publicName: "collapseLabel", isSignal: true, isRequired: false, transformFunction: null }, isHeadline: { classPropertyName: "isHeadline", publicName: "isHeadline", isSignal: true, isRequired: false, transformFunction: null }, isTogglerExpanded: { classPropertyName: "isTogglerExpanded", publicName: "isTogglerExpanded", isSignal: true, isRequired: false, transformFunction: null }, isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null }, isToggler: { classPropertyName: "isToggler", publicName: "isToggler", isSignal: true, isRequired: false, transformFunction: null }, toggleGroup: { classPropertyName: "toggleGroup", publicName: "toggleGroup", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isTogglerExpanded: "isTogglerExpandedChange", toggle: "toggle" }, host: { properties: { "class": "this.cssClasses", "class.ecl-timeline__item--collapsed": "this.isCollapsed", "class.ecl-timeline__item--toggle": "this.isToggler" } }, queries: [{ propertyName: "timelineItemToggler", first: true, predicate: i0.forwardRef(() => EclTimelineItemTogglerComponent), descendants: true, isSignal: true }, { propertyName: "timelineTitle", first: true, predicate: i0.forwardRef(() => EclTimelineItemTitleDirective), descendants: true, isSignal: true }, { propertyName: "eclLink", first: true, predicate: i0.forwardRef(() => EclLinkDirective), descendants: true, isSignal: true }, { propertyName: "eclTimelineItemLabel", first: true, predicate: i0.forwardRef(() => EclTimelineItemLabelDirective), descendants: true, read: ElementRef, isSignal: true }], viewQueries: [{ propertyName: "contentSlotRef", first: true, predicate: ["contentSlot"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (isToggler()) {\n <div class=\"ecl-timeline__content\">\n @if (hasDefaultToggler()) {\n <button eclButton (click)=\"onTogglerClick($event)\" variant=\"secondary\">\n @if (isShowExpandLabel) {\n <span eclButtonLabel> {{ expandLabel() }} </span>\n }\n @if (isShowCollapseLabel) {\n <span eclButtonLabel> {{ collapseLabel() }} </span>\n }\n <ecl-icon icon=\"corner-arrow\" size=\"fluid\" [transform]=\"!isTogglerExpanded() ? 'rotate-180' : ''\"></ecl-icon>\n </button>\n }\n\n\n <ng-content select=\"ecl-timeline-item-toggler\"></ng-content>\n\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n}\n@else {\n <div class=\"ecl-timeline__tooltip\">\n <div class=\"ecl-timeline__tooltip-arrow\"></div>\n <ng-content select=\"[eclTimelineItemLabel]\"></ng-content>\n\n <ng-content select=\"[eclTimelineItemTitle]\"></ng-content>\n\n <div class=\"ecl-timeline__content\" #contentSlot>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n </div>\n}\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", styles: ["ecl-timeline-item{display:list-item}\n"], dependencies: [{ kind: "component", type: i1.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }, { kind: "component", type: i2.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["isIconOnly", "variant", "eclStyle", "size", "containerStyleClass"] }, { kind: "directive", type: i2.EclButtonLabelDirective, selector: "[eclButtonLabel]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
245
266
|
}
|
|
246
267
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclTimelineItemComponent, decorators: [{
|
|
247
268
|
type: Component,
|
|
@@ -249,19 +270,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
249
270
|
}], propDecorators: { expandLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandLabel", required: false }] }], collapseLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapseLabel", required: false }] }], isHeadline: [{ type: i0.Input, args: [{ isSignal: true, alias: "isHeadline", required: false }] }], isTogglerExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "isTogglerExpanded", required: false }] }, { type: i0.Output, args: ["isTogglerExpandedChange"] }], cssClasses: [{
|
|
250
271
|
type: HostBinding,
|
|
251
272
|
args: ['class']
|
|
252
|
-
}], timelineItemToggler: [{
|
|
253
|
-
type: ContentChild,
|
|
254
|
-
args: [forwardRef(() => EclTimelineItemTogglerComponent)]
|
|
255
|
-
}], timelineTitle: [{
|
|
256
|
-
type: ContentChild,
|
|
257
|
-
args: [forwardRef(() => EclTimelineItemTitleDirective)]
|
|
258
|
-
}], eclLink: [{
|
|
259
|
-
type: ContentChild,
|
|
260
|
-
args: [forwardRef(() => EclLinkDirective)]
|
|
261
|
-
}], eclTimelineItemLabel: [{
|
|
262
|
-
type: ContentChild,
|
|
263
|
-
args: [forwardRef(() => EclTimelineItemLabelDirective), { read: ElementRef }]
|
|
264
|
-
}], isCollapsed: [{
|
|
273
|
+
}], timelineItemToggler: [{ type: i0.ContentChild, args: [forwardRef(() => EclTimelineItemTogglerComponent), { isSignal: true }] }], timelineTitle: [{ type: i0.ContentChild, args: [forwardRef(() => EclTimelineItemTitleDirective), { isSignal: true }] }], eclLink: [{ type: i0.ContentChild, args: [forwardRef(() => EclLinkDirective), { isSignal: true }] }], eclTimelineItemLabel: [{ type: i0.ContentChild, args: [forwardRef(() => EclTimelineItemLabelDirective), { ...{ read: ElementRef }, isSignal: true }] }], isCollapsed: [{
|
|
265
274
|
type: HostBinding,
|
|
266
275
|
args: ['class.ecl-timeline__item--collapsed']
|
|
267
276
|
}], isToggler: [{
|
|
@@ -269,10 +278,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
269
278
|
args: ['class.ecl-timeline__item--toggle']
|
|
270
279
|
}], toggleGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "toggleGroup", required: false }] }], toggle: [{
|
|
271
280
|
type: Output
|
|
272
|
-
}], contentSlotRef: [{
|
|
273
|
-
type: ViewChild,
|
|
274
|
-
args: ['contentSlot']
|
|
275
|
-
}] } });
|
|
281
|
+
}], contentSlotRef: [{ type: i0.ViewChild, args: ['contentSlot', { isSignal: true }] }] } });
|
|
276
282
|
|
|
277
283
|
/**
|
|
278
284
|
* Directive that applies the `ecl-timeline-set` class to an element.
|
|
@@ -299,6 +305,12 @@ class EclTimelineComponent extends ECLBaseDirective {
|
|
|
299
305
|
constructor() {
|
|
300
306
|
super(...arguments);
|
|
301
307
|
this.isExpanded = null;
|
|
308
|
+
/**
|
|
309
|
+
* List of projected `EclTimelineItemComponent` instances.
|
|
310
|
+
* Collected using `@ContentChildren`.
|
|
311
|
+
*/
|
|
312
|
+
this.timelineItems = contentChildren(forwardRef(() => EclTimelineItemComponent), /* @ts-ignore */
|
|
313
|
+
...(ngDevMode ? [{ debugName: "timelineItems" }] : /* istanbul ignore next */ []));
|
|
302
314
|
this.destroy$ = new Subject();
|
|
303
315
|
this.isFirstExpandedLinkFocused = false;
|
|
304
316
|
this.hasHeadlineItem = false;
|
|
@@ -320,7 +332,7 @@ class EclTimelineComponent extends ECLBaseDirective {
|
|
|
320
332
|
* collapses/expands related content items accordingly.
|
|
321
333
|
*/
|
|
322
334
|
ngAfterContentInit() {
|
|
323
|
-
this.timelineItems
|
|
335
|
+
this.timelineItems()
|
|
324
336
|
.filter((item) => item.isToggler())
|
|
325
337
|
.forEach((it) => {
|
|
326
338
|
it.toggle.pipe(takeUntil(this.destroy$)).subscribe((evt) => {
|
|
@@ -330,8 +342,9 @@ class EclTimelineComponent extends ECLBaseDirective {
|
|
|
330
342
|
else {
|
|
331
343
|
this.isExpanded = null;
|
|
332
344
|
}
|
|
333
|
-
|
|
334
|
-
|
|
345
|
+
const timelineItems = this.timelineItems();
|
|
346
|
+
if (timelineItems && !evt.defaultPrevented) {
|
|
347
|
+
timelineItems
|
|
335
348
|
.filter((item) => item.toggleGroup() === evt.toggleGroup)
|
|
336
349
|
.filter((item) => !item.isToggler())
|
|
337
350
|
.forEach((item) => {
|
|
@@ -341,7 +354,7 @@ class EclTimelineComponent extends ECLBaseDirective {
|
|
|
341
354
|
}
|
|
342
355
|
});
|
|
343
356
|
});
|
|
344
|
-
if (this.timelineItems?.find(item => item.isHeadline()) !== undefined)
|
|
357
|
+
if (this.timelineItems()?.find(item => item.isHeadline()) !== undefined)
|
|
345
358
|
this.hasHeadlineItem = true;
|
|
346
359
|
}
|
|
347
360
|
/**
|
|
@@ -360,8 +373,8 @@ class EclTimelineComponent extends ECLBaseDirective {
|
|
|
360
373
|
*/
|
|
361
374
|
onFocusFirstExpandedLink(item) {
|
|
362
375
|
if (!item.isCollapsed()) {
|
|
363
|
-
if (!this.isFirstExpandedLinkFocused && item.eclLink) {
|
|
364
|
-
setTimeout(() => item.eclLink.onFocus());
|
|
376
|
+
if (!this.isFirstExpandedLinkFocused && item.eclLink()) {
|
|
377
|
+
setTimeout(() => item.eclLink().onFocus());
|
|
365
378
|
this.isFirstExpandedLinkFocused = true;
|
|
366
379
|
}
|
|
367
380
|
}
|
|
@@ -370,19 +383,16 @@ class EclTimelineComponent extends ECLBaseDirective {
|
|
|
370
383
|
}
|
|
371
384
|
}
|
|
372
385
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclTimelineComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
373
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
386
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.5", type: EclTimelineComponent, isStandalone: true, selector: "ecl-timeline, ol[eclTimeline]", host: { attributes: { "role": "list" }, properties: { "attr.data-ecl-timeline-expanded": "isExpanded", "class": "cssClasses" } }, queries: [{ propertyName: "timelineItems", predicate: i0.forwardRef(() => EclTimelineItemComponent), isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:block}\n"] }); }
|
|
374
387
|
}
|
|
375
388
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclTimelineComponent, decorators: [{
|
|
376
389
|
type: Component,
|
|
377
390
|
args: [{ selector: 'ecl-timeline, ol[eclTimeline]', host: {
|
|
378
|
-
|
|
391
|
+
role: 'list',
|
|
379
392
|
'[attr.data-ecl-timeline-expanded]': 'isExpanded',
|
|
380
393
|
'[class]': 'cssClasses',
|
|
381
394
|
}, template: "<ng-content></ng-content>\n", styles: [":host{display:block}\n"] }]
|
|
382
|
-
}], propDecorators: { timelineItems: [{
|
|
383
|
-
type: ContentChildren,
|
|
384
|
-
args: [forwardRef(() => EclTimelineItemComponent)]
|
|
385
|
-
}] } });
|
|
395
|
+
}], propDecorators: { timelineItems: [{ type: i0.ContentChildren, args: [forwardRef(() => EclTimelineItemComponent), { isSignal: true }] }] } });
|
|
386
396
|
|
|
387
397
|
const EUI_ECL_TIMELINE = [
|
|
388
398
|
EclTimelineComponent,
|