@eui/ecl 23.0.0-alpha.3 → 23.0.0-alpha.5
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 +77 -0
- package/docs/components/EclAddToCalendarComponent.html +7 -62
- package/docs/components/EclAnimatedNumbersComponent.html +0 -39
- package/docs/components/EclAppComponent.html +12 -72
- package/docs/components/EclBannerComponent.html +46 -46
- package/docs/components/EclBlockquoteComponent.html +6 -1
- package/docs/components/EclCarouselComponent.html +5 -0
- package/docs/components/EclCategoryFilterComponent.html +5 -0
- package/docs/components/EclCategoryFilterItemComponent.html +15 -10
- package/docs/components/EclCheckboxLabelComponent.html +1 -1
- package/docs/components/EclContentItemComponent.html +4 -0
- package/docs/components/EclDateBlockComponent.html +43 -18
- package/docs/components/EclExpandableComponent.html +63 -1
- package/docs/components/EclFeaturedComponent.html +46 -37
- package/docs/components/EclFileComponent.html +19 -14
- package/docs/components/EclFileItemsComponent.html +31 -1
- package/docs/components/EclFormLabelComponent.html +1 -1
- package/docs/components/EclGalleryComponent.html +29 -29
- package/docs/components/EclGalleryItemComponent.html +47 -47
- package/docs/components/EclIconComponent.html +158 -48
- package/docs/components/EclInpageNavigationComponent.html +21 -1
- package/docs/components/EclInpageNavigationItemComponent.html +39 -1
- package/docs/components/EclListIllustrationComponent.html +47 -47
- package/docs/components/EclListIllustrationItemComponent.html +1 -1
- package/docs/components/EclMediaContainerComponent.html +20 -20
- package/docs/components/EclMegaMenuFeaturedComponent.html +6 -1
- package/docs/components/EclMegaMenuInfoComponent.html +11 -1
- package/docs/components/EclMegaMenuItemComponent.html +44 -34
- package/docs/components/EclMegaMenuSubitemComponent.html +46 -31
- package/docs/components/EclMenuItemComponent.html +12 -2
- package/docs/components/EclMenuMegaItemComponent.html +8 -3
- package/docs/components/EclMultiselectComponent.html +56 -56
- package/docs/components/EclMultiselectDropdownComponent.html +1 -1
- package/docs/components/EclMultiselectOptgroupComponent.html +6 -1
- package/docs/components/EclNavigationListItemComponent.html +1 -1
- package/docs/components/EclNotificationComponent.html +32 -1
- package/docs/components/EclPaginationItemComponent.html +84 -59
- package/docs/components/EclRatingFieldComponent.html +98 -2
- package/docs/components/EclSearchFormComponent.html +41 -1
- package/docs/components/EclSelectContainerComponent.html +116 -1
- package/docs/components/EclSiteFooterComponent.html +1 -1
- package/docs/components/EclSiteFooterCoreComponent.html +6 -1
- package/docs/components/EclSiteFooterFixedContentEUComponent.html +16 -1
- package/docs/components/EclSiteFooterRowCommonComponent.html +6 -1
- package/docs/components/EclSiteHeaderComponent.html +27 -27
- package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +96 -86
- package/docs/components/EclSiteHeaderLoginComponent.html +1 -1
- package/docs/components/EclSiteHeaderSearchComponent.html +20 -10
- package/docs/components/EclSocialMediaFollowComponent.html +7 -2
- package/docs/components/EclSocialMediaFollowItemComponent.html +40 -25
- package/docs/components/EclSplashPageLanguageCategoryComponent.html +6 -1
- package/docs/components/EclSplashPageLanguageContainerComponent.html +6 -1
- package/docs/components/EclSplashPageLanguageLinkComponent.html +6 -1
- package/docs/components/EclTabComponent.html +50 -20
- package/docs/components/EclTabsComponent.html +1 -1
- package/docs/components/EclTagComponent.html +6 -1
- package/docs/components/EclTimelineComponent.html +4 -169
- package/docs/components/EclTimelineItemComponent.html +104 -1
- package/docs/directives/EclAccordionDirective.html +9 -99
- package/docs/directives/EclFileTitleDirective.html +5 -0
- package/docs/directives/EclFileUploadDirective.html +120 -0
- package/docs/directives/EclGalleryMediaDirective.html +5 -0
- package/docs/directives/EclMediaContainerIframeDirective.html +9 -11
- package/docs/directives/EclMediaContainerItemDirective.html +5 -0
- package/docs/directives/EclMultiselectOptionDirective.html +20 -10
- package/docs/directives/EclRadioDirective.html +18 -13
- package/docs/directives/EclSelectDirective.html +40 -0
- package/docs/directives/EclSiteFooterListDirective.html +5 -104
- package/docs/directives/EclSiteFooterSectionDirective.html +1 -1
- package/docs/directives/EclSiteFooterTitleDirective.html +29 -0
- package/docs/directives/EclTableHeaderDirective.html +5 -0
- package/docs/directives/EclTextMediaMediaAnchorDirective.html +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/json/EclAddToCalendarComponent.md +1 -1
- package/docs/json/EclBannerComponent.md +7 -7
- package/docs/json/EclCategoryFilterItemComponent.md +1 -1
- package/docs/json/EclDateBlockComponent.md +1 -1
- package/docs/json/EclExpandableComponent.md +2 -0
- package/docs/json/EclFeaturedComponent.md +3 -3
- package/docs/json/EclFileComponent.md +1 -1
- package/docs/json/EclFileItemsComponent.md +1 -0
- package/docs/json/EclGalleryComponent.md +4 -4
- package/docs/json/EclGalleryItemComponent.md +2 -2
- package/docs/json/EclIconComponent.md +4 -4
- package/docs/json/EclInpageNavigationItemComponent.md +1 -0
- package/docs/json/EclListIllustrationComponent.md +3 -3
- package/docs/json/EclMediaContainerComponent.md +1 -1
- package/docs/json/EclMediaContainerIframeDirective.md +2 -2
- package/docs/json/EclMegaMenuItemComponent.md +2 -2
- package/docs/json/EclMegaMenuSubitemComponent.md +3 -3
- package/docs/json/EclMenuItemComponent.md +1 -1
- package/docs/json/EclMenuMegaItemComponent.md +1 -1
- package/docs/json/EclMultiselectComponent.md +3 -3
- package/docs/json/EclMultiselectOptionDirective.md +1 -1
- package/docs/json/EclNavigationListItemComponent.md +1 -1
- package/docs/json/EclNotificationComponent.md +1 -0
- package/docs/json/EclPaginationItemComponent.md +3 -3
- package/docs/json/EclRadioDirective.md +1 -1
- package/docs/json/EclRatingFieldComponent.md +1 -0
- package/docs/json/EclSearchFormComponent.md +1 -0
- package/docs/json/EclSelectContainerComponent.md +6 -0
- package/docs/json/EclSiteFooterSectionDirective.md +1 -1
- package/docs/json/EclSiteHeaderComponent.md +2 -2
- package/docs/json/EclSiteHeaderLanguagePopoverComponent.md +6 -6
- package/docs/json/EclSiteHeaderSearchComponent.md +1 -1
- package/docs/json/EclSocialMediaFollowComponent.md +1 -1
- package/docs/json/EclSocialMediaFollowItemComponent.md +4 -4
- package/docs/json/EclTabComponent.md +2 -1
- package/docs/json/EclTagComponent.md +1 -1
- package/docs/json/EclTextMediaMediaAnchorDirective.md +1 -1
- package/docs/json/EclTimelineItemComponent.md +1 -0
- package/docs/json/documentation.json +4188 -2895
- package/docs/llms.txt +152 -136
- package/docs/properties.html +1 -1
- package/fesm2022/eui-ecl-components-ecl-accordion.mjs +5 -15
- package/fesm2022/eui-ecl-components-ecl-accordion.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-add-to-calendar.mjs +9 -7
- package/fesm2022/eui-ecl-components-ecl-add-to-calendar.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-animated-numbers.mjs +2 -2
- package/fesm2022/eui-ecl-components-ecl-animated-numbers.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-app.mjs +13 -14
- package/fesm2022/eui-ecl-components-ecl-app.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-banner.mjs +27 -37
- package/fesm2022/eui-ecl-components-ecl-banner.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-blockquote.mjs +11 -7
- package/fesm2022/eui-ecl-components-ecl-blockquote.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-card.mjs +7 -10
- package/fesm2022/eui-ecl-components-ecl-card.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-carousel.mjs +14 -18
- package/fesm2022/eui-ecl-components-ecl-carousel.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-category-filter.mjs +21 -13
- package/fesm2022/eui-ecl-components-ecl-category-filter.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-checkbox.mjs +5 -8
- package/fesm2022/eui-ecl-components-ecl-checkbox.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-content-item.mjs +18 -26
- package/fesm2022/eui-ecl-components-ecl-content-item.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-date-block.mjs +39 -22
- package/fesm2022/eui-ecl-components-ecl-date-block.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-expandable.mjs +21 -16
- package/fesm2022/eui-ecl-components-ecl-expandable.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-featured.mjs +17 -18
- package/fesm2022/eui-ecl-components-ecl-featured.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-file-upload.mjs +25 -23
- package/fesm2022/eui-ecl-components-ecl-file-upload.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-file.mjs +27 -20
- package/fesm2022/eui-ecl-components-ecl-file.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-form-label.mjs +6 -12
- package/fesm2022/eui-ecl-components-ecl-form-label.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-gallery.mjs +44 -71
- package/fesm2022/eui-ecl-components-ecl-gallery.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-help-block.mjs +5 -8
- package/fesm2022/eui-ecl-components-ecl-help-block.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-icon.mjs +50 -39
- package/fesm2022/eui-ecl-components-ecl-icon.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs +38 -32
- package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-label.mjs +6 -7
- package/fesm2022/eui-ecl-components-ecl-label.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs +37 -57
- package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs +13 -21
- package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-media-container.mjs +22 -27
- package/fesm2022/eui-ecl-components-ecl-media-container.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs +67 -73
- package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-menu.mjs +46 -51
- package/fesm2022/eui-ecl-components-ecl-menu.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-multiselect.mjs +52 -43
- package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs +13 -19
- package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs +6 -9
- package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-notification.mjs +19 -21
- package/fesm2022/eui-ecl-components-ecl-notification.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-page-header.mjs +5 -8
- package/fesm2022/eui-ecl-components-ecl-page-header.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-pagination.mjs +57 -64
- package/fesm2022/eui-ecl-components-ecl-pagination.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-radio.mjs +8 -7
- package/fesm2022/eui-ecl-components-ecl-radio.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-rating-field.mjs +35 -27
- package/fesm2022/eui-ecl-components-ecl-rating-field.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-search-form.mjs +23 -23
- package/fesm2022/eui-ecl-components-ecl-search-form.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-select.mjs +31 -40
- package/fesm2022/eui-ecl-components-ecl-select.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-site-footer.mjs +71 -70
- package/fesm2022/eui-ecl-components-ecl-site-footer.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-site-header.mjs +44 -55
- package/fesm2022/eui-ecl-components-ecl-site-header.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs +27 -36
- package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-splash-page.mjs +38 -18
- package/fesm2022/eui-ecl-components-ecl-splash-page.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-sticky-container.mjs +11 -16
- package/fesm2022/eui-ecl-components-ecl-sticky-container.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-table.mjs +16 -15
- package/fesm2022/eui-ecl-components-ecl-table.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-tabs.mjs +32 -34
- package/fesm2022/eui-ecl-components-ecl-tabs.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-tag.mjs +14 -12
- package/fesm2022/eui-ecl-components-ecl-tag.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-text-area.mjs +9 -12
- package/fesm2022/eui-ecl-components-ecl-text-area.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-text-input.mjs +15 -19
- package/fesm2022/eui-ecl-components-ecl-text-input.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-text-media.mjs +5 -8
- package/fesm2022/eui-ecl-components-ecl-text-media.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-timeline.mjs +40 -59
- package/fesm2022/eui-ecl-components-ecl-timeline.mjs.map +1 -1
- package/fesm2022/eui-ecl-core.mjs.map +1 -1
- package/package.json +8 -3
- package/types/eui-ecl-components-ecl-accordion.d.ts +2 -10
- package/types/eui-ecl-components-ecl-accordion.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-add-to-calendar.d.ts +4 -1
- package/types/eui-ecl-components-ecl-add-to-calendar.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-animated-numbers.d.ts +1 -1
- package/types/eui-ecl-components-ecl-animated-numbers.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-app.d.ts +6 -6
- package/types/eui-ecl-components-ecl-app.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-banner.d.ts +9 -10
- package/types/eui-ecl-components-ecl-banner.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-blockquote.d.ts +2 -2
- package/types/eui-ecl-components-ecl-blockquote.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-card.d.ts +2 -3
- package/types/eui-ecl-components-ecl-card.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-carousel.d.ts +10 -12
- package/types/eui-ecl-components-ecl-carousel.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-category-filter.d.ts +4 -4
- package/types/eui-ecl-components-ecl-category-filter.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-checkbox.d.ts +2 -3
- package/types/eui-ecl-components-ecl-checkbox.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-content-item.d.ts +8 -10
- package/types/eui-ecl-components-ecl-content-item.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-date-block.d.ts +10 -10
- package/types/eui-ecl-components-ecl-date-block.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-expandable.d.ts +7 -8
- package/types/eui-ecl-components-ecl-expandable.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-featured.d.ts +4 -5
- package/types/eui-ecl-components-ecl-featured.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-file-upload.d.ts +9 -11
- package/types/eui-ecl-components-ecl-file-upload.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-file.d.ts +7 -8
- package/types/eui-ecl-components-ecl-file.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-form-label.d.ts +3 -5
- package/types/eui-ecl-components-ecl-form-label.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-gallery.d.ts +32 -41
- package/types/eui-ecl-components-ecl-gallery.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-help-block.d.ts +3 -4
- package/types/eui-ecl-components-ecl-help-block.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-icon.d.ts +17 -12
- package/types/eui-ecl-components-ecl-icon.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-inpage-navigation.d.ts +18 -19
- package/types/eui-ecl-components-ecl-inpage-navigation.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-label.d.ts +3 -3
- package/types/eui-ecl-components-ecl-label.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-list-illustration.d.ts +25 -30
- package/types/eui-ecl-components-ecl-list-illustration.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-loading-indicator.d.ts +6 -8
- package/types/eui-ecl-components-ecl-loading-indicator.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-media-container.d.ts +9 -11
- package/types/eui-ecl-components-ecl-media-container.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-mega-menu.d.ts +25 -28
- package/types/eui-ecl-components-ecl-mega-menu.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-menu.d.ts +26 -31
- package/types/eui-ecl-components-ecl-menu.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-multiselect.d.ts +13 -13
- package/types/eui-ecl-components-ecl-multiselect.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-navigation-list.d.ts +5 -7
- package/types/eui-ecl-components-ecl-navigation-list.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-news-ticker.d.ts +2 -3
- package/types/eui-ecl-components-ecl-news-ticker.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-notification.d.ts +17 -19
- package/types/eui-ecl-components-ecl-notification.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-page-header.d.ts +2 -3
- package/types/eui-ecl-components-ecl-page-header.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-pagination.d.ts +22 -29
- package/types/eui-ecl-components-ecl-pagination.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-radio.d.ts +2 -3
- package/types/eui-ecl-components-ecl-radio.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-rating-field.d.ts +12 -12
- package/types/eui-ecl-components-ecl-rating-field.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-search-form.d.ts +10 -10
- package/types/eui-ecl-components-ecl-search-form.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-select.d.ts +13 -17
- package/types/eui-ecl-components-ecl-select.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-site-footer.d.ts +22 -27
- package/types/eui-ecl-components-ecl-site-footer.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-site-header.d.ts +16 -18
- package/types/eui-ecl-components-ecl-site-header.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-social-media-follow.d.ts +21 -23
- package/types/eui-ecl-components-ecl-social-media-follow.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-splash-page.d.ts +6 -6
- package/types/eui-ecl-components-ecl-splash-page.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-sticky-container.d.ts +6 -7
- package/types/eui-ecl-components-ecl-sticky-container.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-table.d.ts +4 -5
- package/types/eui-ecl-components-ecl-table.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-tabs.d.ts +5 -6
- package/types/eui-ecl-components-ecl-tabs.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-tag.d.ts +3 -4
- package/types/eui-ecl-components-ecl-tag.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-text-area.d.ts +5 -6
- package/types/eui-ecl-components-ecl-text-area.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-text-input.d.ts +6 -7
- package/types/eui-ecl-components-ecl-text-input.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-text-media.d.ts +2 -2
- package/types/eui-ecl-components-ecl-text-media.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-timeline.d.ts +8 -17
- package/types/eui-ecl-components-ecl-timeline.d.ts.map +1 -1
package/docs/properties.html
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, Component, inject, Renderer2, afterNextRender, ElementRef,
|
|
2
|
+
import { Directive, Component, inject, Renderer2, afterNextRender, ElementRef, ContentChildren, forwardRef } from '@angular/core';
|
|
3
3
|
import * as i1 from '@eui/ecl/components/ecl-icon';
|
|
4
4
|
import { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';
|
|
5
5
|
import * as i1$1 from '@eui/ecl/core';
|
|
@@ -61,16 +61,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
61
61
|
*
|
|
62
62
|
*/
|
|
63
63
|
class EclAccordionDirective {
|
|
64
|
-
/**
|
|
65
|
-
* @description
|
|
66
|
-
* Retrieves and returns the CSS classes for the component based on its current state.
|
|
67
|
-
* Uses `baseDirective` to fetch the appropriate CSS classes.
|
|
68
|
-
*
|
|
69
|
-
* @returns {string} - A string of CSS class names.
|
|
70
|
-
*/
|
|
71
|
-
get cssClasses() {
|
|
72
|
-
return [this.baseDirective.getCssClasses('ecl-accordion')].join(' ').trim();
|
|
73
|
-
}
|
|
74
64
|
constructor() {
|
|
75
65
|
this.baseDirective = inject(ECLBaseDirective);
|
|
76
66
|
this.renderer = inject(Renderer2);
|
|
@@ -98,7 +88,7 @@ class EclAccordionDirective {
|
|
|
98
88
|
this.renderer.addClass(elements[elements.length - 1].nativeElement, 'is-last');
|
|
99
89
|
}
|
|
100
90
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclAccordionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
101
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: EclAccordionDirective, isStandalone: true, selector: "div[eclAccordion]", host: { properties: { "class": "
|
|
91
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", type: EclAccordionDirective, isStandalone: true, selector: "div[eclAccordion]", host: { properties: { "class": "baseDirective.getCssClasses(\"ecl-accordion\")" } }, queries: [{ propertyName: "items", predicate: i0.forwardRef(() => EclAccordionItemDirective), read: ElementRef }], hostDirectives: [{ directive: i1$1.ECLBaseDirective }], ngImport: i0 }); }
|
|
102
92
|
}
|
|
103
93
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclAccordionDirective, decorators: [{
|
|
104
94
|
type: Directive,
|
|
@@ -109,13 +99,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
109
99
|
directive: ECLBaseDirective,
|
|
110
100
|
},
|
|
111
101
|
],
|
|
102
|
+
host: {
|
|
103
|
+
'[class]': 'baseDirective.getCssClasses("ecl-accordion")',
|
|
104
|
+
},
|
|
112
105
|
}]
|
|
113
106
|
}], ctorParameters: () => [], propDecorators: { items: [{
|
|
114
107
|
type: ContentChildren,
|
|
115
108
|
args: [forwardRef(() => EclAccordionItemDirective), { read: ElementRef }]
|
|
116
|
-
}], cssClasses: [{
|
|
117
|
-
type: HostBinding,
|
|
118
|
-
args: ['class']
|
|
119
109
|
}] } });
|
|
120
110
|
|
|
121
111
|
class EclAccordionToggleEvent extends EclBaseEvent {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-accordion.mjs","sources":["../../components/ecl-accordion/ecl-accordion-item-new.directive.ts","../../components/ecl-accordion/ecl-accordion-summary.component.ts","../../components/ecl-accordion/ecl-accordion-summary.component.html","../../components/ecl-accordion/ecl-accordion.directive.ts","../../components/ecl-accordion/events/ecl-accordion-toggle.event.ts","../../components/ecl-accordion/index.ts","../../components/ecl-accordion/eui-ecl-components-ecl-accordion.ts"],"sourcesContent":["import { Directive } from \"@angular/core\";\n\n@Directive({\n selector: 'details[eclAccordionItem]',\n host: {\n class: 'ecl-accordion__item',\n },\n})\nexport class EclAccordionItemDirective {}\n\n@Directive({\n selector: 'div[eclAccordionContent]',\n host: {\n class: 'ecl-accordion__content',\n },\n})\nexport class EclAccordionContentDirective {}","import {\n Component\n} from '@angular/core';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * Represents an individual item within an ECL Accordion.\n */\n@Component({\n selector: 'summary[eclAccordionToggle]',\n templateUrl: './ecl-accordion-summary.component.html',\n imports: [...EUI_ECL_ICON],\n host: {\n class: 'ecl-accordion__toggle',\n },\n})\nexport class EclAccordionSummaryComponent {}\n","<ng-content></ng-content>\n<ecl-icon icon=\"plus\" size=\"s\" class=\"ecl-accordion__toggle-icon\" ariaHidden=\"true\">\n</ecl-icon>\n<ecl-icon icon=\"minus\" size=\"s\" class=\"ecl-accordion__toggle-icon\" ariaHidden=\"true\">\n</ecl-icon>","import {\n afterNextRender,\n ContentChildren,\n Directive,\n ElementRef,\n forwardRef,\n
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-accordion.mjs","sources":["../../components/ecl-accordion/ecl-accordion-item-new.directive.ts","../../components/ecl-accordion/ecl-accordion-summary.component.ts","../../components/ecl-accordion/ecl-accordion-summary.component.html","../../components/ecl-accordion/ecl-accordion.directive.ts","../../components/ecl-accordion/events/ecl-accordion-toggle.event.ts","../../components/ecl-accordion/index.ts","../../components/ecl-accordion/eui-ecl-components-ecl-accordion.ts"],"sourcesContent":["import { Directive } from \"@angular/core\";\n\n@Directive({\n selector: 'details[eclAccordionItem]',\n host: {\n class: 'ecl-accordion__item',\n },\n})\nexport class EclAccordionItemDirective {}\n\n@Directive({\n selector: 'div[eclAccordionContent]',\n host: {\n class: 'ecl-accordion__content',\n },\n})\nexport class EclAccordionContentDirective {}","import {\n Component\n} from '@angular/core';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * Represents an individual item within an ECL Accordion.\n */\n@Component({\n selector: 'summary[eclAccordionToggle]',\n templateUrl: './ecl-accordion-summary.component.html',\n imports: [...EUI_ECL_ICON],\n host: {\n class: 'ecl-accordion__toggle',\n },\n})\nexport class EclAccordionSummaryComponent {}\n","<ng-content></ng-content>\n<ecl-icon icon=\"plus\" size=\"s\" class=\"ecl-accordion__toggle-icon\" ariaHidden=\"true\">\n</ecl-icon>\n<ecl-icon icon=\"minus\" size=\"s\" class=\"ecl-accordion__toggle-icon\" ariaHidden=\"true\">\n</ecl-icon>","import {\n afterNextRender,\n ContentChildren,\n Directive,\n ElementRef,\n forwardRef,\n inject,\n QueryList,\n Renderer2,\n OnDestroy,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { EclAccordionItemDirective } from './ecl-accordion-item-new.directive';\n\n/**\n * Accordion component that manages the expansion and collapsing state of accordion items.\n * Uses the `ECLBaseDirective` to apply appropriate CSS classes and manage the visual styling.\n *\n * @description\n * This is the main component for the accordion container, responsible for managing the expansion\n * of individual items within the accordion. It provides the functionality to group and organize content\n * in expandable sections.\n *\n * @property {string} cssClasses - Returns a string of CSS classes applied to the host element.\n * The main class is `ecl-accordion`, which can be extended with additional classes.\n *\n */\n@Directive({\n selector: 'div[eclAccordion]',\n hostDirectives: [\n {\n directive: ECLBaseDirective,\n },\n ],\n host: {\n '[class]': 'baseDirective.getCssClasses(\"ecl-accordion\")',\n },\n})\nexport class EclAccordionDirective implements OnDestroy {\n baseDirective = inject(ECLBaseDirective);\n private renderer = inject(Renderer2);\n\n @ContentChildren(forwardRef(() => EclAccordionItemDirective), { read: ElementRef })\n items!: QueryList<ElementRef>;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor() {\n afterNextRender(() => {\n this.setFirstAndLastClasses();\n this.items.changes\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.setFirstAndLastClasses());\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n private setFirstAndLastClasses(): void {\n const elements = this.items.toArray();\n\n if (elements.length === 0) return;\n\n elements.forEach((el) => {\n this.renderer.removeClass(el.nativeElement, 'is-first');\n this.renderer.removeClass(el.nativeElement, 'is-last');\n });\n\n this.renderer.addClass(elements[0].nativeElement, 'is-first');\n this.renderer.addClass(elements[elements.length - 1].nativeElement, 'is-last');\n }\n}\n","import { EclBaseEvent } from '@eui/ecl/core';\n\nexport class EclAccordionToggleEvent extends EclBaseEvent {\n\tconstructor(public isExpanded: boolean) {\n\t\tsuper();\n\t}\n}","\nimport { EclAccordionContentDirective, EclAccordionItemDirective } from './ecl-accordion-item-new.directive';\nimport { EclAccordionSummaryComponent } from './ecl-accordion-summary.component';\nimport { EclAccordionDirective } from './ecl-accordion.directive';\n\nexport * from './ecl-accordion-item-new.directive';\nexport * from './ecl-accordion-summary.component';\nexport * from './ecl-accordion.directive';\nexport * from './events/ecl-accordion-toggle.event';\n\nexport const EUI_ECL_ACCORDION = [\n EclAccordionContentDirective,\n EclAccordionItemDirective,\n EclAccordionSummaryComponent,\n EclAccordionDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, input, booleanAttribute,
|
|
2
|
+
import { Directive, signal, input, booleanAttribute, ViewEncapsulation, Component } from '@angular/core';
|
|
3
3
|
import { ECLBaseDirective } from '@eui/ecl/core';
|
|
4
4
|
import * as i1 from '@eui/ecl/components/ecl-icon';
|
|
5
5
|
import { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';
|
|
@@ -28,7 +28,11 @@ class EclAddToCalendarComponent extends ECLBaseDirective {
|
|
|
28
28
|
/**
|
|
29
29
|
* Adds `ecl-add-to-calendar` class to the host element.
|
|
30
30
|
*/
|
|
31
|
-
this.hostClass = true
|
|
31
|
+
this.hostClass = signal(true, /* @ts-ignore */
|
|
32
|
+
...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
33
|
+
/**
|
|
34
|
+
* Indicates whether the component should span the full width of its container.
|
|
35
|
+
*/
|
|
32
36
|
this.isFullWidth = input(false, { ...(ngDevMode ? { debugName: "isFullWidth" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
33
37
|
/**
|
|
34
38
|
* Title displayed in the component.
|
|
@@ -52,17 +56,15 @@ class EclAddToCalendarComponent extends ECLBaseDirective {
|
|
|
52
56
|
...(ngDevMode ? [undefined, { debugName: "calendarLocation" }] : /* istanbul ignore next */ []));
|
|
53
57
|
}
|
|
54
58
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclAddToCalendarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
55
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclAddToCalendarComponent, isStandalone: true, selector: "div[eclAddToCalendar]", inputs: { isFullWidth: { classPropertyName: "isFullWidth", publicName: "isFullWidth", isSignal: true, isRequired: false, transformFunction: null }, eclTitle: { classPropertyName: "eclTitle", publicName: "eclTitle", isSignal: true, isRequired: false, transformFunction: null }, calendarDates: { classPropertyName: "calendarDates", publicName: "calendarDates", isSignal: true, isRequired: false, transformFunction: null }, calendarTime: { classPropertyName: "calendarTime", publicName: "calendarTime", isSignal: true, isRequired: false, transformFunction: null }, calendarLocation: { classPropertyName: "calendarLocation", publicName: "calendarLocation", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ecl-add-to-calendar--full-width": "isFullWidth()", "class.ecl-add-to-calendar": "
|
|
59
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EclAddToCalendarComponent, isStandalone: true, selector: "div[eclAddToCalendar]", inputs: { isFullWidth: { classPropertyName: "isFullWidth", publicName: "isFullWidth", isSignal: true, isRequired: false, transformFunction: null }, eclTitle: { classPropertyName: "eclTitle", publicName: "eclTitle", isSignal: true, isRequired: false, transformFunction: null }, calendarDates: { classPropertyName: "calendarDates", publicName: "calendarDates", isSignal: true, isRequired: false, transformFunction: null }, calendarTime: { classPropertyName: "calendarTime", publicName: "calendarTime", isSignal: true, isRequired: false, transformFunction: null }, calendarLocation: { classPropertyName: "calendarLocation", publicName: "calendarLocation", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ecl-add-to-calendar--full-width": "isFullWidth()", "class.ecl-add-to-calendar": "hostClass()" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-add-to-calendar__info\" [class.ecl-container]=\"isFullWidth()\">\n <div class=\"ecl-add-to-calendar__info-content\">\n @if (eclTitle()) {\n <div class=\"ecl-add-to-calendar__title\">{{ eclTitle() }}</div>\n }\n @if (calendarDates() || calendarTime() || calendarLocation()) {\n <ul class=\"ecl-add-to-calendar__meta-list\">\n @if (calendarDates()) {\n <li class=\"ecl-add-to-calendar__meta-item\">\n <ecl-icon icon=\"calendar\" size=\"s\" class=\"ecl-add-to-calendar__meta-icon\" aria-hidden=\"true\"></ecl-icon>\n <span class=\"ecl-add-to-calendar__meta-label\">{{ calendarDates() }}</span>\n </li>\n }\n @if (calendarTime()) {\n <li class=\"ecl-add-to-calendar__meta-item\">\n <ecl-icon icon=\"clock\" size=\"s\" class=\"ecl-add-to-calendar__meta-icon\" aria-hidden=\"true\"></ecl-icon>\n <span class=\"ecl-add-to-calendar__meta-label\">{{ calendarTime() }}</span>\n </li>\n }\n @if (calendarLocation()) {\n <li class=\"ecl-add-to-calendar__meta-item\">\n <ecl-icon icon=\"location\" size=\"s\" class=\"ecl-add-to-calendar__meta-icon\" aria-hidden=\"true\"></ecl-icon>\n <span class=\"ecl-add-to-calendar__meta-label\">{{ calendarLocation() }}</span>\n </li>\n }\n </ul>\n }\n </div>\n \n <ng-content select=\"div[eclAddToCalendarAction]\"></ng-content>\n</div>", dependencies: [{ kind: "component", type: i1.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
56
60
|
}
|
|
57
61
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclAddToCalendarComponent, decorators: [{
|
|
58
62
|
type: Component,
|
|
59
63
|
args: [{ selector: 'div[eclAddToCalendar]', imports: [...EUI_ECL_ICON], encapsulation: ViewEncapsulation.None, host: {
|
|
60
64
|
'[class.ecl-add-to-calendar--full-width]': 'isFullWidth()',
|
|
65
|
+
'[class.ecl-add-to-calendar]': 'hostClass()',
|
|
61
66
|
}, template: "<div class=\"ecl-add-to-calendar__info\" [class.ecl-container]=\"isFullWidth()\">\n <div class=\"ecl-add-to-calendar__info-content\">\n @if (eclTitle()) {\n <div class=\"ecl-add-to-calendar__title\">{{ eclTitle() }}</div>\n }\n @if (calendarDates() || calendarTime() || calendarLocation()) {\n <ul class=\"ecl-add-to-calendar__meta-list\">\n @if (calendarDates()) {\n <li class=\"ecl-add-to-calendar__meta-item\">\n <ecl-icon icon=\"calendar\" size=\"s\" class=\"ecl-add-to-calendar__meta-icon\" aria-hidden=\"true\"></ecl-icon>\n <span class=\"ecl-add-to-calendar__meta-label\">{{ calendarDates() }}</span>\n </li>\n }\n @if (calendarTime()) {\n <li class=\"ecl-add-to-calendar__meta-item\">\n <ecl-icon icon=\"clock\" size=\"s\" class=\"ecl-add-to-calendar__meta-icon\" aria-hidden=\"true\"></ecl-icon>\n <span class=\"ecl-add-to-calendar__meta-label\">{{ calendarTime() }}</span>\n </li>\n }\n @if (calendarLocation()) {\n <li class=\"ecl-add-to-calendar__meta-item\">\n <ecl-icon icon=\"location\" size=\"s\" class=\"ecl-add-to-calendar__meta-icon\" aria-hidden=\"true\"></ecl-icon>\n <span class=\"ecl-add-to-calendar__meta-label\">{{ calendarLocation() }}</span>\n </li>\n }\n </ul>\n }\n </div>\n \n <ng-content select=\"div[eclAddToCalendarAction]\"></ng-content>\n</div>" }]
|
|
62
|
-
}], propDecorators: {
|
|
63
|
-
type: HostBinding,
|
|
64
|
-
args: ['class.ecl-add-to-calendar']
|
|
65
|
-
}], isFullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "isFullWidth", required: false }] }], eclTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "eclTitle", required: false }] }], calendarDates: [{ type: i0.Input, args: [{ isSignal: true, alias: "calendarDates", required: false }] }], calendarTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "calendarTime", required: false }] }], calendarLocation: [{ type: i0.Input, args: [{ isSignal: true, alias: "calendarLocation", required: false }] }] } });
|
|
67
|
+
}], propDecorators: { isFullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "isFullWidth", required: false }] }], eclTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "eclTitle", required: false }] }], calendarDates: [{ type: i0.Input, args: [{ isSignal: true, alias: "calendarDates", required: false }] }], calendarTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "calendarTime", required: false }] }], calendarLocation: [{ type: i0.Input, args: [{ isSignal: true, alias: "calendarLocation", required: false }] }] } });
|
|
66
68
|
|
|
67
69
|
const EUI_ECL_ADD_TO_CALENDAR = [
|
|
68
70
|
EclAddToCalendarComponent,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-add-to-calendar.mjs","sources":["../../components/ecl-add-to-calendar/ecl-add-to-calendar-action.directive.ts","../../components/ecl-add-to-calendar/ecl-add-to-calendar.component.ts","../../components/ecl-add-to-calendar/ecl-add-to-calendar.component.html","../../components/ecl-add-to-calendar/index.ts","../../components/ecl-add-to-calendar/eui-ecl-components-ecl-add-to-calendar.ts"],"sourcesContent":["import { Directive } from \"@angular/core\";\n\n@Directive({\n selector: 'div[eclAddToCalendarAction]',\n host: {\n class: 'ecl-add-to-calendar__action',\n },\n})\nexport class EclAddToCalendarActionDirective {}","import { booleanAttribute, Component,
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-add-to-calendar.mjs","sources":["../../components/ecl-add-to-calendar/ecl-add-to-calendar-action.directive.ts","../../components/ecl-add-to-calendar/ecl-add-to-calendar.component.ts","../../components/ecl-add-to-calendar/ecl-add-to-calendar.component.html","../../components/ecl-add-to-calendar/index.ts","../../components/ecl-add-to-calendar/eui-ecl-components-ecl-add-to-calendar.ts"],"sourcesContent":["import { Directive } from \"@angular/core\";\n\n@Directive({\n selector: 'div[eclAddToCalendarAction]',\n host: {\n class: 'ecl-add-to-calendar__action',\n },\n})\nexport class EclAddToCalendarActionDirective {}","import { booleanAttribute, Component, input, signal, ViewEncapsulation } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * ECL Add to Calendar component.\n * Displays event information with optional date, time, and location metadata.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclAddToCalendar]',\n templateUrl: './ecl-add-to-calendar.component.html',\n imports: [...EUI_ECL_ICON],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.ecl-add-to-calendar--full-width]': 'isFullWidth()',\n '[class.ecl-add-to-calendar]': 'hostClass()',\n },\n})\nexport class EclAddToCalendarComponent extends ECLBaseDirective {\n /**\n * Adds `ecl-add-to-calendar` class to the host element.\n */\n hostClass = signal(true);\n\n /**\n * Indicates whether the component should span the full width of its container.\n */\n isFullWidth = input(false, { transform: booleanAttribute });\n\n /**\n * Title displayed in the component.\n */\n eclTitle = input<string>();\n\n /**\n * Date(s) of the event (e.g. \"March 15-17, 2026\").\n */\n calendarDates = input<string>();\n\n /**\n * Time of the event (e.g. \"2:00 PM - 4:00 PM\").\n */\n calendarTime = input<string>();\n\n /**\n * Location of the event (e.g. \"San Francisco, CA\").\n */\n calendarLocation = input<string>();\n}\n","<div class=\"ecl-add-to-calendar__info\" [class.ecl-container]=\"isFullWidth()\">\n <div class=\"ecl-add-to-calendar__info-content\">\n @if (eclTitle()) {\n <div class=\"ecl-add-to-calendar__title\">{{ eclTitle() }}</div>\n }\n @if (calendarDates() || calendarTime() || calendarLocation()) {\n <ul class=\"ecl-add-to-calendar__meta-list\">\n @if (calendarDates()) {\n <li class=\"ecl-add-to-calendar__meta-item\">\n <ecl-icon icon=\"calendar\" size=\"s\" class=\"ecl-add-to-calendar__meta-icon\" aria-hidden=\"true\"></ecl-icon>\n <span class=\"ecl-add-to-calendar__meta-label\">{{ calendarDates() }}</span>\n </li>\n }\n @if (calendarTime()) {\n <li class=\"ecl-add-to-calendar__meta-item\">\n <ecl-icon icon=\"clock\" size=\"s\" class=\"ecl-add-to-calendar__meta-icon\" aria-hidden=\"true\"></ecl-icon>\n <span class=\"ecl-add-to-calendar__meta-label\">{{ calendarTime() }}</span>\n </li>\n }\n @if (calendarLocation()) {\n <li class=\"ecl-add-to-calendar__meta-item\">\n <ecl-icon icon=\"location\" size=\"s\" class=\"ecl-add-to-calendar__meta-icon\" aria-hidden=\"true\"></ecl-icon>\n <span class=\"ecl-add-to-calendar__meta-label\">{{ calendarLocation() }}</span>\n </li>\n }\n </ul>\n }\n </div>\n \n <ng-content select=\"div[eclAddToCalendarAction]\"></ng-content>\n</div>","import { EclAddToCalendarActionDirective } from './ecl-add-to-calendar-action.directive';\nimport { EclAddToCalendarComponent } from './ecl-add-to-calendar.component';\n\nexport * from './ecl-add-to-calendar.component';\nexport * from './ecl-add-to-calendar-action.directive';\n\nexport const EUI_ECL_ADD_TO_CALENDAR = [\n EclAddToCalendarComponent,\n EclAddToCalendarActionDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAQa,+BAA+B,CAAA;8GAA/B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,6BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,6BAA6B;AACrC,qBAAA;AACF,iBAAA;;;ACHD;;;AAGG;AAYG,MAAO,yBAA0B,SAAQ,gBAAgB,CAAA;AAX/D,IAAA,WAAA,GAAA;;AAYI;;AAEG;QACH,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,IAAI;sFAAC;AAExB;;AAEG;QACH,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE3D;;AAEG;AACH,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK;gGAAU;AAE1B;;AAEG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK;qGAAU;AAE/B;;AAEG;AACH,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK;oGAAU;AAE9B;;AAEG;AACH,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK;wGAAU;AACrC,IAAA;8GA9BY,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,q7BCnBtC,4hDA8BM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDXO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAXrC,SAAS;+BAEI,uBAAuB,EAAA,OAAA,EAExB,CAAC,GAAG,YAAY,CAAC,EAAA,aAAA,EACX,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC9B;AACH,wBAAA,yCAAyC,EAAE,eAAe;AAC1D,wBAAA,6BAA6B,EAAE,aAAa;AAC/C,qBAAA,EAAA,QAAA,EAAA,4hDAAA,EAAA;;;AEXE,MAAM,uBAAuB,GAAG;IACnC,yBAAyB;IACzB,+BAA+B;;;ACRnC;;AAEG;;;;"}
|
|
@@ -322,7 +322,7 @@ class EclAnimatedNumbersItemComponent extends ECLBaseDirective {
|
|
|
322
322
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclAnimatedNumbersItemComponent, decorators: [{
|
|
323
323
|
type: Component,
|
|
324
324
|
args: [{ selector: '[eclAnimatedNumbersItem]', host: {
|
|
325
|
-
|
|
325
|
+
class: 'ecl-animated-number',
|
|
326
326
|
}, template: "<div class=\"ecl-animated-number__header\">\n <div class=\"ecl-animated-number__category\">{{ category() }}</div>\n <ng-content select=\"[eclAnimatedNumbersIcon]\"></ng-content>\n</div>\n<div class=\"ecl-animated-number__content\">\n <div class=\"ecl-animated-number__number\">\n <span class=\"ecl-animated-number__prefix\">{{ prefix() }}</span>\n <div class=\"ecl-animated-number__value\" #valueEl></div>\n <div class=\"ecl-animated-number__suffix\">{{ suffix() }}</div>\n </div>\n</div>\n<div class=\"ecl-animated-number__description\">{{ description() }}</div>" }]
|
|
327
327
|
}], ctorParameters: () => [], propDecorators: { category: [{ type: i0.Input, args: [{ isSignal: true, alias: "category", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], eclValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "eclValue", required: false }] }], suffix: [{ type: i0.Input, args: [{ isSignal: true, alias: "suffix", required: false }] }], prefix: [{ type: i0.Input, args: [{ isSignal: true, alias: "prefix", required: false }] }], valueEl: [{ type: i0.ViewChild, args: ['valueEl', { isSignal: true }] }] } });
|
|
328
328
|
|
|
@@ -344,7 +344,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
344
344
|
args: [{
|
|
345
345
|
selector: '[eclAnimatedNumbersIcon]',
|
|
346
346
|
host: {
|
|
347
|
-
|
|
347
|
+
class: 'ecl-animated-number__icon',
|
|
348
348
|
},
|
|
349
349
|
}]
|
|
350
350
|
}] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-animated-numbers.mjs","sources":["../../components/ecl-animated-numbers/ecl-animated-numbers.component.ts","../../components/ecl-animated-numbers/ecl-animated-numbers.component.html","../../components/ecl-animated-numbers/ecl-animated-numbers-list.directive.ts","../../components/ecl-animated-numbers/ecl-animated-numers-item/ecl-animated-numbers-item.component.ts","../../components/ecl-animated-numbers/ecl-animated-numers-item/ecl-animated-numbers-item.component.html","../../components/ecl-animated-numbers/ecl-animated-numers-item/ecl-animated-numbers-icon.directive.ts","../../components/ecl-animated-numbers/index.ts","../../components/ecl-animated-numbers/eui-ecl-components-ecl-animated-numbers.ts"],"sourcesContent":["import { booleanAttribute, ChangeDetectionStrategy, Component, input } from \"@angular/core\";\nimport { ECLBaseDirective } from \"@eui/ecl/core\";\n\n/**\n * Container component for the ECL Animated Numbers pattern.\n * Wraps animated number items and an optional sources footer.\n *\n * @example\n * ```html\n * <div eclAnimatedNumbers [sourcesLabel]=\"'Sources:'\">\n * <div eclAnimatedNumbersItems>\n * <div eclAnimatedNumbersItem [eclValue]=\"'213'\" [category]=\"'Revenue'\">\n * <ecl-icon eclAnimatedNumbersIcon icon=\"users\" iconSet=\"phosphor\"></ecl-icon>\n * </div>\n * </div>\n * <ul eclAnimatedNumbersSourcesList>\n * <li eclAnimatedNumbersSourcesItem>\n * <a eclLink eclAnimatedNumbersSource href=\"/example\">Eurostat</a>\n * </li>\n * </ul>\n * </div>\n * ```\n */\n@Component({\n selector: 'div[eclAnimatedNumbers]',\n templateUrl: './ecl-animated-numbers.component.html',\n host: {\n '[class]': 'cssClasses',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EclAnimatedNumbersComponent extends ECLBaseDirective {\n\n /** Applies a dark background to the component. */\n hasDarkBackground = input(false, { transform: booleanAttribute });\n\n /** Adds a left border to the animated number items. */\n hasLeftBorder = input(false, { transform: booleanAttribute });\n\n /** Applies a colour to the counter values. */\n hasContentColor = input(false, { transform: booleanAttribute });\n\n /** Label displayed before the sources list. */\n sourcesLabel = input<string>('Sources:');\n\n get cssClasses(): string {\n return [super.getCssClasses('ecl-animated-numbers'),\n this.hasDarkBackground() ? 'ecl-animated-numbers--with-background' : '',\n this.hasLeftBorder() ? 'ecl-animated-numbers--border' : '',\n this.hasContentColor() && !this.hasDarkBackground() ? 'ecl-animated-numbers--counter-color' : '',\n ].filter(Boolean).join(' ');\n }\n}","<div class=\"ecl-container\">\n <ng-content select=\"[eclAnimatedNumbersItems]\"></ng-content>\n <div class=\"ecl-animated-numbers__sources\">\n <span class=\"ecl-animated-numbers__sources-label\">{{ sourcesLabel() }}</span>\n <ng-content select=\"[eclAnimatedNumbersSourcesList]\"></ng-content>\n </div>\n</div>","import { Directive } from \"@angular/core\";\n\n/**\n * Wraps the grid of animated number items.\n * Applies the `ecl-animated-numbers__items` layout class.\n *\n * @example\n * ```html\n * <div eclAnimatedNumbersItems>\n * <div eclAnimatedNumbersItem ...></div>\n * </div>\n * ```\n */\n@Directive({\n selector: '[eclAnimatedNumbersItems]',\n host: {\n class: 'ecl-animated-numbers__items',\n },\n})\nexport class EclAnimatedNumbersItemsDirective {}\n\n/**\n * Wraps the list of source links.\n * Applies the `ecl-animated-numbers__sources-list` class.\n *\n * @example\n * ```html\n * <ul eclAnimatedNumbersSourcesList>\n * <li eclAnimatedNumbersSourcesItem>...</li>\n * </ul>\n * ```\n */\n@Directive({\n selector: '[eclAnimatedNumbersSourcesList]',\n host: {\n class: 'ecl-animated-numbers__sources-list',\n },\n})\nexport class EclAnimatedNumbersSourcesListDirective {}\n\n/**\n * Marks a list item as a source entry.\n * Applies the `ecl-animated-numbers__sources-item` class.\n *\n * @example\n * ```html\n * <li eclAnimatedNumbersSourcesItem>\n * <a eclLink eclAnimatedNumbersSource href=\"/example\">Eurostat</a>\n * </li>\n * ```\n */\n@Directive({\n selector: '[eclAnimatedNumbersSourcesItem]',\n host: {\n class: 'ecl-animated-numbers__sources-item',\n },\n})\nexport class EclAnimatedNumbersSourcesItemDirective {}\n\n/**\n * Marks a link as a source reference within the animated numbers component.\n * Applies the `ecl-animated-numbers__source` styling class.\n *\n * @example\n * ```html\n * <a eclLink eclAnimatedNumbersSource href=\"/example\">Eurostat</a>\n * ```\n */\n@Directive({\n selector: '[eclAnimatedNumbersSource]',\n host: {\n class: 'ecl-animated-numbers__source',\n },\n})\nexport class EclAnimatedNumbersSourceDirective {}\n","import {\n Component,\n computed,\n ElementRef,\n NgZone,\n OnDestroy,\n afterNextRender,\n effect,\n inject,\n input,\n viewChild,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Represents an individual animated number item.\n * Displays a numeric value that animates from 0 to the target when scrolled into view.\n * Uses an IntersectionObserver to trigger animation on viewport visibility and\n * requestAnimationFrame for smooth count-up with cubic ease-out.\n *\n * @example\n * ```html\n * <div eclAnimatedNumbersItem\n * [eclValue]=\"'1250'\"\n * [category]=\"'Revenue'\"\n * [prefix]=\"'€'\"\n * [suffix]=\"'billions'\"\n * [description]=\"'Annual revenue growth'\">\n * <ecl-icon eclAnimatedNumbersIcon icon=\"trend-up\" iconSet=\"phosphor\"></ecl-icon>\n * </div>\n * ```\n */\n@Component({\n selector: '[eclAnimatedNumbersItem]',\n templateUrl: './ecl-animated-numbers-item.component.html',\n host: {\n 'class': 'ecl-animated-number',\n },\n})\nexport class EclAnimatedNumbersItemComponent extends ECLBaseDirective implements OnDestroy {\n\n /** Category label displayed in the item header. */\n category = input<string>();\n\n /** Descriptive text displayed below the number. */\n description = input<string>();\n\n /** The target numeric value to animate to. Accepts strings with non-numeric characters (they are stripped). */\n eclValue = input<string>();\n\n /** Text displayed after the animated number (e.g. '€', 'billions'). */\n suffix = input<string>();\n\n /** Text displayed before the animated number (e.g. '€', 'billion'). */\n prefix = input<string>();\n\n protected animationDuration = 1000;\n protected animationStyle: 'linear' | 'random' = 'linear';\n protected animateOnVisible = true;\n\n /** Parsed numeric target from the eclValue input. */\n private targetValue = computed(() => {\n const raw = this.eclValue();\n if (!raw) return 0;\n const cleaned = raw.replace(/[^\\d.-]/g, '');\n return cleaned ? parseFloat(cleaned) : 0;\n });\n\n private valueEl = viewChild<ElementRef<HTMLElement>>('valueEl');\n private elementRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n\n private animationId: number | null = null;\n private observer: IntersectionObserver | null = null;\n private hasBeenVisible = false;\n private isRendered = false;\n\n constructor() {\n super();\n\n afterNextRender(() => {\n this.isRendered = true;\n // Set initial display to 0\n const el = this.valueEl()?.nativeElement;\n if (el) {\n el.textContent = '0';\n }\n\n if (this.animateOnVisible) {\n this.setupIntersectionObserver();\n } else {\n this.startAnimation(this.targetValue());\n }\n });\n\n // React to eclValue changes — only re-animate if already visible and rendered\n effect(() => {\n const target = this.targetValue();\n if (this.hasBeenVisible && this.isRendered) {\n queueMicrotask(() => this.startAnimation(target));\n }\n });\n }\n\n ngOnDestroy(): void {\n this.cleanup();\n }\n\n private setupIntersectionObserver(): void {\n this.observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry.isIntersecting) {\n this.hasBeenVisible = true;\n this.startAnimation(this.targetValue());\n } else if (this.hasBeenVisible) {\n // Reset to 0 when scrolled out of view\n if (this.animationId !== null) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n const el = this.valueEl()?.nativeElement;\n if (el) {\n el.textContent = '0';\n el.style.width = '';\n }\n }\n },\n { threshold: 0.1 },\n );\n this.observer.observe(this.elementRef.nativeElement);\n }\n\n private startAnimation(to: number): void {\n if (this.animationId !== null) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n\n const valueElement = this.valueEl()?.nativeElement;\n if (!valueElement) return;\n\n // Lock width to prevent layout shift during animation\n valueElement.textContent = to.toString();\n const finalWidth = valueElement.offsetWidth;\n valueElement.textContent = '0';\n valueElement.style.width = `${finalWidth}px`;\n\n this.ngZone.runOutsideAngular(() => {\n const duration = this.animationDuration;\n let startTime: number | null = null;\n let lastUpdateTime = 0;\n let lastValue: number | null = null;\n\n const tick = (now: number) => {\n if (startTime === null) {\n startTime = now;\n }\n\n const elapsed = now - startTime;\n const progress = Math.min(elapsed / duration, 1);\n\n // Throttle updates (~50ms)\n if (now - lastUpdateTime < 50 && progress < 1) {\n this.animationId = requestAnimationFrame(tick);\n return;\n }\n lastUpdateTime = now;\n\n let value: number;\n if (this.animationStyle === 'random') {\n value = Math.floor(Math.random() * (to + 1));\n } else {\n // Cubic ease-out\n const eased = 1 - Math.pow(1 - progress, 3);\n value = eased * to;\n }\n\n const rounded = Math.floor(value);\n\n if (rounded !== lastValue) {\n valueElement.textContent = rounded.toString();\n lastValue = rounded;\n }\n\n if (progress < 1) {\n this.animationId = requestAnimationFrame(tick);\n } else {\n valueElement.textContent = to.toString();\n valueElement.style.width = '';\n this.animationId = null;\n }\n };\n\n this.animationId = requestAnimationFrame(tick);\n });\n }\n\n private cleanup(): void {\n if (this.animationId !== null) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n }\n}\n","<div class=\"ecl-animated-number__header\">\n <div class=\"ecl-animated-number__category\">{{ category() }}</div>\n <ng-content select=\"[eclAnimatedNumbersIcon]\"></ng-content>\n</div>\n<div class=\"ecl-animated-number__content\">\n <div class=\"ecl-animated-number__number\">\n <span class=\"ecl-animated-number__prefix\">{{ prefix() }}</span>\n <div class=\"ecl-animated-number__value\" #valueEl></div>\n <div class=\"ecl-animated-number__suffix\">{{ suffix() }}</div>\n </div>\n</div>\n<div class=\"ecl-animated-number__description\">{{ description() }}</div>","import { Directive } from '@angular/core';\n\n/**\n * Marks an icon element as the animated number item's icon.\n * Applies the `ecl-animated-number__icon` positioning class.\n *\n * @example\n * ```html\n * <ecl-icon eclAnimatedNumbersIcon icon=\"users\" iconSet=\"phosphor\"></ecl-icon>\n * ```\n */\n@Directive({\n selector: '[eclAnimatedNumbersIcon]',\n host: {\n 'class': 'ecl-animated-number__icon',\n },\n})\nexport class EclAnimatedNumbersIconDirective {}\n","import { EclAnimatedNumbersComponent } from './ecl-animated-numbers.component';\nimport { EclAnimatedNumbersItemsDirective, EclAnimatedNumbersSourcesListDirective, EclAnimatedNumbersSourcesItemDirective, EclAnimatedNumbersSourceDirective } from './ecl-animated-numbers-list.directive';\nimport { EclAnimatedNumbersItemComponent } from './ecl-animated-numers-item/ecl-animated-numbers-item.component';\nimport { EclAnimatedNumbersIconDirective } from './ecl-animated-numers-item/ecl-animated-numbers-icon.directive';\n\nexport * from './ecl-animated-numbers.component';\nexport * from './ecl-animated-numbers-list.directive';\nexport * from './ecl-animated-numers-item/ecl-animated-numbers-item.component';\nexport * from './ecl-animated-numers-item/ecl-animated-numbers-icon.directive';\n\nexport const EUI_ECL_ANIMATED_NUMBERS = [\n EclAnimatedNumbersComponent,\n EclAnimatedNumbersItemsDirective,\n EclAnimatedNumbersSourcesListDirective,\n EclAnimatedNumbersSourcesItemDirective,\n EclAnimatedNumbersSourceDirective,\n EclAnimatedNumbersItemComponent,\n EclAnimatedNumbersIconDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAGA;;;;;;;;;;;;;;;;;;;AAmBG;AASG,MAAO,2BAA4B,SAAQ,gBAAgB,CAAA;AARjE,IAAA,WAAA,GAAA;;;QAWI,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC,KAAK,yFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAGjE,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,KAAK,qFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAG7D,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,KAAK,uFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;QAG/D,IAAA,CAAA,YAAY,GAAG,KAAK,CAAS,UAAU;yFAAC;AAS3C,IAAA;AAPG,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC;YAC/C,IAAI,CAAC,iBAAiB,EAAE,GAAG,uCAAuC,GAAG,EAAE;YACvE,IAAI,CAAC,aAAa,EAAE,GAAG,8BAA8B,GAAG,EAAE;AAC1D,YAAA,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,qCAAqC,GAAG,EAAE;SACnG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC/B;8GApBS,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,svBC/BxC,iVAMM,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDyBO,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBARvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,IAAA,EAE7B;AACF,wBAAA,SAAS,EAAE,YAAY;qBAC1B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,iVAAA,EAAA;;;AE3BnD;;;;;;;;;;AAUG;MAOU,gCAAgC,CAAA;8GAAhC,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,6BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,6BAA6B;AACrC,qBAAA;AACF,iBAAA;;AAGD;;;;;;;;;;AAUG;MAOU,sCAAsC,CAAA;8GAAtC,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtC,sCAAsC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtC,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBANlD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,oCAAoC;AAC5C,qBAAA;AACF,iBAAA;;AAGD;;;;;;;;;;AAUG;MAOU,sCAAsC,CAAA;8GAAtC,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtC,sCAAsC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtC,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBANlD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,oCAAoC;AAC5C,qBAAA;AACF,iBAAA;;AAGD;;;;;;;;AAQG;MAOU,iCAAiC,CAAA;8GAAjC,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAN7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,8BAA8B;AACtC,qBAAA;AACF,iBAAA;;;AC3DD;;;;;;;;;;;;;;;;;AAiBG;AAQG,MAAO,+BAAgC,SAAQ,gBAAgB,CAAA;AAsCjE,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;;AApCX,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK;gGAAU;;AAG1B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK;mGAAU;;AAG7B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK;gGAAU;;AAG1B,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK;8FAAU;;AAGxB,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK;8FAAU;QAEd,IAAA,CAAA,iBAAiB,GAAG,IAAI;QACxB,IAAA,CAAA,cAAc,GAAwB,QAAQ;QAC9C,IAAA,CAAA,gBAAgB,GAAG,IAAI;;AAGzB,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,GAAG;AAAE,gBAAA,OAAO,CAAC;YAClB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AAC3C,YAAA,OAAO,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC;QAC5C,CAAC;wFAAC;QAEM,IAAA,CAAA,OAAO,GAAG,SAAS,CAA0B,SAAS;oFAAC;AACvD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAEvB,IAAA,CAAA,WAAW,GAAkB,IAAI;QACjC,IAAA,CAAA,QAAQ,GAAgC,IAAI;QAC5C,IAAA,CAAA,cAAc,GAAG,KAAK;QACtB,IAAA,CAAA,UAAU,GAAG,KAAK;QAKtB,eAAe,CAAC,MAAK;AACjB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;YAEtB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;YACxC,IAAI,EAAE,EAAE;AACJ,gBAAA,EAAE,CAAC,WAAW,GAAG,GAAG;YACxB;AAEA,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACvB,IAAI,CAAC,yBAAyB,EAAE;YACpC;iBAAO;gBACH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3C;AACJ,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;YACjC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,EAAE;gBACxC,cAAc,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACrD;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,OAAO,EAAE;IAClB;IAEQ,yBAAyB,GAAA;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CACpC,CAAC,OAAO,KAAI;AACR,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;AACxB,YAAA,IAAI,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;gBAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3C;AAAO,iBAAA,IAAI,IAAI,CAAC,cAAc,EAAE;;AAE5B,gBAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;AAC3B,oBAAA,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC;AACtC,oBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;gBAC3B;gBACA,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;gBACxC,IAAI,EAAE,EAAE;AACJ,oBAAA,EAAE,CAAC,WAAW,GAAG,GAAG;AACpB,oBAAA,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;gBACvB;YACJ;AACJ,QAAA,CAAC,EACD,EAAE,SAAS,EAAE,GAAG,EAAE,CACrB;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;IACxD;AAEQ,IAAA,cAAc,CAAC,EAAU,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;AAC3B,YAAA,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC;AACtC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QAC3B;QAEA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;AAClD,QAAA,IAAI,CAAC,YAAY;YAAE;;AAGnB,QAAA,YAAY,CAAC,WAAW,GAAG,EAAE,CAAC,QAAQ,EAAE;AACxC,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,WAAW;AAC3C,QAAA,YAAY,CAAC,WAAW,GAAG,GAAG;QAC9B,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,UAAU,IAAI;AAE5C,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAC/B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB;YACvC,IAAI,SAAS,GAAkB,IAAI;YACnC,IAAI,cAAc,GAAG,CAAC;YACtB,IAAI,SAAS,GAAkB,IAAI;AAEnC,YAAA,MAAM,IAAI,GAAG,CAAC,GAAW,KAAI;AACzB,gBAAA,IAAI,SAAS,KAAK,IAAI,EAAE;oBACpB,SAAS,GAAG,GAAG;gBACnB;AAEA,gBAAA,MAAM,OAAO,GAAG,GAAG,GAAG,SAAS;AAC/B,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC,CAAC;;gBAGhD,IAAI,GAAG,GAAG,cAAc,GAAG,EAAE,IAAI,QAAQ,GAAG,CAAC,EAAE;AAC3C,oBAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,IAAI,CAAC;oBAC9C;gBACJ;gBACA,cAAc,GAAG,GAAG;AAEpB,gBAAA,IAAI,KAAa;AACjB,gBAAA,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;AAClC,oBAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;gBAChD;qBAAO;;AAEH,oBAAA,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC;AAC3C,oBAAA,KAAK,GAAG,KAAK,GAAG,EAAE;gBACtB;gBAEA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAEjC,gBAAA,IAAI,OAAO,KAAK,SAAS,EAAE;AACvB,oBAAA,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE;oBAC7C,SAAS,GAAG,OAAO;gBACvB;AAEA,gBAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;AACd,oBAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,IAAI,CAAC;gBAClD;qBAAO;AACH,oBAAA,YAAY,CAAC,WAAW,GAAG,EAAE,CAAC,QAAQ,EAAE;AACxC,oBAAA,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;AAC7B,oBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;gBAC3B;AACJ,YAAA,CAAC;AAED,YAAA,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,IAAI,CAAC;AAClD,QAAA,CAAC,CAAC;IACN;IAEQ,OAAO,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;AAC3B,YAAA,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC;AACtC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QAC3B;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;AAC1B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACxB;IACJ;8GAxKS,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,85BCvC5C,slBAWuE,EAAA,CAAA,CAAA;;2FD4B1D,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAP3C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,IAAA,EAE9B;AACF,wBAAA,OAAO,EAAE,qBAAqB;AACjC,qBAAA,EAAA,QAAA,EAAA,slBAAA,EAAA;6jBA+BoD,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AElElE;;;;;;;;AAQG;MAOU,+BAA+B,CAAA;8GAA/B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,2BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,IAAI,EAAE;AACF,wBAAA,OAAO,EAAE,2BAA2B;AACvC,qBAAA;AACJ,iBAAA;;;ACNM,MAAM,wBAAwB,GAAG;IACpC,2BAA2B;IAC3B,gCAAgC;IAChC,sCAAsC;IACtC,sCAAsC;IACtC,iCAAiC;IACjC,+BAA+B;IAC/B,+BAA+B;;;ACjBnC;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-animated-numbers.mjs","sources":["../../components/ecl-animated-numbers/ecl-animated-numbers.component.ts","../../components/ecl-animated-numbers/ecl-animated-numbers.component.html","../../components/ecl-animated-numbers/ecl-animated-numbers-list.directive.ts","../../components/ecl-animated-numbers/ecl-animated-numers-item/ecl-animated-numbers-item.component.ts","../../components/ecl-animated-numbers/ecl-animated-numers-item/ecl-animated-numbers-item.component.html","../../components/ecl-animated-numbers/ecl-animated-numers-item/ecl-animated-numbers-icon.directive.ts","../../components/ecl-animated-numbers/index.ts","../../components/ecl-animated-numbers/eui-ecl-components-ecl-animated-numbers.ts"],"sourcesContent":["import { booleanAttribute, ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Container component for the ECL Animated Numbers pattern.\n * Wraps animated number items and an optional sources footer.\n *\n * @example\n * ```html\n * <div eclAnimatedNumbers [sourcesLabel]=\"'Sources:'\">\n * <div eclAnimatedNumbersItems>\n * <div eclAnimatedNumbersItem [eclValue]=\"'213'\" [category]=\"'Revenue'\">\n * <ecl-icon eclAnimatedNumbersIcon icon=\"users\" iconSet=\"phosphor\"></ecl-icon>\n * </div>\n * </div>\n * <ul eclAnimatedNumbersSourcesList>\n * <li eclAnimatedNumbersSourcesItem>\n * <a eclLink eclAnimatedNumbersSource href=\"/example\">Eurostat</a>\n * </li>\n * </ul>\n * </div>\n * ```\n */\n@Component({\n selector: 'div[eclAnimatedNumbers]',\n templateUrl: './ecl-animated-numbers.component.html',\n host: {\n '[class]': 'cssClasses',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EclAnimatedNumbersComponent extends ECLBaseDirective {\n\n /** Applies a dark background to the component. */\n hasDarkBackground = input(false, { transform: booleanAttribute });\n\n /** Adds a left border to the animated number items. */\n hasLeftBorder = input(false, { transform: booleanAttribute });\n\n /** Applies a colour to the counter values. */\n hasContentColor = input(false, { transform: booleanAttribute });\n\n /** Label displayed before the sources list. */\n sourcesLabel = input<string>('Sources:');\n\n protected get cssClasses(): string {\n return [super.getCssClasses('ecl-animated-numbers'),\n this.hasDarkBackground() ? 'ecl-animated-numbers--with-background' : '',\n this.hasLeftBorder() ? 'ecl-animated-numbers--border' : '',\n this.hasContentColor() && !this.hasDarkBackground() ? 'ecl-animated-numbers--counter-color' : '',\n ].filter(Boolean).join(' ');\n }\n}\n","<div class=\"ecl-container\">\n <ng-content select=\"[eclAnimatedNumbersItems]\"></ng-content>\n <div class=\"ecl-animated-numbers__sources\">\n <span class=\"ecl-animated-numbers__sources-label\">{{ sourcesLabel() }}</span>\n <ng-content select=\"[eclAnimatedNumbersSourcesList]\"></ng-content>\n </div>\n</div>","import { Directive } from \"@angular/core\";\n\n/**\n * Wraps the grid of animated number items.\n * Applies the `ecl-animated-numbers__items` layout class.\n *\n * @example\n * ```html\n * <div eclAnimatedNumbersItems>\n * <div eclAnimatedNumbersItem ...></div>\n * </div>\n * ```\n */\n@Directive({\n selector: '[eclAnimatedNumbersItems]',\n host: {\n class: 'ecl-animated-numbers__items',\n },\n})\nexport class EclAnimatedNumbersItemsDirective {}\n\n/**\n * Wraps the list of source links.\n * Applies the `ecl-animated-numbers__sources-list` class.\n *\n * @example\n * ```html\n * <ul eclAnimatedNumbersSourcesList>\n * <li eclAnimatedNumbersSourcesItem>...</li>\n * </ul>\n * ```\n */\n@Directive({\n selector: '[eclAnimatedNumbersSourcesList]',\n host: {\n class: 'ecl-animated-numbers__sources-list',\n },\n})\nexport class EclAnimatedNumbersSourcesListDirective {}\n\n/**\n * Marks a list item as a source entry.\n * Applies the `ecl-animated-numbers__sources-item` class.\n *\n * @example\n * ```html\n * <li eclAnimatedNumbersSourcesItem>\n * <a eclLink eclAnimatedNumbersSource href=\"/example\">Eurostat</a>\n * </li>\n * ```\n */\n@Directive({\n selector: '[eclAnimatedNumbersSourcesItem]',\n host: {\n class: 'ecl-animated-numbers__sources-item',\n },\n})\nexport class EclAnimatedNumbersSourcesItemDirective {}\n\n/**\n * Marks a link as a source reference within the animated numbers component.\n * Applies the `ecl-animated-numbers__source` styling class.\n *\n * @example\n * ```html\n * <a eclLink eclAnimatedNumbersSource href=\"/example\">Eurostat</a>\n * ```\n */\n@Directive({\n selector: '[eclAnimatedNumbersSource]',\n host: {\n class: 'ecl-animated-numbers__source',\n },\n})\nexport class EclAnimatedNumbersSourceDirective {}\n","import {\n Component,\n computed,\n ElementRef,\n NgZone,\n OnDestroy,\n afterNextRender,\n effect,\n inject,\n input,\n viewChild,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Represents an individual animated number item.\n * Displays a numeric value that animates from 0 to the target when scrolled into view.\n * Uses an IntersectionObserver to trigger animation on viewport visibility and\n * requestAnimationFrame for smooth count-up with cubic ease-out.\n *\n * @example\n * ```html\n * <div eclAnimatedNumbersItem\n * [eclValue]=\"'1250'\"\n * [category]=\"'Revenue'\"\n * [prefix]=\"'€'\"\n * [suffix]=\"'billions'\"\n * [description]=\"'Annual revenue growth'\">\n * <ecl-icon eclAnimatedNumbersIcon icon=\"trend-up\" iconSet=\"phosphor\"></ecl-icon>\n * </div>\n * ```\n */\n@Component({\n selector: '[eclAnimatedNumbersItem]',\n templateUrl: './ecl-animated-numbers-item.component.html',\n host: {\n class: 'ecl-animated-number',\n },\n})\nexport class EclAnimatedNumbersItemComponent extends ECLBaseDirective implements OnDestroy {\n\n /** Category label displayed in the item header. */\n category = input<string>();\n\n /** Descriptive text displayed below the number. */\n description = input<string>();\n\n /** The target numeric value to animate to. Accepts strings with non-numeric characters (they are stripped). */\n eclValue = input<string>();\n\n /** Text displayed after the animated number (e.g. '€', 'billions'). */\n suffix = input<string>();\n\n /** Text displayed before the animated number (e.g. '€', 'billion'). */\n prefix = input<string>();\n\n protected animationDuration = 1000;\n protected animationStyle: 'linear' | 'random' = 'linear';\n protected animateOnVisible = true;\n\n /** Parsed numeric target from the eclValue input. */\n private targetValue = computed(() => {\n const raw = this.eclValue();\n if (!raw) return 0;\n const cleaned = raw.replace(/[^\\d.-]/g, '');\n return cleaned ? parseFloat(cleaned) : 0;\n });\n\n private valueEl = viewChild<ElementRef<HTMLElement>>('valueEl');\n private elementRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n\n private animationId: number | null = null;\n private observer: IntersectionObserver | null = null;\n private hasBeenVisible = false;\n private isRendered = false;\n\n constructor() {\n super();\n\n afterNextRender(() => {\n this.isRendered = true;\n // Set initial display to 0\n const el = this.valueEl()?.nativeElement;\n if (el) {\n el.textContent = '0';\n }\n\n if (this.animateOnVisible) {\n this.setupIntersectionObserver();\n } else {\n this.startAnimation(this.targetValue());\n }\n });\n\n // React to eclValue changes — only re-animate if already visible and rendered\n effect(() => {\n const target = this.targetValue();\n if (this.hasBeenVisible && this.isRendered) {\n queueMicrotask(() => this.startAnimation(target));\n }\n });\n }\n\n ngOnDestroy(): void {\n this.cleanup();\n }\n\n private setupIntersectionObserver(): void {\n this.observer = new IntersectionObserver(\n (entries) => {\n const entry = entries[0];\n if (entry.isIntersecting) {\n this.hasBeenVisible = true;\n this.startAnimation(this.targetValue());\n } else if (this.hasBeenVisible) {\n // Reset to 0 when scrolled out of view\n if (this.animationId !== null) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n const el = this.valueEl()?.nativeElement;\n if (el) {\n el.textContent = '0';\n el.style.width = '';\n }\n }\n },\n { threshold: 0.1 },\n );\n this.observer.observe(this.elementRef.nativeElement);\n }\n\n private startAnimation(to: number): void {\n if (this.animationId !== null) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n\n const valueElement = this.valueEl()?.nativeElement;\n if (!valueElement) return;\n\n // Lock width to prevent layout shift during animation\n valueElement.textContent = to.toString();\n const finalWidth = valueElement.offsetWidth;\n valueElement.textContent = '0';\n valueElement.style.width = `${finalWidth}px`;\n\n this.ngZone.runOutsideAngular(() => {\n const duration = this.animationDuration;\n let startTime: number | null = null;\n let lastUpdateTime = 0;\n let lastValue: number | null = null;\n\n const tick = (now: number) => {\n if (startTime === null) {\n startTime = now;\n }\n\n const elapsed = now - startTime;\n const progress = Math.min(elapsed / duration, 1);\n\n // Throttle updates (~50ms)\n if (now - lastUpdateTime < 50 && progress < 1) {\n this.animationId = requestAnimationFrame(tick);\n return;\n }\n lastUpdateTime = now;\n\n let value: number;\n if (this.animationStyle === 'random') {\n value = Math.floor(Math.random() * (to + 1));\n } else {\n // Cubic ease-out\n const eased = 1 - Math.pow(1 - progress, 3);\n value = eased * to;\n }\n\n const rounded = Math.floor(value);\n\n if (rounded !== lastValue) {\n valueElement.textContent = rounded.toString();\n lastValue = rounded;\n }\n\n if (progress < 1) {\n this.animationId = requestAnimationFrame(tick);\n } else {\n valueElement.textContent = to.toString();\n valueElement.style.width = '';\n this.animationId = null;\n }\n };\n\n this.animationId = requestAnimationFrame(tick);\n });\n }\n\n private cleanup(): void {\n if (this.animationId !== null) {\n cancelAnimationFrame(this.animationId);\n this.animationId = null;\n }\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n }\n}\n","<div class=\"ecl-animated-number__header\">\n <div class=\"ecl-animated-number__category\">{{ category() }}</div>\n <ng-content select=\"[eclAnimatedNumbersIcon]\"></ng-content>\n</div>\n<div class=\"ecl-animated-number__content\">\n <div class=\"ecl-animated-number__number\">\n <span class=\"ecl-animated-number__prefix\">{{ prefix() }}</span>\n <div class=\"ecl-animated-number__value\" #valueEl></div>\n <div class=\"ecl-animated-number__suffix\">{{ suffix() }}</div>\n </div>\n</div>\n<div class=\"ecl-animated-number__description\">{{ description() }}</div>","import { Directive } from '@angular/core';\n\n/**\n * Marks an icon element as the animated number item's icon.\n * Applies the `ecl-animated-number__icon` positioning class.\n *\n * @example\n * ```html\n * <ecl-icon eclAnimatedNumbersIcon icon=\"users\" iconSet=\"phosphor\"></ecl-icon>\n * ```\n */\n@Directive({\n selector: '[eclAnimatedNumbersIcon]',\n host: {\n class: 'ecl-animated-number__icon',\n },\n})\nexport class EclAnimatedNumbersIconDirective {}\n","import { EclAnimatedNumbersComponent } from './ecl-animated-numbers.component';\nimport { EclAnimatedNumbersItemsDirective, EclAnimatedNumbersSourcesListDirective, EclAnimatedNumbersSourcesItemDirective, EclAnimatedNumbersSourceDirective } from './ecl-animated-numbers-list.directive';\nimport { EclAnimatedNumbersItemComponent } from './ecl-animated-numers-item/ecl-animated-numbers-item.component';\nimport { EclAnimatedNumbersIconDirective } from './ecl-animated-numers-item/ecl-animated-numbers-icon.directive';\n\nexport * from './ecl-animated-numbers.component';\nexport * from './ecl-animated-numbers-list.directive';\nexport * from './ecl-animated-numers-item/ecl-animated-numbers-item.component';\nexport * from './ecl-animated-numers-item/ecl-animated-numbers-icon.directive';\n\nexport const EUI_ECL_ANIMATED_NUMBERS = [\n EclAnimatedNumbersComponent,\n EclAnimatedNumbersItemsDirective,\n EclAnimatedNumbersSourcesListDirective,\n EclAnimatedNumbersSourcesItemDirective,\n EclAnimatedNumbersSourceDirective,\n EclAnimatedNumbersItemComponent,\n EclAnimatedNumbersIconDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DOCUMENT, isPlatformBrowser } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { signal, contentChild, output, inject, PLATFORM_ID, Component } from '@angular/core';
|
|
4
4
|
import { EuiAppShellService, CssUtils } from '@eui/core';
|
|
5
5
|
import { EclSiteHeaderLanguageComponent } from '@eui/ecl/components/ecl-site-header';
|
|
6
6
|
import { EclBaseEvent, ECLBaseDirective, EclRtlService } from '@eui/ecl/core';
|
|
@@ -23,7 +23,10 @@ class EclAppComponent extends ECLBaseDirective {
|
|
|
23
23
|
* Text direction, by default is 'ltr' - left-to-write. Can also be 'rtl' - right-to-left, which will
|
|
24
24
|
* make all components within <ecl-app> to lign to the right, and apply some special styling and functionality.
|
|
25
25
|
*/
|
|
26
|
-
this.textDirection = 'ltr'
|
|
26
|
+
this.textDirection = signal('ltr', /* @ts-ignore */
|
|
27
|
+
...(ngDevMode ? [{ debugName: "textDirection" }] : /* istanbul ignore next */ []));
|
|
28
|
+
this.eclSiteHeaderLanguage = contentChild(EclSiteHeaderLanguageComponent, /* @ts-ignore */
|
|
29
|
+
...(ngDevMode ? [{ debugName: "eclSiteHeaderLanguage" }] : /* istanbul ignore next */ []));
|
|
27
30
|
this.languageDismiss = output();
|
|
28
31
|
this.destroy$ = new Subject();
|
|
29
32
|
this.eclRtlService = inject(EclRtlService);
|
|
@@ -80,33 +83,29 @@ class EclAppComponent extends ECLBaseDirective {
|
|
|
80
83
|
handleRtlChangeState() {
|
|
81
84
|
this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {
|
|
82
85
|
if (rtlState) {
|
|
83
|
-
this.textDirection
|
|
86
|
+
this.textDirection.set('rtl');
|
|
84
87
|
}
|
|
85
88
|
else {
|
|
86
|
-
this.textDirection
|
|
89
|
+
this.textDirection.set('ltr');
|
|
87
90
|
}
|
|
88
91
|
});
|
|
89
92
|
}
|
|
90
93
|
handleUIEvents() {
|
|
91
|
-
this.eclSiteHeaderLanguage?.languageSelected
|
|
94
|
+
this.eclSiteHeaderLanguage()?.languageSelected
|
|
92
95
|
.pipe(takeUntil(this.destroy$))
|
|
93
96
|
.subscribe((evt) => {
|
|
94
97
|
this.languageDismiss.emit(new EclAppLanguageDismissEvent(evt.language));
|
|
95
98
|
});
|
|
96
99
|
}
|
|
97
100
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclAppComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
98
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
101
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.5", type: EclAppComponent, isStandalone: true, selector: "ecl-app", outputs: { languageDismiss: "languageDismiss" }, host: { properties: { "attr.dir": "textDirection()" } }, queries: [{ propertyName: "eclSiteHeaderLanguage", first: true, predicate: EclSiteHeaderLanguageComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
|
|
99
102
|
}
|
|
100
103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EclAppComponent, decorators: [{
|
|
101
104
|
type: Component,
|
|
102
|
-
args: [{ selector: 'ecl-app',
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}], eclSiteHeaderLanguage: [{
|
|
107
|
-
type: ContentChild,
|
|
108
|
-
args: [EclSiteHeaderLanguageComponent]
|
|
109
|
-
}], languageDismiss: [{ type: i0.Output, args: ["languageDismiss"] }] } });
|
|
105
|
+
args: [{ selector: 'ecl-app', host: {
|
|
106
|
+
'[attr.dir]': 'textDirection()',
|
|
107
|
+
}, template: "<ng-content></ng-content>\n" }]
|
|
108
|
+
}], propDecorators: { eclSiteHeaderLanguage: [{ type: i0.ContentChild, args: [i0.forwardRef(() => EclSiteHeaderLanguageComponent), { isSignal: true }] }], languageDismiss: [{ type: i0.Output, args: ["languageDismiss"] }] } });
|
|
110
109
|
|
|
111
110
|
const EUI_ECL_APP = [
|
|
112
111
|
EclAppComponent,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-app.mjs","sources":["../../components/ecl-app/ecl-app.component.ts","../../components/ecl-app/ecl-app.component.html","../../components/ecl-app/index.ts","../../components/ecl-app/eui-ecl-components-ecl-app.ts"],"sourcesContent":["import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { AfterViewInit, Component,
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-app.mjs","sources":["../../components/ecl-app/ecl-app.component.ts","../../components/ecl-app/ecl-app.component.html","../../components/ecl-app/index.ts","../../components/ecl-app/eui-ecl-components-ecl-app.ts"],"sourcesContent":["import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { AfterViewInit, Component, contentChild, OnDestroy, OnInit, PLATFORM_ID, inject, output, signal } from '@angular/core';\nimport { CssUtils, EuiAppShellService } from '@eui/core';\nimport { EuiLanguage } from '@eui/base';\nimport { EclSiteHeaderLanguageComponent, EclSiteHeaderLanguageSelectedEvent } from '@eui/ecl/components/ecl-site-header';\nimport { ECLBaseDirective, EclBaseEvent, EclRtlService } from '@eui/ecl/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\n\n/**\n * The wrapper component for an ecl application. Has some important global properties.\n */\nexport class EclAppLanguageDismissEvent extends EclBaseEvent {\n constructor(public language?: EuiLanguage) {\n super();\n }\n}\n\n@Component({\n selector: 'ecl-app',\n templateUrl: './ecl-app.component.html',\n host: {\n '[attr.dir]': 'textDirection()',\n },\n})\nexport class EclAppComponent extends ECLBaseDirective implements OnInit, AfterViewInit, OnDestroy {\n /**\n * Text direction, by default is 'ltr' - left-to-write. Can also be 'rtl' - right-to-left, which will\n * make all components within <ecl-app> to lign to the right, and apply some special styling and functionality.\n */\n readonly textDirection = signal('ltr');\n\n readonly eclSiteHeaderLanguage = contentChild(EclSiteHeaderLanguageComponent);\n\n readonly languageDismiss = output<EclAppLanguageDismissEvent>();\n\n protected destroy$: Subject<boolean> = new Subject<boolean>();\n private readonly eclRtlService = inject(EclRtlService);\n private readonly document = inject<Document>(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly appShellService = inject(EuiAppShellService);\n\n ngOnInit(): void {\n\n // Only initialize CSS vars if no parent app shell is already active\n const isNestedInAppShell = this.appShellService.state.hasHeader || this.appShellService.state.hasSidebar || this.appShellService.state.hasToolbar;\n if (!isNestedInAppShell) {\n CssUtils.initCssVars(this.document, this.platformId);\n }\n if (isPlatformBrowser(this.platformId)) {\n const browserAgent = window.navigator.userAgent.toLowerCase();\n\n this.appShellService.setState({\n ...this.appShellService.state,\n windowHeight: window.innerHeight,\n windowWidth: window.innerWidth,\n deviceInfo: {\n isChrome: browserAgent.indexOf('chrome') > -1,\n isIE: browserAgent.indexOf('trident') > -1,\n isFF: browserAgent.indexOf('firefox') > -1,\n },\n appBaseFontSize: this.appShellService.getBaseFontSize(),\n });\n }\n\n if (isPlatformBrowser(this.platformId)) {\n fromEvent(window, 'resize')\n .pipe(debounceTime(50), takeUntil(this.destroy$))\n .subscribe(() => {\n this.appShellService?.setState({\n ...this.appShellService.state,\n windowHeight: window.innerHeight,\n windowWidth: window.innerWidth,\n });\n CssUtils.setAppViewportCssVars(this.platformId);\n });\n }\n }\n\n ngAfterViewInit(): void {\n // Adds global class, which is used to apply the correct styling for eui-21.\n CssUtils.setHtmlClass('eui-21', this.document);\n this.handleRtlChangeState();\n this.handleUIEvents();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Changes the text direction from 'ltr' to 'rtl' and vice versa.\n */\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n if (rtlState) {\n this.textDirection.set('rtl');\n } else {\n this.textDirection.set('ltr');\n }\n });\n }\n\n private handleUIEvents(): void {\n this.eclSiteHeaderLanguage()?.languageSelected\n .pipe(takeUntil(this.destroy$))\n .subscribe((evt: EclSiteHeaderLanguageSelectedEvent) => {\n this.languageDismiss.emit(new EclAppLanguageDismissEvent(evt.language));\n });\n }\n}\n","<ng-content></ng-content>\n","import { EclAppComponent } from './ecl-app.component';\n\nexport * from './ecl-app.component';\n\nexport const EUI_ECL_APP = [\n EclAppComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|