@eui/ecl 21.0.0-next.9 → 21.0.0-rc.1
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 +863 -0
- package/docs/components/EclAccordionComponent.html +9 -3
- package/docs/components/EclAccordionItemComponent.html +9 -3
- package/docs/components/EclAppComponent.html +3 -3
- package/docs/components/EclBannerComponent.html +17 -5
- package/docs/components/EclBlockquoteComponent.html +3 -3
- package/docs/components/EclBreadcrumbComponent.html +12 -46
- package/docs/components/EclBreadcrumbSegmentComponent.html +10 -4
- package/docs/components/EclButtonComponent.html +9 -3
- package/docs/components/EclCardBodyComponent.html +3 -3
- package/docs/components/EclCardComponent.html +3 -3
- package/docs/components/EclCarouselComponent.html +31 -5
- package/docs/components/EclCarouselItemComponent.html +9 -3
- package/docs/components/EclCategoryFilterComponent.html +9 -3
- package/docs/components/EclCategoryFilterItemComponent.html +21 -5
- package/docs/components/EclCategoryFilterListComponent.html +9 -5
- package/docs/components/EclCheckboxHelpComponent.html +3 -3
- package/docs/components/EclCheckboxLabelComponent.html +3 -3
- package/docs/components/EclContentBlockComponent.html +3 -3
- package/docs/components/EclContentItemComponent.html +3 -3
- package/docs/components/EclDateBlockComponent.html +8 -6
- package/docs/components/EclDescriptionListDefinitionComponent.html +3 -5
- package/docs/components/EclExpandableComponent.html +3 -3
- package/docs/components/EclFactFiguresComponent.html +3 -3
- package/docs/components/EclFactFiguresItemComponent.html +3 -3
- package/docs/components/EclFactFiguresViewAllComponent.html +3 -3
- package/docs/components/EclFeaturedComponent.html +9 -3
- package/docs/components/EclFeaturedItemComponent.html +9 -3
- package/docs/components/EclFeaturedItemDescriptionComponent.html +9 -3
- package/docs/components/EclFileComponent.html +9 -3
- package/docs/components/EclFileItemComponent.html +3 -3
- package/docs/components/EclFileItemsComponent.html +3 -3
- package/docs/components/EclFileTaxonomyComponent.html +3 -3
- package/docs/components/EclFormGroupComponent.html +3 -3
- package/docs/components/EclFormLabelComponent.html +10 -4
- package/docs/components/EclGalleryComponent.html +15 -3
- package/docs/components/EclGalleryFooterComponent.html +9 -9
- package/docs/components/EclGalleryItemComponent.html +4 -75
- package/docs/components/EclIconComponent.html +15 -3
- package/docs/components/EclInpageNavigationComponent.html +19 -42
- package/docs/components/EclInpageNavigationItemComponent.html +10 -4
- package/docs/components/EclListIllustrationComponent.html +3 -3
- package/docs/components/EclListIllustrationItemComponent.html +21 -3
- package/docs/components/EclLoadingIndicatorComponent.html +3 -3
- package/docs/components/EclMediaContainerComponent.html +9 -3
- package/docs/components/EclMegaMenuComponent.html +56 -4
- package/docs/components/EclMegaMenuFeaturedComponent.html +9 -3
- package/docs/components/EclMegaMenuInfoComponent.html +9 -3
- package/docs/components/EclMegaMenuItemComponent.html +39 -3
- package/docs/components/EclMegaMenuSubitemComponent.html +18 -24
- package/docs/components/EclMenuComponent.html +51 -3
- package/docs/components/EclMenuItemComponent.html +33 -3
- package/docs/components/EclMenuMegaComponent.html +9 -3
- package/docs/components/EclMenuMegaItemComponent.html +21 -3
- package/docs/components/EclModalBodyComponent.html +4 -40
- package/docs/components/EclModalComponent.html +9 -5
- package/docs/components/EclModalFooterComponent.html +3 -3
- package/docs/components/EclModalHeaderComponent.html +9 -3
- package/docs/components/EclMultiselectComponent.html +9 -13
- package/docs/components/EclMultiselectDropdownComponent.html +27 -7
- package/docs/components/EclMultiselectInputComponent.html +3 -3
- package/docs/components/EclMultiselectOptgroupComponent.html +3 -3
- package/docs/components/EclMultiselectOptionComponent.html +10 -8
- package/docs/components/EclNavigationListComponent.html +3 -3
- package/docs/components/EclNavigationListItemComponent.html +9 -3
- package/docs/components/EclNewsTickerComponent.html +15 -5
- package/docs/components/EclNewsTickerItemComponent.html +9 -5
- package/docs/components/EclNotificationComponent.html +70 -4
- package/docs/components/EclPageHeaderComponent.html +3 -3
- package/docs/components/EclPageHeaderExpandableComponent.html +15 -4
- package/docs/components/EclPaginationComponent.html +15 -3
- package/docs/components/EclPaginationItemComponent.html +10 -4
- package/docs/components/EclPopoverComponent.html +9 -38
- package/docs/components/EclRadioHelpComponent.html +3 -3
- package/docs/components/EclRadioLabelComponent.html +3 -3
- package/docs/components/EclRangeBubbleComponent.html +15 -3
- package/docs/components/EclRangeValueComponent.html +3 -3
- package/docs/components/EclRatingFieldComponent.html +3 -3
- package/docs/components/EclSearchFormComponent.html +8 -8
- package/docs/components/EclSelectContainerComponent.html +3 -3
- package/docs/components/EclSiteFooterComponent.html +23 -4
- package/docs/components/{EclTabMoreComponent.html → EclSiteFooterCoownerComponent.html} +16 -50
- package/docs/components/EclSiteFooterCoreComponent.html +3 -3
- package/docs/components/EclSiteFooterFixedContentEUComponent.html +4 -4
- package/docs/components/EclSiteFooterRowCommonComponent.html +3 -3
- package/docs/components/EclSiteHeaderActionComponent.html +3 -3
- package/docs/components/EclSiteHeaderBannerTopComponent.html +9 -3
- package/docs/components/EclSiteHeaderComponent.html +9 -22
- package/docs/components/EclSiteHeaderCustomActionComponent.html +9 -3
- package/docs/components/EclSiteHeaderEnvironmentComponent.html +3 -3
- package/docs/components/EclSiteHeaderLanguageComponent.html +9 -3
- package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +10 -4
- package/docs/components/EclSiteHeaderLoginComponent.html +9 -3
- package/docs/components/EclSiteHeaderNotificationComponent.html +3 -3
- package/docs/components/EclSiteHeaderSearchComponent.html +13 -7
- package/docs/components/EclSocialMediaFollowComponent.html +3 -3
- package/docs/components/EclSocialMediaFollowItemComponent.html +34 -5
- package/docs/components/EclSplashPageComponent.html +3 -3
- package/docs/components/EclSplashPageLanguageCategoryComponent.html +3 -3
- package/docs/components/EclSplashPageLanguageContainerComponent.html +3 -3
- package/docs/components/EclSplashPageLanguageLinkComponent.html +3 -3
- package/docs/components/EclSpotlightComponent.html +9 -3
- package/docs/components/EclSpotlightLinkComponent.html +21 -3
- package/docs/components/EclStickyContainerComponent.html +3 -3
- package/docs/components/EclTabComponent.html +10 -6
- package/docs/components/EclTabLabelComponent.html +9 -3
- package/docs/components/EclTableSortButtonComponent.html +9 -3
- package/docs/components/EclTabsComponent.html +46 -74
- package/docs/components/EclTagComponent.html +15 -3
- package/docs/components/EclTimelineComponent.html +3 -3
- package/docs/components/EclTimelineItemComponent.html +3 -3
- package/docs/components/EclTimelineItemTogglerComponent.html +3 -3
- package/docs/directives/ECLClickOutsideDirective.html +5 -1
- package/docs/directives/ECLFormLabelOptionalDirective.html +6 -0
- package/docs/directives/EclBannerDescriptionLinkDirective.html +6 -0
- package/docs/directives/EclBannerImageDirective.html +12 -0
- package/docs/directives/EclBannerTitleLinkDirective.html +6 -0
- package/docs/directives/EclBannerVideoDirective.html +6 -0
- package/docs/directives/EclBreadcrumbContainerDirective.html +6 -23
- package/docs/directives/EclButtonIconContainerDirective.html +6 -0
- package/docs/directives/EclCardImageDirective.html +6 -0
- package/docs/directives/EclCheckboxInputDirective.html +6 -0
- package/docs/directives/EclContentItemImageDirective.html +6 -0
- package/docs/directives/EclDescriptionListDefinitionItemDirective.html +12 -0
- package/docs/directives/EclDescriptionListDefinitionListDirective.html +6 -0
- package/docs/directives/EclDescriptionListTermDirective.html +6 -0
- package/docs/directives/EclDividerDirective.html +6 -0
- package/docs/directives/EclFeaturedItemLinkDirective.html +6 -2
- package/docs/directives/EclFeedbackHiddenDirective.html +385 -0
- package/docs/directives/EclFileDownloadDirective.html +6 -0
- package/docs/directives/EclFileImageDirective.html +6 -0
- package/docs/directives/EclFilePreviewDirective.html +12 -0
- package/docs/directives/EclFileTitleDirective.html +6 -0
- package/docs/directives/EclFileTranslationDownloadDirective.html +6 -0
- package/docs/directives/EclGalleryMediaDirective.html +6 -0
- package/docs/directives/EclGalleryPictureDirective.html +6 -0
- package/docs/{modules/EclFormLabelModule.html → directives/EclHelpHiddenDirective.html} +169 -57
- package/docs/directives/EclIndicatorDirective.html +6 -0
- package/docs/directives/EclInpageNavigationListDirective.html +18 -0
- package/docs/directives/EclLinkDirective.html +150 -8
- package/docs/directives/EclLinkIconContainerDirective.html +6 -0
- package/docs/directives/EclLinkIndicatorDirective.html +6 -0
- package/docs/directives/EclListIllustrationIconDirective.html +6 -0
- package/docs/directives/EclListIllustrationImageDirective.html +6 -0
- package/docs/directives/EclLoadingIndicatorLabelDirective.html +6 -0
- package/docs/directives/EclMediaContainerIframeDirective.html +6 -0
- package/docs/directives/EclMediaContainerItemDirective.html +12 -0
- package/docs/directives/EclMegaMenuContainerDirective.html +6 -0
- package/docs/directives/EclMegaMenuFeaturedImageDirective.html +6 -0
- package/docs/directives/EclMegaMenuFeaturedListDirective.html +6 -0
- package/docs/directives/EclMegaMenuFeaturedListItemDescriptionDirective.html +6 -0
- package/docs/directives/EclMegaMenuFeaturedListItemDirective.html +6 -0
- package/docs/directives/EclMegaMenuListDirective.html +6 -0
- package/docs/directives/EclMegaMenuSpacerDirective.html +6 -0
- package/docs/directives/EclMegaMenuSublistDirective.html +18 -0
- package/docs/directives/EclModalBodyFixedContentDirective.html +6 -0
- package/docs/directives/EclMultiselectOptionDirective.html +11 -5
- package/docs/directives/EclNewsTickerIconDirective.html +6 -0
- package/docs/{modules/EclNotificationModule.html → directives/EclNotificationIconDirective.html} +169 -57
- package/docs/directives/{EclSiteFooterLogoListDirective.html → EclNotificationLinkDirective.html} +57 -161
- package/docs/directives/EclOrderedListDirective.html +6 -0
- package/docs/directives/EclOrderedListItemDirective.html +6 -0
- package/docs/directives/EclPaginationListDirective.html +6 -0
- package/docs/directives/EclPopoverToggleDirective.html +12 -0
- package/docs/directives/EclRadioInputDirective.html +6 -0
- package/docs/directives/EclSiteFooterColumnDirective.html +6 -0
- package/docs/directives/{EclSiteFooterLogoDirective.html → EclSiteFooterCoownerItemDirective.html} +63 -31
- package/docs/directives/{EclSiteFooterLogoItemDirective.html → EclSiteFooterCoownerListDirective.html} +50 -166
- package/docs/directives/EclSiteFooterDescriptionDirective.html +6 -0
- package/docs/directives/EclSiteFooterDescriptionNameDirective.html +6 -0
- package/docs/directives/EclSiteFooterLinkDirective.html +6 -0
- package/docs/directives/EclSiteFooterListDirective.html +6 -19
- package/docs/directives/EclSiteFooterListItemDirective.html +6 -0
- package/docs/directives/EclSiteFooterLogoImageDirective.html +6 -0
- package/docs/directives/EclSiteFooterLogoLinkDirective.html +6 -0
- package/docs/directives/EclSiteFooterRowDirective.html +6 -0
- package/docs/directives/EclSiteFooterSectionDirective.html +0 -96
- package/docs/directives/EclSiteFooterSocialMediaDirective.html +6 -0
- package/docs/directives/EclSiteFooterTitleDirective.html +6 -0
- package/docs/directives/EclSiteFooterTitleLinkDirective.html +6 -0
- package/docs/directives/EclSiteHeaderCtaDirective.html +6 -0
- package/docs/directives/EclSiteHeaderCustomActionContentDirective.html +6 -0
- package/docs/directives/EclSiteHeaderCustomActionTitleDirective.html +6 -0
- package/docs/directives/EclSpotlightImageDirective.html +6 -0
- package/docs/directives/EclTableCaptionDirective.html +6 -0
- package/docs/directives/EclTagSetItemDirective.html +6 -0
- package/docs/directives/EclTimelineSetDirective.html +6 -0
- package/docs/directives/EclUnorderedListDirective.html +6 -0
- package/docs/directives/EclUnorderedListItemDirective.html +6 -0
- package/docs/injectables/EclRtlService.html +6 -0
- package/docs/js/libs/bootstrap-native.js +1 -1
- package/docs/js/libs/vis-network.min.js +78 -0
- package/docs/js/menu-wc.js +53 -2401
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/miscellaneous/functions.html +5 -1
- package/docs/miscellaneous/variables.html +534 -1395
- package/docs/modules.html +2 -722
- package/docs/overview.html +2 -2
- package/docs/properties.html +1 -1
- package/fesm2022/eui-ecl-components-ecl-accordion.mjs +8 -27
- package/fesm2022/eui-ecl-components-ecl-accordion.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-app.mjs +5 -23
- package/fesm2022/eui-ecl-components-ecl-app.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-banner.mjs +36 -85
- package/fesm2022/eui-ecl-components-ecl-banner.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-blockquote.mjs +11 -30
- package/fesm2022/eui-ecl-components-ecl-blockquote.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-breadcrumb.mjs +15 -42
- package/fesm2022/eui-ecl-components-ecl-breadcrumb.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-button.mjs +14 -34
- package/fesm2022/eui-ecl-components-ecl-button.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-card.mjs +14 -45
- package/fesm2022/eui-ecl-components-ecl-card.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-carousel.mjs +8 -27
- package/fesm2022/eui-ecl-components-ecl-carousel.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-category-filter.mjs +11 -30
- package/fesm2022/eui-ecl-components-ecl-category-filter.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-checkbox.mjs +15 -34
- package/fesm2022/eui-ecl-components-ecl-checkbox.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-content-block.mjs +56 -128
- package/fesm2022/eui-ecl-components-ecl-content-block.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-content-item.mjs +11 -30
- package/fesm2022/eui-ecl-components-ecl-content-item.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-date-block.mjs +5 -23
- package/fesm2022/eui-ecl-components-ecl-date-block.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-date-picker.mjs +5 -23
- package/fesm2022/eui-ecl-components-ecl-date-picker.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-divider.mjs +6 -24
- package/fesm2022/eui-ecl-components-ecl-divider.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-expandable.mjs +5 -23
- package/fesm2022/eui-ecl-components-ecl-expandable.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-fact-figures.mjs +14 -48
- package/fesm2022/eui-ecl-components-ecl-fact-figures.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-featured.mjs +14 -47
- package/fesm2022/eui-ecl-components-ecl-featured.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-feedback-message.mjs +5 -23
- package/fesm2022/eui-ecl-components-ecl-feedback-message.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-file-upload.mjs +5 -23
- package/fesm2022/eui-ecl-components-ecl-file-upload.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-file.mjs +32 -81
- package/fesm2022/eui-ecl-components-ecl-file.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-form-group.mjs +5 -23
- package/fesm2022/eui-ecl-components-ecl-form-group.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-form-label.mjs +51 -22
- package/fesm2022/eui-ecl-components-ecl-form-label.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-gallery.mjs +21 -75
- package/fesm2022/eui-ecl-components-ecl-gallery.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-help-block.mjs +5 -23
- package/fesm2022/eui-ecl-components-ecl-help-block.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-icon.mjs +5 -23
- package/fesm2022/eui-ecl-components-ecl-icon.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs +24 -51
- package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-label.mjs +5 -23
- package/fesm2022/eui-ecl-components-ecl-label.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-link.mjs +44 -41
- package/fesm2022/eui-ecl-components-ecl-link.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs +18 -51
- package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-list.mjs +29 -74
- package/fesm2022/eui-ecl-components-ecl-list.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs +11 -30
- package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-media-container.mjs +17 -50
- package/fesm2022/eui-ecl-components-ecl-media-container.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs +50 -112
- package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-menu.mjs +14 -33
- package/fesm2022/eui-ecl-components-ecl-menu.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-modal.mjs +25 -80
- package/fesm2022/eui-ecl-components-ecl-modal.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-multiselect.mjs +27 -66
- package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs +14 -44
- package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs +11 -39
- package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-notification.mjs +86 -50
- package/fesm2022/eui-ecl-components-ecl-notification.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-page-header.mjs +43 -100
- package/fesm2022/eui-ecl-components-ecl-page-header.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-pagination.mjs +12 -32
- package/fesm2022/eui-ecl-components-ecl-pagination.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-popover.mjs +16 -44
- package/fesm2022/eui-ecl-components-ecl-popover.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-radio.mjs +14 -32
- package/fesm2022/eui-ecl-components-ecl-radio.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-range.mjs +11 -30
- package/fesm2022/eui-ecl-components-ecl-range.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-rating-field.mjs +5 -23
- package/fesm2022/eui-ecl-components-ecl-rating-field.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-search-form.mjs +12 -32
- package/fesm2022/eui-ecl-components-ecl-search-form.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-select.mjs +8 -33
- package/fesm2022/eui-ecl-components-ecl-select.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-site-footer.mjs +150 -260
- package/fesm2022/eui-ecl-components-ecl-site-footer.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-site-header.mjs +73 -157
- package/fesm2022/eui-ecl-components-ecl-site-header.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs +14 -32
- package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-splash-page.mjs +29 -74
- package/fesm2022/eui-ecl-components-ecl-splash-page.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-spotlight.mjs +13 -13
- package/fesm2022/eui-ecl-components-ecl-spotlight.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-sticky-container.mjs +5 -23
- package/fesm2022/eui-ecl-components-ecl-sticky-container.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-table.mjs +32 -80
- package/fesm2022/eui-ecl-components-ecl-table.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-tabs.mjs +56 -129
- package/fesm2022/eui-ecl-components-ecl-tabs.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-tag.mjs +14 -33
- package/fesm2022/eui-ecl-components-ecl-tag.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-text-area.mjs +5 -24
- package/fesm2022/eui-ecl-components-ecl-text-area.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-text-input.mjs +5 -24
- package/fesm2022/eui-ecl-components-ecl-text-input.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-timeline.mjs +20 -62
- package/fesm2022/eui-ecl-components-ecl-timeline.mjs.map +1 -1
- package/fesm2022/eui-ecl-core.mjs +25 -62
- package/fesm2022/eui-ecl-core.mjs.map +1 -1
- package/fesm2022/eui-ecl-shared.mjs +3 -3
- package/fesm2022/eui-ecl-shared.mjs.map +1 -1
- package/fesm2022/eui-ecl.mjs +1 -203
- package/fesm2022/eui-ecl.mjs.map +1 -1
- package/package.json +17 -17
- package/types/eui-ecl-components-ecl-accordion.d.ts +1 -13
- package/types/eui-ecl-components-ecl-accordion.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-app.d.ts +2 -13
- package/types/eui-ecl-components-ecl-app.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-banner.d.ts +2 -14
- package/types/eui-ecl-components-ecl-banner.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-blockquote.d.ts +1 -13
- package/types/eui-ecl-components-ecl-blockquote.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-breadcrumb.d.ts +11 -27
- package/types/eui-ecl-components-ecl-breadcrumb.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-button.d.ts +1 -13
- package/types/eui-ecl-components-ecl-button.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-card.d.ts +1 -13
- package/types/eui-ecl-components-ecl-card.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-carousel.d.ts +1 -13
- package/types/eui-ecl-components-ecl-carousel.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-category-filter.d.ts +1 -13
- package/types/eui-ecl-components-ecl-category-filter.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-checkbox.d.ts +1 -12
- package/types/eui-ecl-components-ecl-checkbox.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-content-block.d.ts +1 -12
- package/types/eui-ecl-components-ecl-content-block.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-content-item.d.ts +1 -12
- package/types/eui-ecl-components-ecl-content-item.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-date-block.d.ts +1 -12
- package/types/eui-ecl-components-ecl-date-block.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-date-picker.d.ts +2 -13
- package/types/eui-ecl-components-ecl-date-picker.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-divider.d.ts +1 -12
- package/types/eui-ecl-components-ecl-divider.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-expandable.d.ts +2 -13
- package/types/eui-ecl-components-ecl-expandable.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-fact-figures.d.ts +1 -12
- package/types/eui-ecl-components-ecl-fact-figures.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-featured.d.ts +1 -13
- package/types/eui-ecl-components-ecl-featured.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-feedback-message.d.ts +1 -12
- package/types/eui-ecl-components-ecl-feedback-message.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-file-upload.d.ts +1 -12
- package/types/eui-ecl-components-ecl-file-upload.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-file.d.ts +1 -12
- package/types/eui-ecl-components-ecl-file.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-form-group.d.ts +1 -12
- package/types/eui-ecl-components-ecl-form-group.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-form-label.d.ts +24 -10
- package/types/eui-ecl-components-ecl-form-label.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-gallery.d.ts +3 -20
- package/types/eui-ecl-components-ecl-gallery.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-help-block.d.ts +1 -12
- package/types/eui-ecl-components-ecl-help-block.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-icon.d.ts +1 -12
- package/types/eui-ecl-components-ecl-icon.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-inpage-navigation.d.ts +2 -17
- package/types/eui-ecl-components-ecl-inpage-navigation.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-label.d.ts +1 -12
- package/types/eui-ecl-components-ecl-label.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-link.d.ts +17 -16
- package/types/eui-ecl-components-ecl-link.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-list-illustration.d.ts +1 -12
- package/types/eui-ecl-components-ecl-list-illustration.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-list.d.ts +1 -12
- package/types/eui-ecl-components-ecl-list.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-loading-indicator.d.ts +1 -13
- package/types/eui-ecl-components-ecl-loading-indicator.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-media-container.d.ts +1 -12
- package/types/eui-ecl-components-ecl-media-container.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-mega-menu.d.ts +1 -13
- package/types/eui-ecl-components-ecl-mega-menu.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-menu.d.ts +1 -12
- package/types/eui-ecl-components-ecl-menu.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-modal.d.ts +2 -19
- package/types/eui-ecl-components-ecl-modal.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-multiselect.d.ts +1 -12
- package/types/eui-ecl-components-ecl-multiselect.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-navigation-list.d.ts +1 -12
- package/types/eui-ecl-components-ecl-navigation-list.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-news-ticker.d.ts +1 -13
- package/types/eui-ecl-components-ecl-news-ticker.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-notification.d.ts +45 -29
- package/types/eui-ecl-components-ecl-notification.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-page-header.d.ts +1 -12
- package/types/eui-ecl-components-ecl-page-header.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-pagination.d.ts +3 -14
- package/types/eui-ecl-components-ecl-pagination.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-popover.d.ts +5 -17
- package/types/eui-ecl-components-ecl-popover.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-radio.d.ts +1 -12
- package/types/eui-ecl-components-ecl-radio.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-range.d.ts +1 -12
- package/types/eui-ecl-components-ecl-range.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-rating-field.d.ts +2 -13
- package/types/eui-ecl-components-ecl-rating-field.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-search-form.d.ts +4 -15
- package/types/eui-ecl-components-ecl-search-form.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-select.d.ts +1 -13
- package/types/eui-ecl-components-ecl-select.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-site-footer.d.ts +42 -63
- package/types/eui-ecl-components-ecl-site-footer.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-site-header.d.ts +4 -19
- package/types/eui-ecl-components-ecl-site-header.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-social-media-follow.d.ts +6 -13
- package/types/eui-ecl-components-ecl-social-media-follow.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-splash-page.d.ts +1 -12
- package/types/eui-ecl-components-ecl-splash-page.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-sticky-container.d.ts +1 -12
- package/types/eui-ecl-components-ecl-sticky-container.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-table.d.ts +1 -12
- package/types/eui-ecl-components-ecl-table.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-tabs.d.ts +4 -46
- package/types/eui-ecl-components-ecl-tabs.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-tag.d.ts +1 -12
- package/types/eui-ecl-components-ecl-tag.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-text-area.d.ts +1 -13
- package/types/eui-ecl-components-ecl-text-area.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-text-input.d.ts +1 -13
- package/types/eui-ecl-components-ecl-text-input.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-timeline.d.ts +1 -12
- package/types/eui-ecl-components-ecl-timeline.d.ts.map +1 -1
- package/types/eui-ecl-core.d.ts +0 -3
- package/types/eui-ecl-core.d.ts.map +1 -1
- package/types/eui-ecl.d.ts +1 -69
- package/types/eui-ecl.d.ts.map +1 -1
- package/docs/js/libs/vis.min.js +0 -47
- package/docs/modules/EclAccordionModule.html +0 -273
- package/docs/modules/EclAllModule.html +0 -261
- package/docs/modules/EclAppModule.html +0 -267
- package/docs/modules/EclBannerModule.html +0 -321
- package/docs/modules/EclBlockquoteModule.html +0 -279
- package/docs/modules/EclBreadcrumbModule.html +0 -321
- package/docs/modules/EclButtonModule.html +0 -285
- package/docs/modules/EclCardModule.html +0 -321
- package/docs/modules/EclCarouselModule.html +0 -273
- package/docs/modules/EclCategoryFilterModule.html +0 -279
- package/docs/modules/EclCheckboxModule.html +0 -321
- package/docs/modules/EclContentBlockModule.html +0 -321
- package/docs/modules/EclContentItemModule.html +0 -321
- package/docs/modules/EclDateBlockModule.html +0 -267
- package/docs/modules/EclDatePickerModule.html +0 -267
- package/docs/modules/EclDividerModule.html +0 -267
- package/docs/modules/EclExpandableModule.html +0 -267
- package/docs/modules/EclFactFiguresModule.html +0 -285
- package/docs/modules/EclFeaturedModule.html +0 -321
- package/docs/modules/EclFeedbackMessageModule.html +0 -267
- package/docs/modules/EclFileModule.html +0 -321
- package/docs/modules/EclFileUploadModule.html +0 -267
- package/docs/modules/EclFormGroupModule.html +0 -267
- package/docs/modules/EclGalleryModule.html +0 -321
- package/docs/modules/EclHelpBlockModule.html +0 -267
- package/docs/modules/EclIconModule.html +0 -267
- package/docs/modules/EclInpageNavigationModule.html +0 -321
- package/docs/modules/EclLabelModule.html +0 -267
- package/docs/modules/EclLinkModule.html +0 -285
- package/docs/modules/EclListIllustrationModule.html +0 -321
- package/docs/modules/EclListModule.html +0 -321
- package/docs/modules/EclLoadingIndicatorModule.html +0 -279
- package/docs/modules/EclMediaContainerModule.html +0 -321
- package/docs/modules/EclMegaMenuModule.html +0 -321
- package/docs/modules/EclMenuModule.html +0 -321
- package/docs/modules/EclModalModule.html +0 -321
- package/docs/modules/EclMultiselectModule.html +0 -321
- package/docs/modules/EclNavigationListModule.html +0 -321
- package/docs/modules/EclNewsTickerModule.html +0 -321
- package/docs/modules/EclPageHeaderModule.html +0 -321
- package/docs/modules/EclPaginationModule.html +0 -321
- package/docs/modules/EclPopoverModule.html +0 -321
- package/docs/modules/EclRadioModule.html +0 -285
- package/docs/modules/EclRangeModule.html +0 -321
- package/docs/modules/EclRatingFieldModule.html +0 -267
- package/docs/modules/EclSearchFormModule.html +0 -267
- package/docs/modules/EclSelectModule.html +0 -321
- package/docs/modules/EclSiteFooterModule.html +0 -321
- package/docs/modules/EclSiteHeaderModule.html +0 -321
- package/docs/modules/EclSocialMediaFollowModule.html +0 -321
- package/docs/modules/EclSplashPageModule.html +0 -321
- package/docs/modules/EclStickyContainerModule.html +0 -267
- package/docs/modules/EclTableModule.html +0 -321
- package/docs/modules/EclTabsModule.html +0 -321
- package/docs/modules/EclTagModule.html +0 -321
- package/docs/modules/EclTextAreaModule.html +0 -267
- package/docs/modules/EclTextInputModule.html +0 -267
- package/docs/modules/EclTimelineModule.html +0 -297
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-menu.mjs","sources":["../../components/ecl-menu/events/ecl-menu-item.event.ts","../../components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.ts","../../components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.html","../../components/ecl-menu/ecl-menu-mega/ecl-menu-mega.component.ts","../../components/ecl-menu/ecl-menu-mega/ecl-menu-mega.component.html","../../components/ecl-menu/ecl-menu/ecl-menu-item.component.ts","../../components/ecl-menu/ecl-menu/ecl-menu-item.component.html","../../components/ecl-menu/ecl-menu/ecl-menu.component.ts","../../components/ecl-menu/ecl-menu/ecl-menu.component.html","../../components/ecl-menu/ecl-menu.module.ts","../../components/ecl-menu/index.ts","../../components/ecl-menu/eui-ecl-components-ecl-menu.ts"],"sourcesContent":["import { EclDomEvent } from '@eui/ecl/core';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\n\nexport class EclMenuItemSelectEvent extends EclDomEvent<Event> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: Event = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemHoverEvent extends EclDomEvent<MouseEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: MouseEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemHoverOutEvent extends EclDomEvent<MouseEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: MouseEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemFocusEvent extends EclDomEvent<FocusEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: FocusEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemCaretEvent extends EclDomEvent<MouseEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: MouseEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemKeydownEvent extends EclDomEvent<KeyboardEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: KeyboardEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemParentFocusEvent {\n constructor(\n public menuItem: EclMenuItem) {}\n}\n","import {\n AfterViewInit,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n booleanAttribute,\n forwardRef,\n inject,\n} from '@angular/core';\nimport { Params, QueryParamsHandling, RouterLink } from '@angular/router';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { EclLinkDirective } from '@eui/ecl/components/ecl-link';\nimport { EclIconComponent } from '@eui/ecl/components/ecl-icon';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\nimport { EclMenuItemKeydownEvent, EclMenuItemSelectEvent } from '../events/ecl-menu-item.event';\n\n/**\n * This component represents a sub-menu item, that is on the second level of the ecl-menu.\n * Adds some custom styling and functionality.\n */\n@Component({\n selector: 'ecl-menu-mega-item',\n templateUrl: './ecl-menu-mega-item.component.html',\n imports: [NgTemplateOutlet, RouterLink],\n styles: [\n `\n :host {\n display: list-item;\n }\n `,\n ],\n})\nexport class EclMenuMegaItemComponent extends ECLBaseDirective implements EclMenuItem, AfterViewInit {\n\n @Input() id: string;\n @Input() label: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() routerLink: string | any[] = null;\n @Input() queryParams: Params | null = null;\n @Input() queryParamsHandling: QueryParamsHandling = null;\n @Input() href = '';\n @Input() target = '';\n @HostBinding('class.ecl-menu__subitem') cmpClass = true;\n /**\n * The default role of the DOM element is 'listitem', should not be changed.\n */\n @HostBinding('attr.role') role = 'listitem';\n @Input({ transform: booleanAttribute }) @HostBinding('class.ecl-menu__subitem--current') isCurrent = false;\n /**\n * An additional item, that represents a link.\n */\n @Input({ transform: booleanAttribute }) @HostBinding('class.ecl-menu__see-all') isSeeAll = false;\n @Input() linkExtraAttributes: { [key: string]: string };\n\n /**\n * If menu item includes any icon, added by the user (for example for 'external' link).\n */\n @ContentChildren(forwardRef(() => EclIconComponent)) iconComponents: QueryList<EclIconComponent>;\n /**\n * If menu item includes any links, added by the user.\n */\n @ContentChildren(forwardRef(() => EclLinkDirective)) links: QueryList<EclLinkDirective>;\n /**\n * The actual link of the menu item.\n */\n @ViewChild('megaMenuLink') megaMenuLink: ElementRef\n\n @Output() menuItemSelect = new EventEmitter<EclMenuItemSelectEvent>();\n @Output() menuItemKeydown = new EventEmitter<EclMenuItemKeydownEvent>();\n\n hasChildren = false;\n isExpanded = true;\n\n children: Array<EclMenuItem> = [];\n private renderer = inject(Renderer2);\n\n ngAfterViewInit(): void {\n this.manageContentChildren();\n this.setExtraAttributesForLink(this.megaMenuLink?.nativeElement, this.linkExtraAttributes);\n }\n\n /**\n *\n * @param evt This event is emited, when the menu item is clicked.\n */\n onItemClick(evt: Event): void {\n this.menuItemSelect.next(new EclMenuItemSelectEvent(this, evt as MouseEvent));\n\n if (!this.href) {\n evt.preventDefault();\n }\n }\n\n @HostListener('click', ['$event'])\n onHostClick(evt: MouseEvent): void {\n evt.stopPropagation();\n }\n\n /**\n * When the item is the current active item, the 'aria-current' attribute is set to 'page'.\n */\n get ariaCurrent(): string | null {\n return this.isCurrent ? 'page' : null;\n }\n\n /**\n * Focus should be set on the underlying <a> element.\n */\n onFocus(): void {\n this.megaMenuLink.nativeElement.focus();\n }\n\n onKeydown(evt: Event): void {\n if ((evt as KeyboardEvent).key === KeyCode.ENTER) {\n this.onItemClick(evt);\n }\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n }\n\n /**\n * Adds specific classes to content children (icons or links).\n */\n private manageContentChildren(): void {\n if (this.iconComponents) {\n setTimeout(() => {\n this.iconComponents.forEach((icn) => {\n icn.baseDirective.class = 'ecl-menu__sublink-icon';\n });\n });\n }\n\n if (this.links) {\n setTimeout(() => {\n this.links.forEach((icn) => {\n icn.class = icn.class ? icn.class + ' ecl-menu__sublink' : 'ecl-menu__sublink';\n });\n });\n }\n }\n\n private setExtraAttributesForLink(link: HTMLElement, linkExtraAttributes: { [key: string]: string }): void {\n if (linkExtraAttributes) {\n Object.keys(linkExtraAttributes).forEach((key) =>{\n if (key !== 'href' && key !== 'routerLink') {\n this.renderer.setAttribute(link, key, linkExtraAttributes[key]);\n }\n });\n }\n }\n}\n","@if (!isSeeAll) {\n @if (href) {\n <a #megaMenuLink\n [href]=\"href\"\n [target]=\"target\"\n class=\"ecl-link ecl-link--standalone ecl-menu__sublink\"\n [class.ecl-menu__sublink--current]=\"isCurrent\"\n [attr.aria-current]=\"ariaCurrent\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n } @else {\n <a #megaMenuLink\n tabindex=\"0\"\n [routerLink]=\"routerLink\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n class=\"ecl-link ecl-link--standalone ecl-menu__sublink\"\n [class.ecl-menu__sublink--current]=\"isCurrent\"\n [attr.aria-current]=\"ariaCurrent\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n }\n} @else {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { Component, ContentChildren, QueryList, AfterContentInit, OnDestroy, Output, EventEmitter, IterableDiffer, IterableChanges, IterableDiffers, HostBinding, ElementRef, inject } from '@angular/core';\nimport { EclMenuMegaItemComponent } from './ecl-menu-mega-item.component';\nimport { Subject, of, Observable } from 'rxjs';\nimport { takeUntil, mergeWith } from 'rxjs/operators';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\nimport { EclMenuItemKeydownEvent, EclMenuItemSelectEvent } from '../events';\n\n/**\n * This component acts as a wrapper for the second level of menu items, that are children of one root item.\n * Provides functionality for some common events like keyboard navigation and manages relations between sub items.\n */\n@Component({\n selector: 'ecl-menu-mega',\n templateUrl: './ecl-menu-mega.component.html',\n})\nexport class EclMenuMegaComponent extends ECLBaseDirective implements AfterContentInit, OnDestroy {\n el = inject(ElementRef);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @HostBinding('class.ecl-menu__mega--rtl') isRtlDisplay: boolean | any = false;\n\n /**\n * List of the sub items.\n */\n @ContentChildren(EclMenuMegaItemComponent) eclMenuMegaItems: QueryList<EclMenuMegaItemComponent>;\n\n @Output() menuItemSelect = new EventEmitter<EclMenuItemSelectEvent>();\n /**\n * Used in keyboard navigation, when focus has to be moved to the parent item.\n */\n @Output() menuMegaItemParentFocus = new EventEmitter<EclMenuItemSelectEvent>();\n /**\n * Used when kyboard navigation with TAB reaches the last sub item.\n */\n @Output() menuMegaLastItemTab = new EventEmitter<void>();\n\n @HostBinding('style.left.px') offsetLeft: number | null;\n @HostBinding('style.right.px') offsetRight: number | null;\n\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-menu__mega')].join(' ');\n }\n\n private differ: IterableDiffer<EclMenuMegaItemComponent>;\n private diff: IterableChanges<EclMenuMegaItemComponent>;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private differs = inject(IterableDiffers);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n }\n\n ngAfterContentInit(): void {\n this.diff = this.differ.diff(this.eclMenuMegaItems);\n // Subscribe to the events of each new added item.\n this.createContentChildrenMenuObservable().subscribe(this.onMenuItemChanges.bind(this));\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n selectFirstSubItem(): void {\n if (this.eclMenuMegaItems.length > 0) {\n this.eclMenuMegaItems.first.onFocus();\n }\n }\n\n private createContentChildrenMenuObservable(): Observable<QueryList<EclMenuMegaItemComponent>> {\n return of(this.eclMenuMegaItems).pipe(mergeWith(this.eclMenuMegaItems.changes), takeUntil(this.destroy$));\n }\n\n private onMenuItemChanges(): void {\n this.diff = this.differ.diff(this.eclMenuMegaItems);\n\n if (!this.diff) {\n this.eclMenuMegaItems.forEach((rootItem) => {\n this.connectMenuItemEvents(rootItem);\n });\n } else {\n this.diff.forEachAddedItem((change) => {\n this.connectMenuItemEvents(change.item);\n });\n }\n }\n\n private connectMenuItemEvents(item: EclMenuMegaItemComponent): void {\n item.menuItemSelect.pipe(takeUntil(this.destroy$)).subscribe((evt: EclMenuItemSelectEvent) => {\n this.onMenuItemSelected(item, evt);\n });\n item.menuItemKeydown.pipe(takeUntil(this.destroy$)).subscribe((evt: EclMenuItemKeydownEvent) => {\n this.onMenuItemKeydown(item, evt);\n });\n }\n\n private onMenuItemKeydown(item: EclMenuMegaItemComponent, evt: EclMenuItemKeydownEvent): void {\n switch (evt.domEvent.key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n this.onNextMenuItemFocus(item);\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.onPrevMenuItemFocus(item);\n break;\n }\n case KeyCode.ESCAPE: {\n evt.preventDefault();\n this.menuMegaItemParentFocus.next(new EclMenuItemSelectEvent(item));\n break;\n }\n case KeyCode.TAB: {\n if (this.isLastItem(item)) {\n evt.preventDefault();\n this.menuMegaLastItemTab.next();\n }\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private isLastItem(item: EclMenuMegaItemComponent): boolean {\n return this.eclMenuMegaItems.last === item;\n }\n\n private geMenuMegaItemsArray(): EclMenuMegaItemComponent[] {\n return this.eclMenuMegaItems.toArray();\n }\n\n private onPrevMenuItemFocus(item: EclMenuMegaItemComponent): void {\n const index = this.geMenuMegaItemsArray().findIndex(el => item === el);\n if (index !== 0) {\n this.getMegaMenuItemsArray()[index - 1].onFocus();\n } else {\n this.menuMegaItemParentFocus.next(new EclMenuItemSelectEvent(item));\n }\n }\n\n private onNextMenuItemFocus(item: EclMenuMegaItemComponent): void {\n const index = this.geMenuMegaItemsArray().findIndex(el => item === el);\n if (index !== this.getMegaMenuItemsArray().length - 1) {\n this.getMegaMenuItemsArray()[index + 1].onFocus();\n }\n }\n\n private onMenuItemSelected(item: EclMenuItem, evt: EclMenuItemSelectEvent): void {\n this.deselectAllMenuItems(this.eclMenuMegaItems.toArray());\n this.selectMenuItem(item);\n this.sendMenuItemSelectEvent(evt);\n }\n\n private selectMenuItem(item: EclMenuItem): void {\n item.isCurrent = true;\n }\n\n private deselectAllMenuItems(items: Array<EclMenuItem>): void {\n items.forEach((it) => {\n it.isCurrent = false;\n });\n }\n\n private sendMenuItemSelectEvent(evt: EclMenuItemSelectEvent): void {\n this.menuItemSelect.next(new EclMenuItemSelectEvent(evt.menuItem, evt.domEvent));\n }\n\n private getMegaMenuItemsArray(): EclMenuMegaItemComponent[] {\n return this.eclMenuMegaItems.toArray();\n }\n}\n","<ul class=\"ecl-menu__sublist\">\n <ng-content></ng-content>\n</ul>\n","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport {\n AfterContentInit,\n afterNextRender,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n ViewChild,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Params, QueryParamsHandling, RouterLink, RouterLinkWithHref } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclButtonComponent, EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport {\n EclMenuItemCaretEvent,\n EclMenuItemFocusEvent,\n EclMenuItemHoverEvent,\n EclMenuItemHoverOutEvent,\n EclMenuItemKeydownEvent,\n EclMenuItemParentFocusEvent,\n EclMenuItemSelectEvent,\n} from '../events';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\nimport { EclMenuMegaComponent } from '../ecl-menu-mega';\nimport { EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\nconst enum ColTrigger {\n COL1_TRIGGER = 5,\n COL2_TRIGGER = 9,\n COL3_TRIGGER = 13,\n}\n\n/**\n * This component represents a root menu item. Adds styling and functionality to menu item.\n */\n@Component({\n selector: 'ecl-menu-item',\n templateUrl: './ecl-menu-item.component.html',\n imports: [NgTemplateOutlet, RouterLink, RouterLinkWithHref, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON, ...EUI_ECL_LINK],\n encapsulation: ViewEncapsulation.None,\n})\nexport class EclMenuItemComponent extends ECLBaseDirective implements EclMenuItem, AfterContentInit, OnDestroy {\n el = inject(ElementRef);\n\n @Input() id: string;\n @Input() label: string;\n /**\n * When in mobile view, use this property to set aria-label for the toggle items button (to expand item's children).\n */\n @Input() toggleAriaLabel: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() routerLink: string | any[] = null;\n @Input() queryParams: Params | null = null;\n @Input() queryParamsHandling: QueryParamsHandling = null;\n @Input() href = '';\n @Input() target = '';\n @Input() isCurrent = false;\n /**\n * Custom attributes, to be added to the <a> tag of the menu item.\n */\n @Input() linkExtraAttributes: { [key: string]: string };\n\n isExpanded: boolean;\n /**\n * Set to 'true', when item has more than 13 chidren and the overlay needs to use the full available space.\n */\n isFull = false;\n isHovered = false;\n isMobileBreakpoint = false;\n /**\n * Used when menu has overlay, to show if the item is currently displayed.\n */\n isVisible = true;\n\n /**\n * The default role of the item is 'listitem' and should not be changed.\n */\n @HostBinding('attr.role') role = 'listitem';\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-menu__item'),\n this.isCurrent ? 'ecl-menu__item--current' : '',\n this.isExpanded ? 'ecl-menu__item--expanded' : '',\n this.getClassDependingChildrenCnt(),\n ]\n .join(' ')\n .trim();\n }\n\n @ContentChild(forwardRef(() => EclMenuMegaComponent)) submenu: EclMenuMegaComponent;\n /**\n * The <a> element of the menu item, when there are no children.\n */\n @ViewChild('menuLink') menuLink: ElementRef<HTMLAnchorElement>;\n /**\n * The <button> element of the menu item, when item has children.\n */\n @ViewChild(EclButtonComponent) menuButton: EclButtonComponent;\n\n @Output() menuItemSelect = new EventEmitter<EclMenuItemSelectEvent>();\n @Output() menuItemCaret = new EventEmitter<EclMenuItemCaretEvent>();\n /**\n * Event that is emited on clicking the caret button to expand item's children in mobile mode.\n */\n @Output() menuItemHover = new EventEmitter<EclMenuItemHoverEvent>();\n @Output() menuItemHoverOut = new EventEmitter<EclMenuItemHoverOutEvent>();\n @Output() menuMegaItemSelect = new EventEmitter<EclMenuItemSelectEvent>();\n @Output() menuItemFocus = new EventEmitter<EclMenuItemFocusEvent>();\n @Output() menuItemKeydown = new EventEmitter<EclMenuItemKeydownEvent>();\n /**\n * This event is emited when the keyboard nav reaches the last item in mobile view.\n * Then the next focused element should be the 'close' btn.\n */\n @Output() menuMegaLastItemTab = new EventEmitter<void>();\n\n @HostBinding('class.ecl-menu__item--has-children')\n @HostBinding('attr.aria-haspopup')\n get hasEclChildrenDataAttribute(): boolean {\n return this.hasChildren || undefined;\n }\n\n @HostBinding('attr.aria-expanded')\n get isAriaExpanded(): boolean {\n return this.hasChildren ? this.isHovered : null;\n }\n\n get ariaCurrent(): boolean {\n return this.isCurrent ? true : null;\n }\n\n get hasChildren(): boolean {\n return !!this.submenu;\n }\n\n get children(): Array<EclMenuItem> {\n return this.hasChildren ? this.submenu.eclMenuMegaItems.toArray() : [];\n }\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private renderer = inject(Renderer2);\n private cdkBreakpointObserver = inject(BreakpointObserver);\n\n constructor() {\n super();\n afterNextRender(() => {\n this.observeBreakpointChanges();\n this.setExtraAttributesForLink(this.menuLink?.nativeElement, this.linkExtraAttributes);\n });\n }\n\n @HostListener('mouseenter', ['$event'])\n onItemMouseEnter(evt: MouseEvent): void {\n this.menuItemHover.next(new EclMenuItemHoverEvent(this, evt));\n }\n\n @HostListener('mouseleave', ['$event'])\n onItemMouseLeave(evt: MouseEvent): void {\n this.menuItemHoverOut.next(new EclMenuItemHoverOutEvent(this, evt));\n }\n\n ngAfterContentInit(): void {\n // Subscibe to submenu component events.\n if (this.submenu) {\n this.submenu.menuItemSelect.pipe(takeUntil(this.destroy$)).subscribe((it: EclMenuItemSelectEvent) => {\n this.menuMegaItemSelect.next(new EclMenuItemSelectEvent(it.menuItem, it.domEvent));\n });\n this.submenu.menuMegaItemParentFocus.pipe(takeUntil(this.destroy$)).subscribe((it: EclMenuItemParentFocusEvent) => {\n if (!this.isMobileBreakpoint) {\n this.onFocusFromSubmenu();\n }\n });\n this.submenu.menuMegaLastItemTab.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (this.isMobileBreakpoint) {\n this.menuMegaLastItemTab.next();\n }\n });\n\n if (this.hasSubmenuAnySelections()) {\n this.isCurrent = true;\n }\n }\n\n // this.tabindex = this.routerLink || this.href ? 0 : -1;\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n onItemFocus(evt: FocusEvent): void {\n this.menuItemFocus.next(new EclMenuItemFocusEvent(this, evt));\n }\n\n onItemClick(evt: Event): void {\n this.menuItemSelect.next(new EclMenuItemSelectEvent(this, evt));\n\n if (!this.href) {\n evt.stopPropagation();\n }\n }\n\n /**\n * When clicking the caret button, to expand item's children. Used in mobile view.\n * @param evt\n */\n onItemCaretClick(evt: MouseEvent): void {\n this.menuItemCaret.next(new EclMenuItemCaretEvent(this, evt));\n }\n\n /**\n * Manages the state when the item is focused, when navigating with keyboard and the navigation is coming from the submenu.\n */\n onFocusFromSubmenu(): void {\n this.onButtonFocus();\n this.isHovered = false;\n this.isExpanded = false;\n }\n\n /**\n * Manages the state when the item is focused, when navigating with keyboard and the navigation is coming from\n * the next root menu item.\n */\n onFocusFromNext(): void {\n if (this.menuButton) {\n this.onButtonFocus();\n } else {\n this.onLinkFocus();\n }\n }\n\n /**\n * Manages the state when the item is focused, when navigating with keyboard and the navigation is coming from\n * the previous root menu item.\n */\n onFocusFromPrev(): void {\n this.onLinkFocus();\n }\n\n /**\n * Manages the keyboard navigation when the current element is the button of the menu item.\n * @param evt\n */\n onButtonKeydown(evt: Event): void {\n switch ((evt as KeyboardEvent).key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n if (this.isHovered) {\n this.selectFirstMegaMenuItem();\n } else {\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n }\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.onLinkFocus();\n break;\n }\n case KeyCode.ARROW_RIGHT: {\n evt.preventDefault();\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ARROW_LEFT: {\n evt.preventDefault();\n this.onLinkFocus();\n break;\n }\n case KeyCode.TAB: {\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ENTER: {\n evt.preventDefault();\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ESCAPE: {\n evt.preventDefault();\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * Manages the keyboard navigation when the current element is the <a> tag of the menu item.\n * @param evt\n */\n onLinkKeydown(evt: Event): void {\n switch ((evt as KeyboardEvent).key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n this.onLinkNextFocus(evt);\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ARROW_RIGHT: {\n evt.preventDefault();\n this.onLinkNextFocus(evt);\n break;\n }\n case KeyCode.ARROW_LEFT: {\n evt.preventDefault();\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ENTER: {\n this.onItemClick(evt);\n break;\n }\n case KeyCode.ESCAPE: {\n evt.preventDefault();\n this.onLinkEscape(evt);\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * This method calculates height and width of an item, depending the maximum of lines(rows) allowed.\n * Depends on the 'maxLines' property of the parent menu component.\n * @param maxLines - property that sets the maximum possible lines in a menu item.\n * @param isMobileBreakpoint\n * @returns\n */\n checkMenuItem(maxLines: number, isMobileBreakpoint: boolean): void {\n if (maxLines < 1) return;\n\n const currentItem = this.el.nativeElement;\n const currentLink = this.menuLink.nativeElement;\n if (isMobileBreakpoint) {\n this.renderer.setStyle(currentLink, 'width', '100%');\n return;\n }\n this.renderer.setStyle(currentItem, 'alignItems', 'flex-start');\n const linkStyle = window.getComputedStyle(currentLink);\n\n const maxHeight = this.getMenuItemLinkMaxHeight(linkStyle, maxLines);\n\n if (currentLink.offsetHeight > maxHeight) {\n this.changeMenuItemLinkWidth(currentLink, maxLines, linkStyle);\n }\n this.renderer.removeStyle(currentItem, 'alignItems');\n }\n\n private onLinkEscape(evt: Event): void {\n if (this.menuButton) {\n this.menuButton.el.nativeElement.focus();\n evt.stopPropagation();\n } else {\n this.menuLink.nativeElement.blur();\n }\n }\n\n private selectFirstMegaMenuItem(): void {\n this.submenu.selectFirstSubItem();\n }\n\n private onLinkFocus(): void {\n this.menuLink.nativeElement.focus();\n }\n\n private onLinkNextFocus(evt: Event): void {\n if (this.menuButton) {\n this.onButtonFocus();\n } else {\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n }\n }\n\n private onButtonFocus(): void {\n this.menuButton.el.nativeElement.focus();\n }\n\n private getMenuItemLinkMaxHeight(linkStyle: CSSStyleDeclaration, maxLines: number): number {\n return parseInt(linkStyle.lineHeight, 10) * maxLines + parseInt(linkStyle.paddingTop, 10) + parseInt(linkStyle.paddingBottom, 10);\n }\n\n /**\n * Calculates width of a menu item, depending on maximum lines of text allowed.\n * @param currentLink\n * @param maxLines\n * @param linkStyle\n * @returns\n */\n private changeMenuItemLinkWidth(currentLink: HTMLAnchorElement, maxLines: number, linkStyle: CSSStyleDeclaration): void {\n this.renderer.setStyle(currentLink, 'white-space', 'nowrap');\n const linkWidth = currentLink.offsetWidth;\n if (maxLines === 1) {\n this.renderer.setStyle(currentLink, 'width', `${linkWidth + parseInt(linkStyle.paddingLeft, 10) + parseInt(linkStyle.paddingRight, 10)}px`);\n this.renderer.removeStyle(currentLink, 'white-space');\n return;\n }\n const textSize = currentLink.text.length;\n const letterWidth = Math.ceil(linkWidth / textSize);\n const wordsArray = currentLink.text.trim().split(' ');\n const goalWidth = Math.ceil(linkWidth / maxLines);\n const firstWord = wordsArray[0];\n let cnt = 1;\n let wordWidth = Math.ceil((firstWord.length + 1) * letterWidth);\n while (wordWidth < goalWidth) {\n wordWidth += Math.ceil((wordsArray[cnt].length + 1) * letterWidth);\n cnt++;\n }\n this.renderer.setStyle(currentLink, 'width', `${wordWidth + parseInt(linkStyle.paddingLeft, 10) + parseInt(linkStyle.paddingRight, 10)}px`);\n this.renderer.removeStyle(currentLink, 'white-space');\n }\n\n private getClassDependingChildrenCnt(): string {\n if (this.hasChildren) {\n if (this.submenu.eclMenuMegaItems.length < ColTrigger.COL1_TRIGGER) {\n return 'ecl-menu__item--col1';\n } else if (this.submenu.eclMenuMegaItems.length < ColTrigger.COL2_TRIGGER) {\n return 'ecl-menu__item--col2';\n } else if (this.submenu.eclMenuMegaItems.length < ColTrigger.COL3_TRIGGER) {\n return 'ecl-menu__item--col3';\n } else {\n this.isFull = true;\n return 'ecl-menu__item--full';\n }\n }\n return '';\n }\n\n private hasSubmenuAnySelections(): boolean {\n return this.submenu && !!this.submenu.eclMenuMegaItems.find((it) => it.isCurrent);\n }\n\n private setExtraAttributesForLink(link: HTMLElement, linkExtraAttributes: { [key: string]: string }): void {\n if (linkExtraAttributes) {\n Object.keys(linkExtraAttributes).forEach((key) => {\n if (key !== 'href' && key !== 'routerLink') {\n this.renderer.setAttribute(link, key, linkExtraAttributes[key]);\n }\n });\n }\n }\n\n private observeBreakpointChanges(): void {\n this.cdkBreakpointObserver\n .observe([Breakpoints.Handset, Breakpoints.Tablet, Breakpoints.Small])\n .pipe(takeUntil(this.destroy$))\n .subscribe((result) => {\n this.isMobileBreakpoint = result.matches;\n });\n }\n}\n","@if (href) {\n <a eclLink\n #menuLink\n variant=\"standalone\"\n [href]=\"href\"\n [target]=\"target\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n [attr.aria-current]=\"ariaCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n} @else {\n <a eclLink\n #menuLink\n variant=\"standalone\"\n [attr.tabindex]=\"tabindex || 0\"\n [routerLink]=\"routerLink\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n [attr.aria-current]=\"ariaCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n}\n\n@if (hasChildren) {\n @if (isMobileBreakpoint) {\n <button\n eclButton\n isIconOnly\n variant=\"tertiary\"\n class=\"ecl-menu__button-caret ecl-button--neutral\"\n type=\"button\"\n [attr.aria-label]=\"toggleAriaLabel || 'Access item children'\"\n (click)=\"onItemCaretClick($event)\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n </button>\n } @else {\n <button\n eclButton\n isIconOnly\n variant=\"tertiary\"\n class=\"ecl-menu__button-caret ecl-button--neutral\"\n type=\"button\"\n [attr.aria-label]=\"toggleAriaLabel || 'Access item children'\"\n [attr.aria-expanded]=\"isAriaExpanded\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n </button>\n }\n}\n\n<ng-content select=\"ecl-menu-mega\"></ng-content>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { AfterContentInit, Component, ContentChildren, ElementRef, EventEmitter, HostBinding, HostListener, Input, IterableChanges, IterableDiffer, IterableDiffers, OnDestroy, OnInit, Output, PLATFORM_ID, QueryList, Renderer2, ViewChild, afterNextRender, numberAttribute, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport type Hammer from 'hammerjs';\nimport { Observable, Subject, of } from 'rxjs';\nimport { mergeWith, takeUntil } from 'rxjs/operators';\nimport { EclRtlService } from '@eui/ecl/core';\nimport { EuiAppShellService } from '@eui/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclButtonComponent, EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EclMenuItemCaretEvent, EclMenuItemHoverEvent, EclMenuItemKeydownEvent, EclMenuItemSelectEvent } from '../events';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\nimport { EclMenuItemComponent } from './ecl-menu-item.component';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * The horizontal menu is used as a primary navigation and it can display up to 2 levels.\n * It directs users to the pages where they need to visit.\n */\n@Component({\n selector: 'ecl-menu',\n templateUrl: './ecl-menu.component.html',\n imports: [TranslateModule, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON],\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class EclMenuComponent extends ECLBaseDirective implements OnInit, AfterContentInit, OnDestroy {\n\n /**\n * Adds some additional styling for the menu items' labels.\n * Depending on that value, the labels can drop on 2-3 lines, if they are longer.\n */\n @Input({ transform: numberAttribute }) maxLines = 0;\n\n /**\n * The main items of the menu.\n */\n @ContentChildren(EclMenuItemComponent) eclRootMenuItems: QueryList<EclMenuItemComponent>;\n /**\n * The element, that wraps the main menu items and the back and forth button.\n */\n @ViewChild('innerSection') innerSection: ElementRef;\n /**\n * The element that wraps the main menu items.\n */\n @ViewChild('itemsList') itemsList: ElementRef;\n /**\n * When there is an overflow of the menu, the 'previous' button to navigate back to first hidden items.\n */\n @ViewChild('btnPrevious') btnPrevious: EclButtonComponent;\n /**\n * When there is an overflow of the menu, the 'next' button to navigate to next hidden items.\n */\n @ViewChild('btnNext') btnNext: EclButtonComponent;\n /**\n * The button to open/close menu in mobile mode.\n */\n @ViewChild('openCloseButton') openCloseButton: EclButtonComponent;\n\n @Output() menuItemSelect = new EventEmitter<EclMenuItemSelectEvent>();\n @Output() openHamburgerMenu = new EventEmitter();\n\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-menu'),\n 'ecl-menu--transition',\n this.isRtl ? 'ecl-menu--rtl' : '',\n ].join(' ');\n }\n\n isHamburgerMenuOpened = false;\n\n @HostBinding('attr.data-expanded')\n get expandedAttr() {\n return this.isHamburgerMenuOpened ? '' : null;\n }\n\n /**\n * The default role is 'navigation', should not be changed.\n */\n @HostBinding('attr.role') role = 'navigation';\n @HostBinding('class.ecl-menu--forced-mobile') isTablet = false;\n @HostBinding('class.ecl-menu--forced-close') isMenuHidden = false;\n\n isMobileBreakpoint = false;\n hasOverflow = false;\n isShowPrevBtn = false;\n isShowNextBtn = false;\n /**\n * Show/hide the specific class for the 'previous' and 'next' buttons.\n */\n isPrevBtnCurrentClass = false;\n menuListStyleRight = 'auto';\n menuListStyleLeft = 'auto';\n overlayStyleTop: number | null = null;\n innerStyleTop: number | null = null;\n\n /**\n * Represents the current viewport breakpoint states.\n */\n public breakpointsValue: any = {\n isMobile: false,\n isTablet: false,\n isLtDesktop: false,\n isDesktop: false,\n isXL: false,\n isXXL: false,\n };\n\n private currentItem: EclMenuItem;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private differ: IterableDiffer<EclMenuItemComponent>;\n private diff: IterableChanges<EclMenuItemComponent>;\n private isRtl = false;\n private totalItemsWidth = 0;\n private offsetLeft = 0;\n private lastVisibleItem: EclMenuItemComponent;\n private hammertime: Hammer;\n private resizeTimer: number;\n private TIMEOUT_INTERVAL = 150;\n private el = inject(ElementRef);\n private differs = inject(IterableDiffers);\n private cdkBreakpointObserver = inject(BreakpointObserver);\n private renderer = inject(Renderer2);\n private eclRtlService = inject(EclRtlService);\n private euiAppShellService = inject(EuiAppShellService);\n private platformId = inject(PLATFORM_ID);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n afterNextRender(() => {\n clearTimeout(this.resizeTimer);\n this.observeElementSizeChanges();\n this.resizeTimer = setTimeout(() => {\n this.checkMenuItemsWidth();\n this.checkMenuOverflow();\n }, this.TIMEOUT_INTERVAL);\n this.subscribeToAppShellBreakpoints();\n });\n }\n\n /**\n * On outside click - close/hide any open menus.\n * @param event\n */\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.isHamburgerMenuOpened) return;\n\n const target = event.target as HTMLElement;\n if (!this.el.nativeElement.contains(target) ||\n target.classList.contains('ecl-menu__overlay')) {\n this.closeRootMenu();\n this.onCloseHamburgerMenu();\n }\n }\n\n /**\n * On 'esc' key clicked - close/hide any open menus.\n * @param event\n */\n @HostListener('keydown.escape', ['$event'])\n onEscapePress(event: Event): void {\n if (!this.isHamburgerMenuOpened) return;\n\n this.closeRootMenu();\n this.onCloseHamburgerMenu();\n }\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.handleRtlChangeState();\n this.observeSwipeGestures();\n }\n }\n\n ngAfterContentInit(): void {\n // Subscribe to all menu items' events.\n this.observeRootMenuItemsChanges();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n\n this.hammertime?.off('swipeleft');\n this.hammertime?.off('swiperight');\n }\n\n /**\n * Swipe left gesture handling\n */\n onSwipeLeft(): void {\n if (this.isMobileBreakpoint) {\n this.onOpenHamburgerMenu();\n }\n }\n\n /**\n * Swipe right gesture handling\n */\n onSwipeRight(): void {\n if (this.isMobileBreakpoint) {\n this.onCloseHamburgerMenu();\n }\n }\n\n /**\n * Manages state on open/close button click, used in mobile view.\n */\n onMenuOpenCloseClick(evt: MouseEvent): void {\n if (this.isHamburgerMenuOpened) {\n this.onCloseHamburgerMenu();\n } else {\n this.onOpenHamburgerMenu();\n }\n evt.preventDefault();\n }\n\n /**\n * Manages state on close button click, used in mobile view, in EU theme.\n */\n onMenuCloseClick(evt: MouseEvent): void {\n this.onCloseHamburgerMenu();\n this.closeRootMenu();\n evt.preventDefault();\n }\n\n /**\n * Manages state on back button click, used in mobile view.\n */\n onMenuBackClick(evt: MouseEvent): void {\n this.closeRootMenu();\n evt.preventDefault();\n }\n\n /**\n * Manages state on 'previous' button click. Used in desktop view. Slides the items and shows the previous hidden items.\n */\n onPrevBtnClick(): void {\n this.slideMenuInitialState();\n this.refreshDisplay();\n }\n\n /**\n * Manages state on 'next' button click. Used in desktop view. Slides the items and shows the next hidden items.\n */\n onNextBtnClick(): void {\n this.isShowPrevBtn = true;\n this.isShowNextBtn = false;\n\n if (this.isRtl) {\n this.showNextSlideRtl();\n } else {\n this.showNextSlideLtr();\n }\n\n this.refreshDisplay();\n }\n\n /**\n * Postions overlay, depending on parent header position.\n * This method is called from parent header, which uses the menu for navigation.\n * @param bottomSpaceY\n */\n positionMenuOverlay(bottomSpaceY: number): void {\n if (this.isMobileBreakpoint && bottomSpaceY) {\n this.overlayStyleTop = bottomSpaceY;\n this.innerStyleTop = bottomSpaceY;\n } else {\n this.overlayStyleTop = null;\n this.innerStyleTop = null;\n }\n }\n\n private observeElementSizeChanges(): void {\n new ResizeObserver(() => {\n clearTimeout(this.resizeTimer);\n this.resizeTimer = setTimeout(() => {\n this.renderer.removeClass(this.el.nativeElement, 'ecl-menu--transition');\n this.totalItemsWidth = 0;\n this.checkMenuItemsWidth();\n this.checkMenuOverflow();\n this.renderer.addClass(this.el.nativeElement, 'ecl-menu--transition');\n }, this.TIMEOUT_INTERVAL);\n }).observe(this.innerSection.nativeElement);\n }\n\n private slideMenuInitialState(): void {\n this.offsetLeft = 0;\n if (this.isRtl) {\n this.menuListStyleRight = '0px';\n this.menuListStyleLeft = 'auto';\n } else {\n this.menuListStyleLeft = '0px';\n this.menuListStyleRight = 'auto';\n }\n\n this.isShowPrevBtn = false;\n this.isShowNextBtn = true;\n }\n\n private showNextSlideLtr(): void {\n const btnOffsetWidth = this.btnNext.el.nativeElement.offsetWidth;\n this.offsetLeft =\n this.lastVisibleItem.el.nativeElement.getBoundingClientRect().left -\n this.itemsList.nativeElement.getBoundingClientRect().left -\n btnOffsetWidth;\n\n this.menuListStyleLeft = `-${this.offsetLeft}px`;\n this.menuListStyleRight = 'auto';\n }\n\n private showNextSlideRtl(): void {\n const btnOffsetWidth = this.btnNext.el.nativeElement.offsetWidth;\n this.offsetLeft =\n this.itemsList.nativeElement.getBoundingClientRect().right -\n this.lastVisibleItem.el.nativeElement.getBoundingClientRect().right -\n btnOffsetWidth;\n\n this.menuListStyleRight = `-${this.offsetLeft}px`;\n this.menuListStyleLeft = 'auto';\n }\n\n private refreshDisplay(): void {\n this.eclRootMenuItems.forEach((item) => {\n item.checkMenuItem(this.maxLines, this.isMobileBreakpoint);\n item.isVisible = !item.isVisible;\n });\n }\n\n private checkMenuOverflow(): void {\n this.hasOverflow = this.totalItemsWidth > this.innerSection.nativeElement.offsetWidth + 16;\n if (!this.hasOverflow || this.isMobileBreakpoint) {\n this.resetOverflowValues();\n return;\n }\n\n this.setClassForPrevNextButtons();\n this.resetVisibilityIndicator();\n\n if (this.offsetLeft === 0) {\n this.manageOverflowEnd();\n } else {\n this.manageOverflowBeginning();\n }\n }\n\n /**\n * Manage items visibility when using overlfow. For both rtl and ltr cases.\n */\n private manageOverflowBeginning(): void {\n if (this.isRtl) {\n this.eclRootMenuItems\n .filter(\n (item) =>\n item.el.nativeElement.getBoundingClientRect().right <=\n this.innerSection.nativeElement.getBoundingClientRect().right,\n )\n .forEach((el) => (el.isVisible = true));\n } else {\n this.eclRootMenuItems\n .filter(\n (item) =>\n item.el.nativeElement.getBoundingClientRect().left >= this.innerSection.nativeElement.getBoundingClientRect().left,\n )\n .forEach((el) => (el.isVisible = true));\n }\n }\n\n /**\n * Manage items visibility when using overlfow, with the 'next' button. For both rtl and ltr cases.\n */\n private manageOverflowEnd(): void {\n this.isShowNextBtn = true;\n if (this.isRtl) {\n for (const item of this.eclRootMenuItems) {\n if (item.el.nativeElement.getBoundingClientRect().left < this.itemsList.nativeElement.getBoundingClientRect().left) {\n this.lastVisibleItem = item;\n break;\n }\n item.isVisible = true;\n }\n } else {\n for (const item of this.eclRootMenuItems) {\n if (item.el.nativeElement.getBoundingClientRect().right > this.itemsList.nativeElement.getBoundingClientRect().right) {\n this.lastVisibleItem = item;\n break;\n }\n item.isVisible = true;\n }\n }\n }\n\n private resetVisibilityIndicator(): void {\n this.eclRootMenuItems.forEach((item) => (item.isVisible = false));\n }\n\n private resetOverflowValues(): void {\n this.isShowPrevBtn = false;\n this.isShowNextBtn = false;\n this.hasOverflow = false;\n this.menuListStyleLeft = '0px';\n this.offsetLeft = 0;\n this.totalItemsWidth = 0;\n this.lastVisibleItem = null;\n }\n\n private setClassForPrevNextButtons(): void {\n this.currentItem = this.eclRootMenuItems.find((item) => item.isCurrent);\n if (this.currentItem) {\n if (this.currentItem.isVisible) {\n this.isPrevBtnCurrentClass = true;\n } else {\n this.isPrevBtnCurrentClass = false;\n }\n }\n }\n\n private checkMenuItemsWidth(): void {\n this.eclRootMenuItems.forEach((item) => {\n item.checkMenuItem(this.maxLines, this.isMobileBreakpoint);\n this.totalItemsWidth += item.el.nativeElement.offsetWidth;\n });\n }\n\n public get isMenuExpandedInMobile(): boolean {\n return this.isMobileBreakpoint && this.isAnyRootMenuItemExpanded();\n }\n\n private isAnyRootMenuItemExpanded(): boolean {\n return this.eclRootMenuItems.some((item) => item.isExpanded);\n }\n\n private createRootMenuItemsChangesObservable(): Observable<QueryList<EclMenuItemComponent>> {\n return of(this.eclRootMenuItems).pipe(mergeWith(this.eclRootMenuItems.changes), takeUntil(this.destroy$));\n }\n\n private onMenuItemChanges(): void {\n this.diff = this.differ.diff(this.eclRootMenuItems);\n\n if (!this.diff) {\n this.eclRootMenuItems.forEach((rootItem) => {\n this.connectMenuItemEvents(rootItem);\n });\n } else {\n this.diff.forEachAddedItem((change) => {\n this.connectMenuItemEvents(change.item);\n });\n }\n }\n\n private connectMenuItemEvents(item: EclMenuItemComponent): void {\n item.menuItemSelect.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemSelected(evt);\n });\n item.menuItemHover.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemHovered(evt);\n });\n item.menuItemHoverOut.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemHoveredOut(evt);\n });\n item.menuItemCaret.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemCaret(evt);\n });\n item.menuMegaItemSelect.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onMenuMegaItemSelected(item, evt);\n });\n item.menuItemFocus.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemFocused(item);\n });\n item.menuItemKeydown.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemKeydown(item, evt);\n });\n item.menuMegaLastItemTab.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.openCloseButton.onFocus();\n });\n }\n\n private onRootMenuItemFocused(item: EclMenuItem): void {\n const index = this.findIndexInArray(item);\n if (!this.isMobileBreakpoint) {\n this.closeRootMenu();\n }\n if (this.isMovePrevOverflow(index)){\n this.onPrevBtnClick();\n } else if (this.isMoveNextOverflow(index)){\n this.onNextBtnClick();\n }\n }\n\n private onRootMenuItemKeydown(item: EclMenuItemComponent, evt: EclMenuItemKeydownEvent): void {\n switch (evt.domEvent.key) {\n case KeyCode.ARROW_DOWN: {\n this.onRootMenuItemEnter(item);\n break;\n }\n case KeyCode.ARROW_RIGHT: {\n this.onNextMenuItemFocus(item);\n break;\n }\n case KeyCode.ARROW_UP: {\n this.onPrevMenuItemFocus(item);\n break;\n }\n case KeyCode.ARROW_LEFT: {\n this.onPrevMenuItemFocus(item);\n break;\n }\n case KeyCode.ENTER: {\n this.onRootMenuItemEnter(item);\n break;\n }\n case KeyCode.ESCAPE: {\n this.onRootMenuItemEscape(item, evt.domEvent);\n break;\n }\n case KeyCode.TAB: {\n if (this.isMobileBreakpoint && this.isLastItem(item)) {\n evt.preventDefault();\n this.openCloseButton.onFocus();\n }\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private isLastItem(item: EclMenuItemComponent): boolean {\n return this.eclRootMenuItems.last === item;\n }\n\n private onRootMenuItemEscape(item: EclMenuItem, evt: Event): void {\n if (item.isHovered) {\n this.closeRootMenu();\n }\n evt.stopPropagation();\n }\n\n private onPrevMenuItemFocus(item: EclMenuItem): void {\n const index = this.findIndexInArray(item);\n if (index !== 0) {\n this.getRootMenuItemsArray()[index - 1].onFocusFromNext();\n }\n }\n\n private onNextMenuItemFocus(item: EclMenuItem): void {\n const index = this.findIndexInArray(item);\n if (index !== this.getRootMenuItemsArray().length - 1) {\n this.getRootMenuItemsArray()[index + 1].onFocusFromPrev();\n }\n }\n\n private findIndexInArray(item: EclMenuItem): number {\n return this.getRootMenuItemsArray().findIndex(el => item === el);\n }\n\n private isMoveNextOverflow(index: number): boolean {\n return !this.getRootMenuItemsArray()[index].isVisible && this.isShowNextBtn;\n }\n\n private isMovePrevOverflow(index: number): boolean {\n return !this.getRootMenuItemsArray()[index].isVisible && this.isShowPrevBtn;\n }\n\n private onRootMenuItemSelected(evt: EclMenuItemSelectEvent): void {\n const requestedRootMenuItem: EclMenuItem = evt.menuItem;\n\n this.closeRootMenu();\n this.deselectAllRootMenuItems();\n this.deselectAllSubmenusItems();\n this.selectMenuItem(requestedRootMenuItem);\n this.onCloseHamburgerMenu();\n if (this.hasOverflow) {\n this.managePrevNextButtonsClassOnItemSelected();\n }\n this.sendMenuItemSelectEvent(evt);\n }\n\n private managePrevNextButtonsClassOnItemSelected(): void {\n if (this.isShowNextBtn) {\n this.isPrevBtnCurrentClass = true;\n } else {\n this.isPrevBtnCurrentClass = false;\n }\n }\n\n private onRootMenuItemHovered(evt: EclMenuItemHoverEvent): void {\n this.openSubmenu(evt.menuItem);\n }\n\n private onRootMenuItemEnter(item: EclMenuItem): void {\n if (this.isMobileBreakpoint) {\n this.closeRootMenuButOneItem(item);\n this.toggleExpandedForMenuItem(item);\n } else {\n if (!item.isHovered) {\n this.openSubmenu(item);\n } else {\n this.closeRootMenu();\n }\n }\n }\n\n private openSubmenu(item: EclMenuItem): void {\n if (item.isVisible) {\n if (!this.isMobileBreakpoint && (item as EclMenuItemComponent).submenu) {\n this.checkMegaMenu(item as EclMenuItemComponent);\n }\n item.isHovered = true;\n this.closeRootMenuButOneItem(item);\n this.showMenu();\n }\n }\n\n private getRootMenuItemsArray(): EclMenuItemComponent[] {\n return this.eclRootMenuItems.toArray();\n }\n\n private checkMegaMenu(menuItem: EclMenuItemComponent): void {\n if (menuItem.isFull) {\n if (this.isRtl) {\n menuItem.submenu.offsetRight = this.offsetLeft;\n } else {\n menuItem.submenu.offsetLeft = this.offsetLeft;\n }\n return;\n }\n this.checkEnoughSpaceForMegaMenu(menuItem);\n }\n\n private checkEnoughSpaceForMegaMenu(menuItem: EclMenuItemComponent): void {\n const megaBounding = menuItem.submenu.el.nativeElement.getBoundingClientRect();\n const containerBounding = this.innerSection.nativeElement.getBoundingClientRect();\n const menuItemBounding = menuItem.el.nativeElement.getBoundingClientRect();\n\n const megaWidth = megaBounding.width;\n const containerWidth = containerBounding.width;\n const menuItemPosition = menuItemBounding.left - containerBounding.left;\n\n if (menuItemPosition + megaWidth > containerWidth) {\n menuItem.submenu.isRtlDisplay = true;\n } else {\n menuItem.submenu.isRtlDisplay = false;\n }\n }\n\n private onRootMenuItemHoveredOut(evt: EclMenuItemHoverEvent): void {\n if (!this.isMobileBreakpoint) {\n this.closeRootMenu();\n }\n }\n\n private onRootMenuItemCaret(evt: EclMenuItemCaretEvent): void {\n const requestedRootMenuItem: EclMenuItem = evt.menuItem;\n\n this.closeRootMenuButOneItem(requestedRootMenuItem);\n this.toggleExpandedForMenuItem(requestedRootMenuItem);\n }\n\n private onMenuMegaItemSelected(rootMenuItem: EclMenuItem, evt: EclMenuItemSelectEvent): void {\n const requestedSubmenuItem = evt.menuItem;\n\n this.closeRootMenu();\n this.deselectAllRootMenuItems();\n this.deselectAllSubmenusItems();\n this.selectMenuItem(rootMenuItem);\n this.selectMenuItem(requestedSubmenuItem);\n this.onCloseHamburgerMenu();\n if (this.hasOverflow) {\n this.managePrevNextButtonsClassOnItemSelected();\n }\n this.sendMenuItemSelectEvent(evt);\n\n this.hideMenu();\n }\n\n private deselectAllRootMenuItems(): void {\n this.deselectMenuItems(this.eclRootMenuItems.toArray());\n }\n\n private deselectAllSubmenusItems(): void {\n this.eclRootMenuItems.forEach((rootItem) => {\n this.deselectMenuItems(rootItem.children);\n });\n }\n\n private deselectMenuItems(items: Array<EclMenuItem>): void {\n items.forEach((it) => {\n it.isCurrent = false;\n });\n }\n\n private selectMenuItem(item: EclMenuItem): void {\n item.isCurrent = true;\n this.currentItem = item;\n }\n\n private hideMenu(): void {\n this.isMenuHidden = true;\n }\n\n private showMenu(): void {\n this.isMenuHidden = false;\n }\n\n private closeRootMenu(): void {\n this.eclRootMenuItems.forEach((it) => {\n it.isExpanded = false;\n it.isHovered = false;\n });\n }\n\n private closeRootMenuButOneItem(item: EclMenuItem): void {\n this.eclRootMenuItems\n .filter((it) => it !== item)\n .forEach((it) => {\n it.isExpanded = false;\n it.isHovered = false;\n });\n }\n\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n if (rtlState !== undefined && this.isRtl !== rtlState) {\n this.isRtl = rtlState;\n if (this.hasOverflow) {\n this.slideMenuInitialState();\n setTimeout(() => this.checkMenuOverflow());\n }\n }\n });\n }\n\n private toggleExpandedForMenuItem(item: EclMenuItem): void {\n item.isExpanded = !item.isExpanded;\n }\n\n private onOpenHamburgerMenu(): void {\n this.disableScroll();\n this.isHamburgerMenuOpened = true;\n this.openHamburgerMenu.emit();\n this.focusOnFirstItem();\n }\n\n private onCloseHamburgerMenu(): void {\n this.isHamburgerMenuOpened = false;\n this.enableScroll();\n }\n\n private disableScroll(): void {\n document.body.classList.add('no-scroll');\n }\n\n private enableScroll(): void {\n document.body.classList.remove('no-scroll');\n }\n\n private focusOnFirstItem(): void {\n this.eclRootMenuItems.first.onFocusFromPrev();\n }\n\n private sendMenuItemSelectEvent(evt: EclMenuItemSelectEvent): void {\n this.menuItemSelect.next(new EclMenuItemSelectEvent(evt.menuItem, evt.domEvent));\n }\n\n private observeRootMenuItemsChanges(): void {\n this.diff = this.differ.diff(this.eclRootMenuItems);\n this.createRootMenuItemsChangesObservable().pipe(takeUntil(this.destroy$)).subscribe(this.onMenuItemChanges.bind(this));\n }\n\n private observeSwipeGestures(): void {\n // load hammerjs only on browser\n if(isPlatformBrowser(this.platformId)) {\n import('hammerjs').then((Hammer: Hammer) => {\n this.hammertime = new Hammer.default(document, { inputClass: Hammer.TouchInput });\n this.hammertime.on('swipeleft', this.onSwipeLeft.bind(this));\n this.hammertime.on('swiperight', this.onSwipeRight.bind(this));\n }).catch((error) => {\n console.error('Error loading HammerJS', error);\n });\n }\n }\n\n private subscribeToAppShellBreakpoints(): void {\n this.euiAppShellService.breakpoints$\n .pipe(takeUntil(this.destroy$))\n .subscribe((bkps: any) => {\n this.breakpointsValue = bkps ?? this.breakpointsValue;\n\n if (typeof bkps?.width === 'number') {\n const w = bkps.width;\n this.isMobileBreakpoint = w <= 415;\n this.isTablet = w > 415 && w <= 1140;\n } else if (bkps && typeof bkps === 'object') {\n this.isMobileBreakpoint = !!(bkps.Handset || bkps.Small || bkps.mobile);\n this.isTablet = !!(bkps.Tablet || bkps.tablet);\n\n } else if (typeof bkps?.isMobile !== 'undefined' || typeof bkps?.isTablet !== 'undefined') {\n this.isMobileBreakpoint = !!bkps.isMobile;\n this.isTablet = !!bkps.isTablet;\n }\n\n if (!this.isMobileBreakpoint) {\n this.overlayStyleTop = null;\n this.innerStyleTop = null;\n }\n });\n }\n}\n","<div class=\"ecl-menu__overlay\" [style.top.px]=\"overlayStyleTop\"></div>\n<div class=\"ecl-container ecl-menu__container\">\n <button #openCloseButton eclButton isIconOnly variant=\"tertiary\" eclStyle=\"neutral\" type=\"button\" class=\"ecl-menu__open\"\n (click)=\"onMenuOpenCloseClick($event)\" [attr.aria-expanded]=\"isHamburgerMenuOpened\">\n <ecl-icon icon=\"hamburger\" size=\"m\"></ecl-icon>\n <ecl-icon icon=\"close\" size=\"m\"></ecl-icon>\n @if (isHamburgerMenuOpened) {\n <span eclButtonLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n } @else {\n <span eclButtonLabel>{{ 'ecl.menu.MENU' | translate }}</span>\n }\n </button>\n\n <section\n class=\"ecl-menu__inner\"\n #innerSection\n [class.ecl-menu__inner--expanded]=\"isMenuExpandedInMobile\"\n [class.ecl-menu__inner--has-overflow]=\"hasOverflow\"\n aria-label=\"Menu\" [style.top.px]=\"innerStyleTop\">\n <header class=\"ecl-menu__inner-header\">\n <button\n eclButton\n variant=\"tertiary\"\n class=\"ecl-menu__close\"\n containerStyleClass=\"ecl-menu__close-container\"\n (click)=\"onMenuCloseClick($event)\">\n <span eclButtonLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n <ecl-icon icon=\"close\" size=\"s\"></ecl-icon>\n </button>\n\n <div class=\"ecl-menu__title\">{{ 'ecl.menu.MENU' | translate }}</div>\n\n <button eclButton variant=\"tertiary\" class=\"ecl-menu__back\" (click)=\"onMenuBackClick($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.BACK' | translate }}</span>\n </button>\n </header>\n <button\n eclButton\n #btnPrevious\n tabindex=\"-1\"\n variant=\"tertiary\"\n isIconOnly\n class=\"ecl-menu__item ecl-menu__items-previous\"\n [class.ecl-menu__item--current]=\"isPrevBtnCurrentClass\"\n [style.display]=\"isShowPrevBtn ? 'flex' : 'none'\"\n (click)=\"onPrevBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.PREVIOUS' | translate }}</span>\n </button>\n <button\n eclButton\n #btnNext\n variant=\"tertiary\"\n tabindex=\"-1\"\n isIconOnly\n class=\"ecl-menu__item ecl-menu__items-next\"\n [class.ecl-menu__item--current]=\"!isPrevBtnCurrentClass\"\n [style.display]=\"isShowNextBtn ? 'flex' : 'none'\"\n (click)=\"onNextBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-90\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.NEXT' | translate }}</span>\n </button>\n <ul class=\"ecl-menu__list\" #itemsList [style.right]=\"menuListStyleRight\" [style.left]=\"menuListStyleLeft\">\n <ng-content></ng-content>\n </ul>\n </section>\n</div>\n","import { NgModule } from '@angular/core';\nimport { EclMenuComponent, EclMenuItemComponent } from './ecl-menu';\nimport { EclMenuMegaComponent, EclMenuMegaItemComponent } from './ecl-menu-mega';\n\nconst COMPONENTS = [EclMenuComponent, EclMenuItemComponent, EclMenuMegaComponent, EclMenuMegaItemComponent];\n\n/**\n * Module that provides the EclMenuComponent and its dependencies.\n *\n * @deprecated Use {@link EUI_ECL_MENU} instead.\n */\n@NgModule({\n imports: [...COMPONENTS],\n exports: [...COMPONENTS],\n})\nexport class EclMenuModule {}\n","import { EclMenuComponent, EclMenuItemComponent } from './ecl-menu';\nimport { EclMenuMegaComponent, EclMenuMegaItemComponent } from './ecl-menu-mega';\n\nexport * from './ecl-menu.module';\nexport * from './ecl-menu/index';\nexport * from './ecl-menu-mega/index';\nexport * from './events/index';\nexport * from './models/ecl-menu-item.model';\n\nexport const EUI_ECL_MENU = [\n EclMenuComponent, EclMenuItemComponent, EclMenuMegaComponent, EclMenuMegaItemComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-menu.mjs","sources":["../../components/ecl-menu/events/ecl-menu-item.event.ts","../../components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.ts","../../components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.html","../../components/ecl-menu/ecl-menu-mega/ecl-menu-mega.component.ts","../../components/ecl-menu/ecl-menu-mega/ecl-menu-mega.component.html","../../components/ecl-menu/ecl-menu/ecl-menu-item.component.ts","../../components/ecl-menu/ecl-menu/ecl-menu-item.component.html","../../components/ecl-menu/ecl-menu/ecl-menu.component.ts","../../components/ecl-menu/ecl-menu/ecl-menu.component.html","../../components/ecl-menu/index.ts","../../components/ecl-menu/eui-ecl-components-ecl-menu.ts"],"sourcesContent":["import { EclDomEvent } from '@eui/ecl/core';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\n\nexport class EclMenuItemSelectEvent extends EclDomEvent<Event> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: Event = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemHoverEvent extends EclDomEvent<MouseEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: MouseEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemHoverOutEvent extends EclDomEvent<MouseEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: MouseEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemFocusEvent extends EclDomEvent<FocusEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: FocusEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemCaretEvent extends EclDomEvent<MouseEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: MouseEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemKeydownEvent extends EclDomEvent<KeyboardEvent> {\n constructor(\n public menuItem: EclMenuItem,\n public domEvent: KeyboardEvent = null,\n ) {\n super(domEvent);\n }\n}\n\nexport class EclMenuItemParentFocusEvent {\n constructor(\n public menuItem: EclMenuItem) {}\n}\n","import {\n AfterViewInit,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n booleanAttribute,\n forwardRef,\n inject,\n} from '@angular/core';\nimport { Params, QueryParamsHandling, RouterLink } from '@angular/router';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { EclLinkDirective } from '@eui/ecl/components/ecl-link';\nimport { EclIconComponent } from '@eui/ecl/components/ecl-icon';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\nimport { EclMenuItemKeydownEvent, EclMenuItemSelectEvent } from '../events/ecl-menu-item.event';\n\n/**\n * This component represents a sub-menu item, that is on the second level of the ecl-menu.\n * Adds some custom styling and functionality.\n */\n@Component({\n selector: 'ecl-menu-mega-item',\n templateUrl: './ecl-menu-mega-item.component.html',\n imports: [NgTemplateOutlet, RouterLink],\n styles: [\n `\n :host {\n display: list-item;\n }\n `,\n ],\n})\nexport class EclMenuMegaItemComponent extends ECLBaseDirective implements EclMenuItem, AfterViewInit {\n\n @Input() id: string;\n @Input() label: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() routerLink: string | any[] = null;\n @Input() queryParams: Params | null = null;\n @Input() queryParamsHandling: QueryParamsHandling = null;\n @Input() href = '';\n @Input() target = '';\n @HostBinding('class.ecl-menu__subitem') cmpClass = true;\n /**\n * The default role of the DOM element is 'listitem', should not be changed.\n */\n @HostBinding('attr.role') role = 'listitem';\n @Input({ transform: booleanAttribute }) @HostBinding('class.ecl-menu__subitem--current') isCurrent = false;\n /**\n * An additional item, that represents a link.\n */\n @Input({ transform: booleanAttribute }) @HostBinding('class.ecl-menu__see-all') isSeeAll = false;\n @Input() linkExtraAttributes: { [key: string]: string };\n\n /**\n * If menu item includes any icon, added by the user (for example for 'external' link).\n */\n @ContentChildren(forwardRef(() => EclIconComponent)) iconComponents: QueryList<EclIconComponent>;\n /**\n * If menu item includes any links, added by the user.\n */\n @ContentChildren(forwardRef(() => EclLinkDirective)) links: QueryList<EclLinkDirective>;\n /**\n * The actual link of the menu item.\n */\n @ViewChild('megaMenuLink') megaMenuLink: ElementRef\n\n @Output() menuItemSelect = new EventEmitter<EclMenuItemSelectEvent>();\n @Output() menuItemKeydown = new EventEmitter<EclMenuItemKeydownEvent>();\n\n hasChildren = false;\n isExpanded = true;\n\n children: Array<EclMenuItem> = [];\n private renderer = inject(Renderer2);\n\n ngAfterViewInit(): void {\n this.manageContentChildren();\n this.setExtraAttributesForLink(this.megaMenuLink?.nativeElement, this.linkExtraAttributes);\n }\n\n /**\n *\n * @param evt This event is emited, when the menu item is clicked.\n */\n onItemClick(evt: Event): void {\n this.menuItemSelect.next(new EclMenuItemSelectEvent(this, evt as MouseEvent));\n\n if (!this.href) {\n evt.preventDefault();\n }\n }\n\n @HostListener('click', ['$event'])\n onHostClick(evt: MouseEvent): void {\n evt.stopPropagation();\n }\n\n /**\n * When the item is the current active item, the 'aria-current' attribute is set to 'page'.\n */\n get ariaCurrent(): string | null {\n return this.isCurrent ? 'page' : null;\n }\n\n /**\n * Focus should be set on the underlying <a> element.\n */\n onFocus(): void {\n this.megaMenuLink.nativeElement.focus();\n }\n\n onKeydown(evt: Event): void {\n if ((evt as KeyboardEvent).key === KeyCode.ENTER) {\n this.onItemClick(evt);\n }\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n }\n\n /**\n * Adds specific classes to content children (icons or links).\n */\n private manageContentChildren(): void {\n if (this.iconComponents) {\n setTimeout(() => {\n this.iconComponents.forEach((icn) => {\n icn.baseDirective.class = 'ecl-menu__sublink-icon';\n });\n });\n }\n\n if (this.links) {\n setTimeout(() => {\n this.links.forEach((icn) => {\n icn.class = icn.class ? icn.class + ' ecl-menu__sublink' : 'ecl-menu__sublink';\n });\n });\n }\n }\n\n private setExtraAttributesForLink(link: HTMLElement, linkExtraAttributes: { [key: string]: string }): void {\n if (linkExtraAttributes) {\n Object.keys(linkExtraAttributes).forEach((key) =>{\n if (key !== 'href' && key !== 'routerLink') {\n this.renderer.setAttribute(link, key, linkExtraAttributes[key]);\n }\n });\n }\n }\n}\n","@if (!isSeeAll) {\n @if (href) {\n <a #megaMenuLink\n [href]=\"href\"\n [target]=\"target\"\n class=\"ecl-link ecl-link--standalone ecl-menu__sublink\"\n [class.ecl-menu__sublink--current]=\"isCurrent\"\n [attr.aria-current]=\"ariaCurrent\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n } @else {\n <a #megaMenuLink\n tabindex=\"0\"\n [routerLink]=\"routerLink\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n class=\"ecl-link ecl-link--standalone ecl-menu__sublink\"\n [class.ecl-menu__sublink--current]=\"isCurrent\"\n [attr.aria-current]=\"ariaCurrent\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n }\n} @else {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { Component, ContentChildren, QueryList, AfterContentInit, OnDestroy, Output, EventEmitter, IterableDiffer, IterableChanges, IterableDiffers, HostBinding, ElementRef, inject } from '@angular/core';\nimport { EclMenuMegaItemComponent } from './ecl-menu-mega-item.component';\nimport { Subject, of, Observable } from 'rxjs';\nimport { takeUntil, mergeWith } from 'rxjs/operators';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\nimport { EclMenuItemKeydownEvent, EclMenuItemSelectEvent } from '../events';\n\n/**\n * This component acts as a wrapper for the second level of menu items, that are children of one root item.\n * Provides functionality for some common events like keyboard navigation and manages relations between sub items.\n */\n@Component({\n selector: 'ecl-menu-mega',\n templateUrl: './ecl-menu-mega.component.html',\n})\nexport class EclMenuMegaComponent extends ECLBaseDirective implements AfterContentInit, OnDestroy {\n el = inject(ElementRef);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @HostBinding('class.ecl-menu__mega--rtl') isRtlDisplay: boolean | any = false;\n\n /**\n * List of the sub items.\n */\n @ContentChildren(EclMenuMegaItemComponent) eclMenuMegaItems: QueryList<EclMenuMegaItemComponent>;\n\n @Output() menuItemSelect = new EventEmitter<EclMenuItemSelectEvent>();\n /**\n * Used in keyboard navigation, when focus has to be moved to the parent item.\n */\n @Output() menuMegaItemParentFocus = new EventEmitter<EclMenuItemSelectEvent>();\n /**\n * Used when kyboard navigation with TAB reaches the last sub item.\n */\n @Output() menuMegaLastItemTab = new EventEmitter<void>();\n\n @HostBinding('style.left.px') offsetLeft: number | null;\n @HostBinding('style.right.px') offsetRight: number | null;\n\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-menu__mega')].join(' ');\n }\n\n private differ: IterableDiffer<EclMenuMegaItemComponent>;\n private diff: IterableChanges<EclMenuMegaItemComponent>;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private differs = inject(IterableDiffers);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n }\n\n ngAfterContentInit(): void {\n this.diff = this.differ.diff(this.eclMenuMegaItems);\n // Subscribe to the events of each new added item.\n this.createContentChildrenMenuObservable().subscribe(this.onMenuItemChanges.bind(this));\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n selectFirstSubItem(): void {\n if (this.eclMenuMegaItems.length > 0) {\n this.eclMenuMegaItems.first.onFocus();\n }\n }\n\n private createContentChildrenMenuObservable(): Observable<QueryList<EclMenuMegaItemComponent>> {\n return of(this.eclMenuMegaItems).pipe(mergeWith(this.eclMenuMegaItems.changes), takeUntil(this.destroy$));\n }\n\n private onMenuItemChanges(): void {\n this.diff = this.differ.diff(this.eclMenuMegaItems);\n\n if (!this.diff) {\n this.eclMenuMegaItems.forEach((rootItem) => {\n this.connectMenuItemEvents(rootItem);\n });\n } else {\n this.diff.forEachAddedItem((change) => {\n this.connectMenuItemEvents(change.item);\n });\n }\n }\n\n private connectMenuItemEvents(item: EclMenuMegaItemComponent): void {\n item.menuItemSelect.pipe(takeUntil(this.destroy$)).subscribe((evt: EclMenuItemSelectEvent) => {\n this.onMenuItemSelected(item, evt);\n });\n item.menuItemKeydown.pipe(takeUntil(this.destroy$)).subscribe((evt: EclMenuItemKeydownEvent) => {\n this.onMenuItemKeydown(item, evt);\n });\n }\n\n private onMenuItemKeydown(item: EclMenuMegaItemComponent, evt: EclMenuItemKeydownEvent): void {\n switch (evt.domEvent.key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n this.onNextMenuItemFocus(item);\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.onPrevMenuItemFocus(item);\n break;\n }\n case KeyCode.ESCAPE: {\n evt.preventDefault();\n this.menuMegaItemParentFocus.next(new EclMenuItemSelectEvent(item));\n break;\n }\n case KeyCode.TAB: {\n if (this.isLastItem(item)) {\n evt.preventDefault();\n this.menuMegaLastItemTab.next();\n }\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private isLastItem(item: EclMenuMegaItemComponent): boolean {\n return this.eclMenuMegaItems.last === item;\n }\n\n private geMenuMegaItemsArray(): EclMenuMegaItemComponent[] {\n return this.eclMenuMegaItems.toArray();\n }\n\n private onPrevMenuItemFocus(item: EclMenuMegaItemComponent): void {\n const index = this.geMenuMegaItemsArray().findIndex(el => item === el);\n if (index !== 0) {\n this.getMegaMenuItemsArray()[index - 1].onFocus();\n } else {\n this.menuMegaItemParentFocus.next(new EclMenuItemSelectEvent(item));\n }\n }\n\n private onNextMenuItemFocus(item: EclMenuMegaItemComponent): void {\n const index = this.geMenuMegaItemsArray().findIndex(el => item === el);\n if (index !== this.getMegaMenuItemsArray().length - 1) {\n this.getMegaMenuItemsArray()[index + 1].onFocus();\n }\n }\n\n private onMenuItemSelected(item: EclMenuItem, evt: EclMenuItemSelectEvent): void {\n this.deselectAllMenuItems(this.eclMenuMegaItems.toArray());\n this.selectMenuItem(item);\n this.sendMenuItemSelectEvent(evt);\n }\n\n private selectMenuItem(item: EclMenuItem): void {\n item.isCurrent = true;\n }\n\n private deselectAllMenuItems(items: Array<EclMenuItem>): void {\n items.forEach((it) => {\n it.isCurrent = false;\n });\n }\n\n private sendMenuItemSelectEvent(evt: EclMenuItemSelectEvent): void {\n this.menuItemSelect.next(new EclMenuItemSelectEvent(evt.menuItem, evt.domEvent));\n }\n\n private getMegaMenuItemsArray(): EclMenuMegaItemComponent[] {\n return this.eclMenuMegaItems.toArray();\n }\n}\n","<ul class=\"ecl-menu__sublist\">\n <ng-content></ng-content>\n</ul>\n","import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport {\n AfterContentInit,\n afterNextRender,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n Output,\n Renderer2,\n ViewChild,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Params, QueryParamsHandling, RouterLink, RouterLinkWithHref } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclButtonComponent, EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport {\n EclMenuItemCaretEvent,\n EclMenuItemFocusEvent,\n EclMenuItemHoverEvent,\n EclMenuItemHoverOutEvent,\n EclMenuItemKeydownEvent,\n EclMenuItemParentFocusEvent,\n EclMenuItemSelectEvent,\n} from '../events';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\nimport { EclMenuMegaComponent } from '../ecl-menu-mega';\nimport { EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\nconst enum ColTrigger {\n COL1_TRIGGER = 5,\n COL2_TRIGGER = 9,\n COL3_TRIGGER = 13,\n}\n\n/**\n * This component represents a root menu item. Adds styling and functionality to menu item.\n */\n@Component({\n selector: 'ecl-menu-item',\n templateUrl: './ecl-menu-item.component.html',\n imports: [NgTemplateOutlet, RouterLink, RouterLinkWithHref, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON, ...EUI_ECL_LINK],\n encapsulation: ViewEncapsulation.None,\n})\nexport class EclMenuItemComponent extends ECLBaseDirective implements EclMenuItem, AfterContentInit, OnDestroy {\n el = inject(ElementRef);\n\n @Input() id: string;\n @Input() label: string;\n /**\n * When in mobile view, use this property to set aria-label for the toggle items button (to expand item's children).\n */\n @Input() toggleAriaLabel: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() routerLink: string | any[] = null;\n @Input() queryParams: Params | null = null;\n @Input() queryParamsHandling: QueryParamsHandling = null;\n @Input() href = '';\n @Input() target = '';\n @Input() isCurrent = false;\n /**\n * Custom attributes, to be added to the <a> tag of the menu item.\n */\n @Input() linkExtraAttributes: { [key: string]: string };\n\n isExpanded: boolean;\n /**\n * Set to 'true', when item has more than 13 chidren and the overlay needs to use the full available space.\n */\n isFull = false;\n isHovered = false;\n isMobileBreakpoint = false;\n /**\n * Used when menu has overlay, to show if the item is currently displayed.\n */\n isVisible = true;\n\n /**\n * The default role of the item is 'listitem' and should not be changed.\n */\n @HostBinding('attr.role') role = 'listitem';\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-menu__item'),\n this.isCurrent ? 'ecl-menu__item--current' : '',\n this.isExpanded ? 'ecl-menu__item--expanded' : '',\n this.getClassDependingChildrenCnt(),\n ]\n .join(' ')\n .trim();\n }\n\n @ContentChild(forwardRef(() => EclMenuMegaComponent)) submenu: EclMenuMegaComponent;\n /**\n * The <a> element of the menu item, when there are no children.\n */\n @ViewChild('menuLink') menuLink: ElementRef<HTMLAnchorElement>;\n /**\n * The <button> element of the menu item, when item has children.\n */\n @ViewChild(EclButtonComponent) menuButton: EclButtonComponent;\n\n @Output() menuItemSelect = new EventEmitter<EclMenuItemSelectEvent>();\n @Output() menuItemCaret = new EventEmitter<EclMenuItemCaretEvent>();\n /**\n * Event that is emited on clicking the caret button to expand item's children in mobile mode.\n */\n @Output() menuItemHover = new EventEmitter<EclMenuItemHoverEvent>();\n @Output() menuItemHoverOut = new EventEmitter<EclMenuItemHoverOutEvent>();\n @Output() menuMegaItemSelect = new EventEmitter<EclMenuItemSelectEvent>();\n @Output() menuItemFocus = new EventEmitter<EclMenuItemFocusEvent>();\n @Output() menuItemKeydown = new EventEmitter<EclMenuItemKeydownEvent>();\n /**\n * This event is emited when the keyboard nav reaches the last item in mobile view.\n * Then the next focused element should be the 'close' btn.\n */\n @Output() menuMegaLastItemTab = new EventEmitter<void>();\n\n @HostBinding('class.ecl-menu__item--has-children')\n @HostBinding('attr.aria-haspopup')\n get hasEclChildrenDataAttribute(): boolean {\n return this.hasChildren || undefined;\n }\n\n @HostBinding('attr.aria-expanded')\n get isAriaExpanded(): boolean {\n return this.hasChildren ? this.isHovered : null;\n }\n\n get ariaCurrent(): boolean {\n return this.isCurrent ? true : null;\n }\n\n get hasChildren(): boolean {\n return !!this.submenu;\n }\n\n get children(): Array<EclMenuItem> {\n return this.hasChildren ? this.submenu.eclMenuMegaItems.toArray() : [];\n }\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private renderer = inject(Renderer2);\n private cdkBreakpointObserver = inject(BreakpointObserver);\n\n constructor() {\n super();\n afterNextRender(() => {\n this.observeBreakpointChanges();\n this.setExtraAttributesForLink(this.menuLink?.nativeElement, this.linkExtraAttributes);\n });\n }\n\n @HostListener('mouseenter', ['$event'])\n onItemMouseEnter(evt: MouseEvent): void {\n this.menuItemHover.next(new EclMenuItemHoverEvent(this, evt));\n }\n\n @HostListener('mouseleave', ['$event'])\n onItemMouseLeave(evt: MouseEvent): void {\n this.menuItemHoverOut.next(new EclMenuItemHoverOutEvent(this, evt));\n }\n\n ngAfterContentInit(): void {\n // Subscibe to submenu component events.\n if (this.submenu) {\n this.submenu.menuItemSelect.pipe(takeUntil(this.destroy$)).subscribe((it: EclMenuItemSelectEvent) => {\n this.menuMegaItemSelect.next(new EclMenuItemSelectEvent(it.menuItem, it.domEvent));\n });\n this.submenu.menuMegaItemParentFocus.pipe(takeUntil(this.destroy$)).subscribe((it: EclMenuItemParentFocusEvent) => {\n if (!this.isMobileBreakpoint) {\n this.onFocusFromSubmenu();\n }\n });\n this.submenu.menuMegaLastItemTab.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (this.isMobileBreakpoint) {\n this.menuMegaLastItemTab.next();\n }\n });\n\n if (this.hasSubmenuAnySelections()) {\n this.isCurrent = true;\n }\n }\n\n // this.tabindex = this.routerLink || this.href ? 0 : -1;\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n onItemFocus(evt: FocusEvent): void {\n this.menuItemFocus.next(new EclMenuItemFocusEvent(this, evt));\n }\n\n onItemClick(evt: Event): void {\n this.menuItemSelect.next(new EclMenuItemSelectEvent(this, evt));\n\n if (!this.href) {\n evt.stopPropagation();\n }\n }\n\n /**\n * When clicking the caret button, to expand item's children. Used in mobile view.\n * @param evt\n */\n onItemCaretClick(evt: MouseEvent): void {\n this.menuItemCaret.next(new EclMenuItemCaretEvent(this, evt));\n }\n\n /**\n * Manages the state when the item is focused, when navigating with keyboard and the navigation is coming from the submenu.\n */\n onFocusFromSubmenu(): void {\n this.onButtonFocus();\n this.isHovered = false;\n this.isExpanded = false;\n }\n\n /**\n * Manages the state when the item is focused, when navigating with keyboard and the navigation is coming from\n * the next root menu item.\n */\n onFocusFromNext(): void {\n if (this.menuButton) {\n this.onButtonFocus();\n } else {\n this.onLinkFocus();\n }\n }\n\n /**\n * Manages the state when the item is focused, when navigating with keyboard and the navigation is coming from\n * the previous root menu item.\n */\n onFocusFromPrev(): void {\n this.onLinkFocus();\n }\n\n /**\n * Manages the keyboard navigation when the current element is the button of the menu item.\n * @param evt\n */\n onButtonKeydown(evt: Event): void {\n switch ((evt as KeyboardEvent).key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n if (this.isHovered) {\n this.selectFirstMegaMenuItem();\n } else {\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n }\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.onLinkFocus();\n break;\n }\n case KeyCode.ARROW_RIGHT: {\n evt.preventDefault();\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ARROW_LEFT: {\n evt.preventDefault();\n this.onLinkFocus();\n break;\n }\n case KeyCode.TAB: {\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ENTER: {\n evt.preventDefault();\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ESCAPE: {\n evt.preventDefault();\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * Manages the keyboard navigation when the current element is the <a> tag of the menu item.\n * @param evt\n */\n onLinkKeydown(evt: Event): void {\n switch ((evt as KeyboardEvent).key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n this.onLinkNextFocus(evt);\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ARROW_RIGHT: {\n evt.preventDefault();\n this.onLinkNextFocus(evt);\n break;\n }\n case KeyCode.ARROW_LEFT: {\n evt.preventDefault();\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n break;\n }\n case KeyCode.ENTER: {\n this.onItemClick(evt);\n break;\n }\n case KeyCode.ESCAPE: {\n evt.preventDefault();\n this.onLinkEscape(evt);\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * This method calculates height and width of an item, depending the maximum of lines(rows) allowed.\n * Depends on the 'maxLines' property of the parent menu component.\n * @param maxLines - property that sets the maximum possible lines in a menu item.\n * @param isMobileBreakpoint\n * @returns\n */\n checkMenuItem(maxLines: number, isMobileBreakpoint: boolean): void {\n if (maxLines < 1) return;\n\n const currentItem = this.el.nativeElement;\n const currentLink = this.menuLink.nativeElement;\n if (isMobileBreakpoint) {\n this.renderer.setStyle(currentLink, 'width', '100%');\n return;\n }\n this.renderer.setStyle(currentItem, 'alignItems', 'flex-start');\n const linkStyle = window.getComputedStyle(currentLink);\n\n const maxHeight = this.getMenuItemLinkMaxHeight(linkStyle, maxLines);\n\n if (currentLink.offsetHeight > maxHeight) {\n this.changeMenuItemLinkWidth(currentLink, maxLines, linkStyle);\n }\n this.renderer.removeStyle(currentItem, 'alignItems');\n }\n\n private onLinkEscape(evt: Event): void {\n if (this.menuButton) {\n this.menuButton.el.nativeElement.focus();\n evt.stopPropagation();\n } else {\n this.menuLink.nativeElement.blur();\n }\n }\n\n private selectFirstMegaMenuItem(): void {\n this.submenu.selectFirstSubItem();\n }\n\n private onLinkFocus(): void {\n this.menuLink.nativeElement.focus();\n }\n\n private onLinkNextFocus(evt: Event): void {\n if (this.menuButton) {\n this.onButtonFocus();\n } else {\n this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt as KeyboardEvent));\n }\n }\n\n private onButtonFocus(): void {\n this.menuButton.el.nativeElement.focus();\n }\n\n private getMenuItemLinkMaxHeight(linkStyle: CSSStyleDeclaration, maxLines: number): number {\n return parseInt(linkStyle.lineHeight, 10) * maxLines + parseInt(linkStyle.paddingTop, 10) + parseInt(linkStyle.paddingBottom, 10);\n }\n\n /**\n * Calculates width of a menu item, depending on maximum lines of text allowed.\n * @param currentLink\n * @param maxLines\n * @param linkStyle\n * @returns\n */\n private changeMenuItemLinkWidth(currentLink: HTMLAnchorElement, maxLines: number, linkStyle: CSSStyleDeclaration): void {\n this.renderer.setStyle(currentLink, 'white-space', 'nowrap');\n const linkWidth = currentLink.offsetWidth;\n if (maxLines === 1) {\n this.renderer.setStyle(currentLink, 'width', `${linkWidth + parseInt(linkStyle.paddingLeft, 10) + parseInt(linkStyle.paddingRight, 10)}px`);\n this.renderer.removeStyle(currentLink, 'white-space');\n return;\n }\n const textSize = currentLink.text.length;\n const letterWidth = Math.ceil(linkWidth / textSize);\n const wordsArray = currentLink.text.trim().split(' ');\n const goalWidth = Math.ceil(linkWidth / maxLines);\n const firstWord = wordsArray[0];\n let cnt = 1;\n let wordWidth = Math.ceil((firstWord.length + 1) * letterWidth);\n while (wordWidth < goalWidth) {\n wordWidth += Math.ceil((wordsArray[cnt].length + 1) * letterWidth);\n cnt++;\n }\n this.renderer.setStyle(currentLink, 'width', `${wordWidth + parseInt(linkStyle.paddingLeft, 10) + parseInt(linkStyle.paddingRight, 10)}px`);\n this.renderer.removeStyle(currentLink, 'white-space');\n }\n\n private getClassDependingChildrenCnt(): string {\n if (this.hasChildren) {\n if (this.submenu.eclMenuMegaItems.length < ColTrigger.COL1_TRIGGER) {\n return 'ecl-menu__item--col1';\n } else if (this.submenu.eclMenuMegaItems.length < ColTrigger.COL2_TRIGGER) {\n return 'ecl-menu__item--col2';\n } else if (this.submenu.eclMenuMegaItems.length < ColTrigger.COL3_TRIGGER) {\n return 'ecl-menu__item--col3';\n } else {\n this.isFull = true;\n return 'ecl-menu__item--full';\n }\n }\n return '';\n }\n\n private hasSubmenuAnySelections(): boolean {\n return this.submenu && !!this.submenu.eclMenuMegaItems.find((it) => it.isCurrent);\n }\n\n private setExtraAttributesForLink(link: HTMLElement, linkExtraAttributes: { [key: string]: string }): void {\n if (linkExtraAttributes) {\n Object.keys(linkExtraAttributes).forEach((key) => {\n if (key !== 'href' && key !== 'routerLink') {\n this.renderer.setAttribute(link, key, linkExtraAttributes[key]);\n }\n });\n }\n }\n\n private observeBreakpointChanges(): void {\n this.cdkBreakpointObserver\n .observe([Breakpoints.Handset, Breakpoints.Tablet, Breakpoints.Small])\n .pipe(takeUntil(this.destroy$))\n .subscribe((result) => {\n this.isMobileBreakpoint = result.matches;\n });\n }\n}\n","@if (href) {\n <a eclLink\n #menuLink\n variant=\"standalone\"\n [href]=\"href\"\n [target]=\"target\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n [attr.aria-current]=\"ariaCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n} @else {\n <a eclLink\n #menuLink\n variant=\"standalone\"\n [attr.tabindex]=\"tabindex || 0\"\n [routerLink]=\"routerLink\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n class=\"ecl-menu__link\"\n [class.ecl-menu__link--current]=\"isCurrent\"\n [attr.aria-current]=\"ariaCurrent\"\n (focus)=\"onItemFocus($event)\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onLinkKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n}\n\n@if (hasChildren) {\n @if (isMobileBreakpoint) {\n <button\n eclButton\n isIconOnly\n variant=\"tertiary\"\n class=\"ecl-menu__button-caret ecl-button--neutral\"\n type=\"button\"\n [attr.aria-label]=\"toggleAriaLabel || 'Access item children'\"\n (click)=\"onItemCaretClick($event)\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n </button>\n } @else {\n <button\n eclButton\n isIconOnly\n variant=\"tertiary\"\n class=\"ecl-menu__button-caret ecl-button--neutral\"\n type=\"button\"\n [attr.aria-label]=\"toggleAriaLabel || 'Access item children'\"\n [attr.aria-expanded]=\"isAriaExpanded\"\n (keydown)=\"onButtonKeydown($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-180\" class=\"ecl-button__icon\"></ecl-icon>\n </button>\n }\n}\n\n<ng-content select=\"ecl-menu-mega\"></ng-content>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { AfterContentInit, Component, ContentChildren, ElementRef, EventEmitter, HostBinding, HostListener, Input, IterableChanges, IterableDiffer, IterableDiffers, OnDestroy, OnInit, Output, PLATFORM_ID, QueryList, Renderer2, ViewChild, afterNextRender, numberAttribute, inject } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport type Hammer from 'hammerjs';\nimport { Observable, Subject, of } from 'rxjs';\nimport { mergeWith, takeUntil } from 'rxjs/operators';\nimport { EclRtlService } from '@eui/ecl/core';\nimport { EuiAppShellService } from '@eui/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclButtonComponent, EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EclMenuItemCaretEvent, EclMenuItemHoverEvent, EclMenuItemKeydownEvent, EclMenuItemSelectEvent } from '../events';\nimport { EclMenuItem } from '../models/ecl-menu-item.model';\nimport { EclMenuItemComponent } from './ecl-menu-item.component';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * The horizontal menu is used as a primary navigation and it can display up to 2 levels.\n * It directs users to the pages where they need to visit.\n */\n@Component({\n selector: 'ecl-menu',\n templateUrl: './ecl-menu.component.html',\n imports: [TranslateModule, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON],\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class EclMenuComponent extends ECLBaseDirective implements OnInit, AfterContentInit, OnDestroy {\n\n /**\n * Adds some additional styling for the menu items' labels.\n * Depending on that value, the labels can drop on 2-3 lines, if they are longer.\n */\n @Input({ transform: numberAttribute }) maxLines = 0;\n\n /**\n * The main items of the menu.\n */\n @ContentChildren(EclMenuItemComponent) eclRootMenuItems: QueryList<EclMenuItemComponent>;\n /**\n * The element, that wraps the main menu items and the back and forth button.\n */\n @ViewChild('innerSection') innerSection: ElementRef;\n /**\n * The element that wraps the main menu items.\n */\n @ViewChild('itemsList') itemsList: ElementRef;\n /**\n * When there is an overflow of the menu, the 'previous' button to navigate back to first hidden items.\n */\n @ViewChild('btnPrevious') btnPrevious: EclButtonComponent;\n /**\n * When there is an overflow of the menu, the 'next' button to navigate to next hidden items.\n */\n @ViewChild('btnNext') btnNext: EclButtonComponent;\n /**\n * The button to open/close menu in mobile mode.\n */\n @ViewChild('openCloseButton') openCloseButton: EclButtonComponent;\n\n @Output() menuItemSelect = new EventEmitter<EclMenuItemSelectEvent>();\n @Output() openHamburgerMenu = new EventEmitter();\n\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-menu'),\n 'ecl-menu--transition',\n this.isRtl ? 'ecl-menu--rtl' : '',\n ].join(' ');\n }\n\n isHamburgerMenuOpened = false;\n\n @HostBinding('attr.data-expanded')\n get expandedAttr() {\n return this.isHamburgerMenuOpened ? '' : null;\n }\n\n /**\n * The default role is 'navigation', should not be changed.\n */\n @HostBinding('attr.role') role = 'navigation';\n @HostBinding('class.ecl-menu--forced-mobile') isTablet = false;\n @HostBinding('class.ecl-menu--forced-close') isMenuHidden = false;\n\n isMobileBreakpoint = false;\n hasOverflow = false;\n isShowPrevBtn = false;\n isShowNextBtn = false;\n /**\n * Show/hide the specific class for the 'previous' and 'next' buttons.\n */\n isPrevBtnCurrentClass = false;\n menuListStyleRight = 'auto';\n menuListStyleLeft = 'auto';\n overlayStyleTop: number | null = null;\n innerStyleTop: number | null = null;\n\n /**\n * Represents the current viewport breakpoint states.\n */\n public breakpointsValue: any = {\n isMobile: false,\n isTablet: false,\n isLtDesktop: false,\n isDesktop: false,\n isXL: false,\n isXXL: false,\n };\n\n private currentItem: EclMenuItem;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private differ: IterableDiffer<EclMenuItemComponent>;\n private diff: IterableChanges<EclMenuItemComponent>;\n private isRtl = false;\n private totalItemsWidth = 0;\n private offsetLeft = 0;\n private lastVisibleItem: EclMenuItemComponent;\n private hammertime: Hammer;\n private resizeTimer: number;\n private TIMEOUT_INTERVAL = 150;\n private el = inject(ElementRef);\n private differs = inject(IterableDiffers);\n private cdkBreakpointObserver = inject(BreakpointObserver);\n private renderer = inject(Renderer2);\n private eclRtlService = inject(EclRtlService);\n private euiAppShellService = inject(EuiAppShellService);\n private platformId = inject(PLATFORM_ID);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n afterNextRender(() => {\n clearTimeout(this.resizeTimer);\n this.observeElementSizeChanges();\n this.resizeTimer = setTimeout(() => {\n this.checkMenuItemsWidth();\n this.checkMenuOverflow();\n }, this.TIMEOUT_INTERVAL);\n this.subscribeToAppShellBreakpoints();\n });\n }\n\n /**\n * On outside click - close/hide any open menus.\n * @param event\n */\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.isHamburgerMenuOpened) return;\n\n const target = event.target as HTMLElement;\n if (!this.el.nativeElement.contains(target) ||\n target.classList.contains('ecl-menu__overlay')) {\n this.closeRootMenu();\n this.onCloseHamburgerMenu();\n }\n }\n\n /**\n * On 'esc' key clicked - close/hide any open menus.\n * @param event\n */\n @HostListener('keydown.escape', ['$event'])\n onEscapePress(event: Event): void {\n if (!this.isHamburgerMenuOpened) return;\n\n this.closeRootMenu();\n this.onCloseHamburgerMenu();\n }\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.handleRtlChangeState();\n this.observeSwipeGestures();\n }\n }\n\n ngAfterContentInit(): void {\n // Subscribe to all menu items' events.\n this.observeRootMenuItemsChanges();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n\n this.hammertime?.off('swipeleft');\n this.hammertime?.off('swiperight');\n }\n\n /**\n * Swipe left gesture handling\n */\n onSwipeLeft(): void {\n if (this.isMobileBreakpoint) {\n this.onOpenHamburgerMenu();\n }\n }\n\n /**\n * Swipe right gesture handling\n */\n onSwipeRight(): void {\n if (this.isMobileBreakpoint) {\n this.onCloseHamburgerMenu();\n }\n }\n\n /**\n * Manages state on open/close button click, used in mobile view.\n */\n onMenuOpenCloseClick(evt: MouseEvent): void {\n if (this.isHamburgerMenuOpened) {\n this.onCloseHamburgerMenu();\n } else {\n this.onOpenHamburgerMenu();\n }\n evt.preventDefault();\n }\n\n /**\n * Manages state on close button click, used in mobile view, in EU theme.\n */\n onMenuCloseClick(evt: MouseEvent): void {\n this.onCloseHamburgerMenu();\n this.closeRootMenu();\n evt.preventDefault();\n }\n\n /**\n * Manages state on back button click, used in mobile view.\n */\n onMenuBackClick(evt: MouseEvent): void {\n this.closeRootMenu();\n evt.preventDefault();\n }\n\n /**\n * Manages state on 'previous' button click. Used in desktop view. Slides the items and shows the previous hidden items.\n */\n onPrevBtnClick(): void {\n this.slideMenuInitialState();\n this.refreshDisplay();\n }\n\n /**\n * Manages state on 'next' button click. Used in desktop view. Slides the items and shows the next hidden items.\n */\n onNextBtnClick(): void {\n this.isShowPrevBtn = true;\n this.isShowNextBtn = false;\n\n if (this.isRtl) {\n this.showNextSlideRtl();\n } else {\n this.showNextSlideLtr();\n }\n\n this.refreshDisplay();\n }\n\n /**\n * Postions overlay, depending on parent header position.\n * This method is called from parent header, which uses the menu for navigation.\n * @param bottomSpaceY\n */\n positionMenuOverlay(bottomSpaceY: number): void {\n if (this.isMobileBreakpoint && bottomSpaceY) {\n this.overlayStyleTop = bottomSpaceY;\n this.innerStyleTop = bottomSpaceY;\n } else {\n this.overlayStyleTop = null;\n this.innerStyleTop = null;\n }\n }\n\n private observeElementSizeChanges(): void {\n new ResizeObserver(() => {\n clearTimeout(this.resizeTimer);\n this.resizeTimer = setTimeout(() => {\n this.renderer.removeClass(this.el.nativeElement, 'ecl-menu--transition');\n this.totalItemsWidth = 0;\n this.checkMenuItemsWidth();\n this.checkMenuOverflow();\n this.renderer.addClass(this.el.nativeElement, 'ecl-menu--transition');\n }, this.TIMEOUT_INTERVAL);\n }).observe(this.innerSection.nativeElement);\n }\n\n private slideMenuInitialState(): void {\n this.offsetLeft = 0;\n if (this.isRtl) {\n this.menuListStyleRight = '0px';\n this.menuListStyleLeft = 'auto';\n } else {\n this.menuListStyleLeft = '0px';\n this.menuListStyleRight = 'auto';\n }\n\n this.isShowPrevBtn = false;\n this.isShowNextBtn = true;\n }\n\n private showNextSlideLtr(): void {\n const btnOffsetWidth = this.btnNext.el.nativeElement.offsetWidth;\n this.offsetLeft =\n this.lastVisibleItem.el.nativeElement.getBoundingClientRect().left -\n this.itemsList.nativeElement.getBoundingClientRect().left -\n btnOffsetWidth;\n\n this.menuListStyleLeft = `-${this.offsetLeft}px`;\n this.menuListStyleRight = 'auto';\n }\n\n private showNextSlideRtl(): void {\n const btnOffsetWidth = this.btnNext.el.nativeElement.offsetWidth;\n this.offsetLeft =\n this.itemsList.nativeElement.getBoundingClientRect().right -\n this.lastVisibleItem.el.nativeElement.getBoundingClientRect().right -\n btnOffsetWidth;\n\n this.menuListStyleRight = `-${this.offsetLeft}px`;\n this.menuListStyleLeft = 'auto';\n }\n\n private refreshDisplay(): void {\n this.eclRootMenuItems.forEach((item) => {\n item.checkMenuItem(this.maxLines, this.isMobileBreakpoint);\n item.isVisible = !item.isVisible;\n });\n }\n\n private checkMenuOverflow(): void {\n this.hasOverflow = this.totalItemsWidth > this.innerSection.nativeElement.offsetWidth + 16;\n if (!this.hasOverflow || this.isMobileBreakpoint) {\n this.resetOverflowValues();\n return;\n }\n\n this.setClassForPrevNextButtons();\n this.resetVisibilityIndicator();\n\n if (this.offsetLeft === 0) {\n this.manageOverflowEnd();\n } else {\n this.manageOverflowBeginning();\n }\n }\n\n /**\n * Manage items visibility when using overlfow. For both rtl and ltr cases.\n */\n private manageOverflowBeginning(): void {\n if (this.isRtl) {\n this.eclRootMenuItems\n .filter(\n (item) =>\n item.el.nativeElement.getBoundingClientRect().right <=\n this.innerSection.nativeElement.getBoundingClientRect().right,\n )\n .forEach((el) => (el.isVisible = true));\n } else {\n this.eclRootMenuItems\n .filter(\n (item) =>\n item.el.nativeElement.getBoundingClientRect().left >= this.innerSection.nativeElement.getBoundingClientRect().left,\n )\n .forEach((el) => (el.isVisible = true));\n }\n }\n\n /**\n * Manage items visibility when using overlfow, with the 'next' button. For both rtl and ltr cases.\n */\n private manageOverflowEnd(): void {\n this.isShowNextBtn = true;\n if (this.isRtl) {\n for (const item of this.eclRootMenuItems) {\n if (item.el.nativeElement.getBoundingClientRect().left < this.itemsList.nativeElement.getBoundingClientRect().left) {\n this.lastVisibleItem = item;\n break;\n }\n item.isVisible = true;\n }\n } else {\n for (const item of this.eclRootMenuItems) {\n if (item.el.nativeElement.getBoundingClientRect().right > this.itemsList.nativeElement.getBoundingClientRect().right) {\n this.lastVisibleItem = item;\n break;\n }\n item.isVisible = true;\n }\n }\n }\n\n private resetVisibilityIndicator(): void {\n this.eclRootMenuItems.forEach((item) => (item.isVisible = false));\n }\n\n private resetOverflowValues(): void {\n this.isShowPrevBtn = false;\n this.isShowNextBtn = false;\n this.hasOverflow = false;\n this.menuListStyleLeft = '0px';\n this.offsetLeft = 0;\n this.totalItemsWidth = 0;\n this.lastVisibleItem = null;\n }\n\n private setClassForPrevNextButtons(): void {\n this.currentItem = this.eclRootMenuItems.find((item) => item.isCurrent);\n if (this.currentItem) {\n if (this.currentItem.isVisible) {\n this.isPrevBtnCurrentClass = true;\n } else {\n this.isPrevBtnCurrentClass = false;\n }\n }\n }\n\n private checkMenuItemsWidth(): void {\n this.eclRootMenuItems.forEach((item) => {\n item.checkMenuItem(this.maxLines, this.isMobileBreakpoint);\n this.totalItemsWidth += item.el.nativeElement.offsetWidth;\n });\n }\n\n public get isMenuExpandedInMobile(): boolean {\n return this.isMobileBreakpoint && this.isAnyRootMenuItemExpanded();\n }\n\n private isAnyRootMenuItemExpanded(): boolean {\n return this.eclRootMenuItems.some((item) => item.isExpanded);\n }\n\n private createRootMenuItemsChangesObservable(): Observable<QueryList<EclMenuItemComponent>> {\n return of(this.eclRootMenuItems).pipe(mergeWith(this.eclRootMenuItems.changes), takeUntil(this.destroy$));\n }\n\n private onMenuItemChanges(): void {\n this.diff = this.differ.diff(this.eclRootMenuItems);\n\n if (!this.diff) {\n this.eclRootMenuItems.forEach((rootItem) => {\n this.connectMenuItemEvents(rootItem);\n });\n } else {\n this.diff.forEachAddedItem((change) => {\n this.connectMenuItemEvents(change.item);\n });\n }\n }\n\n private connectMenuItemEvents(item: EclMenuItemComponent): void {\n item.menuItemSelect.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemSelected(evt);\n });\n item.menuItemHover.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemHovered(evt);\n });\n item.menuItemHoverOut.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemHoveredOut(evt);\n });\n item.menuItemCaret.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemCaret(evt);\n });\n item.menuMegaItemSelect.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onMenuMegaItemSelected(item, evt);\n });\n item.menuItemFocus.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemFocused(item);\n });\n item.menuItemKeydown.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.onRootMenuItemKeydown(item, evt);\n });\n item.menuMegaLastItemTab.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.openCloseButton.onFocus();\n });\n }\n\n private onRootMenuItemFocused(item: EclMenuItem): void {\n const index = this.findIndexInArray(item);\n if (!this.isMobileBreakpoint) {\n this.closeRootMenu();\n }\n if (this.isMovePrevOverflow(index)){\n this.onPrevBtnClick();\n } else if (this.isMoveNextOverflow(index)){\n this.onNextBtnClick();\n }\n }\n\n private onRootMenuItemKeydown(item: EclMenuItemComponent, evt: EclMenuItemKeydownEvent): void {\n switch (evt.domEvent.key) {\n case KeyCode.ARROW_DOWN: {\n this.onRootMenuItemEnter(item);\n break;\n }\n case KeyCode.ARROW_RIGHT: {\n this.onNextMenuItemFocus(item);\n break;\n }\n case KeyCode.ARROW_UP: {\n this.onPrevMenuItemFocus(item);\n break;\n }\n case KeyCode.ARROW_LEFT: {\n this.onPrevMenuItemFocus(item);\n break;\n }\n case KeyCode.ENTER: {\n this.onRootMenuItemEnter(item);\n break;\n }\n case KeyCode.ESCAPE: {\n this.onRootMenuItemEscape(item, evt.domEvent);\n break;\n }\n case KeyCode.TAB: {\n if (this.isMobileBreakpoint && this.isLastItem(item)) {\n evt.preventDefault();\n this.openCloseButton.onFocus();\n }\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private isLastItem(item: EclMenuItemComponent): boolean {\n return this.eclRootMenuItems.last === item;\n }\n\n private onRootMenuItemEscape(item: EclMenuItem, evt: Event): void {\n if (item.isHovered) {\n this.closeRootMenu();\n }\n evt.stopPropagation();\n }\n\n private onPrevMenuItemFocus(item: EclMenuItem): void {\n const index = this.findIndexInArray(item);\n if (index !== 0) {\n this.getRootMenuItemsArray()[index - 1].onFocusFromNext();\n }\n }\n\n private onNextMenuItemFocus(item: EclMenuItem): void {\n const index = this.findIndexInArray(item);\n if (index !== this.getRootMenuItemsArray().length - 1) {\n this.getRootMenuItemsArray()[index + 1].onFocusFromPrev();\n }\n }\n\n private findIndexInArray(item: EclMenuItem): number {\n return this.getRootMenuItemsArray().findIndex(el => item === el);\n }\n\n private isMoveNextOverflow(index: number): boolean {\n return !this.getRootMenuItemsArray()[index].isVisible && this.isShowNextBtn;\n }\n\n private isMovePrevOverflow(index: number): boolean {\n return !this.getRootMenuItemsArray()[index].isVisible && this.isShowPrevBtn;\n }\n\n private onRootMenuItemSelected(evt: EclMenuItemSelectEvent): void {\n const requestedRootMenuItem: EclMenuItem = evt.menuItem;\n\n this.closeRootMenu();\n this.deselectAllRootMenuItems();\n this.deselectAllSubmenusItems();\n this.selectMenuItem(requestedRootMenuItem);\n this.onCloseHamburgerMenu();\n if (this.hasOverflow) {\n this.managePrevNextButtonsClassOnItemSelected();\n }\n this.sendMenuItemSelectEvent(evt);\n }\n\n private managePrevNextButtonsClassOnItemSelected(): void {\n if (this.isShowNextBtn) {\n this.isPrevBtnCurrentClass = true;\n } else {\n this.isPrevBtnCurrentClass = false;\n }\n }\n\n private onRootMenuItemHovered(evt: EclMenuItemHoverEvent): void {\n this.openSubmenu(evt.menuItem);\n }\n\n private onRootMenuItemEnter(item: EclMenuItem): void {\n if (this.isMobileBreakpoint) {\n this.closeRootMenuButOneItem(item);\n this.toggleExpandedForMenuItem(item);\n } else {\n if (!item.isHovered) {\n this.openSubmenu(item);\n } else {\n this.closeRootMenu();\n }\n }\n }\n\n private openSubmenu(item: EclMenuItem): void {\n if (item.isVisible) {\n if (!this.isMobileBreakpoint && (item as EclMenuItemComponent).submenu) {\n this.checkMegaMenu(item as EclMenuItemComponent);\n }\n item.isHovered = true;\n this.closeRootMenuButOneItem(item);\n this.showMenu();\n }\n }\n\n private getRootMenuItemsArray(): EclMenuItemComponent[] {\n return this.eclRootMenuItems.toArray();\n }\n\n private checkMegaMenu(menuItem: EclMenuItemComponent): void {\n if (menuItem.isFull) {\n if (this.isRtl) {\n menuItem.submenu.offsetRight = this.offsetLeft;\n } else {\n menuItem.submenu.offsetLeft = this.offsetLeft;\n }\n return;\n }\n this.checkEnoughSpaceForMegaMenu(menuItem);\n }\n\n private checkEnoughSpaceForMegaMenu(menuItem: EclMenuItemComponent): void {\n const megaBounding = menuItem.submenu.el.nativeElement.getBoundingClientRect();\n const containerBounding = this.innerSection.nativeElement.getBoundingClientRect();\n const menuItemBounding = menuItem.el.nativeElement.getBoundingClientRect();\n\n const megaWidth = megaBounding.width;\n const containerWidth = containerBounding.width;\n const menuItemPosition = menuItemBounding.left - containerBounding.left;\n\n if (menuItemPosition + megaWidth > containerWidth) {\n menuItem.submenu.isRtlDisplay = true;\n } else {\n menuItem.submenu.isRtlDisplay = false;\n }\n }\n\n private onRootMenuItemHoveredOut(evt: EclMenuItemHoverEvent): void {\n if (!this.isMobileBreakpoint) {\n this.closeRootMenu();\n }\n }\n\n private onRootMenuItemCaret(evt: EclMenuItemCaretEvent): void {\n const requestedRootMenuItem: EclMenuItem = evt.menuItem;\n\n this.closeRootMenuButOneItem(requestedRootMenuItem);\n this.toggleExpandedForMenuItem(requestedRootMenuItem);\n }\n\n private onMenuMegaItemSelected(rootMenuItem: EclMenuItem, evt: EclMenuItemSelectEvent): void {\n const requestedSubmenuItem = evt.menuItem;\n\n this.closeRootMenu();\n this.deselectAllRootMenuItems();\n this.deselectAllSubmenusItems();\n this.selectMenuItem(rootMenuItem);\n this.selectMenuItem(requestedSubmenuItem);\n this.onCloseHamburgerMenu();\n if (this.hasOverflow) {\n this.managePrevNextButtonsClassOnItemSelected();\n }\n this.sendMenuItemSelectEvent(evt);\n\n this.hideMenu();\n }\n\n private deselectAllRootMenuItems(): void {\n this.deselectMenuItems(this.eclRootMenuItems.toArray());\n }\n\n private deselectAllSubmenusItems(): void {\n this.eclRootMenuItems.forEach((rootItem) => {\n this.deselectMenuItems(rootItem.children);\n });\n }\n\n private deselectMenuItems(items: Array<EclMenuItem>): void {\n items.forEach((it) => {\n it.isCurrent = false;\n });\n }\n\n private selectMenuItem(item: EclMenuItem): void {\n item.isCurrent = true;\n this.currentItem = item;\n }\n\n private hideMenu(): void {\n this.isMenuHidden = true;\n }\n\n private showMenu(): void {\n this.isMenuHidden = false;\n }\n\n private closeRootMenu(): void {\n this.eclRootMenuItems.forEach((it) => {\n it.isExpanded = false;\n it.isHovered = false;\n });\n }\n\n private closeRootMenuButOneItem(item: EclMenuItem): void {\n this.eclRootMenuItems\n .filter((it) => it !== item)\n .forEach((it) => {\n it.isExpanded = false;\n it.isHovered = false;\n });\n }\n\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n if (rtlState !== undefined && this.isRtl !== rtlState) {\n this.isRtl = rtlState;\n if (this.hasOverflow) {\n this.slideMenuInitialState();\n setTimeout(() => this.checkMenuOverflow());\n }\n }\n });\n }\n\n private toggleExpandedForMenuItem(item: EclMenuItem): void {\n item.isExpanded = !item.isExpanded;\n }\n\n private onOpenHamburgerMenu(): void {\n this.disableScroll();\n this.isHamburgerMenuOpened = true;\n this.openHamburgerMenu.emit();\n this.focusOnFirstItem();\n }\n\n private onCloseHamburgerMenu(): void {\n this.isHamburgerMenuOpened = false;\n this.enableScroll();\n }\n\n private disableScroll(): void {\n document.body.classList.add('no-scroll');\n }\n\n private enableScroll(): void {\n document.body.classList.remove('no-scroll');\n }\n\n private focusOnFirstItem(): void {\n this.eclRootMenuItems.first.onFocusFromPrev();\n }\n\n private sendMenuItemSelectEvent(evt: EclMenuItemSelectEvent): void {\n this.menuItemSelect.next(new EclMenuItemSelectEvent(evt.menuItem, evt.domEvent));\n }\n\n private observeRootMenuItemsChanges(): void {\n this.diff = this.differ.diff(this.eclRootMenuItems);\n this.createRootMenuItemsChangesObservable().pipe(takeUntil(this.destroy$)).subscribe(this.onMenuItemChanges.bind(this));\n }\n\n private observeSwipeGestures(): void {\n // load hammerjs only on browser\n if(isPlatformBrowser(this.platformId)) {\n import('hammerjs').then((Hammer: Hammer) => {\n this.hammertime = new Hammer.default(document, { inputClass: Hammer.TouchInput });\n this.hammertime.on('swipeleft', this.onSwipeLeft.bind(this));\n this.hammertime.on('swiperight', this.onSwipeRight.bind(this));\n }).catch((error) => {\n console.error('Error loading HammerJS', error);\n });\n }\n }\n\n private subscribeToAppShellBreakpoints(): void {\n this.euiAppShellService.breakpoints$\n .pipe(takeUntil(this.destroy$))\n .subscribe((bkps: any) => {\n this.breakpointsValue = bkps ?? this.breakpointsValue;\n\n if (typeof bkps?.width === 'number') {\n const w = bkps.width;\n this.isMobileBreakpoint = w <= 415;\n this.isTablet = w > 415 && w <= 1140;\n } else if (bkps && typeof bkps === 'object') {\n this.isMobileBreakpoint = !!(bkps.Handset || bkps.Small || bkps.mobile);\n this.isTablet = !!(bkps.Tablet || bkps.tablet);\n\n } else if (typeof bkps?.isMobile !== 'undefined' || typeof bkps?.isTablet !== 'undefined') {\n this.isMobileBreakpoint = !!bkps.isMobile;\n this.isTablet = !!bkps.isTablet;\n }\n\n if (!this.isMobileBreakpoint) {\n this.overlayStyleTop = null;\n this.innerStyleTop = null;\n }\n });\n }\n}\n","<div class=\"ecl-menu__overlay\" [style.top.px]=\"overlayStyleTop\"></div>\n<div class=\"ecl-container ecl-menu__container\">\n <button #openCloseButton eclButton isIconOnly variant=\"tertiary\" eclStyle=\"neutral\" type=\"button\" class=\"ecl-menu__open\"\n (click)=\"onMenuOpenCloseClick($event)\" [attr.aria-expanded]=\"isHamburgerMenuOpened\">\n <ecl-icon icon=\"hamburger\" size=\"m\"></ecl-icon>\n <ecl-icon icon=\"close\" size=\"m\"></ecl-icon>\n @if (isHamburgerMenuOpened) {\n <span eclButtonLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n } @else {\n <span eclButtonLabel>{{ 'ecl.menu.MENU' | translate }}</span>\n }\n </button>\n\n <section\n class=\"ecl-menu__inner\"\n #innerSection\n [class.ecl-menu__inner--expanded]=\"isMenuExpandedInMobile\"\n [class.ecl-menu__inner--has-overflow]=\"hasOverflow\"\n aria-label=\"Menu\" [style.top.px]=\"innerStyleTop\">\n <header class=\"ecl-menu__inner-header\">\n <button\n eclButton\n variant=\"tertiary\"\n class=\"ecl-menu__close\"\n containerStyleClass=\"ecl-menu__close-container\"\n (click)=\"onMenuCloseClick($event)\">\n <span eclButtonLabel>{{ 'ecl.common.CLOSE' | translate }}</span>\n <ecl-icon icon=\"close\" size=\"s\"></ecl-icon>\n </button>\n\n <div class=\"ecl-menu__title\">{{ 'ecl.menu.MENU' | translate }}</div>\n\n <button eclButton variant=\"tertiary\" class=\"ecl-menu__back\" (click)=\"onMenuBackClick($event)\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel>{{ 'ecl.common.BACK' | translate }}</span>\n </button>\n </header>\n <button\n eclButton\n #btnPrevious\n tabindex=\"-1\"\n variant=\"tertiary\"\n isIconOnly\n class=\"ecl-menu__item ecl-menu__items-previous\"\n [class.ecl-menu__item--current]=\"isPrevBtnCurrentClass\"\n [style.display]=\"isShowPrevBtn ? 'flex' : 'none'\"\n (click)=\"onPrevBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-270\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.PREVIOUS' | translate }}</span>\n </button>\n <button\n eclButton\n #btnNext\n variant=\"tertiary\"\n tabindex=\"-1\"\n isIconOnly\n class=\"ecl-menu__item ecl-menu__items-next\"\n [class.ecl-menu__item--current]=\"!isPrevBtnCurrentClass\"\n [style.display]=\"isShowNextBtn ? 'flex' : 'none'\"\n (click)=\"onNextBtnClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"s\" transform=\"rotate-90\"></ecl-icon>\n <span eclButtonLabel class=\"ecl-u-sr-only\">{{ 'ecl.common.NEXT' | translate }}</span>\n </button>\n <ul class=\"ecl-menu__list\" #itemsList [style.right]=\"menuListStyleRight\" [style.left]=\"menuListStyleLeft\">\n <ng-content></ng-content>\n </ul>\n </section>\n</div>\n","import { EclMenuComponent, EclMenuItemComponent } from './ecl-menu';\nimport { EclMenuMegaComponent, EclMenuMegaItemComponent } from './ecl-menu-mega';\n\nexport * from './ecl-menu/index';\nexport * from './ecl-menu-mega/index';\nexport * from './events/index';\nexport * from './models/ecl-menu-item.model';\n\nexport const EUI_ECL_MENU = [\n EclMenuComponent, EclMenuItemComponent, EclMenuMegaComponent, EclMenuMegaItemComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3"],"mappings":"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"}
|