@eui/ecl 19.3.0-snapshot-1749041696283 → 19.3.0-snapshot-1749064223062
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/components/ecl-accordion/ecl-accordion-item.component.d.ts +24 -0
- package/components/ecl-accordion/ecl-accordion-item.component.d.ts.map +1 -1
- package/components/ecl-accordion/ecl-accordion.component.d.ts +19 -0
- package/components/ecl-accordion/ecl-accordion.component.d.ts.map +1 -1
- package/components/ecl-banner/ecl-banner-description.directive.d.ts +9 -0
- package/components/ecl-banner/ecl-banner-description.directive.d.ts.map +1 -1
- package/components/ecl-banner/ecl-banner-picture.directive.d.ts +11 -0
- package/components/ecl-banner/ecl-banner-picture.directive.d.ts.map +1 -1
- package/components/ecl-banner/ecl-banner-title.directive.d.ts +12 -0
- package/components/ecl-banner/ecl-banner-title.directive.d.ts.map +1 -1
- package/components/ecl-banner/ecl-banner-video.directive.d.ts +10 -0
- package/components/ecl-banner/ecl-banner-video.directive.d.ts.map +1 -1
- package/components/ecl-banner/ecl-banner.component.d.ts +66 -0
- package/components/ecl-banner/ecl-banner.component.d.ts.map +1 -1
- package/components/ecl-blockquote/ecl-blockquote-picture.directive.d.ts +14 -0
- package/components/ecl-blockquote/ecl-blockquote-picture.directive.d.ts.map +1 -1
- package/components/ecl-blockquote/ecl-blockquote.component.d.ts +29 -0
- package/components/ecl-blockquote/ecl-blockquote.component.d.ts.map +1 -1
- package/components/ecl-button/ecl-button-label.directive.d.ts +21 -0
- package/components/ecl-button/ecl-button-label.directive.d.ts.map +1 -1
- package/components/ecl-button/ecl-button.component.d.ts +43 -0
- package/components/ecl-button/ecl-button.component.d.ts.map +1 -1
- package/components/ecl-card/ecl-card-body.component.d.ts +7 -0
- package/components/ecl-card/ecl-card-body.component.d.ts.map +1 -1
- package/components/ecl-card/ecl-card-picture.directive.d.ts +17 -0
- package/components/ecl-card/ecl-card-picture.directive.d.ts.map +1 -1
- package/components/ecl-card/ecl-card.component.d.ts +27 -0
- package/components/ecl-card/ecl-card.component.d.ts.map +1 -1
- package/components/ecl-carousel/ecl-carousel-item.component.d.ts +42 -0
- package/components/ecl-carousel/ecl-carousel-item.component.d.ts.map +1 -1
- package/components/ecl-carousel/ecl-carousel.component.d.ts +224 -0
- package/components/ecl-carousel/ecl-carousel.component.d.ts.map +1 -1
- package/components/ecl-category-filter/ecl-category-filter/ecl-category-filter.component.d.ts +14 -0
- package/components/ecl-category-filter/ecl-category-filter/ecl-category-filter.component.d.ts.map +1 -1
- package/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-item.component.d.ts +56 -0
- package/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-item.component.d.ts.map +1 -1
- package/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-list.component.d.ts +28 -0
- package/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-list.component.d.ts.map +1 -1
- package/components/ecl-category-filter/events/ecl-category-filter-item-select.event.d.ts +7 -0
- package/components/ecl-category-filter/events/ecl-category-filter-item-select.event.d.ts.map +1 -1
- package/components/ecl-content-block/ecl-content-block-elements.directive.d.ts +106 -0
- package/components/ecl-content-block/ecl-content-block-elements.directive.d.ts.map +1 -1
- package/components/ecl-content-block/ecl-content-block.component.d.ts +8 -0
- package/components/ecl-content-block/ecl-content-block.component.d.ts.map +1 -1
- package/components/ecl-content-item/ecl-content-item-image.directive.d.ts +29 -0
- package/components/ecl-content-item/ecl-content-item-image.directive.d.ts.map +1 -1
- package/components/ecl-content-item/ecl-content-item.component.d.ts +40 -0
- package/components/ecl-content-item/ecl-content-item.component.d.ts.map +1 -1
- package/components/ecl-date-block/ecl-date-block.component.d.ts +36 -0
- package/components/ecl-date-block/ecl-date-block.component.d.ts.map +1 -1
- package/components/ecl-expandable/ecl-expandable.component.d.ts +34 -0
- package/components/ecl-expandable/ecl-expandable.component.d.ts.map +1 -1
- package/components/ecl-fact-figures/ecl-fact-figures-description.component.d.ts +7 -0
- package/components/ecl-fact-figures/ecl-fact-figures-description.component.d.ts.map +1 -1
- package/components/ecl-fact-figures/ecl-fact-figures-item.component.d.ts +15 -0
- package/components/ecl-fact-figures/ecl-fact-figures-item.component.d.ts.map +1 -1
- package/components/ecl-fact-figures/ecl-fact-figures-title.component.d.ts +6 -0
- package/components/ecl-fact-figures/ecl-fact-figures-title.component.d.ts.map +1 -1
- package/components/ecl-fact-figures/ecl-fact-figures-value.component.d.ts +6 -0
- package/components/ecl-fact-figures/ecl-fact-figures-value.component.d.ts.map +1 -1
- package/components/ecl-fact-figures/ecl-fact-figures-view-all.component.d.ts +15 -0
- package/components/ecl-fact-figures/ecl-fact-figures-view-all.component.d.ts.map +1 -1
- package/components/ecl-fact-figures/ecl-fact-figures.component.d.ts +23 -0
- package/components/ecl-fact-figures/ecl-fact-figures.component.d.ts.map +1 -1
- package/components/ecl-file/ecl-file-download.directive.d.ts +23 -0
- package/components/ecl-file/ecl-file-download.directive.d.ts.map +1 -1
- package/components/ecl-file/ecl-file-item/ecl-file-item.component.d.ts +36 -0
- package/components/ecl-file/ecl-file-item/ecl-file-item.component.d.ts.map +1 -1
- package/components/ecl-file/ecl-file-items/ecl-file-items.component.d.ts +29 -0
- package/components/ecl-file/ecl-file-items/ecl-file-items.component.d.ts.map +1 -1
- package/components/ecl-file/ecl-file-picture.directive.d.ts +23 -0
- package/components/ecl-file/ecl-file-picture.directive.d.ts.map +1 -1
- package/components/ecl-file/ecl-file-taxonomy/ecl-file-taxonomy.component.d.ts +6 -0
- package/components/ecl-file/ecl-file-taxonomy/ecl-file-taxonomy.component.d.ts.map +1 -1
- package/components/ecl-file/ecl-file.component.d.ts +35 -0
- package/components/ecl-file/ecl-file.component.d.ts.map +1 -1
- package/components/ecl-icon/ecl-icon.component.d.ts +51 -0
- package/components/ecl-icon/ecl-icon.component.d.ts.map +1 -1
- package/components/ecl-label/ecl-label.directive.d.ts +20 -0
- package/components/ecl-label/ecl-label.directive.d.ts.map +1 -1
- package/components/ecl-list/ecl-description-list-definition/ecl-description-list-definition.component.d.ts +35 -0
- package/components/ecl-list/ecl-description-list-definition/ecl-description-list-definition.component.d.ts.map +1 -1
- package/components/ecl-list/ecl-description-list-definition-item.directive.d.ts +22 -0
- package/components/ecl-list/ecl-description-list-definition-item.directive.d.ts.map +1 -1
- package/components/ecl-list/ecl-list.directive.d.ts +57 -0
- package/components/ecl-list/ecl-list.directive.d.ts.map +1 -1
- package/components/ecl-list-illustration/ecl-list-illustration-icon.directive.d.ts +8 -0
- package/components/ecl-list-illustration/ecl-list-illustration-icon.directive.d.ts.map +1 -1
- package/components/ecl-list-illustration/ecl-list-illustration-item.component.d.ts +23 -0
- package/components/ecl-list-illustration/ecl-list-illustration-item.component.d.ts.map +1 -1
- package/components/ecl-list-illustration/ecl-list-illustration-picture.directive.d.ts +23 -0
- package/components/ecl-list-illustration/ecl-list-illustration-picture.directive.d.ts.map +1 -1
- package/components/ecl-list-illustration/ecl-list-illustration.component.d.ts +26 -0
- package/components/ecl-list-illustration/ecl-list-illustration.component.d.ts.map +1 -1
- package/components/ecl-loading-indicator/ecl-loading-indicator-label.directive.d.ts +8 -0
- package/components/ecl-loading-indicator/ecl-loading-indicator-label.directive.d.ts.map +1 -1
- package/components/ecl-loading-indicator/ecl-loading-indicator-overlay.directive.d.ts +8 -0
- package/components/ecl-loading-indicator/ecl-loading-indicator-overlay.directive.d.ts.map +1 -1
- package/components/ecl-loading-indicator/ecl-loading-indicator.component.d.ts +39 -1
- package/components/ecl-loading-indicator/ecl-loading-indicator.component.d.ts.map +1 -1
- package/components/ecl-modal/ecl-modal-body-fixed.directive.d.ts +8 -0
- package/components/ecl-modal/ecl-modal-body-fixed.directive.d.ts.map +1 -1
- package/components/ecl-modal/ecl-modal-body.component.d.ts +11 -0
- package/components/ecl-modal/ecl-modal-body.component.d.ts.map +1 -1
- package/components/ecl-modal/ecl-modal-close.directive.d.ts +17 -0
- package/components/ecl-modal/ecl-modal-close.directive.d.ts.map +1 -1
- package/components/ecl-modal/ecl-modal-footer.component.d.ts +16 -0
- package/components/ecl-modal/ecl-modal-footer.component.d.ts.map +1 -1
- package/components/ecl-modal/ecl-modal-header.component.d.ts +41 -0
- package/components/ecl-modal/ecl-modal-header.component.d.ts.map +1 -1
- package/components/ecl-modal/ecl-modal-trigger.directive.d.ts +9 -0
- package/components/ecl-modal/ecl-modal-trigger.directive.d.ts.map +1 -1
- package/components/ecl-modal/ecl-modal.component.d.ts +68 -0
- package/components/ecl-modal/ecl-modal.component.d.ts.map +1 -1
- package/components/ecl-news-ticker/ecl-news-ticker-icon.directive.d.ts +6 -0
- package/components/ecl-news-ticker/ecl-news-ticker-icon.directive.d.ts.map +1 -1
- package/components/ecl-news-ticker/ecl-news-ticker-item.component.d.ts +27 -0
- package/components/ecl-news-ticker/ecl-news-ticker-item.component.d.ts.map +1 -1
- package/components/ecl-news-ticker/ecl-news-ticker.component.d.ts +77 -0
- package/components/ecl-news-ticker/ecl-news-ticker.component.d.ts.map +1 -1
- package/components/ecl-notification/ecl-notification-title.directive.d.ts +7 -0
- package/components/ecl-notification/ecl-notification-title.directive.d.ts.map +1 -1
- package/components/ecl-notification/ecl-notification.component.d.ts +42 -0
- package/components/ecl-notification/ecl-notification.component.d.ts.map +1 -1
- package/components/ecl-notification/events/ecl-notification-close.event.d.ts +5 -0
- package/components/ecl-notification/events/ecl-notification-close.event.d.ts.map +1 -1
- package/components/ecl-popover/ecl-popover-content.directive.d.ts +8 -0
- package/components/ecl-popover/ecl-popover-content.directive.d.ts.map +1 -1
- package/components/ecl-popover/ecl-popover-toggle.directive.d.ts +27 -0
- package/components/ecl-popover/ecl-popover-toggle.directive.d.ts.map +1 -1
- package/components/ecl-popover/ecl-popover.component.d.ts +46 -0
- package/components/ecl-popover/ecl-popover.component.d.ts.map +1 -1
- package/components/ecl-separator/ecl-separator.directive.d.ts +7 -0
- package/components/ecl-separator/ecl-separator.directive.d.ts.map +1 -1
- package/docs/classes/EclCategoryFilterItemSelectEvent.html +19 -0
- package/docs/classes/EclExpandableToggleEvent.html +8 -0
- package/docs/classes/EclNotificationCloseEvent.html +8 -0
- package/docs/components/EclAccordionComponent.html +25 -0
- package/docs/components/EclAccordionItemComponent.html +40 -0
- package/docs/components/EclBannerComponent.html +114 -0
- package/docs/components/EclBlockquoteComponent.html +50 -0
- package/docs/components/EclButtonComponent.html +87 -0
- package/docs/components/EclCardBodyComponent.html +25 -0
- package/docs/components/EclCardComponent.html +55 -0
- package/docs/components/EclCarouselComponent.html +179 -1
- package/docs/components/EclCarouselItemComponent.html +132 -0
- package/docs/components/EclCategoryFilterComponent.html +39 -0
- package/docs/components/EclCategoryFilterItemComponent.html +160 -0
- package/docs/components/EclCategoryFilterListComponent.html +84 -0
- package/docs/components/EclContentBlockComponent.html +27 -0
- package/docs/components/EclContentItemComponent.html +75 -0
- package/docs/components/EclDateBlockComponent.html +78 -0
- package/docs/components/EclDescriptionListDefinitionComponent.html +61 -0
- package/docs/components/EclExpandableComponent.html +59 -4
- package/docs/components/EclFactFiguresComponent.html +63 -4
- package/docs/components/EclFactFiguresDescriptionComponent.html +29 -4
- package/docs/components/EclFactFiguresItemComponent.html +32 -0
- package/docs/components/EclFactFiguresTitleComponent.html +28 -4
- package/docs/components/EclFactFiguresValueComponent.html +28 -4
- package/docs/components/EclFactFiguresViewAllComponent.html +36 -4
- package/docs/components/EclFileComponent.html +85 -0
- package/docs/components/EclFileItemComponent.html +88 -0
- package/docs/components/EclFileItemsComponent.html +55 -0
- package/docs/components/EclFileTaxonomyComponent.html +24 -0
- package/docs/components/EclIconComponent.html +101 -0
- package/docs/components/EclListIllustrationComponent.html +77 -0
- package/docs/components/EclListIllustrationItemComponent.html +66 -0
- package/docs/components/EclLoadingIndicatorComponent.html +75 -0
- package/docs/components/EclModalBodyComponent.html +31 -0
- package/docs/components/EclModalComponent.html +118 -0
- package/docs/components/EclModalFooterComponent.html +31 -0
- package/docs/components/EclModalHeaderComponent.html +58 -0
- package/docs/components/EclNewsTickerComponent.html +118 -0
- package/docs/components/EclNewsTickerItemComponent.html +86 -0
- package/docs/components/EclNotificationComponent.html +117 -0
- package/docs/components/EclPopoverComponent.html +90 -0
- package/docs/dependencies.html +2 -2
- package/docs/directives/EclBannerDescriptionDirective.html +7 -0
- package/docs/directives/EclBannerDescriptionLinkDirective.html +7 -0
- package/docs/directives/EclBannerDescriptionTextDirective.html +7 -0
- package/docs/directives/EclBannerImageDirective.html +10 -0
- package/docs/directives/EclBannerPictureDirective.html +8 -0
- package/docs/directives/EclBannerTitleDirective.html +8 -0
- package/docs/directives/EclBannerTitleLinkDirective.html +8 -0
- package/docs/directives/EclBannerTitleTextDirective.html +8 -0
- package/docs/directives/EclBannerVideoDirective.html +22 -0
- package/docs/directives/EclBlockquoteImageDirective.html +25 -0
- package/docs/directives/EclBlockquotePictureDirective.html +25 -0
- package/docs/directives/EclButtonIconContainerDirective.html +20 -0
- package/docs/directives/EclButtonLabelDirective.html +25 -0
- package/docs/directives/EclCardImageDirective.html +25 -0
- package/docs/directives/EclCardPictureDirective.html +31 -0
- package/docs/directives/EclContentBlockDescriptionDirective.html +24 -0
- package/docs/directives/EclContentBlockLabelDirective.html +24 -0
- package/docs/directives/EclContentBlockLabelsDirective.html +24 -0
- package/docs/directives/EclContentBlockLinkDirective.html +24 -0
- package/docs/directives/EclContentBlockLinksContainerDirective.html +24 -0
- package/docs/directives/EclContentBlockLinksDirective.html +24 -0
- package/docs/directives/EclContentBlockListContainerDirective.html +24 -0
- package/docs/directives/EclContentBlockListDirective.html +24 -0
- package/docs/directives/EclContentBlockPrimaryMetaDirective.html +24 -0
- package/docs/directives/EclContentBlockPrimaryMetasDirective.html +24 -0
- package/docs/directives/EclContentBlockSecondaryMetaDirective.html +24 -0
- package/docs/directives/EclContentBlockSecondaryMetaIconDirective.html +24 -0
- package/docs/directives/EclContentBlockSecondaryMetaLabelDirective.html +24 -0
- package/docs/directives/EclContentBlockSecondaryMetasDirective.html +24 -0
- package/docs/directives/EclContentBlockTagDirective.html +24 -0
- package/docs/directives/EclContentBlockTagsDirective.html +24 -0
- package/docs/directives/EclContentBlockTitleDirective.html +31 -0
- package/docs/directives/EclContentItemImageDirective.html +27 -0
- package/docs/directives/EclContentItemPictureDirective.html +46 -0
- package/docs/directives/EclDescriptionListDefinitionItemDirective.html +37 -0
- package/docs/directives/EclDescriptionListDefinitionListDirective.html +20 -0
- package/docs/directives/EclDescriptionListDirective.html +39 -0
- package/docs/directives/EclDescriptionListTermDirective.html +19 -0
- package/docs/directives/EclFileDownloadDirective.html +19 -0
- package/docs/directives/EclFileImageDirective.html +20 -0
- package/docs/directives/EclFilePictureDirective.html +25 -0
- package/docs/directives/EclFilePreviewDirective.html +32 -0
- package/docs/directives/EclFileTitleDirective.html +25 -0
- package/docs/directives/EclFileTranslationDownloadDirective.html +20 -0
- package/docs/directives/EclIndicatorDirective.html +20 -0
- package/docs/directives/EclLabelDirective.html +40 -0
- package/docs/directives/EclListIllustrationIconDirective.html +20 -0
- package/docs/directives/EclListIllustrationImageDirective.html +38 -0
- package/docs/directives/EclListIllustrationPictureDirective.html +25 -0
- package/docs/directives/EclLoadingIndicatorLabelDirective.html +20 -0
- package/docs/directives/EclLoadingIndicatorOverlayDirective.html +25 -0
- package/docs/directives/EclModalBodyFixedContentDirective.html +20 -0
- package/docs/directives/EclModalCloseDirective.html +35 -0
- package/docs/directives/EclModalTriggerDirective.html +22 -0
- package/docs/directives/EclNewsTickerIconDirective.html +19 -0
- package/docs/directives/EclNotificationTitleDirective.html +25 -0
- package/docs/directives/EclOrderedListDirective.html +19 -0
- package/docs/directives/EclOrderedListItemDirective.html +19 -0
- package/docs/directives/EclPopoverContentDirective.html +25 -0
- package/docs/directives/EclPopoverToggleDirective.html +62 -0
- package/docs/directives/EclSeparatorDirective.html +20 -0
- package/docs/directives/EclUnorderedListDirective.html +32 -0
- package/docs/directives/EclUnorderedListItemDirective.html +19 -0
- package/docs/js/search/search_index.js +2 -2
- package/fesm2022/eui-ecl-components-ecl-accordion.mjs +39 -0
- package/fesm2022/eui-ecl-components-ecl-accordion.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-banner.mjs +108 -0
- package/fesm2022/eui-ecl-components-ecl-banner.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-blockquote.mjs +39 -0
- package/fesm2022/eui-ecl-components-ecl-blockquote.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-button.mjs +53 -0
- package/fesm2022/eui-ecl-components-ecl-button.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-card.mjs +42 -0
- package/fesm2022/eui-ecl-components-ecl-card.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-carousel.mjs +221 -0
- package/fesm2022/eui-ecl-components-ecl-carousel.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-category-filter.mjs +85 -0
- package/fesm2022/eui-ecl-components-ecl-category-filter.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-content-block.mjs +111 -0
- package/fesm2022/eui-ecl-components-ecl-content-block.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-content-item.mjs +50 -0
- package/fesm2022/eui-ecl-components-ecl-content-item.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-date-block.mjs +18 -0
- package/fesm2022/eui-ecl-components-ecl-date-block.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-expandable.mjs +27 -0
- package/fesm2022/eui-ecl-components-ecl-expandable.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-fact-figures.mjs +64 -0
- package/fesm2022/eui-ecl-components-ecl-fact-figures.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-file.mjs +108 -3
- package/fesm2022/eui-ecl-components-ecl-file.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-icon.mjs +32 -0
- package/fesm2022/eui-ecl-components-ecl-icon.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-label.mjs +20 -0
- package/fesm2022/eui-ecl-components-ecl-label.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs +80 -0
- package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-list.mjs +102 -0
- package/fesm2022/eui-ecl-components-ecl-list.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs +59 -5
- package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-modal.mjs +132 -0
- package/fesm2022/eui-ecl-components-ecl-modal.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs +89 -0
- package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-notification.mjs +51 -0
- package/fesm2022/eui-ecl-components-ecl-notification.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-popover.mjs +69 -1
- package/fesm2022/eui-ecl-components-ecl-popover.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-separator.mjs +7 -0
- package/fesm2022/eui-ecl-components-ecl-separator.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -18,21 +18,48 @@ class EclSlideEvent extends EclBaseEvent {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Represents a single item (slide) within the ECL Carousel.
|
|
23
|
+
* Each slide can optionally include an EclBannerComponent and supports click events.
|
|
24
|
+
*/
|
|
21
25
|
class EclCarouselItemComponent extends ECLBaseDirective {
|
|
22
26
|
constructor(el) {
|
|
23
27
|
super();
|
|
24
28
|
this.el = el;
|
|
29
|
+
/**
|
|
30
|
+
* Sets the ARIA `role` attribute to indicate this is a tab panel.
|
|
31
|
+
*/
|
|
25
32
|
this.role = 'tabpanel';
|
|
33
|
+
/**
|
|
34
|
+
* Sets a more descriptive ARIA role, identifying this element as a slide.
|
|
35
|
+
*/
|
|
26
36
|
this.roleDescription = 'slide';
|
|
37
|
+
/**
|
|
38
|
+
* Indicates whether this slide is currently active/visible.
|
|
39
|
+
* Automatically coerced to a boolean value.
|
|
40
|
+
*/
|
|
27
41
|
this.isCurrent = false;
|
|
42
|
+
/**
|
|
43
|
+
* Emits an event when the slide is clicked.
|
|
44
|
+
*/
|
|
28
45
|
this.slideClick = new EventEmitter();
|
|
29
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Computes and binds the slide's CSS class.
|
|
49
|
+
*/
|
|
30
50
|
get cssClasses() {
|
|
31
51
|
return [super.getCssClasses('ecl-carousel__slide')].join(' ').trim();
|
|
32
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Adds the `inert` attribute if the slide is not active.
|
|
55
|
+
* This disables interaction and focus on inactive slides.
|
|
56
|
+
*/
|
|
33
57
|
get isInert() {
|
|
34
58
|
return !this.isCurrent || undefined;
|
|
35
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Handles click events on the slide and emits a slideClick event.
|
|
62
|
+
*/
|
|
36
63
|
onSlideClick() {
|
|
37
64
|
this.slideClick.next(new EclSlideEvent(this));
|
|
38
65
|
}
|
|
@@ -75,6 +102,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.12", ngImpo
|
|
|
75
102
|
args: ['click']
|
|
76
103
|
}] } });
|
|
77
104
|
|
|
105
|
+
/**
|
|
106
|
+
* Component responsible for rendering a carousel (slideshow) with autoplay, keyboard navigation,
|
|
107
|
+
* and support for RTL layouts. Extends the ECLBaseDirective for consistent styling and behavior.
|
|
108
|
+
*/
|
|
78
109
|
class EclCarouselComponent extends ECLBaseDirective {
|
|
79
110
|
constructor(cdkBreakpointObserver, cd, renderer2, eclRtlService) {
|
|
80
111
|
super();
|
|
@@ -82,13 +113,37 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
82
113
|
this.cd = cd;
|
|
83
114
|
this.renderer2 = renderer2;
|
|
84
115
|
this.eclRtlService = eclRtlService;
|
|
116
|
+
/**
|
|
117
|
+
* Aria-label for screen readers to describe the carousel.
|
|
118
|
+
*/
|
|
85
119
|
this.ariaLabel = 'Carousel description here';
|
|
120
|
+
/**
|
|
121
|
+
* Aria-role description for screen readers, identifying this component as a carousel.
|
|
122
|
+
*/
|
|
86
123
|
this.ariaRoleDescription = 'carousel';
|
|
124
|
+
/**
|
|
125
|
+
* Interval in milliseconds between automatic slide transitions.
|
|
126
|
+
*/
|
|
87
127
|
this.playInterval = 5000;
|
|
128
|
+
/**
|
|
129
|
+
* Event emitted when a slide change occurs.
|
|
130
|
+
*/
|
|
88
131
|
this.slide = new EventEmitter();
|
|
132
|
+
/**
|
|
133
|
+
* Indicates whether autoplay is currently active.
|
|
134
|
+
*/
|
|
89
135
|
this.isPlaying = false;
|
|
136
|
+
/**
|
|
137
|
+
* Indicates whether autoplay was manually paused.
|
|
138
|
+
*/
|
|
90
139
|
this.isPausedForced = false;
|
|
140
|
+
/**
|
|
141
|
+
* Indicates whether the layout is currently in RTL mode.
|
|
142
|
+
*/
|
|
91
143
|
this.isRtl = false;
|
|
144
|
+
/**
|
|
145
|
+
* Duration of the slide transition animation (in seconds).
|
|
146
|
+
*/
|
|
92
147
|
this.transitionDuration = 0.4;
|
|
93
148
|
this.isMobileBreakpoint = false;
|
|
94
149
|
this.isSmallTabletBreakpoint = false;
|
|
@@ -97,6 +152,9 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
97
152
|
this.playSubject = new Subject();
|
|
98
153
|
this.stopSubject = new Subject();
|
|
99
154
|
this.destroy$ = new Subject();
|
|
155
|
+
/**
|
|
156
|
+
* Debounce interval (ms) used internally for timing and transitions.
|
|
157
|
+
*/
|
|
100
158
|
this.TIMEOUT_INTERVAL = 400;
|
|
101
159
|
afterNextRender(() => {
|
|
102
160
|
this.observeElementSizeChanges();
|
|
@@ -104,18 +162,30 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
104
162
|
this.observeBreakpointChanges();
|
|
105
163
|
});
|
|
106
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Returns the computed CSS class list for the component.
|
|
167
|
+
*/
|
|
107
168
|
get cssClasses() {
|
|
108
169
|
return [super.getCssClasses('ecl-carousel')].join(' ').trim();
|
|
109
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* Angular lifecycle hook: initializes autoplay and RTL detection.
|
|
173
|
+
*/
|
|
110
174
|
ngOnInit() {
|
|
111
175
|
this.initAutoplay();
|
|
112
176
|
this.handleRtlChangeState();
|
|
113
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* Angular lifecycle hook: called after content (slides) is initialized.
|
|
180
|
+
*/
|
|
114
181
|
ngAfterContentInit() {
|
|
115
182
|
setTimeout(() => {
|
|
116
183
|
this.initializeSlider();
|
|
117
184
|
});
|
|
118
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Angular lifecycle hook: cleans up subscriptions and event listeners.
|
|
188
|
+
*/
|
|
119
189
|
ngOnDestroy() {
|
|
120
190
|
this.destroy$.next(true);
|
|
121
191
|
this.destroy$.unsubscribe();
|
|
@@ -123,14 +193,23 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
123
193
|
this.unsubscribeListener();
|
|
124
194
|
}
|
|
125
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* Starts autoplay and focuses the pause button.
|
|
198
|
+
*/
|
|
126
199
|
onPlayClick() {
|
|
127
200
|
this.startPlaying();
|
|
128
201
|
this.focusOnButton(this.pauseButton);
|
|
129
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* Stops autoplay and focuses the play button.
|
|
205
|
+
*/
|
|
130
206
|
onPauseClick() {
|
|
131
207
|
this.stopPlaying();
|
|
132
208
|
this.focusOnButton(this.playButton);
|
|
133
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* Handles key press on the first carousel element to stop autoplay if TAB is pressed.
|
|
212
|
+
*/
|
|
134
213
|
onFirstCarouselElementPress(e) {
|
|
135
214
|
if (e.key === KeyCode.TAB) {
|
|
136
215
|
if (this.isPlaying) {
|
|
@@ -138,6 +217,9 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
138
217
|
}
|
|
139
218
|
}
|
|
140
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* Handles keyboard interaction on the play button.
|
|
222
|
+
*/
|
|
141
223
|
onPlayKeyboardPress(e) {
|
|
142
224
|
if (e.key === KeyCode.TAB && e.shiftKey) {
|
|
143
225
|
return;
|
|
@@ -156,6 +238,9 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
156
238
|
this.focusOnButton(this.navigationButtons.get(this.getCurrentSlideIndex()));
|
|
157
239
|
}
|
|
158
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* Handles keyboard navigation for the navigation buttons.
|
|
243
|
+
*/
|
|
159
244
|
onNavBtnKeyboardPress(e, index) {
|
|
160
245
|
if (e.key === KeyCode.ARROW_RIGHT) {
|
|
161
246
|
this.onNavigationButtonArrowRight(e);
|
|
@@ -165,47 +250,81 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
165
250
|
}
|
|
166
251
|
return;
|
|
167
252
|
}
|
|
253
|
+
/**
|
|
254
|
+
* Checks whether a given button is currently visible (not hidden via style).
|
|
255
|
+
*/
|
|
168
256
|
isButtonVisible(button) {
|
|
169
257
|
if (!button) {
|
|
170
258
|
return false;
|
|
171
259
|
}
|
|
172
260
|
return button.nativeElement.style.display === '';
|
|
173
261
|
}
|
|
262
|
+
/**
|
|
263
|
+
* Sets focus on the specified button.
|
|
264
|
+
*/
|
|
174
265
|
focusOnButton(button) {
|
|
175
266
|
if (!button) {
|
|
176
267
|
return;
|
|
177
268
|
}
|
|
178
269
|
button.nativeElement.focus();
|
|
179
270
|
}
|
|
271
|
+
/**
|
|
272
|
+
* Handles user interaction with a slide control button.
|
|
273
|
+
*/
|
|
180
274
|
onSlideControlClick(slide) {
|
|
181
275
|
this.stopPlaying();
|
|
182
276
|
this.activateSlide(slide, true);
|
|
183
277
|
}
|
|
278
|
+
/**
|
|
279
|
+
* Navigates to the next slide and stops autoplay.
|
|
280
|
+
*/
|
|
184
281
|
onNextSlideClick() {
|
|
185
282
|
this.stopPlaying();
|
|
186
283
|
this.goToNextSlide(true);
|
|
187
284
|
}
|
|
285
|
+
/**
|
|
286
|
+
* Navigates to the previous slide and stops autoplay.
|
|
287
|
+
*/
|
|
188
288
|
onPreviousSlideClick() {
|
|
189
289
|
this.stopPlaying();
|
|
190
290
|
this.goToPreviousSlide(true);
|
|
191
291
|
}
|
|
292
|
+
/**
|
|
293
|
+
* Pauses autoplay on mouse hover.
|
|
294
|
+
*/
|
|
192
295
|
onSlideHover() {
|
|
193
296
|
this.pausePlaying();
|
|
194
297
|
}
|
|
298
|
+
/**
|
|
299
|
+
* Resumes autoplay on mouse leave, if not manually paused.
|
|
300
|
+
*/
|
|
195
301
|
onSlideHoverout() {
|
|
196
302
|
if (!this.isStopButtonPressed()) {
|
|
197
303
|
this.resumePlaying();
|
|
198
304
|
}
|
|
199
305
|
}
|
|
306
|
+
/**
|
|
307
|
+
* Returns whether the stop button (pause) has been pressed by the user.
|
|
308
|
+
*/
|
|
200
309
|
isStopButtonPressed() {
|
|
201
310
|
return this.isPausedForced;
|
|
202
311
|
}
|
|
312
|
+
/**
|
|
313
|
+
* Returns whether the carousel has padding applied (e.g., on desktop breakpoint).
|
|
314
|
+
*/
|
|
203
315
|
isPadded() {
|
|
204
316
|
return this.isDesktopBreakpoint;
|
|
205
317
|
}
|
|
318
|
+
/**
|
|
319
|
+
* Checks whether there are enough slides to render controls.
|
|
320
|
+
*/
|
|
206
321
|
hasControls() {
|
|
207
322
|
return this.getSlidesCount() > 1;
|
|
208
323
|
}
|
|
324
|
+
/**
|
|
325
|
+
* Retrieves the current active slide index.
|
|
326
|
+
* Corrects index for internal structure with hidden buffer slides.
|
|
327
|
+
*/
|
|
209
328
|
getCurrentSlideIndex() {
|
|
210
329
|
let currentIndex;
|
|
211
330
|
this.getAllSlidesArray().forEach((item, idx) => {
|
|
@@ -221,20 +340,35 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
221
340
|
}
|
|
222
341
|
return currentIndex - 1;
|
|
223
342
|
}
|
|
343
|
+
/**
|
|
344
|
+
* Calculates the total width of the slides container based on the number of slides.
|
|
345
|
+
*/
|
|
224
346
|
getCarouselSlidesWidth() {
|
|
225
347
|
return this.carouselContainerElement?.nativeElement.offsetWidth * this.getAllSlidesCount();
|
|
226
348
|
}
|
|
349
|
+
/**
|
|
350
|
+
* Computes the left offset to shift the slides container.
|
|
351
|
+
*/
|
|
227
352
|
getCarouselSlidesOffsetLeft() {
|
|
228
353
|
return -1 * this.carouselContainerElement?.nativeElement.offsetWidth * this.getCurrentItemIndex();
|
|
229
354
|
}
|
|
355
|
+
/**
|
|
356
|
+
* Computes the right offset to shift the slides container (same logic as left in RTL).
|
|
357
|
+
*/
|
|
230
358
|
getCarouselSlidesOffsetRight() {
|
|
231
359
|
return -1 * this.carouselContainerElement?.nativeElement.offsetWidth * this.getCurrentItemIndex();
|
|
232
360
|
}
|
|
361
|
+
/**
|
|
362
|
+
* Subscribes to RTL layout state changes to adapt carousel behavior.
|
|
363
|
+
*/
|
|
233
364
|
handleRtlChangeState() {
|
|
234
365
|
this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {
|
|
235
366
|
this.isRtl = rtlState;
|
|
236
367
|
});
|
|
237
368
|
}
|
|
369
|
+
/**
|
|
370
|
+
* Initializes autoplay logic using RxJS intervals and subject triggers.
|
|
371
|
+
*/
|
|
238
372
|
initAutoplay() {
|
|
239
373
|
const start$ = this.playSubject.asObservable();
|
|
240
374
|
const stop$ = this.stopSubject.asObservable();
|
|
@@ -244,6 +378,9 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
244
378
|
this.goToNextSlide(true);
|
|
245
379
|
});
|
|
246
380
|
}
|
|
381
|
+
/**
|
|
382
|
+
* Returns the index of the currently active slide item.
|
|
383
|
+
*/
|
|
247
384
|
getCurrentItemIndex() {
|
|
248
385
|
let result = 0;
|
|
249
386
|
this.getAllSlidesArray().forEach((item, index) => {
|
|
@@ -253,6 +390,9 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
253
390
|
});
|
|
254
391
|
return result;
|
|
255
392
|
}
|
|
393
|
+
/**
|
|
394
|
+
* Initializes slides, hidden buffer items, and sets default active slide.
|
|
395
|
+
*/
|
|
256
396
|
initializeSlider() {
|
|
257
397
|
this.slides.forEach((item, idx) => {
|
|
258
398
|
this.initSlide(item, idx);
|
|
@@ -264,6 +404,9 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
264
404
|
}
|
|
265
405
|
}
|
|
266
406
|
}
|
|
407
|
+
/**
|
|
408
|
+
* Initializes hidden first and last slide clones used for infinite scroll illusion.
|
|
409
|
+
*/
|
|
267
410
|
initHiddenItems() {
|
|
268
411
|
this.firstHiddenItem.el.nativeElement.innerHTML = this.getLastContentChild();
|
|
269
412
|
this.firstHiddenItem.isCurrent = false;
|
|
@@ -272,6 +415,9 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
272
415
|
this.slideWidth = this.slides.first.width;
|
|
273
416
|
this.unsubscribeListener = this.renderer2.listen(this.slidesContainer.nativeElement, 'transitionend', () => this.checkIndex());
|
|
274
417
|
}
|
|
418
|
+
/**
|
|
419
|
+
* Verifies current index and resets to actual slide if hidden clone is reached.
|
|
420
|
+
*/
|
|
275
421
|
checkIndex() {
|
|
276
422
|
if (this.getCurrentItemIndex() === this.getAllSlidesCount() - 1) {
|
|
277
423
|
const item = this.slides.first;
|
|
@@ -282,23 +428,41 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
282
428
|
this.activateSlide(item, false);
|
|
283
429
|
}
|
|
284
430
|
}
|
|
431
|
+
/**
|
|
432
|
+
* Returns the inner HTML of the last real slide (used for buffer item).
|
|
433
|
+
*/
|
|
285
434
|
getLastContentChild() {
|
|
286
435
|
return this.getSlidesCount() > 0 ? this.slides.get(this.getSlidesCount() - 1).el.nativeElement.innerHTML : '';
|
|
287
436
|
}
|
|
437
|
+
/**
|
|
438
|
+
* Returns the inner HTML of the first real slide (used for buffer item).
|
|
439
|
+
*/
|
|
288
440
|
getFirstContentChild() {
|
|
289
441
|
return this.getSlidesCount() > 0 ? this.slides.get(0).el.nativeElement.innerHTML : '';
|
|
290
442
|
}
|
|
443
|
+
/**
|
|
444
|
+
* Sets up a slide with index, ARIA label, and calculated width.
|
|
445
|
+
*/
|
|
291
446
|
initSlide(item, idx) {
|
|
292
447
|
item.index = idx;
|
|
293
448
|
item.ariaLabel = `slide ${idx + 1} of ${this.getSlidesCount()}`;
|
|
294
449
|
item.width = 100 / this.getAllSlidesCount();
|
|
295
450
|
}
|
|
451
|
+
/**
|
|
452
|
+
* Activates the next slide, with option to loop.
|
|
453
|
+
*/
|
|
296
454
|
goToNextSlide(isLoop) {
|
|
297
455
|
this.activateSlide(this.getNextSlide(isLoop), true);
|
|
298
456
|
}
|
|
457
|
+
/**
|
|
458
|
+
* Activates the previous slide, with option to loop.
|
|
459
|
+
*/
|
|
299
460
|
goToPreviousSlide(isLoop) {
|
|
300
461
|
this.activateSlide(this.getPreviousSlide(isLoop), true);
|
|
301
462
|
}
|
|
463
|
+
/**
|
|
464
|
+
* Activates a specific slide and triggers slide change event if needed.
|
|
465
|
+
*/
|
|
302
466
|
activateSlide(slideItem, withTransition) {
|
|
303
467
|
if (withTransition) {
|
|
304
468
|
this.transitionDuration = 0.4;
|
|
@@ -317,35 +481,56 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
317
481
|
this.slide.next(new EclSlideEvent(this.slides.get(this.getCurrentSlideIndex())));
|
|
318
482
|
}
|
|
319
483
|
}
|
|
484
|
+
/**
|
|
485
|
+
* Checks if the currently focused button is the last in the list.
|
|
486
|
+
*/
|
|
320
487
|
isLastButton(index) {
|
|
321
488
|
const buttonsList = this.navigationButtons;
|
|
322
489
|
return index + 1 >= buttonsList.length;
|
|
323
490
|
}
|
|
491
|
+
/**
|
|
492
|
+
* Checks if the currently focused button is the first in the list.
|
|
493
|
+
*/
|
|
324
494
|
isFirstButton(index) {
|
|
325
495
|
return index <= 0;
|
|
326
496
|
}
|
|
497
|
+
/**
|
|
498
|
+
* Starts autoplay mode and updates state.
|
|
499
|
+
*/
|
|
327
500
|
startPlaying() {
|
|
328
501
|
this.isPlaying = true;
|
|
329
502
|
this.cd.detectChanges();
|
|
330
503
|
this.isPausedForced = false;
|
|
331
504
|
this.playSubject.next();
|
|
332
505
|
}
|
|
506
|
+
/**
|
|
507
|
+
* Stops autoplay mode and updates state.
|
|
508
|
+
*/
|
|
333
509
|
stopPlaying() {
|
|
334
510
|
this.isPlaying = false;
|
|
335
511
|
this.cd.detectChanges();
|
|
336
512
|
this.isPausedForced = true;
|
|
337
513
|
this.stopSubject.next();
|
|
338
514
|
}
|
|
515
|
+
/**
|
|
516
|
+
* Temporarily pauses autoplay (e.g. on mouse hover).
|
|
517
|
+
*/
|
|
339
518
|
pausePlaying() {
|
|
340
519
|
this.isPlaying = false;
|
|
341
520
|
this.cd.detectChanges();
|
|
342
521
|
this.stopSubject.next();
|
|
343
522
|
}
|
|
523
|
+
/**
|
|
524
|
+
* Resumes autoplay after being paused.
|
|
525
|
+
*/
|
|
344
526
|
resumePlaying() {
|
|
345
527
|
this.isPlaying = true;
|
|
346
528
|
this.cd.detectChanges();
|
|
347
529
|
this.playSubject.next();
|
|
348
530
|
}
|
|
531
|
+
/**
|
|
532
|
+
* Retrieves the next slide based on the current index and loop setting.
|
|
533
|
+
*/
|
|
349
534
|
getNextSlide(isLoop) {
|
|
350
535
|
const slidesCount = this.getSlidesCount();
|
|
351
536
|
const currentIndex = this.getCurrentSlideIndex();
|
|
@@ -361,9 +546,15 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
361
546
|
return this.slides.get(currentIndex + 1);
|
|
362
547
|
}
|
|
363
548
|
}
|
|
549
|
+
/**
|
|
550
|
+
* Returns all slides, including the hidden buffer items.
|
|
551
|
+
*/
|
|
364
552
|
getAllSlidesArray() {
|
|
365
553
|
return [...[this.firstHiddenItem], ...this.slides.toArray(), ...[this.lastHiddenItem]];
|
|
366
554
|
}
|
|
555
|
+
/**
|
|
556
|
+
* Retrieves the previous slide based on the current index and loop setting.
|
|
557
|
+
*/
|
|
367
558
|
getPreviousSlide(isLoop) {
|
|
368
559
|
const currentIndex = this.getCurrentSlideIndex();
|
|
369
560
|
if (currentIndex <= 0) {
|
|
@@ -378,9 +569,15 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
378
569
|
return this.slides.get(currentIndex - 1);
|
|
379
570
|
}
|
|
380
571
|
}
|
|
572
|
+
/**
|
|
573
|
+
* Returns the number of actual visible slides (excluding hidden buffer).
|
|
574
|
+
*/
|
|
381
575
|
getSlidesCount() {
|
|
382
576
|
return this.slides.length;
|
|
383
577
|
}
|
|
578
|
+
/**
|
|
579
|
+
* Returns total number of slides, including buffer (hidden) items.
|
|
580
|
+
*/
|
|
384
581
|
getAllSlidesCount() {
|
|
385
582
|
if (this.hasControls()) {
|
|
386
583
|
return this.slides.length + 2;
|
|
@@ -389,9 +586,15 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
389
586
|
return this.slides.length;
|
|
390
587
|
}
|
|
391
588
|
}
|
|
589
|
+
/**
|
|
590
|
+
* Determines whether no slide is currently marked as active.
|
|
591
|
+
*/
|
|
392
592
|
isNoSlideSelected() {
|
|
393
593
|
return !this.slides.some((item) => item.isCurrent);
|
|
394
594
|
}
|
|
595
|
+
/**
|
|
596
|
+
* Handles right arrow key navigation for buttons.
|
|
597
|
+
*/
|
|
395
598
|
onNavigationButtonArrowRight(e) {
|
|
396
599
|
setTimeout(() => {
|
|
397
600
|
this.goToNextSlide(false);
|
|
@@ -400,6 +603,9 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
400
603
|
}, this.TIMEOUT_INTERVAL);
|
|
401
604
|
e.preventDefault();
|
|
402
605
|
}
|
|
606
|
+
/**
|
|
607
|
+
* Handles left arrow key navigation for buttons.
|
|
608
|
+
*/
|
|
403
609
|
onNavigationButtonArrowLeft(e, index) {
|
|
404
610
|
if (this.isFirstButton(index)) {
|
|
405
611
|
if (this.playButton) {
|
|
@@ -418,6 +624,9 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
418
624
|
e.preventDefault();
|
|
419
625
|
}
|
|
420
626
|
}
|
|
627
|
+
/**
|
|
628
|
+
* Observes screen breakpoint changes to adjust autoplay and layout behavior.
|
|
629
|
+
*/
|
|
421
630
|
observeBreakpointChanges() {
|
|
422
631
|
this.cdkBreakpointObserver
|
|
423
632
|
.observe([
|
|
@@ -442,6 +651,9 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
442
651
|
}
|
|
443
652
|
});
|
|
444
653
|
}
|
|
654
|
+
/**
|
|
655
|
+
* Observes changes to the carousel's container element size using ResizeObserver.
|
|
656
|
+
*/
|
|
445
657
|
observeElementSizeChanges() {
|
|
446
658
|
new ResizeObserver(() => {
|
|
447
659
|
setTimeout(() => {
|
|
@@ -455,6 +667,9 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
455
667
|
}, this.TIMEOUT_INTERVAL);
|
|
456
668
|
}).observe(this.carouselContainerElement.nativeElement);
|
|
457
669
|
}
|
|
670
|
+
/**
|
|
671
|
+
* Normalizes the height of all banners to match the tallest banner.
|
|
672
|
+
*/
|
|
458
673
|
checkBannerHeights() {
|
|
459
674
|
const heightValues = this.slides.map((slide) => {
|
|
460
675
|
const height = slide.banner?.el.nativeElement.offsetHeight;
|
|
@@ -482,6 +697,9 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
482
697
|
this.resetHiddenItems();
|
|
483
698
|
}
|
|
484
699
|
}
|
|
700
|
+
/**
|
|
701
|
+
* Clears all explicit banner height and aspect ratio styling for smaller breakpoints.
|
|
702
|
+
*/
|
|
485
703
|
resetHeight() {
|
|
486
704
|
this.getAllSlidesArray().forEach((slide) => {
|
|
487
705
|
const banner = slide.banner;
|
|
@@ -499,6 +717,9 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
499
717
|
});
|
|
500
718
|
this.resetHiddenItems();
|
|
501
719
|
}
|
|
720
|
+
/**
|
|
721
|
+
* Re-renders the content of hidden buffer items after style reset.
|
|
722
|
+
*/
|
|
502
723
|
resetHiddenItems() {
|
|
503
724
|
if (this.hasControls()) {
|
|
504
725
|
this.firstHiddenItem.el.nativeElement.innerHTML = this.getLastContentChild();
|