@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
|
@@ -34,7 +34,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
34
34
|
args: [{
|
|
35
35
|
selector: 'li[eclSloganTickerSlide]',
|
|
36
36
|
host: {
|
|
37
|
-
|
|
37
|
+
class: 'ecl-slogan-ticker__slide',
|
|
38
38
|
},
|
|
39
39
|
}]
|
|
40
40
|
}] });
|
|
@@ -310,7 +310,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
310
310
|
args: [{
|
|
311
311
|
selector: 'ul[eclSloganTickerList]',
|
|
312
312
|
host: {
|
|
313
|
-
|
|
313
|
+
style: 'display: none',
|
|
314
314
|
},
|
|
315
315
|
}]
|
|
316
316
|
}] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-slogan-ticker.mjs","sources":["../../components/ecl-slogan-ticker/ecl-slogan-ticker-slide.directive.ts","../../components/ecl-slogan-ticker/ecl-slogan-ticker.component.ts","../../components/ecl-slogan-ticker/ecl-slogan-ticker.component.html","../../components/ecl-slogan-ticker/ecl-slogan-ticker-list.directive.ts","../../components/ecl-slogan-ticker/index.ts","../../components/ecl-slogan-ticker/eui-ecl-components-ecl-slogan-ticker.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n inject,\n} from '@angular/core';\n\n/**\n * Directive marking a single slide item within the ECL Slogan Ticker.\n * Applied to `<li>` elements to identify them as ticker slides.\n *\n * The parent `ecl-slogan-ticker` component uses ContentChildren to query these\n * directives and clones them in the DOM to ensure seamless looping.\n *\n * Usage:\n * ```html\n * <li eclSloganTickerSlide>GENERATE YOUR OWN ENERGY</li>\n * ```\n */\n@Directive({\n selector: 'li[eclSloganTickerSlide]',\n host: {\n 'class': 'ecl-slogan-ticker__slide',\n },\n})\nexport class EclSloganTickerSlideDirective {\n\n /** Element reference for text extraction and width measurement. */\n el = inject(ElementRef);\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n contentChildren,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n PLATFORM_ID,\n signal,\n viewChild,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { ECLBaseDirective, EclRtlService } from '@eui/ecl/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { EmblaCarouselDirective } from 'embla-carousel-angular';\nimport { EmblaCarouselType, EmblaEventType, EmblaPluginType } from 'embla-carousel';\nimport AutoScroll from 'embla-carousel-auto-scroll';\nimport { Subject, takeUntil } from 'rxjs';\nimport { EclSloganTickerSlideDirective } from './ecl-slogan-ticker-slide.directive';\n\n/**\n * ECL Slogan Ticker component – renders a continuously auto-scrolling horizontal\n * ticker of slogan items. Supports play/pause controls, RTL layouts, and pauses\n * when off-screen via IntersectionObserver.\n *\n * Uses Embla Carousel (via embla-carousel-angular) with the auto-scroll plugin\n * to match the ECL vanilla implementation.\n *\n * The component clones projected slides internally to ensure the track is wide\n * enough for seamless infinite scrolling (matching the vanilla ECL approach).\n */\n@Component({\n selector: 'ecl-slogan-ticker',\n templateUrl: './ecl-slogan-ticker.component.html',\n host: {\n '[class]': 'cssClasses',\n },\n imports: [\n TranslatePipe,\n ...EUI_ECL_ICON,\n EmblaCarouselDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EclSloganTickerComponent extends ECLBaseDirective implements AfterViewInit, OnDestroy {\n\n /** Aria-label for the ticker region. */\n eclAriaLabel = input<string>('Slogan ticker');\n\n /** Embla carousel options. */\n protected emblaOptions: { loop: boolean; align: 'start'; dragFree: boolean; direction: 'ltr' | 'rtl' } = {\n loop: true,\n align: 'start',\n dragFree: true,\n direction: 'ltr',\n };\n\n /** Embla plugins array (auto-scroll). */\n protected emblaPlugins: EmblaPluginType[] = [];\n\n protected emblaRef = viewChild(EmblaCarouselDirective);\n protected playButton = viewChild<ElementRef>('playButton');\n protected pauseButton = viewChild<ElementRef>('pauseButton');\n protected viewportElement = viewChild<ElementRef>('viewport');\n private trackElement = viewChild<ElementRef>('track');\n\n /** Whether auto-scroll is currently playing. */\n protected isPlaying = signal(false);\n\n /** Whether the user explicitly paused. */\n protected isPaused = signal(false);\n\n /** Whether play/pause controls should be visible. */\n protected showControls = signal(false);\n\n /**\n * Array of slide texts used to render the track.\n * Contains the original slides plus clones for seamless looping.\n * Each item has `text` and `isClone` (for aria-hidden on duplicates).\n */\n protected trackSlides = signal<{ text: string; isClone: boolean }[]>([]);\n\n /** Subscribed Embla events. */\n protected subscribeToEvents: EmblaEventType[] = ['init', 'reInit'];\n\n private slides = contentChildren(EclSloganTickerSlideDirective, { descendants: true });\n private cd = inject(ChangeDetectorRef);\n private elementRef = inject(ElementRef);\n private eclRtlService = inject(EclRtlService);\n private platformId = inject(PLATFORM_ID);\n private destroy$ = new Subject<void>();\n private emblaApi: EmblaCarouselType | undefined;\n private visibilityObserver: IntersectionObserver | null = null;\n private readonly autoplay = true;\n private readonly autoScrollSpeed = 0.9;\n private readonly CLONE_MULTIPLIER = 3;\n\n protected get cssClasses(): string {\n return [super.getCssClasses('ecl-slogan-ticker')].join(' ').trim();\n }\n\n constructor() {\n super();\n\n // React to slides changes\n effect(() => {\n this.showControls.set(this.slides().length >= 1);\n });\n\n // React to RTL changes\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((isRtl) => {\n const direction = isRtl ? 'rtl' : 'ltr';\n if (this.emblaOptions.direction !== direction) {\n this.emblaOptions = { ...this.emblaOptions, direction };\n this.buildPlugins(isRtl);\n this.cd.detectChanges();\n }\n });\n }\n\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n this.buildPlugins();\n this.cd.detectChanges();\n\n setTimeout(() => {\n this.ensureEnoughContent();\n this.initEmbla();\n this.setupVisibilityObserver();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n\n if (this.visibilityObserver) {\n this.visibilityObserver.disconnect();\n this.visibilityObserver = null;\n }\n }\n\n /** Called by the emblaChange event from the directive. */\n protected onEmblaChange(eventName: string): void {\n if (!this.emblaApi) {\n this.emblaApi = this.emblaRef()?.emblaApi;\n }\n if (!this.emblaApi) {\n return;\n }\n\n if (eventName === 'init' || eventName === 'reInit') {\n if (this.autoplay && !this.isPaused()) {\n this.startAutoScroll();\n }\n }\n }\n\n /** Start the auto-scroll (play button click). */\n protected onPlayClick(): void {\n this.isPaused.set(false);\n this.startAutoScroll();\n this.pauseButton()?.nativeElement?.focus();\n }\n\n /** Pause the auto-scroll (pause button click). */\n protected onPauseClick(): void {\n this.isPaused.set(true);\n this.stopAutoScroll();\n this.playButton()?.nativeElement?.focus();\n }\n\n /** Start auto-scroll and update state. */\n private startAutoScroll(): void {\n this.isPlaying.set(true);\n const autoScroll = this.emblaApi?.plugins()?.autoScroll;\n (autoScroll as any)?.play();\n this.cd.detectChanges();\n }\n\n /** Stop auto-scroll and update state. */\n private stopAutoScroll(): void {\n this.isPlaying.set(false);\n const autoScroll = this.emblaApi?.plugins()?.autoScroll;\n (autoScroll as any)?.stop();\n this.cd.detectChanges();\n }\n\n /**\n * Clone slides until the track width exceeds 3× container width.\n * Mirrors the vanilla ECL `ensureEnoughContent()` logic.\n */\n private ensureEnoughContent(): void {\n const slides = this.slides();\n if (!slides || slides.length === 0) {\n this.trackSlides.set([]);\n return;\n }\n\n const containerWidth = this.elementRef.nativeElement.offsetWidth;\n if (containerWidth === 0) {\n return;\n }\n\n const originals = slides.map((slide) => ({\n text: slide.el.nativeElement.textContent?.trim() || '',\n isClone: false,\n }));\n\n // Render originals first to measure individual slide widths\n this.trackSlides.set(originals);\n this.cd.detectChanges();\n\n const track = this.trackElement()?.nativeElement;\n if (!track) {\n return;\n }\n\n // Measure each rendered slide's width\n const renderedSlides = track.querySelectorAll('.ecl-slogan-ticker__slide');\n const slideWidths: number[] = [];\n let totalWidth = 0;\n renderedSlides.forEach((el: Element) => {\n const width = (el as HTMLElement).offsetWidth;\n slideWidths.push(width);\n totalWidth += width;\n });\n\n if (totalWidth === 0) {\n return;\n }\n\n // Add clones in full sets until total width >= required width\n const requiredWidth = containerWidth * this.CLONE_MULTIPLIER;\n const allSlides = [...originals];\n\n while (totalWidth < requiredWidth) {\n for (let i = 0; i < originals.length; i++) {\n allSlides.push({ ...originals[i], isClone: true });\n totalWidth += slideWidths[i];\n }\n }\n\n this.trackSlides.set(allSlides);\n this.cd.detectChanges();\n }\n\n /** Build the auto-scroll plugin with current settings. */\n private buildPlugins(isRtl = this.emblaOptions.direction === 'rtl'): void {\n this.emblaPlugins = [\n AutoScroll({\n speed: this.autoScrollSpeed,\n startDelay: 0,\n stopOnInteraction: false,\n playOnInit: this.autoplay,\n direction: isRtl ? 'backward' : 'forward',\n }) as unknown as EmblaPluginType,\n ];\n }\n\n /** Initialize Embla API reference. */\n private initEmbla(): void {\n const embla = this.emblaRef();\n if (!embla) {\n return;\n }\n\n this.emblaApi = embla.emblaApi;\n\n if (!this.emblaApi) {\n return;\n }\n\n if (this.autoplay && !this.isPaused()) {\n this.startAutoScroll();\n }\n\n this.cd.detectChanges();\n }\n\n /**\n * Observe visibility to pause auto-scroll when the component is off-screen\n * and resume when it comes back into view.\n */\n private setupVisibilityObserver(): void {\n this.visibilityObserver = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n if (!this.isPlaying() && !this.isPaused()) {\n this.startAutoScroll();\n }\n } else if (this.isPlaying()) {\n this.stopAutoScroll();\n }\n },\n { threshold: 0 },\n );\n\n this.visibilityObserver.observe(this.elementRef.nativeElement);\n }\n}\n","<div\n #viewport\n class=\"ecl-slogan-ticker__viewport\"\n [attr.aria-label]=\"eclAriaLabel()\"\n emblaCarousel\n [options]=\"emblaOptions\"\n [plugins]=\"emblaPlugins\"\n [subscribeToEvents]=\"subscribeToEvents\"\n (emblaChange)=\"onEmblaChange($event)\">\n\n <ul #track class=\"ecl-slogan-ticker__track\">\n @for (slide of trackSlides(); track $index) {\n <li class=\"ecl-slogan-ticker__slide\" [attr.aria-hidden]=\"slide.isClone ? true : null\">{{ slide.text }}</li>\n }\n </ul>\n</div>\n\n@if (showControls()) {\n<div class=\"ecl-slogan-ticker__controls\">\n <button\n #playButton\n class=\"ecl-button ecl-button--tertiary ecl-slogan-ticker__button ecl-slogan-ticker__play ecl-button--icon-only\"\n type=\"button\"\n [style.display]=\"isPlaying() ? 'none' : 'flex'\"\n (click)=\"onPlayClick()\">\n <span class=\"ecl-button__container\">\n <span class=\"ecl-button__label\">\n {{ 'ecl.slogan-ticker.PLAY' | translate }}\n </span>\n <ecl-icon icon=\"play\" size=\"l\" iconSet=\"phosphor-fill\" class=\"ecl-button__icon\"></ecl-icon>\n </span>\n </button>\n\n <button\n #pauseButton\n class=\"ecl-button ecl-button--tertiary ecl-slogan-ticker__button ecl-slogan-ticker__pause ecl-button--icon-only\"\n type=\"button\"\n [style.display]=\"isPlaying() ? 'flex' : 'none'\"\n (click)=\"onPauseClick()\">\n <span class=\"ecl-button__container\">\n <span class=\"ecl-button__label\">\n {{ 'ecl.slogan-ticker.PAUSE' | translate }}\n </span>\n <ecl-icon icon=\"pause\" iconSet=\"phosphor-fill\" size=\"l\" class=\"ecl-button__icon\"></ecl-icon>\n </span>\n </button>\n</div>\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Directive applied to the `<ul>` element wrapping slogan ticker slides.\n * Provides semantic structure for the ticker content.\n *\n * Usage:\n * ```html\n * <ecl-slogan-ticker>\n * <ul eclSloganTickerList>\n * <li eclSloganTickerSlide>Slide 1</li>\n * <li eclSloganTickerSlide>Slide 2</li>\n * </ul>\n * </ecl-slogan-ticker>\n * ```\n */\n@Directive({\n selector: 'ul[eclSloganTickerList]',\n host: {\n 'style': 'display: none',\n },\n})\nexport class EclSloganTickerListDirective {}\n","import { EclSloganTickerComponent } from './ecl-slogan-ticker.component';\nimport { EclSloganTickerListDirective } from './ecl-slogan-ticker-list.directive';\nimport { EclSloganTickerSlideDirective } from './ecl-slogan-ticker-slide.directive';\n\nexport * from './ecl-slogan-ticker.component';\nexport * from './ecl-slogan-ticker-list.directive';\nexport * from './ecl-slogan-ticker-slide.directive';\n\nexport const EUI_ECL_SLOGAN_TICKER = [\n EclSloganTickerComponent,\n EclSloganTickerListDirective,\n EclSloganTickerSlideDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-slogan-ticker.mjs","sources":["../../components/ecl-slogan-ticker/ecl-slogan-ticker-slide.directive.ts","../../components/ecl-slogan-ticker/ecl-slogan-ticker.component.ts","../../components/ecl-slogan-ticker/ecl-slogan-ticker.component.html","../../components/ecl-slogan-ticker/ecl-slogan-ticker-list.directive.ts","../../components/ecl-slogan-ticker/index.ts","../../components/ecl-slogan-ticker/eui-ecl-components-ecl-slogan-ticker.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n inject,\n} from '@angular/core';\n\n/**\n * Directive marking a single slide item within the ECL Slogan Ticker.\n * Applied to `<li>` elements to identify them as ticker slides.\n *\n * The parent `ecl-slogan-ticker` component uses ContentChildren to query these\n * directives and clones them in the DOM to ensure seamless looping.\n *\n * Usage:\n * ```html\n * <li eclSloganTickerSlide>GENERATE YOUR OWN ENERGY</li>\n * ```\n */\n@Directive({\n selector: 'li[eclSloganTickerSlide]',\n host: {\n class: 'ecl-slogan-ticker__slide',\n },\n})\nexport class EclSloganTickerSlideDirective {\n\n /** Element reference for text extraction and width measurement. */\n el = inject(ElementRef);\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n contentChildren,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n PLATFORM_ID,\n signal,\n viewChild,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { ECLBaseDirective, EclRtlService } from '@eui/ecl/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { EmblaCarouselDirective } from 'embla-carousel-angular';\nimport { EmblaCarouselType, EmblaEventType, EmblaPluginType } from 'embla-carousel';\nimport AutoScroll from 'embla-carousel-auto-scroll';\nimport { Subject, takeUntil } from 'rxjs';\nimport { EclSloganTickerSlideDirective } from './ecl-slogan-ticker-slide.directive';\n\n/**\n * ECL Slogan Ticker component – renders a continuously auto-scrolling horizontal\n * ticker of slogan items. Supports play/pause controls, RTL layouts, and pauses\n * when off-screen via IntersectionObserver.\n *\n * Uses Embla Carousel (via embla-carousel-angular) with the auto-scroll plugin\n * to match the ECL vanilla implementation.\n *\n * The component clones projected slides internally to ensure the track is wide\n * enough for seamless infinite scrolling (matching the vanilla ECL approach).\n */\n@Component({\n selector: 'ecl-slogan-ticker',\n templateUrl: './ecl-slogan-ticker.component.html',\n host: {\n '[class]': 'cssClasses',\n },\n imports: [\n TranslatePipe,\n ...EUI_ECL_ICON,\n EmblaCarouselDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EclSloganTickerComponent extends ECLBaseDirective implements AfterViewInit, OnDestroy {\n\n /** Aria-label for the ticker region. */\n eclAriaLabel = input<string>('Slogan ticker');\n\n /** Embla carousel options. */\n protected emblaOptions: { loop: boolean; align: 'start'; dragFree: boolean; direction: 'ltr' | 'rtl' } = {\n loop: true,\n align: 'start',\n dragFree: true,\n direction: 'ltr',\n };\n\n /** Embla plugins array (auto-scroll). */\n protected emblaPlugins: EmblaPluginType[] = [];\n\n protected emblaRef = viewChild(EmblaCarouselDirective);\n protected playButton = viewChild<ElementRef>('playButton');\n protected pauseButton = viewChild<ElementRef>('pauseButton');\n protected viewportElement = viewChild<ElementRef>('viewport');\n private trackElement = viewChild<ElementRef>('track');\n\n /** Whether auto-scroll is currently playing. */\n protected isPlaying = signal(false);\n\n /** Whether the user explicitly paused. */\n protected isPaused = signal(false);\n\n /** Whether play/pause controls should be visible. */\n protected showControls = signal(false);\n\n /**\n * Array of slide texts used to render the track.\n * Contains the original slides plus clones for seamless looping.\n * Each item has `text` and `isClone` (for aria-hidden on duplicates).\n */\n protected trackSlides = signal<{ text: string; isClone: boolean }[]>([]);\n\n /** Subscribed Embla events. */\n protected subscribeToEvents: EmblaEventType[] = ['init', 'reInit'];\n\n private slides = contentChildren(EclSloganTickerSlideDirective, { descendants: true });\n private cd = inject(ChangeDetectorRef);\n private elementRef = inject(ElementRef);\n private eclRtlService = inject(EclRtlService);\n private platformId = inject(PLATFORM_ID);\n private destroy$ = new Subject<void>();\n private emblaApi: EmblaCarouselType | undefined;\n private visibilityObserver: IntersectionObserver | null = null;\n private readonly autoplay = true;\n private readonly autoScrollSpeed = 0.9;\n private readonly CLONE_MULTIPLIER = 3;\n\n protected get cssClasses(): string {\n return [super.getCssClasses('ecl-slogan-ticker')].join(' ').trim();\n }\n\n constructor() {\n super();\n\n // React to slides changes\n effect(() => {\n this.showControls.set(this.slides().length >= 1);\n });\n\n // React to RTL changes\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((isRtl) => {\n const direction = isRtl ? 'rtl' : 'ltr';\n if (this.emblaOptions.direction !== direction) {\n this.emblaOptions = { ...this.emblaOptions, direction };\n this.buildPlugins(isRtl);\n this.cd.detectChanges();\n }\n });\n }\n\n ngAfterViewInit(): void {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n this.buildPlugins();\n this.cd.detectChanges();\n\n setTimeout(() => {\n this.ensureEnoughContent();\n this.initEmbla();\n this.setupVisibilityObserver();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n\n if (this.visibilityObserver) {\n this.visibilityObserver.disconnect();\n this.visibilityObserver = null;\n }\n }\n\n /** Called by the emblaChange event from the directive. */\n protected onEmblaChange(eventName: string): void {\n if (!this.emblaApi) {\n this.emblaApi = this.emblaRef()?.emblaApi;\n }\n if (!this.emblaApi) {\n return;\n }\n\n if (eventName === 'init' || eventName === 'reInit') {\n if (this.autoplay && !this.isPaused()) {\n this.startAutoScroll();\n }\n }\n }\n\n /** Start the auto-scroll (play button click). */\n protected onPlayClick(): void {\n this.isPaused.set(false);\n this.startAutoScroll();\n this.pauseButton()?.nativeElement?.focus();\n }\n\n /** Pause the auto-scroll (pause button click). */\n protected onPauseClick(): void {\n this.isPaused.set(true);\n this.stopAutoScroll();\n this.playButton()?.nativeElement?.focus();\n }\n\n /** Start auto-scroll and update state. */\n private startAutoScroll(): void {\n this.isPlaying.set(true);\n const autoScroll = this.emblaApi?.plugins()?.autoScroll;\n (autoScroll as any)?.play();\n this.cd.detectChanges();\n }\n\n /** Stop auto-scroll and update state. */\n private stopAutoScroll(): void {\n this.isPlaying.set(false);\n const autoScroll = this.emblaApi?.plugins()?.autoScroll;\n (autoScroll as any)?.stop();\n this.cd.detectChanges();\n }\n\n /**\n * Clone slides until the track width exceeds 3× container width.\n * Mirrors the vanilla ECL `ensureEnoughContent()` logic.\n */\n private ensureEnoughContent(): void {\n const slides = this.slides();\n if (!slides || slides.length === 0) {\n this.trackSlides.set([]);\n return;\n }\n\n const containerWidth = this.elementRef.nativeElement.offsetWidth;\n if (containerWidth === 0) {\n return;\n }\n\n const originals = slides.map((slide) => ({\n text: slide.el.nativeElement.textContent?.trim() || '',\n isClone: false,\n }));\n\n // Render originals first to measure individual slide widths\n this.trackSlides.set(originals);\n this.cd.detectChanges();\n\n const track = this.trackElement()?.nativeElement;\n if (!track) {\n return;\n }\n\n // Measure each rendered slide's width\n const renderedSlides = track.querySelectorAll('.ecl-slogan-ticker__slide');\n const slideWidths: number[] = [];\n let totalWidth = 0;\n renderedSlides.forEach((el: Element) => {\n const width = (el as HTMLElement).offsetWidth;\n slideWidths.push(width);\n totalWidth += width;\n });\n\n if (totalWidth === 0) {\n return;\n }\n\n // Add clones in full sets until total width >= required width\n const requiredWidth = containerWidth * this.CLONE_MULTIPLIER;\n const allSlides = [...originals];\n\n while (totalWidth < requiredWidth) {\n for (let i = 0; i < originals.length; i++) {\n allSlides.push({ ...originals[i], isClone: true });\n totalWidth += slideWidths[i];\n }\n }\n\n this.trackSlides.set(allSlides);\n this.cd.detectChanges();\n }\n\n /** Build the auto-scroll plugin with current settings. */\n private buildPlugins(isRtl = this.emblaOptions.direction === 'rtl'): void {\n this.emblaPlugins = [\n AutoScroll({\n speed: this.autoScrollSpeed,\n startDelay: 0,\n stopOnInteraction: false,\n playOnInit: this.autoplay,\n direction: isRtl ? 'backward' : 'forward',\n }) as unknown as EmblaPluginType,\n ];\n }\n\n /** Initialize Embla API reference. */\n private initEmbla(): void {\n const embla = this.emblaRef();\n if (!embla) {\n return;\n }\n\n this.emblaApi = embla.emblaApi;\n\n if (!this.emblaApi) {\n return;\n }\n\n if (this.autoplay && !this.isPaused()) {\n this.startAutoScroll();\n }\n\n this.cd.detectChanges();\n }\n\n /**\n * Observe visibility to pause auto-scroll when the component is off-screen\n * and resume when it comes back into view.\n */\n private setupVisibilityObserver(): void {\n this.visibilityObserver = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n if (!this.isPlaying() && !this.isPaused()) {\n this.startAutoScroll();\n }\n } else if (this.isPlaying()) {\n this.stopAutoScroll();\n }\n },\n { threshold: 0 },\n );\n\n this.visibilityObserver.observe(this.elementRef.nativeElement);\n }\n}\n","<div\n #viewport\n class=\"ecl-slogan-ticker__viewport\"\n [attr.aria-label]=\"eclAriaLabel()\"\n emblaCarousel\n [options]=\"emblaOptions\"\n [plugins]=\"emblaPlugins\"\n [subscribeToEvents]=\"subscribeToEvents\"\n (emblaChange)=\"onEmblaChange($event)\">\n\n <ul #track class=\"ecl-slogan-ticker__track\">\n @for (slide of trackSlides(); track $index) {\n <li class=\"ecl-slogan-ticker__slide\" [attr.aria-hidden]=\"slide.isClone ? true : null\">{{ slide.text }}</li>\n }\n </ul>\n</div>\n\n@if (showControls()) {\n<div class=\"ecl-slogan-ticker__controls\">\n <button\n #playButton\n class=\"ecl-button ecl-button--tertiary ecl-slogan-ticker__button ecl-slogan-ticker__play ecl-button--icon-only\"\n type=\"button\"\n [style.display]=\"isPlaying() ? 'none' : 'flex'\"\n (click)=\"onPlayClick()\">\n <span class=\"ecl-button__container\">\n <span class=\"ecl-button__label\">\n {{ 'ecl.slogan-ticker.PLAY' | translate }}\n </span>\n <ecl-icon icon=\"play\" size=\"l\" iconSet=\"phosphor-fill\" class=\"ecl-button__icon\"></ecl-icon>\n </span>\n </button>\n\n <button\n #pauseButton\n class=\"ecl-button ecl-button--tertiary ecl-slogan-ticker__button ecl-slogan-ticker__pause ecl-button--icon-only\"\n type=\"button\"\n [style.display]=\"isPlaying() ? 'flex' : 'none'\"\n (click)=\"onPauseClick()\">\n <span class=\"ecl-button__container\">\n <span class=\"ecl-button__label\">\n {{ 'ecl.slogan-ticker.PAUSE' | translate }}\n </span>\n <ecl-icon icon=\"pause\" iconSet=\"phosphor-fill\" size=\"l\" class=\"ecl-button__icon\"></ecl-icon>\n </span>\n </button>\n</div>\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Directive applied to the `<ul>` element wrapping slogan ticker slides.\n * Provides semantic structure for the ticker content.\n *\n * Usage:\n * ```html\n * <ecl-slogan-ticker>\n * <ul eclSloganTickerList>\n * <li eclSloganTickerSlide>Slide 1</li>\n * <li eclSloganTickerSlide>Slide 2</li>\n * </ul>\n * </ecl-slogan-ticker>\n * ```\n */\n@Directive({\n selector: 'ul[eclSloganTickerList]',\n host: {\n style: 'display: none',\n },\n})\nexport class EclSloganTickerListDirective {}\n","import { EclSloganTickerComponent } from './ecl-slogan-ticker.component';\nimport { EclSloganTickerListDirective } from './ecl-slogan-ticker-list.directive';\nimport { EclSloganTickerSlideDirective } from './ecl-slogan-ticker-slide.directive';\n\nexport * from './ecl-slogan-ticker.component';\nexport * from './ecl-slogan-ticker-list.directive';\nexport * from './ecl-slogan-ticker-slide.directive';\n\nexport const EUI_ECL_SLOGAN_TICKER = [\n EclSloganTickerComponent,\n EclSloganTickerListDirective,\n EclSloganTickerSlideDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, booleanAttribute, HostBinding, Component, output,
|
|
2
|
+
import { input, booleanAttribute, HostBinding, Component, output, contentChild, Directive } from '@angular/core';
|
|
3
3
|
import { ECLBaseDirective, EclBaseEvent } from '@eui/ecl/core';
|
|
4
4
|
import { NgTemplateOutlet } from '@angular/common';
|
|
5
5
|
import * as i1 from '@eui/ecl/components/ecl-icon';
|
|
@@ -84,26 +84,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
84
84
|
}], itemClick: [{ type: i0.Output, args: ["itemClick"] }] } });
|
|
85
85
|
|
|
86
86
|
class EclSocialMediaFollowLinkDirective extends ECLBaseDirective {
|
|
87
|
+
constructor() {
|
|
88
|
+
super(...arguments);
|
|
89
|
+
this.eclIcon = contentChild(EclIconComponent, /* @ts-ignore */
|
|
90
|
+
...(ngDevMode ? [{ debugName: "eclIcon" }] : /* istanbul ignore next */ []));
|
|
91
|
+
}
|
|
87
92
|
get cssClasses() {
|
|
88
93
|
return [super.getCssClasses('ecl-social-media-follow__link')].join(' ').trim();
|
|
89
94
|
}
|
|
90
95
|
ngAfterContentInit() {
|
|
91
|
-
if (this.eclIcon) {
|
|
92
|
-
setTimeout(() => (this.eclIcon.baseDirective.class = [this.eclIcon.baseDirective.class, 'ecl-social-media-follow__icon'].join(' ')));
|
|
96
|
+
if (this.eclIcon()) {
|
|
97
|
+
setTimeout(() => (this.eclIcon().baseDirective.class = [this.eclIcon().baseDirective.class, 'ecl-social-media-follow__icon'].join(' ')));
|
|
93
98
|
}
|
|
94
99
|
}
|
|
95
100
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclSocialMediaFollowLinkDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
96
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
101
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "22.0.5", type: EclSocialMediaFollowLinkDirective, isStandalone: true, selector: "[eclSocialMediaFollowLink]", host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "eclIcon", first: true, predicate: EclIconComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 }); }
|
|
97
102
|
}
|
|
98
103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclSocialMediaFollowLinkDirective, decorators: [{
|
|
99
104
|
type: Directive,
|
|
100
105
|
args: [{
|
|
101
106
|
selector: '[eclSocialMediaFollowLink]',
|
|
102
107
|
}]
|
|
103
|
-
}], propDecorators: { eclIcon: [{
|
|
104
|
-
type: ContentChild,
|
|
105
|
-
args: [EclIconComponent]
|
|
106
|
-
}], cssClasses: [{
|
|
108
|
+
}], propDecorators: { eclIcon: [{ type: i0.ContentChild, args: [i0.forwardRef(() => EclIconComponent), { isSignal: true }] }], cssClasses: [{
|
|
107
109
|
type: HostBinding,
|
|
108
110
|
args: ['class']
|
|
109
111
|
}] } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-social-media-follow.mjs","sources":["../../components/ecl-social-media-follow/ecl-social-media-follow.component.ts","../../components/ecl-social-media-follow/ecl-social-media-follow.component.html","../../components/ecl-social-media-follow/ecl-social-media-follow-item.component.ts","../../components/ecl-social-media-follow/ecl-social-media-follow-item.component.html","../../components/ecl-social-media-follow/ecl-social-media-follow-link.directive.ts","../../components/ecl-social-media-follow/index.ts","../../components/ecl-social-media-follow/eui-ecl-components-ecl-social-media-follow.ts"],"sourcesContent":["import { Component, HostBinding, booleanAttribute, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n@Component({\n selector: 'ecl-social-media-follow',\n templateUrl: './ecl-social-media-follow.component.html',\n})\nexport class EclSocialMediaFollowComponent extends ECLBaseDirective {\n readonly description = input<string>(undefined);\n readonly isVertical = input(false, { transform: booleanAttribute });\n readonly horizontalAlignment = input<'right' | 'left' | string>('left');\n\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-social-media-follow'),\n this.isVertical() ? 'ecl-social-media-follow--vertical' : '',\n `ecl-social-media-follow--${this.horizontalAlignment()}`,\n ]\n .join(' ')\n .trim();\n }\n}\n","@if (description()) {\n <p class=\"ecl-social-media-follow__description\">{{ description() }}</p>\n}\n<ul class=\"ecl-social-media-follow__list\">\n <ng-content></ng-content>\n</ul>\n","import { booleanAttribute, Component, HostBinding, input, output } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EclBaseEvent } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { RouterLink, RouterLinkWithHref } from '@angular/router';\n\nexport class EclSocialMediaFollowItemClickEvent extends EclBaseEvent {}\n\n@Component({\n selector: 'ecl-social-media-follow-item',\n templateUrl: './ecl-social-media-follow-item.component.html',\n imports: [...EUI_ECL_ICON, ...EUI_ECL_LINK, NgTemplateOutlet, RouterLink, RouterLinkWithHref],\n})\nexport class EclSocialMediaFollowItemComponent extends ECLBaseDirective {\n readonly isInverted = input<false, unknown>(undefined, { transform: (booleanAttribute) as any });\n @HostBinding('attr.role') role = 'listitem';\n icon = input<string>();\n iconSet = input<string>('social-media');\n readonly href = input('');\n readonly routerLink = input('');\n readonly target = input<string>(undefined);\n readonly size = input('m');\n readonly extraAttributes = input<{\n name: string;\n value?: string | null;\n }[]>(undefined);\n\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-social-media-follow__item')].join(' ').trim();\n }\n\n readonly itemClick = output<EclSocialMediaFollowItemClickEvent>();\n\n onItemClick(evt): void {\n this.itemClick.emit(new EclSocialMediaFollowItemClickEvent());\n if (!this.href() && !this.routerLink()) {\n evt.preventDefault();\n }\n }\n}\n","@if(href()) {\n<a eclLink (click)=\"onItemClick($event)\" variant=\"standalone\" [href]=\"href()\" [attr.target]=\"target()\"\n class=\"ecl-social-media-follow__link\" [isInverted]=\"isInverted()\" [extraAttributes]=\"extraAttributes()\">\n @if(icon()) {\n <ecl-icon [iconSet]=\"iconSet()\" icon=\"{{ icon() }}\" [size]=\"size()\" class=\"ecl-social-media-follow__icon\"> </ecl-icon>\n }\n <span eclLinkLabel>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </span>\n</a>\n}\n\n@if(!href() && routerLink()) {\n<a eclLink (click)=\"onItemClick($event)\" variant=\"standalone\" [routerLink]=\"routerLink()\" [attr.target]=\"target()\"\n class=\"ecl-social-media-follow__link\" [isInverted]=\"isInverted()\" [extraAttributes]=\"extraAttributes()\">\n @if(icon()) {\n <ecl-icon [iconSet]=\"iconSet()\" icon=\"{{ icon() }}\" [size]=\"size()\" class=\"ecl-social-media-follow__icon\"> </ecl-icon>\n }\n <span eclLinkLabel>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </span>\n</a>\n}\n\n@if(!href() && !routerLink()) {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { Directive, HostBinding, ContentChild, AfterContentInit } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclIconComponent } from '@eui/ecl/components/ecl-icon';\n\n@Directive({\n selector: '[eclSocialMediaFollowLink]',\n})\nexport class EclSocialMediaFollowLinkDirective extends ECLBaseDirective implements AfterContentInit {\n @ContentChild(EclIconComponent) eclIcon: EclIconComponent;\n\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-social-media-follow__link')].join(' ').trim();\n }\n\n ngAfterContentInit(): void {\n if (this.eclIcon) {\n setTimeout(() => (this.eclIcon.baseDirective.class = [this.eclIcon.baseDirective.class, 'ecl-social-media-follow__icon'].join(' ')));\n }\n }\n}\n","import { EclSocialMediaFollowComponent } from './ecl-social-media-follow.component';\nimport { EclSocialMediaFollowItemComponent } from './ecl-social-media-follow-item.component';\nimport { EclSocialMediaFollowLinkDirective } from './ecl-social-media-follow-link.directive';\n\nexport * from './ecl-social-media-follow.component';\nexport * from './ecl-social-media-follow-item.component';\nexport * from './ecl-social-media-follow-link.directive';\n\nexport const EUI_ECL_SOCIAL_MEDIA_FOLLOW = [\n EclSocialMediaFollowComponent,\n EclSocialMediaFollowItemComponent,\n EclSocialMediaFollowLinkDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-social-media-follow.mjs","sources":["../../components/ecl-social-media-follow/ecl-social-media-follow.component.ts","../../components/ecl-social-media-follow/ecl-social-media-follow.component.html","../../components/ecl-social-media-follow/ecl-social-media-follow-item.component.ts","../../components/ecl-social-media-follow/ecl-social-media-follow-item.component.html","../../components/ecl-social-media-follow/ecl-social-media-follow-link.directive.ts","../../components/ecl-social-media-follow/index.ts","../../components/ecl-social-media-follow/eui-ecl-components-ecl-social-media-follow.ts"],"sourcesContent":["import { Component, HostBinding, booleanAttribute, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n@Component({\n selector: 'ecl-social-media-follow',\n templateUrl: './ecl-social-media-follow.component.html',\n})\nexport class EclSocialMediaFollowComponent extends ECLBaseDirective {\n readonly description = input<string>(undefined);\n readonly isVertical = input(false, { transform: booleanAttribute });\n readonly horizontalAlignment = input<'right' | 'left' | string>('left');\n\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-social-media-follow'),\n this.isVertical() ? 'ecl-social-media-follow--vertical' : '',\n `ecl-social-media-follow--${this.horizontalAlignment()}`,\n ]\n .join(' ')\n .trim();\n }\n}\n","@if (description()) {\n <p class=\"ecl-social-media-follow__description\">{{ description() }}</p>\n}\n<ul class=\"ecl-social-media-follow__list\">\n <ng-content></ng-content>\n</ul>\n","import { booleanAttribute, Component, HostBinding, input, output } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EclBaseEvent } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { RouterLink, RouterLinkWithHref } from '@angular/router';\n\nexport class EclSocialMediaFollowItemClickEvent extends EclBaseEvent {}\n\n@Component({\n selector: 'ecl-social-media-follow-item',\n templateUrl: './ecl-social-media-follow-item.component.html',\n imports: [...EUI_ECL_ICON, ...EUI_ECL_LINK, NgTemplateOutlet, RouterLink, RouterLinkWithHref],\n})\nexport class EclSocialMediaFollowItemComponent extends ECLBaseDirective {\n readonly isInverted = input<false, unknown>(undefined, { transform: (booleanAttribute) as any });\n @HostBinding('attr.role') role = 'listitem';\n icon = input<string>();\n iconSet = input<string>('social-media');\n readonly href = input('');\n readonly routerLink = input('');\n readonly target = input<string>(undefined);\n readonly size = input('m');\n readonly extraAttributes = input<{\n name: string;\n value?: string | null;\n }[]>(undefined);\n\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-social-media-follow__item')].join(' ').trim();\n }\n\n readonly itemClick = output<EclSocialMediaFollowItemClickEvent>();\n\n onItemClick(evt): void {\n this.itemClick.emit(new EclSocialMediaFollowItemClickEvent());\n if (!this.href() && !this.routerLink()) {\n evt.preventDefault();\n }\n }\n}\n","@if(href()) {\n<a eclLink (click)=\"onItemClick($event)\" variant=\"standalone\" [href]=\"href()\" [attr.target]=\"target()\"\n class=\"ecl-social-media-follow__link\" [isInverted]=\"isInverted()\" [extraAttributes]=\"extraAttributes()\">\n @if(icon()) {\n <ecl-icon [iconSet]=\"iconSet()\" icon=\"{{ icon() }}\" [size]=\"size()\" class=\"ecl-social-media-follow__icon\"> </ecl-icon>\n }\n <span eclLinkLabel>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </span>\n</a>\n}\n\n@if(!href() && routerLink()) {\n<a eclLink (click)=\"onItemClick($event)\" variant=\"standalone\" [routerLink]=\"routerLink()\" [attr.target]=\"target()\"\n class=\"ecl-social-media-follow__link\" [isInverted]=\"isInverted()\" [extraAttributes]=\"extraAttributes()\">\n @if(icon()) {\n <ecl-icon [iconSet]=\"iconSet()\" icon=\"{{ icon() }}\" [size]=\"size()\" class=\"ecl-social-media-follow__icon\"> </ecl-icon>\n }\n <span eclLinkLabel>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </span>\n</a>\n}\n\n@if(!href() && !routerLink()) {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { Directive, HostBinding, AfterContentInit, contentChild } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclIconComponent } from '@eui/ecl/components/ecl-icon';\n\n@Directive({\n selector: '[eclSocialMediaFollowLink]',\n})\nexport class EclSocialMediaFollowLinkDirective extends ECLBaseDirective implements AfterContentInit {\n readonly eclIcon = contentChild(EclIconComponent);\n\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-social-media-follow__link')].join(' ').trim();\n }\n\n ngAfterContentInit(): void {\n if (this.eclIcon()) {\n setTimeout(() => (this.eclIcon().baseDirective.class = [this.eclIcon().baseDirective.class, 'ecl-social-media-follow__icon'].join(' ')));\n }\n }\n}\n","import { EclSocialMediaFollowComponent } from './ecl-social-media-follow.component';\nimport { EclSocialMediaFollowItemComponent } from './ecl-social-media-follow-item.component';\nimport { EclSocialMediaFollowLinkDirective } from './ecl-social-media-follow-link.directive';\n\nexport * from './ecl-social-media-follow.component';\nexport * from './ecl-social-media-follow-item.component';\nexport * from './ecl-social-media-follow-link.directive';\n\nexport const EUI_ECL_SOCIAL_MEDIA_FOLLOW = [\n EclSocialMediaFollowComponent,\n EclSocialMediaFollowItemComponent,\n EclSocialMediaFollowLinkDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, HostBinding, Component, input, booleanAttribute, EventEmitter,
|
|
2
|
+
import { inject, HostBinding, Component, input, booleanAttribute, EventEmitter, contentChildren, forwardRef, IterableDiffers, Output, Input, Directive, ElementRef, ViewContainerRef, Renderer2, HostListener, ChangeDetectorRef } from '@angular/core';
|
|
3
3
|
import { Subject } from 'rxjs';
|
|
4
4
|
import { takeUntil } from 'rxjs/operators';
|
|
5
5
|
import { ECLBaseDirective, EclThemeService, EclBaseEvent } from '@eui/ecl/core';
|
|
@@ -102,6 +102,10 @@ class EclTableDirective extends ECLBaseDirective {
|
|
|
102
102
|
* Emits an event when a column sort is triggered.
|
|
103
103
|
*/
|
|
104
104
|
this.sort = new EventEmitter();
|
|
105
|
+
/**
|
|
106
|
+
* List of header directives detected in the content.
|
|
107
|
+
*/
|
|
108
|
+
this.eclTableHeaders = contentChildren(forwardRef(() => EclTableHeaderDirective), { ...(ngDevMode ? { debugName: "eclTableHeaders" } : /* istanbul ignore next */ {}), descendants: true });
|
|
105
109
|
this.destroy$ = new Subject();
|
|
106
110
|
this.differs = inject(IterableDiffers);
|
|
107
111
|
this.differ = this.differs.find([]).create();
|
|
@@ -126,7 +130,7 @@ class EclTableDirective extends ECLBaseDirective {
|
|
|
126
130
|
* Custom change detection for dynamically added header directives.
|
|
127
131
|
*/
|
|
128
132
|
ngDoCheck() {
|
|
129
|
-
const diff = this.differ.diff(this.eclTableHeaders);
|
|
133
|
+
const diff = this.differ.diff(this.eclTableHeaders());
|
|
130
134
|
if (diff) {
|
|
131
135
|
diff.forEachAddedItem((change) => {
|
|
132
136
|
change.item.sort.pipe(takeUntil(this.destroy$)).subscribe((evt) => {
|
|
@@ -146,12 +150,12 @@ class EclTableDirective extends ECLBaseDirective {
|
|
|
146
150
|
* Sets the table to "simple" variant if no header directives are found.
|
|
147
151
|
*/
|
|
148
152
|
convertToSimpleVariant() {
|
|
149
|
-
if (this.eclTableHeaders.length === 0) {
|
|
153
|
+
if (this.eclTableHeaders().length === 0) {
|
|
150
154
|
this.isSimple = true;
|
|
151
155
|
}
|
|
152
156
|
}
|
|
153
157
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclTableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
154
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.
|
|
158
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "22.0.5", type: EclTableDirective, isStandalone: true, selector: "[eclTable]", inputs: { isZebra: { classPropertyName: "isZebra", publicName: "isZebra", isSignal: true, isRequired: false, transformFunction: null }, isSimple: { classPropertyName: "isSimple", publicName: "isSimple", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { sort: "sort" }, host: { properties: { "attr.id": "this.id", "class": "this.cssClasses" } }, queries: [{ propertyName: "eclTableHeaders", predicate: i0.forwardRef(() => EclTableHeaderDirective), descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 }); }
|
|
155
159
|
}
|
|
156
160
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclTableDirective, decorators: [{
|
|
157
161
|
type: Directive,
|
|
@@ -171,10 +175,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
171
175
|
args: ['class']
|
|
172
176
|
}], sort: [{
|
|
173
177
|
type: Output
|
|
174
|
-
}], eclTableHeaders: [{
|
|
175
|
-
type: ContentChildren,
|
|
176
|
-
args: [forwardRef(() => EclTableHeaderDirective), { descendants: true }]
|
|
177
|
-
}] } });
|
|
178
|
+
}], eclTableHeaders: [{ type: i0.ContentChildren, args: [forwardRef(() => EclTableHeaderDirective), { ...{ descendants: true }, isSignal: true }] }] } });
|
|
178
179
|
/**
|
|
179
180
|
* Directive applied to `<thead>` elements inside a table.
|
|
180
181
|
* Detects header changes and manages ARIA attributes.
|
|
@@ -188,6 +189,10 @@ class EclTableHeadDirective extends ECLBaseDirective {
|
|
|
188
189
|
}
|
|
189
190
|
constructor() {
|
|
190
191
|
super();
|
|
192
|
+
/**
|
|
193
|
+
* List of header directives under this head element.
|
|
194
|
+
*/
|
|
195
|
+
this.eclTableHeaders = contentChildren(forwardRef(() => EclTableHeaderDirective), { ...(ngDevMode ? { debugName: "eclTableHeaders" } : /* istanbul ignore next */ {}), descendants: true });
|
|
191
196
|
this.differs = inject(IterableDiffers);
|
|
192
197
|
this.destroy$ = new Subject();
|
|
193
198
|
this.differ = this.differs.find([]).create();
|
|
@@ -196,11 +201,11 @@ class EclTableHeadDirective extends ECLBaseDirective {
|
|
|
196
201
|
* Detects dynamic addition of header directives and resets ARIA sorting attributes.
|
|
197
202
|
*/
|
|
198
203
|
ngDoCheck() {
|
|
199
|
-
const diff = this.differ.diff(this.eclTableHeaders);
|
|
204
|
+
const diff = this.differ.diff(this.eclTableHeaders());
|
|
200
205
|
if (diff) {
|
|
201
206
|
diff.forEachAddedItem((change) => {
|
|
202
207
|
change.item.sort.pipe(takeUntil(this.destroy$)).subscribe((evt) => {
|
|
203
|
-
this.eclTableHeaders.forEach((th) => {
|
|
208
|
+
this.eclTableHeaders().forEach((th) => {
|
|
204
209
|
th.removeAriaSort();
|
|
205
210
|
});
|
|
206
211
|
});
|
|
@@ -215,7 +220,7 @@ class EclTableHeadDirective extends ECLBaseDirective {
|
|
|
215
220
|
this.destroy$.unsubscribe();
|
|
216
221
|
}
|
|
217
222
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclTableHeadDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
218
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
223
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "22.0.5", type: EclTableHeadDirective, isStandalone: true, selector: "[eclTableHead]", host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "eclTableHeaders", predicate: i0.forwardRef(() => EclTableHeaderDirective), descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 }); }
|
|
219
224
|
}
|
|
220
225
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclTableHeadDirective, decorators: [{
|
|
221
226
|
type: Directive,
|
|
@@ -225,10 +230,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
225
230
|
}], ctorParameters: () => [], propDecorators: { cssClasses: [{
|
|
226
231
|
type: HostBinding,
|
|
227
232
|
args: ['class']
|
|
228
|
-
}], eclTableHeaders: [{
|
|
229
|
-
type: ContentChildren,
|
|
230
|
-
args: [forwardRef(() => EclTableHeaderDirective), { descendants: true }]
|
|
231
|
-
}] } });
|
|
233
|
+
}], eclTableHeaders: [{ type: i0.ContentChildren, args: [forwardRef(() => EclTableHeaderDirective), { ...{ descendants: true }, isSignal: true }] }] } });
|
|
232
234
|
/**
|
|
233
235
|
* Directive representing a single table header cell in an ECL table.
|
|
234
236
|
* Supports sorting functionality and accessibility attributes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-table.mjs","sources":["../../components/ecl-table/ecl-table-sort-button.component.ts","../../components/ecl-table/ecl-table-sort-button.component.html","../../components/ecl-table/events/ecl-sort-table.event.ts","../../components/ecl-table/ecl-table.directive.ts","../../components/ecl-table/index.ts","../../components/ecl-table/eui-ecl-components-ecl-table.ts"],"sourcesContent":["import { Component, HostBinding, inject } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { EclThemeService } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * Sort button component used inside sortable table headers.\n *\n * Applies ECL styling for table sort arrows and provides\n * accessibility label for screen readers.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[eclTableSortButton]',\n templateUrl: './ecl-table-sort-button.component.html',\n imports: [...EUI_ECL_ICON, AsyncPipe],\n})\nexport class EclTableSortButtonComponent extends ECLBaseDirective {\n eclThemeService = inject(EclThemeService);\n\n /**\n * Accessibility label describing the button's function.\n * This value is bound to the `aria-label` attribute.\n */\n @HostBinding('attr.aria-label') ariaLabel = 'Sort table';\n\n /**\n * CSS classes applied to the host element.\n * Includes ECL base table sort arrow styling.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table__arrow')].join(' ').trim();\n }\n}\n","<ecl-icon icon=\"solid-arrow\" class=\"ecl-table__icon ecl-table__icon-up\" [size]=\"(eclThemeService.isEC$ | async) ? 'xs' : 'm'\"> </ecl-icon>\n<ecl-icon icon=\"solid-arrow\" class=\"ecl-table__icon ecl-table__icon-down\" [size]=\"(eclThemeService.isEC$ | async) ? 'xs' : 'm'\"> </ecl-icon>\n","import { EclBaseEvent } from '@eui/ecl/core';\nimport { SortOrder } from '../ecl-table.directive';\n\n/**\n * Event emitted when the table sort order changes.\n *\n * Extends the base ECL event to provide sorting-specific information.\n */\nexport class EclSortTableEvent extends EclBaseEvent {\n constructor(\n /**\n * The order in which the table is currently sorted.\n * Can be 'ascending', 'descending', or null (unsorted).\n */\n public sortOrder: SortOrder,\n\n /**\n * The identifier of the column that triggered the sort event.\n */\n public columnId: string,\n ) {\n super();\n }\n}\n","import {\n AfterContentInit,\n ContentChildren,\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n IterableDiffer,\n IterableDiffers,\n OnDestroy,\n Output,\n QueryList,\n ViewContainerRef,\n booleanAttribute,\n Renderer2,\n AfterViewInit,\n ChangeDetectorRef,\n OnInit,\n inject,\n ComponentRef,\n input,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclTableSortButtonComponent } from './ecl-table-sort-button.component';\nimport { EclSortTableEvent } from './events/ecl-sort-table.event';\nimport { TranslateService } from '@ngx-translate/core';\n\n/**\n * Enum representing the sort order of a column.\n */\nexport enum SortOrder {\n DESCENDING = 'descending',\n ASCENDING = 'ascending',\n}\n\n/**\n * Directive for styling and managing behavior of ECL tables.\n *\n * Applies ECL-specific table classes and emits sort events when columns are sorted.\n */\n@Directive({\n selector: '[eclTable]',\n})\nexport class EclTableDirective extends ECLBaseDirective implements DoCheck, OnDestroy, OnInit, AfterContentInit {\n /**\n * Applies zebra striping to the table rows by adding the `ecl-table--zebra` class if true.\n */\n readonly isZebra = input(false, { transform: booleanAttribute });\n\n /**\n * Applies the \"simple\" table variant if true.\n * Automatically enabled if no header is detected.\n */\n @Input({ transform: booleanAttribute }) isSimple = false;\n\n /**\n * The HTML ID attribute of the table. If not provided, a UUID is generated.\n */\n @Input() @HostBinding ('attr.id') id: string;\n\n /**\n * Computed list of CSS classes for the host element.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table'), this.isZebra() ? 'ecl-table--zebra' : '', this.isSimple ? 'ecl-table--simple' : ''].join(' ').trim();\n }\n\n /**\n * Emits an event when a column sort is triggered.\n */\n @Output() sort = new EventEmitter<EclSortTableEvent>();\n\n /**\n * List of header directives detected in the content.\n */\n @ContentChildren(forwardRef(() => EclTableHeaderDirective), { descendants: true })\n eclTableHeaders: QueryList<EclTableHeaderDirective>;\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private differ: IterableDiffer<EclTableHeaderDirective>;\n private differs = inject(IterableDiffers);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n }\n\n /**\n * Lifecycle hook that runs on component initialization.\n * Generates a unique ID if none is provided.\n */\n ngOnInit(): void {\n if (!this.id) {\n this.id = crypto.randomUUID();\n }\n }\n\n /**\n * Lifecycle hook that runs after content is fully initialized.\n * Determines if the table should be rendered in \"simple\" mode.\n */\n ngAfterContentInit(): void {\n this.convertToSimpleVariant();\n }\n\n /**\n * Custom change detection for dynamically added header directives.\n */\n ngDoCheck(): void {\n const diff = this.differ.diff(this.eclTableHeaders);\n if (diff) {\n diff.forEachAddedItem((change) => {\n change.item.sort.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.sort.emit(evt);\n });\n });\n }\n }\n\n /**\n * Cleans up subscriptions on destroy to prevent memory leaks.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Sets the table to \"simple\" variant if no header directives are found.\n */\n private convertToSimpleVariant(): void {\n if (this.eclTableHeaders.length === 0) {\n this.isSimple = true;\n }\n }\n}\n\n/**\n * Directive applied to `<thead>` elements inside a table.\n * Detects header changes and manages ARIA attributes.\n */\n@Directive({\n selector: '[eclTableHead]',\n})\nexport class EclTableHeadDirective extends ECLBaseDirective implements OnDestroy, DoCheck {\n /**\n * Applies the ECL head class to the element.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table__head')].join(' ').trim();\n }\n\n /**\n * List of header directives under this head element.\n */\n @ContentChildren(forwardRef(() => EclTableHeaderDirective), { descendants: true })\n eclTableHeaders: QueryList<EclTableHeaderDirective>;\n\n private differs = inject(IterableDiffers);\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private differ: IterableDiffer<EclTableHeaderDirective>;\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n }\n\n /**\n * Detects dynamic addition of header directives and resets ARIA sorting attributes.\n */\n ngDoCheck(): void {\n const diff = this.differ.diff(this.eclTableHeaders);\n if (diff) {\n diff.forEachAddedItem((change) => {\n change.item.sort.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.eclTableHeaders.forEach((th) => {\n th.removeAriaSort();\n });\n });\n });\n }\n }\n\n /**\n * Cleans up subscriptions on destroy to prevent memory leaks.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n}\n\n@Directive({\n selector: '[eclTableHeader]',\n})\n/**\n * Directive representing a single table header cell in an ECL table.\n * Supports sorting functionality and accessibility attributes.\n */\nexport class EclTableHeaderDirective extends ECLBaseDirective implements AfterContentInit, OnInit {\n /**\n * Current sort order of the column (`ascending`, `descending`, or `null`).\n * This sets the `aria-sort` attribute used for accessibility.\n */\n sortOrder: SortOrder | null = null;\n\n @HostBinding('attr.aria-sort')\n get ariaSort(): SortOrder | 'none' {\n return this.sortOrder ?? 'none';\n }\n\n /**\n * Enables sorting on the header. Also sets the `data-ecl-table-sort-toggle` attribute.\n * Acts as the unique identifier for the column when sorting.\n */\n @Input() @HostBinding('attr.data-ecl-table-sort-toggle') eclSortable = null;\n\n /**\n * Scope of the table header. Default is `col`. Sets the `scope` attribute.\n */\n @Input() @HostBinding('attr.scope') scope = 'col';\n\n /**\n * HTML `id` attribute of the table header cell. If not provided, a UUID will be generated.\n */\n @Input() @HostBinding('attr.id') id: string;\n\n /**\n * Aria-label for the sort button that will be injected into the header cell.\n */\n readonly sortButtonAriaLabel = input<string>(undefined);\n\n /**\n * Computes the CSS classes applied to the header element.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table__header')].join(' ').trim();\n }\n\n /**\n * Emits an `EclSortTableEvent` when the header is clicked and sorting is triggered.\n */\n @Output() sort = new EventEmitter<EclSortTableEvent>();\n\n private containerComponentRef: ComponentRef<EclTableSortButtonComponent>;\n private el = inject(ElementRef);\n private viewContainerRef = inject(ViewContainerRef);\n private renderer = inject(Renderer2);\n private translateService = inject(TranslateService);\n /**\n * Lifecycle hook that runs on component initialization.\n * Generates a unique `id` if not already defined.\n */\n ngOnInit(): void {\n if (!this.id) {\n this.id = crypto.randomUUID();\n }\n }\n\n /**\n * Lifecycle hook that runs after the view is initialized.\n * Injects the sort button into the header cell if sorting is enabled.\n */\n ngAfterContentInit(): void {\n this.initSortButtons();\n }\n\n /**\n * Clears the `aria-sort` attribute, used to visually and semantically reset previous sort state.\n *\n * Remove the dark arrow for current sorting from prev sorted column\n */\n removeAriaSort(): void {\n this.renderer.setAttribute(this.el.nativeElement, 'aria-sort', 'none');\n }\n\n /**\n * Handles click events on the header.\n * Cycles through sort orders: `null` -> `ascending` -> `descending` -> `null`.\n * Emits a `EclSortTableEvent` with the updated sort state and column identifier.\n *\n * Click triggers 1 -> asc sorting, 2 -> desc sorting then 3 -> initial sorting\n */\n @HostListener('click', ['$event'])\n onClick(evt: Event): void {\n if (this.eclSortable) {\n switch (this.sortOrder) {\n case null: {\n this.sortOrder = SortOrder.ASCENDING;\n this.changeButtonAriaLabel(this.translateService.instant('ecl.table.SORT-LABEL.ascending'));\n break;\n }\n case SortOrder.ASCENDING: {\n this.sortOrder = SortOrder.DESCENDING;\n this.changeButtonAriaLabel(this.translateService.instant('ecl.table.SORT-LABEL.descending'));\n break;\n }\n case SortOrder.DESCENDING: {\n this.sortOrder = null;\n this.changeButtonAriaLabel(this.translateService.instant('ecl.table.SORT-LABEL.default'));\n break;\n }\n }\n\n this.sort.emit(new EclSortTableEvent(this.sortOrder, this.eclSortable));\n }\n }\n\n private changeButtonAriaLabel(newAriaLabel: string): void {\n if (!this.sortButtonAriaLabel()) {\n this.containerComponentRef.instance.ariaLabel = newAriaLabel;\n }\n }\n\n /**\n * Dynamically creates and appends the sort button to the header cell.\n * Optionally sets the button's `aria-label` if provided.\n */\n private initSortButtons(): void {\n if (this.eclSortable) {\n setTimeout(() => {\n this.containerComponentRef = this.viewContainerRef.createComponent(EclTableSortButtonComponent);\n this.renderer.appendChild(this.el.nativeElement, this.containerComponentRef.location.nativeElement);\n const sortButtonAriaLabel = this.sortButtonAriaLabel();\n if (sortButtonAriaLabel) {\n this.containerComponentRef.instance.ariaLabel = sortButtonAriaLabel;\n } else {\n this.containerComponentRef.instance.ariaLabel = this.translateService.instant('ecl.table.SORT-LABEL.default');\n }\n });\n }\n }\n}\n\n@Directive({\n selector: '[eclTableRow]',\n})\n/**\n * Directive for applying ECL row styling to a table row element.\n */\nexport class EclTableRowDirective extends ECLBaseDirective {\n /**\n * Applies `ecl-table__row` class to the table row.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table__row')].join(' ').trim();\n }\n}\n\n@Directive({\n selector: '[eclTableBody]',\n})\n/**\n * Directive for applying ECL body styling to a table body element.\n */\nexport class EclTableBodyDirective extends ECLBaseDirective {\n /**\n * Applies `ecl-table__body` class to the table body.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table__body')].join(' ').trim();\n }\n}\n\n@Directive({\n selector: '[eclTableCell]',\n})\n/**\n * Directive for styling individual table cells in the ECL table.\n */\nexport class EclTableCellDirective extends ECLBaseDirective {\n /**\n * Provides a reference to the related table header.\n * Sets the `data-ecl-table-header` attribute for accessibility or responsive behavior.\n */\n @Input() @HostBinding('attr.data-ecl-table-header') eclTableCellHeader: string;\n\n /**\n * If `true`, applies additional group styling to the cell.\n */\n @Input() @HostBinding('class.ecl-table__cell--group') isGroup = false;\n\n /**\n * Computes and applies appropriate CSS classes for the table cell.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table__cell'), this.isGroup ? 'ecl-table__cell--group' : ''].join(' ').trim();\n }\n}\n\n@Directive({\n selector: '[eclTableCellGroup]',\n})\n/**\n * Directive used to group multiple table cells under a shared header group.\n */\nexport class EclTableCellGroupDirective extends ECLBaseDirective implements AfterViewInit {\n /**\n * Sets the `data-ecl-table-header-group` attribute to link to a header group.\n */\n @Input() @HostBinding('attr.data-ecl-table-header-group') eclTableCellGroup: string;\n\n /**\n * Applies the group-specific cell class.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table__cell--group')].join(' ').trim();\n }\n\n private cd = inject(ChangeDetectorRef);\n /**\n * Ensures `data-ecl-table-header-group` is not empty and triggers change detection.\n */\n ngAfterViewInit(): void {\n this.eclTableCellGroup = this.eclTableCellGroup !== '' ? this.eclTableCellGroup : null;\n this.cd.detectChanges();\n }\n}\n\n@Directive({\n selector: '[eclTableResponsive]',\n})\n/**\n * Directive for applying ECL responsive wrapper to a table container.\n */\nexport class EclTableResponsiveDirective extends ECLBaseDirective {\n /**\n * Applies the `ecl-table-responsive` class.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table-responsive')].join(' ').trim();\n }\n}\n\n@Directive({\n selector: 'caption[eclTableCaption]',\n})\n/**\n * Directive for applying styling to a table caption element.\n */\nexport class EclTableCaptionDirective extends ECLBaseDirective {\n /**\n * Applies the `ecl-table__caption` class to the caption.\n */\n @HostBinding('class.ecl-table__caption') hasClass = true;\n}\n","import {\n EclTableDirective,\n EclTableHeadDirective,\n EclTableHeaderDirective,\n EclTableRowDirective,\n EclTableBodyDirective,\n EclTableCellDirective,\n EclTableCellGroupDirective,\n EclTableResponsiveDirective,\n EclTableCaptionDirective,\n} from './ecl-table.directive';\nimport { EclTableSortButtonComponent } from './ecl-table-sort-button.component';\n\nexport * from './ecl-table.directive';\nexport * from './ecl-table-sort-button.component';\nexport * from './events/ecl-sort-table.event';\n\nexport const EUI_ECL_TABLE = [\n EclTableCaptionDirective,\n EclTableDirective,\n EclTableHeadDirective,\n EclTableHeaderDirective,\n EclTableRowDirective,\n EclTableBodyDirective,\n EclTableCellDirective,\n EclTableCellGroupDirective,\n EclTableSortButtonComponent,\n EclTableResponsiveDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-table.mjs","sources":["../../components/ecl-table/ecl-table-sort-button.component.ts","../../components/ecl-table/ecl-table-sort-button.component.html","../../components/ecl-table/events/ecl-sort-table.event.ts","../../components/ecl-table/ecl-table.directive.ts","../../components/ecl-table/index.ts","../../components/ecl-table/eui-ecl-components-ecl-table.ts"],"sourcesContent":["import { Component, HostBinding, inject } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { EclThemeService } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * Sort button component used inside sortable table headers.\n *\n * Applies ECL styling for table sort arrows and provides\n * accessibility label for screen readers.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[eclTableSortButton]',\n templateUrl: './ecl-table-sort-button.component.html',\n imports: [...EUI_ECL_ICON, AsyncPipe],\n})\nexport class EclTableSortButtonComponent extends ECLBaseDirective {\n eclThemeService = inject(EclThemeService);\n\n /**\n * Accessibility label describing the button's function.\n * This value is bound to the `aria-label` attribute.\n */\n @HostBinding('attr.aria-label') ariaLabel = 'Sort table';\n\n /**\n * CSS classes applied to the host element.\n * Includes ECL base table sort arrow styling.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table__arrow')].join(' ').trim();\n }\n}\n","<ecl-icon icon=\"solid-arrow\" class=\"ecl-table__icon ecl-table__icon-up\" [size]=\"(eclThemeService.isEC$ | async) ? 'xs' : 'm'\"> </ecl-icon>\n<ecl-icon icon=\"solid-arrow\" class=\"ecl-table__icon ecl-table__icon-down\" [size]=\"(eclThemeService.isEC$ | async) ? 'xs' : 'm'\"> </ecl-icon>\n","import { EclBaseEvent } from '@eui/ecl/core';\nimport { SortOrder } from '../ecl-table.directive';\n\n/**\n * Event emitted when the table sort order changes.\n *\n * Extends the base ECL event to provide sorting-specific information.\n */\nexport class EclSortTableEvent extends EclBaseEvent {\n constructor(\n /**\n * The order in which the table is currently sorted.\n * Can be 'ascending', 'descending', or null (unsorted).\n */\n public sortOrder: SortOrder,\n\n /**\n * The identifier of the column that triggered the sort event.\n */\n public columnId: string,\n ) {\n super();\n }\n}\n","import {\n AfterContentInit,\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n IterableDiffer,\n IterableDiffers,\n OnDestroy,\n Output,\n ViewContainerRef,\n booleanAttribute,\n Renderer2,\n AfterViewInit,\n ChangeDetectorRef,\n OnInit,\n inject,\n ComponentRef,\n input,\n contentChildren,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclTableSortButtonComponent } from './ecl-table-sort-button.component';\nimport { EclSortTableEvent } from './events/ecl-sort-table.event';\nimport { TranslateService } from '@ngx-translate/core';\n\n/**\n * Enum representing the sort order of a column.\n */\nexport enum SortOrder {\n DESCENDING = 'descending',\n ASCENDING = 'ascending',\n}\n\n/**\n * Directive for styling and managing behavior of ECL tables.\n *\n * Applies ECL-specific table classes and emits sort events when columns are sorted.\n */\n@Directive({\n selector: '[eclTable]',\n})\nexport class EclTableDirective extends ECLBaseDirective implements DoCheck, OnDestroy, OnInit, AfterContentInit {\n /**\n * Applies zebra striping to the table rows by adding the `ecl-table--zebra` class if true.\n */\n readonly isZebra = input(false, { transform: booleanAttribute });\n\n /**\n * Applies the \"simple\" table variant if true.\n * Automatically enabled if no header is detected.\n */\n @Input({ transform: booleanAttribute }) isSimple = false;\n\n /**\n * The HTML ID attribute of the table. If not provided, a UUID is generated.\n */\n @Input() @HostBinding ('attr.id') id: string;\n\n /**\n * Computed list of CSS classes for the host element.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table'), this.isZebra() ? 'ecl-table--zebra' : '', this.isSimple ? 'ecl-table--simple' : ''].join(' ').trim();\n }\n\n /**\n * Emits an event when a column sort is triggered.\n */\n @Output() sort = new EventEmitter<EclSortTableEvent>();\n\n /**\n * List of header directives detected in the content.\n */\n readonly eclTableHeaders = contentChildren(forwardRef(() => EclTableHeaderDirective), { descendants: true });\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private differ: IterableDiffer<EclTableHeaderDirective>;\n private differs = inject(IterableDiffers);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n }\n\n /**\n * Lifecycle hook that runs on component initialization.\n * Generates a unique ID if none is provided.\n */\n ngOnInit(): void {\n if (!this.id) {\n this.id = crypto.randomUUID();\n }\n }\n\n /**\n * Lifecycle hook that runs after content is fully initialized.\n * Determines if the table should be rendered in \"simple\" mode.\n */\n ngAfterContentInit(): void {\n this.convertToSimpleVariant();\n }\n\n /**\n * Custom change detection for dynamically added header directives.\n */\n ngDoCheck(): void {\n const diff = this.differ.diff(this.eclTableHeaders());\n if (diff) {\n diff.forEachAddedItem((change) => {\n change.item.sort.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.sort.emit(evt);\n });\n });\n }\n }\n\n /**\n * Cleans up subscriptions on destroy to prevent memory leaks.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Sets the table to \"simple\" variant if no header directives are found.\n */\n private convertToSimpleVariant(): void {\n if (this.eclTableHeaders().length === 0) {\n this.isSimple = true;\n }\n }\n}\n\n/**\n * Directive applied to `<thead>` elements inside a table.\n * Detects header changes and manages ARIA attributes.\n */\n@Directive({\n selector: '[eclTableHead]',\n})\nexport class EclTableHeadDirective extends ECLBaseDirective implements OnDestroy, DoCheck {\n /**\n * Applies the ECL head class to the element.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table__head')].join(' ').trim();\n }\n\n /**\n * List of header directives under this head element.\n */\n readonly eclTableHeaders = contentChildren(forwardRef(() => EclTableHeaderDirective), { descendants: true });\n\n private differs = inject(IterableDiffers);\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private differ: IterableDiffer<EclTableHeaderDirective>;\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n }\n\n /**\n * Detects dynamic addition of header directives and resets ARIA sorting attributes.\n */\n ngDoCheck(): void {\n const diff = this.differ.diff(this.eclTableHeaders());\n if (diff) {\n diff.forEachAddedItem((change) => {\n change.item.sort.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.eclTableHeaders().forEach((th) => {\n th.removeAriaSort();\n });\n });\n });\n }\n }\n\n /**\n * Cleans up subscriptions on destroy to prevent memory leaks.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n}\n\n@Directive({\n selector: '[eclTableHeader]',\n})\n/**\n * Directive representing a single table header cell in an ECL table.\n * Supports sorting functionality and accessibility attributes.\n */\nexport class EclTableHeaderDirective extends ECLBaseDirective implements AfterContentInit, OnInit {\n /**\n * Current sort order of the column (`ascending`, `descending`, or `null`).\n * This sets the `aria-sort` attribute used for accessibility.\n */\n sortOrder: SortOrder | null = null;\n\n @HostBinding('attr.aria-sort')\n get ariaSort(): SortOrder | 'none' {\n return this.sortOrder ?? 'none';\n }\n\n /**\n * Enables sorting on the header. Also sets the `data-ecl-table-sort-toggle` attribute.\n * Acts as the unique identifier for the column when sorting.\n */\n @Input() @HostBinding('attr.data-ecl-table-sort-toggle') eclSortable = null;\n\n /**\n * Scope of the table header. Default is `col`. Sets the `scope` attribute.\n */\n @Input() @HostBinding('attr.scope') scope = 'col';\n\n /**\n * HTML `id` attribute of the table header cell. If not provided, a UUID will be generated.\n */\n @Input() @HostBinding('attr.id') id: string;\n\n /**\n * Aria-label for the sort button that will be injected into the header cell.\n */\n readonly sortButtonAriaLabel = input<string>(undefined);\n\n /**\n * Computes the CSS classes applied to the header element.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table__header')].join(' ').trim();\n }\n\n /**\n * Emits an `EclSortTableEvent` when the header is clicked and sorting is triggered.\n */\n @Output() sort = new EventEmitter<EclSortTableEvent>();\n\n private containerComponentRef: ComponentRef<EclTableSortButtonComponent>;\n private el = inject(ElementRef);\n private viewContainerRef = inject(ViewContainerRef);\n private renderer = inject(Renderer2);\n private translateService = inject(TranslateService);\n /**\n * Lifecycle hook that runs on component initialization.\n * Generates a unique `id` if not already defined.\n */\n ngOnInit(): void {\n if (!this.id) {\n this.id = crypto.randomUUID();\n }\n }\n\n /**\n * Lifecycle hook that runs after the view is initialized.\n * Injects the sort button into the header cell if sorting is enabled.\n */\n ngAfterContentInit(): void {\n this.initSortButtons();\n }\n\n /**\n * Clears the `aria-sort` attribute, used to visually and semantically reset previous sort state.\n *\n * Remove the dark arrow for current sorting from prev sorted column\n */\n removeAriaSort(): void {\n this.renderer.setAttribute(this.el.nativeElement, 'aria-sort', 'none');\n }\n\n /**\n * Handles click events on the header.\n * Cycles through sort orders: `null` -> `ascending` -> `descending` -> `null`.\n * Emits a `EclSortTableEvent` with the updated sort state and column identifier.\n *\n * Click triggers 1 -> asc sorting, 2 -> desc sorting then 3 -> initial sorting\n */\n @HostListener('click', ['$event'])\n onClick(evt: Event): void {\n if (this.eclSortable) {\n switch (this.sortOrder) {\n case null: {\n this.sortOrder = SortOrder.ASCENDING;\n this.changeButtonAriaLabel(this.translateService.instant('ecl.table.SORT-LABEL.ascending'));\n break;\n }\n case SortOrder.ASCENDING: {\n this.sortOrder = SortOrder.DESCENDING;\n this.changeButtonAriaLabel(this.translateService.instant('ecl.table.SORT-LABEL.descending'));\n break;\n }\n case SortOrder.DESCENDING: {\n this.sortOrder = null;\n this.changeButtonAriaLabel(this.translateService.instant('ecl.table.SORT-LABEL.default'));\n break;\n }\n }\n\n this.sort.emit(new EclSortTableEvent(this.sortOrder, this.eclSortable));\n }\n }\n\n private changeButtonAriaLabel(newAriaLabel: string): void {\n if (!this.sortButtonAriaLabel()) {\n this.containerComponentRef.instance.ariaLabel = newAriaLabel;\n }\n }\n\n /**\n * Dynamically creates and appends the sort button to the header cell.\n * Optionally sets the button's `aria-label` if provided.\n */\n private initSortButtons(): void {\n if (this.eclSortable) {\n setTimeout(() => {\n this.containerComponentRef = this.viewContainerRef.createComponent(EclTableSortButtonComponent);\n this.renderer.appendChild(this.el.nativeElement, this.containerComponentRef.location.nativeElement);\n const sortButtonAriaLabel = this.sortButtonAriaLabel();\n if (sortButtonAriaLabel) {\n this.containerComponentRef.instance.ariaLabel = sortButtonAriaLabel;\n } else {\n this.containerComponentRef.instance.ariaLabel = this.translateService.instant('ecl.table.SORT-LABEL.default');\n }\n });\n }\n }\n}\n\n@Directive({\n selector: '[eclTableRow]',\n})\n/**\n * Directive for applying ECL row styling to a table row element.\n */\nexport class EclTableRowDirective extends ECLBaseDirective {\n /**\n * Applies `ecl-table__row` class to the table row.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table__row')].join(' ').trim();\n }\n}\n\n@Directive({\n selector: '[eclTableBody]',\n})\n/**\n * Directive for applying ECL body styling to a table body element.\n */\nexport class EclTableBodyDirective extends ECLBaseDirective {\n /**\n * Applies `ecl-table__body` class to the table body.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table__body')].join(' ').trim();\n }\n}\n\n@Directive({\n selector: '[eclTableCell]',\n})\n/**\n * Directive for styling individual table cells in the ECL table.\n */\nexport class EclTableCellDirective extends ECLBaseDirective {\n /**\n * Provides a reference to the related table header.\n * Sets the `data-ecl-table-header` attribute for accessibility or responsive behavior.\n */\n @Input() @HostBinding('attr.data-ecl-table-header') eclTableCellHeader: string;\n\n /**\n * If `true`, applies additional group styling to the cell.\n */\n @Input() @HostBinding('class.ecl-table__cell--group') isGroup = false;\n\n /**\n * Computes and applies appropriate CSS classes for the table cell.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table__cell'), this.isGroup ? 'ecl-table__cell--group' : ''].join(' ').trim();\n }\n}\n\n@Directive({\n selector: '[eclTableCellGroup]',\n})\n/**\n * Directive used to group multiple table cells under a shared header group.\n */\nexport class EclTableCellGroupDirective extends ECLBaseDirective implements AfterViewInit {\n /**\n * Sets the `data-ecl-table-header-group` attribute to link to a header group.\n */\n @Input() @HostBinding('attr.data-ecl-table-header-group') eclTableCellGroup: string;\n\n /**\n * Applies the group-specific cell class.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table__cell--group')].join(' ').trim();\n }\n\n private cd = inject(ChangeDetectorRef);\n /**\n * Ensures `data-ecl-table-header-group` is not empty and triggers change detection.\n */\n ngAfterViewInit(): void {\n this.eclTableCellGroup = this.eclTableCellGroup !== '' ? this.eclTableCellGroup : null;\n this.cd.detectChanges();\n }\n}\n\n@Directive({\n selector: '[eclTableResponsive]',\n})\n/**\n * Directive for applying ECL responsive wrapper to a table container.\n */\nexport class EclTableResponsiveDirective extends ECLBaseDirective {\n /**\n * Applies the `ecl-table-responsive` class.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-table-responsive')].join(' ').trim();\n }\n}\n\n@Directive({\n selector: 'caption[eclTableCaption]',\n})\n/**\n * Directive for applying styling to a table caption element.\n */\nexport class EclTableCaptionDirective extends ECLBaseDirective {\n /**\n * Applies the `ecl-table__caption` class to the caption.\n */\n @HostBinding('class.ecl-table__caption') hasClass = true;\n}\n","import {\n EclTableDirective,\n EclTableHeadDirective,\n EclTableHeaderDirective,\n EclTableRowDirective,\n EclTableBodyDirective,\n EclTableCellDirective,\n EclTableCellGroupDirective,\n EclTableResponsiveDirective,\n EclTableCaptionDirective,\n} from './ecl-table.directive';\nimport { EclTableSortButtonComponent } from './ecl-table-sort-button.component';\n\nexport * from './ecl-table.directive';\nexport * from './ecl-table-sort-button.component';\nexport * from './events/ecl-sort-table.event';\n\nexport const EUI_ECL_TABLE = [\n EclTableCaptionDirective,\n EclTableDirective,\n EclTableHeadDirective,\n EclTableHeaderDirective,\n EclTableRowDirective,\n EclTableBodyDirective,\n EclTableCellDirective,\n EclTableCellGroupDirective,\n EclTableSortButtonComponent,\n EclTableResponsiveDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|