@eui/ecl 22.0.0-alpha.40 → 22.0.0-alpha.42
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 +140 -0
- package/docs/components/EclAccordionSummaryComponent.html +1 -1
- package/docs/components/EclAddToCalendarComponent.html +1 -1
- package/docs/components/EclAnimatedNumbersComponent.html +1 -1
- package/docs/components/EclAnimatedNumbersItemComponent.html +1 -1
- package/docs/components/EclAppComponent.html +1 -1
- package/docs/components/EclBannerComponent.html +1 -1
- package/docs/components/EclBlockquoteComponent.html +1 -1
- package/docs/components/EclBreadcrumbComponent.html +1 -1
- package/docs/components/EclBreadcrumbSegmentComponent.html +1 -14
- package/docs/components/EclButtonComponent.html +1 -1
- package/docs/components/EclCardBodyComponent.html +1 -1
- package/docs/components/EclCardComponent.html +1 -1
- package/docs/components/EclCarouselComponent.html +1 -1
- package/docs/components/EclCarouselItemComponent.html +59 -64
- package/docs/components/EclCategoryFilterComponent.html +1 -1
- package/docs/components/EclCategoryFilterItemComponent.html +179 -135
- package/docs/components/EclCategoryFilterListComponent.html +9 -2
- package/docs/components/EclCheckboxHelpComponent.html +90 -84
- package/docs/components/EclCheckboxLabelComponent.html +127 -143
- package/docs/components/EclContentBlockComponent.html +1 -1
- package/docs/components/EclContentItemComponent.html +1 -1
- package/docs/components/EclDateBlockComponent.html +68 -132
- package/docs/components/EclDescriptionListDefinitionComponent.html +1 -1
- package/docs/components/EclExpandableComponent.html +1 -1
- package/docs/components/EclFactFiguresComponent.html +1 -1
- package/docs/components/EclFactFiguresItemComponent.html +1 -1
- package/docs/components/EclFactFiguresViewAllComponent.html +1 -1
- package/docs/components/EclFeaturedComponent.html +24 -142
- package/docs/components/EclFeaturedItemComponent.html +5 -86
- package/docs/components/EclFeaturedItemDescriptionComponent.html +5 -105
- package/docs/components/EclFileComponent.html +1 -1
- package/docs/components/EclFileItemComponent.html +1 -1
- package/docs/components/EclFileItemsComponent.html +1 -1
- package/docs/components/EclFileListsComponent.html +1 -1
- package/docs/components/EclFormGroupComponent.html +1 -1
- package/docs/components/EclFormLabelComponent.html +1 -1
- package/docs/components/EclGalleryComponent.html +1 -1
- package/docs/components/EclGalleryFooterComponent.html +1 -1
- package/docs/components/EclGalleryItemComponent.html +1 -1
- package/docs/components/EclHighlightBoxComponent.html +1 -1
- package/docs/components/EclHighlightedSearchComponent.html +1 -1
- package/docs/components/EclIconComponent.html +1 -1
- package/docs/components/EclIndicatorComponent.html +1 -1
- package/docs/components/EclInpageNavigationComponent.html +1 -1
- package/docs/components/EclInpageNavigationItemComponent.html +1 -1
- package/docs/components/EclLayoutWrapperComponent.html +3 -3
- package/docs/components/EclListIllustrationComponent.html +1 -1
- package/docs/components/EclListIllustrationItemComponent.html +1 -1
- package/docs/components/EclLoadingIndicatorComponent.html +1 -1
- package/docs/components/EclMediaContainerComponent.html +1 -1
- package/docs/components/EclMegaMenuComponent.html +1 -1
- package/docs/components/EclMegaMenuFeaturedComponent.html +1 -1
- package/docs/components/EclMegaMenuInfoComponent.html +1 -1
- package/docs/components/EclMegaMenuItemComponent.html +1 -1
- package/docs/components/EclMegaMenuSubitemComponent.html +1 -1
- package/docs/components/EclMenuComponent.html +1 -1
- package/docs/components/EclMenuItemComponent.html +1 -1
- package/docs/components/EclMenuMegaComponent.html +1 -1
- package/docs/components/EclMenuMegaItemComponent.html +1 -1
- package/docs/components/EclModalBodyComponent.html +1 -1
- package/docs/components/EclModalComponent.html +1 -1
- package/docs/components/EclModalFooterComponent.html +1 -1
- package/docs/components/EclModalHeaderComponent.html +1 -1
- package/docs/components/EclMultiselectComponent.html +1 -1
- package/docs/components/EclMultiselectDropdownComponent.html +1 -1
- package/docs/components/EclMultiselectInputComponent.html +1 -1
- package/docs/components/EclMultiselectOptgroupComponent.html +1 -1
- package/docs/components/EclMultiselectOptionComponent.html +1 -1
- package/docs/components/EclNavigationListComponent.html +1 -1
- package/docs/components/EclNavigationListItemComponent.html +1 -1
- package/docs/components/EclNewsTickerComponent.html +1 -1
- package/docs/components/EclNewsTickerItemComponent.html +1 -1
- package/docs/components/EclNotificationComponent.html +1 -1
- package/docs/components/EclPageHeaderComponent.html +1 -1
- package/docs/components/EclPageHeaderDescriptionContainerComponent.html +1 -1
- package/docs/components/EclPageHeaderExpandableComponent.html +1 -1
- package/docs/components/EclPageHeaderSectionComponent.html +1 -1
- package/docs/components/EclPageHeaderSectionInfoComponent.html +1 -1
- package/docs/components/EclPageSummaryComponent.html +1 -1
- package/docs/components/EclPaginationComponent.html +1 -1
- package/docs/components/EclPaginationItemComponent.html +1 -1
- package/docs/components/EclPopoverComponent.html +1 -1
- package/docs/components/EclQuizCardComponent.html +1 -1
- package/docs/components/EclQuizComponent.html +1 -1
- package/docs/components/EclRadioHelpComponent.html +1 -1
- package/docs/components/EclRadioLabelComponent.html +1 -1
- package/docs/components/EclRangeBubbleComponent.html +1 -1
- package/docs/components/EclRangeValueComponent.html +1 -1
- package/docs/components/EclRatingFieldComponent.html +1 -1
- package/docs/components/EclSearchFormComponent.html +1 -1
- package/docs/components/EclSelectContainerComponent.html +1 -1
- package/docs/components/EclSiteFooterComponent.html +1 -1
- package/docs/components/EclSiteFooterCoownerComponent.html +1 -1
- package/docs/components/EclSiteFooterCoreComponent.html +1 -1
- package/docs/components/EclSiteFooterFeedbackComponent.html +1 -1
- package/docs/components/EclSiteFooterFixedContentEUComponent.html +1 -1
- package/docs/components/EclSiteFooterRowCommonComponent.html +1 -1
- package/docs/components/EclSiteHeaderActionComponent.html +1 -1
- package/docs/components/EclSiteHeaderBannerTopComponent.html +1 -1
- package/docs/components/EclSiteHeaderComponent.html +1 -1
- package/docs/components/EclSiteHeaderCustomActionComponent.html +1 -1
- package/docs/components/EclSiteHeaderEnvironmentComponent.html +1 -1
- package/docs/components/EclSiteHeaderLanguageComponent.html +1 -1
- package/docs/components/EclSiteHeaderLanguagePopoverComponent.html +1 -1
- package/docs/components/EclSiteHeaderLoginComponent.html +1 -1
- package/docs/components/EclSiteHeaderNotificationComponent.html +1 -1
- package/docs/components/EclSiteHeaderSearchComponent.html +1 -1
- package/docs/components/EclSloganTickerComponent.html +1 -1
- package/docs/components/EclSocialMediaFollowComponent.html +1 -1
- package/docs/components/EclSocialMediaFollowItemComponent.html +1 -1
- package/docs/components/EclSplashPageComponent.html +1 -1
- package/docs/components/EclSplashPageLanguageCategoryComponent.html +1 -1
- package/docs/components/EclSplashPageLanguageContainerComponent.html +1 -1
- package/docs/components/EclSplashPageLanguageLinkComponent.html +1 -1
- package/docs/components/EclSpotlightComponent.html +1 -1
- package/docs/components/EclSpotlightLinkComponent.html +1 -1
- package/docs/components/EclStickyContainerComponent.html +1 -1
- package/docs/components/EclStoryCardComponent.html +1 -1
- package/docs/components/EclStoryCardGridDetailsComponent.html +1 -1
- package/docs/components/EclStoryCardItemComponent.html +1 -1
- package/docs/components/EclTabComponent.html +1 -1
- package/docs/components/EclTabLabelComponent.html +1 -1
- package/docs/components/EclTableSortButtonComponent.html +1 -1
- package/docs/components/EclTabsComponent.html +1 -1
- package/docs/components/EclTagComponent.html +47 -107
- package/docs/components/EclTextMediaComponent.html +45 -30
- package/docs/components/EclTimelineComponent.html +2 -221
- package/docs/components/EclTimelineItemComponent.html +41 -443
- package/docs/components/EclTimelineItemTogglerComponent.html +7 -97
- package/docs/directives/ECLBaseDirective.html +0 -4
- package/docs/directives/EclCheckboxDirective.html +119 -94
- package/docs/directives/EclCheckboxInputDirective.html +33 -90
- package/docs/directives/EclFeaturedItemLinkDirective.html +14 -153
- package/docs/directives/EclLayoutWrapperViewAllDirective.html +2 -2
- package/docs/directives/EclTextAreaDirective.html +53 -100
- package/docs/directives/EclTextInputDirective.html +47 -144
- package/docs/directives/EclTimelineItemLabelDirective.html +0 -46
- package/docs/directives/EclTimelineItemTitleDirective.html +0 -46
- package/docs/directives/EclTimelineSetDirective.html +0 -104
- package/docs/directives/EclTooltipDirective.html +4 -157
- package/docs/interfaces/EclCarouselItem.html +6 -6
- package/docs/interfaces/EclCategoryFilterItem.html +6 -6
- package/docs/js/search/search_index.js +2 -2
- package/docs/json/EclCarouselItemComponent.md +1 -1
- package/docs/json/EclCategoryFilterItemComponent.md +2 -2
- package/docs/json/EclCheckboxDirective.md +2 -2
- package/docs/json/EclCheckboxHelpComponent.md +1 -1
- package/docs/json/EclCheckboxLabelComponent.md +0 -2
- package/docs/json/EclDateBlockComponent.md +1 -1
- package/docs/json/EclFeaturedItemLinkDirective.md +0 -1
- package/docs/json/EclLayoutWrapperComponent.md +1 -1
- package/docs/json/EclLayoutWrapperViewAllDirective.md +1 -1
- package/docs/json/EclTimelineComponent.md +1 -1
- package/docs/json/EclTimelineItemComponent.md +4 -4
- package/docs/json/EclTimelineItemTogglerComponent.md +2 -2
- package/docs/json/documentation.json +2468 -3078
- package/docs/llms.txt +60 -52
- package/docs/properties.html +1 -1
- package/fesm2022/eui-ecl-components-ecl-breadcrumb.mjs +7 -11
- package/fesm2022/eui-ecl-components-ecl-breadcrumb.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-carousel.mjs +39 -24
- package/fesm2022/eui-ecl-components-ecl-carousel.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-category-filter.mjs +68 -59
- package/fesm2022/eui-ecl-components-ecl-category-filter.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-checkbox.mjs +92 -96
- package/fesm2022/eui-ecl-components-ecl-checkbox.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-date-block.mjs +18 -26
- package/fesm2022/eui-ecl-components-ecl-date-block.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-featured.mjs +42 -59
- package/fesm2022/eui-ecl-components-ecl-featured.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-layout-wrapper.mjs +2 -2
- package/fesm2022/eui-ecl-components-ecl-layout-wrapper.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-multiselect.mjs +2 -2
- package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-tag.mjs +19 -22
- package/fesm2022/eui-ecl-components-ecl-tag.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-text-area.mjs +16 -17
- package/fesm2022/eui-ecl-components-ecl-text-area.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-text-input.mjs +14 -17
- package/fesm2022/eui-ecl-components-ecl-text-input.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-text-media.mjs +10 -9
- package/fesm2022/eui-ecl-components-ecl-text-media.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-timeline.mjs +132 -133
- package/fesm2022/eui-ecl-components-ecl-timeline.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-tooltip.mjs +8 -14
- package/fesm2022/eui-ecl-components-ecl-tooltip.mjs.map +1 -1
- package/fesm2022/eui-ecl-core.mjs +0 -1
- package/fesm2022/eui-ecl-core.mjs.map +1 -1
- package/package.json +1 -1
- package/types/eui-ecl-components-ecl-breadcrumb.d.ts +0 -1
- package/types/eui-ecl-components-ecl-breadcrumb.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-carousel.d.ts +16 -11
- package/types/eui-ecl-components-ecl-carousel.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-category-filter.d.ts +28 -18
- package/types/eui-ecl-components-ecl-category-filter.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-checkbox.d.ts +49 -34
- package/types/eui-ecl-components-ecl-checkbox.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-date-block.d.ts +9 -7
- package/types/eui-ecl-components-ecl-date-block.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-featured.d.ts +7 -9
- package/types/eui-ecl-components-ecl-featured.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-layout-wrapper.d.ts +2 -2
- package/types/eui-ecl-components-ecl-tag.d.ts +2 -3
- package/types/eui-ecl-components-ecl-tag.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-text-area.d.ts +2 -2
- package/types/eui-ecl-components-ecl-text-area.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-text-input.d.ts +3 -3
- package/types/eui-ecl-components-ecl-text-input.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-text-media.d.ts +1 -1
- package/types/eui-ecl-components-ecl-text-media.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-timeline.d.ts +65 -50
- package/types/eui-ecl-components-ecl-timeline.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-tooltip.d.ts.map +1 -1
- package/types/eui-ecl-core.d.ts.map +1 -1
package/docs/llms.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# eui documentation
|
|
2
2
|
|
|
3
|
-
> Generated by compodoc 2.0.0 at 2026-10-
|
|
3
|
+
> Generated by compodoc 2.0.0 at 2026-10-08T20:04:09.221Z, llm-md export.
|
|
4
4
|
|
|
5
5
|
## Modules
|
|
6
6
|
|
|
@@ -377,7 +377,7 @@ Description: Represents a single item (slide) within the ECL Carousel. Each slid
|
|
|
377
377
|
|
|
378
378
|
Inputs:
|
|
379
379
|
- `id: string` — The unique identifier of the slide.
|
|
380
|
-
- `isCurrent: boolean = false` —
|
|
380
|
+
- `isCurrent: boolean = false` — Input controlling whether this slide starts as the active/visible one. Automatically coerced to a boolean value.
|
|
381
381
|
- `class: string = ''`
|
|
382
382
|
- `e2eAttr: string`
|
|
383
383
|
- `tabindex = undefined`
|
|
@@ -387,10 +387,11 @@ Outputs:
|
|
|
387
387
|
- `class: string = ''`
|
|
388
388
|
|
|
389
389
|
Properties:
|
|
390
|
-
- `ariaLabel: string` — The aria-label for the slide, assigned dynamically by the carousel.
|
|
390
|
+
- `ariaLabel: unknown = signal<string | undefined>(undefined)` — The aria-label for the slide, assigned dynamically by the carousel.
|
|
391
391
|
- `banner: unknown = contentChild(forwardRef(() => EclBannerComponent))` — Optionally captures a banner component projected into the slide.
|
|
392
392
|
- `el: unknown = inject(ElementRef)`
|
|
393
|
-
- `index: number` — Internal slide index, assigned dynamically by the carousel.
|
|
393
|
+
- `index: unknown = signal<number | undefined>(undefined)` — Internal slide index, assigned dynamically by the carousel.
|
|
394
|
+
- `isCurrent: unknown = linkedSignal(() => this.isCurrentInput())` — Indicates whether this slide is currently active/visible. Seeded from the isCurrent input but can be updated imperatively by the parent carousel as the user navigates between slides.
|
|
394
395
|
|
|
395
396
|
Methods:
|
|
396
397
|
- `onSlideClick(): void` — Handles click events on the slide and emits a slideClick event.
|
|
@@ -424,21 +425,25 @@ File: `packages/ecl/components/ecl-category-filter/ecl-category-filter-list/ecl-
|
|
|
424
425
|
Selector: `ecl-category-filter-item`
|
|
425
426
|
|
|
426
427
|
Inputs:
|
|
427
|
-
- `id: string` — Unique identifier for the item. Used to manage selection state.
|
|
428
428
|
- `href: string = undefined` — Link URL associated with this category filter item. If not provided, the item acts as a toggle only.
|
|
429
|
+
- `id: string = undefined` — Input for the unique identifier of the item. When omitted, the parent assigns a generated fallback id.
|
|
429
430
|
- `class: string = ''`
|
|
430
431
|
- `e2eAttr: string`
|
|
431
432
|
- `tabindex = undefined`
|
|
432
433
|
|
|
433
434
|
Outputs:
|
|
434
|
-
- `itemSelect:
|
|
435
|
+
- `itemSelect: EclCategoryFilterItemSelectEvent` — Emits when the item is selected by the user (clicked).
|
|
435
436
|
- `class: string = ''`
|
|
436
437
|
|
|
437
438
|
Properties:
|
|
438
439
|
- `eclCategoryList: unknown = contentChild(forwardRef(() => EclCategoryFilterListComponent))` — Child list component if the item has nested children.
|
|
440
|
+
- `id: unknown = computed(() => this.idInput() ?? this.fallbackId())` — Unique identifier for the item. Used to manage selection state. Resolves to the id input when provided, otherwise the parent-assigned fallback.
|
|
441
|
+
- `isCurrent: unknown = signal(false)` — Whether the item is currently selected. Writable so that the parent can update selection as the user navigates.
|
|
442
|
+
- `isExpanded: unknown = signal(false)` — Whether the item is currently expanded (open). Writable so that the parent can toggle it as the tree state changes.
|
|
439
443
|
|
|
440
444
|
Methods:
|
|
441
445
|
- `onItemClick(evt: MouseEvent): void` — Handles user click interaction, updates state and emits selection event. Prevents navigation if no href is defined.
|
|
446
|
+
- `setFallbackId(id: string): void` — Assigns a fallback id. Used by the parent category filter when no id input was provided.
|
|
442
447
|
- `getCssClasses(rootClass: string): string`
|
|
443
448
|
|
|
444
449
|
### EclCategoryFilterListComponent
|
|
@@ -456,7 +461,7 @@ Outputs:
|
|
|
456
461
|
|
|
457
462
|
Properties:
|
|
458
463
|
- `eclCategoryFilterItems: unknown = contentChildren<EclCategoryFilterItemComponent>(forwardRef(() => EclCategoryFilterItemComponent))` — List of all category filter items projected inside this list.
|
|
459
|
-
- `id: string` — ID of this list element, referenced by the parent item's aria-controls.
|
|
464
|
+
- `id: unknown = signal<string | undefined>(undefined)` — ID of this list element, referenced by the parent item's aria-controls.
|
|
460
465
|
|
|
461
466
|
Methods:
|
|
462
467
|
- `updateChildrenItemsLevel(value: number): void` — Propagates the current level to all direct children items.
|
|
@@ -470,7 +475,7 @@ Selector: `[eclCheckboxHelp]`
|
|
|
470
475
|
Description: Displays help text associated with a checkbox.
|
|
471
476
|
|
|
472
477
|
Inputs:
|
|
473
|
-
- `isDisabled: boolean = false` —
|
|
478
|
+
- `isDisabled: boolean = false` — Input controlling whether the help text starts in a disabled (visually muted) state.
|
|
474
479
|
- `class: string = ''`
|
|
475
480
|
- `e2eAttr: string`
|
|
476
481
|
- `tabindex = undefined`
|
|
@@ -478,6 +483,10 @@ Inputs:
|
|
|
478
483
|
Outputs:
|
|
479
484
|
- `class: string = ''`
|
|
480
485
|
|
|
486
|
+
Properties:
|
|
487
|
+
- `cssClasses: unknown = computed(() => super.getCssClasses('ecl-checkbox__help'))` — Applies base CSS classes for checkbox help.
|
|
488
|
+
- `isDisabled: unknown = linkedSignal(() => this.isDisabledInput())` — Indicates whether the help text is disabled (e.g. visually muted). Seeded from the isDisabled input but can be updated imperatively by the parent checkbox directive.
|
|
489
|
+
|
|
481
490
|
Methods:
|
|
482
491
|
- `getCssClasses(rootClass: string): string`
|
|
483
492
|
|
|
@@ -489,8 +498,6 @@ Selector: `label[eclCheckboxLabel]`
|
|
|
489
498
|
Description: Label component for a checkbox, supporting state styles.
|
|
490
499
|
|
|
491
500
|
Inputs:
|
|
492
|
-
- `isDisabled: boolean = false` — Indicates whether the checkbox is disabled.
|
|
493
|
-
- `isInvalid: boolean = false` — Indicates whether the checkbox is in an invalid state.
|
|
494
501
|
- `isRequired: boolean = false` — Indicates whether the checkbox is required.
|
|
495
502
|
- `class: string = ''`
|
|
496
503
|
- `e2eAttr: string`
|
|
@@ -499,6 +506,11 @@ Inputs:
|
|
|
499
506
|
Outputs:
|
|
500
507
|
- `class: string = ''`
|
|
501
508
|
|
|
509
|
+
Properties:
|
|
510
|
+
- `cssClasses: unknown = computed(() => super.getCssClasses('ecl-checkbox__label'))` — Applies base CSS classes for checkbox label.
|
|
511
|
+
- `isDisabled: unknown = signal(false)` — Indicates whether the checkbox is disabled. Set imperatively by the parent checkbox directive.
|
|
512
|
+
- `isInvalid: unknown = signal(false)` — Indicates whether the checkbox is in an invalid state. Set imperatively by the parent checkbox directive.
|
|
513
|
+
|
|
502
514
|
Methods:
|
|
503
515
|
- `getCssClasses(rootClass: string): string`
|
|
504
516
|
|
|
@@ -556,9 +568,9 @@ Selector: `time[eclDateBlock]`
|
|
|
556
568
|
Description: Component used to display a formatted date in a styled time element. Designed for use within content components such as content blocks or items.
|
|
557
569
|
|
|
558
570
|
Inputs:
|
|
559
|
-
- `datetime: string` — Sets the datetime attribute of the \<time\> element. If not provided, it is derived from date and dateFormat .
|
|
560
571
|
- `date: Date = undefined` — The date to be displayed. If not null, it's used to generate the datetime attribute and visual output.
|
|
561
572
|
- `dateFormat: string = 'dd/M/yyyy'` — The format to be used when rendering the date string (Angular DatePipe format). Default is 'dd/M/yyyy' .
|
|
573
|
+
- `datetime: string = undefined` — Explicit value for the datetime attribute of the \<time\> element (optional). If not provided, it is derived from date and dateFormat .
|
|
562
574
|
- `day: string = undefined` — Explicit string for day part of the date (optional). Used when date is not set or overridden manually.
|
|
563
575
|
- `month: string = undefined` — Explicit string for month part of the date (optional). Used when date is not set or overridden manually.
|
|
564
576
|
- `monthTitle: string = undefined` — Explicit string used as an accessible or verbose label for the month (optional).
|
|
@@ -572,6 +584,7 @@ Outputs:
|
|
|
572
584
|
- `class: string = ''`
|
|
573
585
|
|
|
574
586
|
Properties:
|
|
587
|
+
- `datetime: unknown = computed(() => this.datetimeInput() || this.getFormattedDate(this.date(), this.dateFormat()))` — The resolved datetime attribute value. Uses the explicit datetime input when provided, otherwise derives it from date and dateFormat .
|
|
575
588
|
- `locale: string = 'en'`
|
|
576
589
|
|
|
577
590
|
Methods:
|
|
@@ -718,7 +731,7 @@ Outputs:
|
|
|
718
731
|
- `class: string = ''`
|
|
719
732
|
|
|
720
733
|
Properties:
|
|
721
|
-
-
|
|
734
|
+
- ``cssClasses: unknown = computed(() => { const variant = this.variant(); return [ super.getCssClasses('ecl-featured-item'), variant ? `ecl-featured-item--${variant}`: '', this.horizont…`` — Adds specific classes to the component.
|
|
722
735
|
|
|
723
736
|
Methods:
|
|
724
737
|
- `getCssClasses(rootClass: string): string`
|
|
@@ -742,7 +755,6 @@ Outputs:
|
|
|
742
755
|
- `class: string = ''`
|
|
743
756
|
|
|
744
757
|
Properties:
|
|
745
|
-
- `className: unknown = true`
|
|
746
758
|
- `links: unknown = contentChildren(EclFeaturedItemLinkDirective, { descendants: true })`
|
|
747
759
|
- `mediaContainer: unknown = contentChild(EclMediaContainerComponent)`
|
|
748
760
|
|
|
@@ -764,9 +776,6 @@ Inputs:
|
|
|
764
776
|
Outputs:
|
|
765
777
|
- `class: string = ''`
|
|
766
778
|
|
|
767
|
-
Properties:
|
|
768
|
-
- `className: unknown = true`
|
|
769
|
-
|
|
770
779
|
Methods:
|
|
771
780
|
- `getCssClasses(rootClass: string): string`
|
|
772
781
|
|
|
@@ -1200,7 +1209,7 @@ Methods:
|
|
|
1200
1209
|
File: `packages/ecl/components/ecl-layout-wrapper/ecl-layout-wrapper.component.ts`
|
|
1201
1210
|
Selector: `div[eclLayoutWrapper]`
|
|
1202
1211
|
|
|
1203
|
-
Description: ECL Layout Wrapper component. Arranges projected content into a responsive grid layout with configurable columns. Includes optional title, description, and "view all" link areas. Example : \<div eclLayoutWrapper \[columns\]="3" direction="horizontal"\> \<h2 eclLayoutWrapperTitle\>Heading\</h2\> \<div eclLayoutWrapperDescription\>Description text\</div\> \_\_\_COMPODOC\_EMPTY\_LINE\_\_\_ \<div eclLayoutItem\>\<article eclCard\>...\</article\>\</div\> \<div eclLayoutItem\>\<article eclCard\>...\</article\>\</div\> \<div eclLayoutItem\>\<article eclCard\>...\</article\>\</div\> \_\_\_COMPODOC\_EMPTY\_LINE\_\_\_ \<a eclLayoutWrapperViewAll eclLink
|
|
1212
|
+
Description: ECL Layout Wrapper component. Arranges projected content into a responsive grid layout with configurable columns. Includes optional title, description, and "view all" link areas. Example : \<div eclLayoutWrapper \[columns\]="3" direction="horizontal"\> \<h2 eclLayoutWrapperTitle\>Heading\</h2\> \<div eclLayoutWrapperDescription\>Description text\</div\> \_\_\_COMPODOC\_EMPTY\_LINE\_\_\_ \<div eclLayoutItem\>\<article eclCard\>...\</article\>\</div\> \<div eclLayoutItem\>\<article eclCard\>...\</article\>\</div\> \<div eclLayoutItem\>\<article eclCard\>...\</article\>\</div\> \_\_\_COMPODOC\_EMPTY\_LINE\_\_\_ \<a eclLayoutWrapperViewAll eclLink icon="arrow-left"\>View all\</a\> \</div\>
|
|
1204
1213
|
|
|
1205
1214
|
Inputs:
|
|
1206
1215
|
- `columns: number = 3` — Number of columns for the grid layout. Accepts 2, 3, or 4. Defaults to 3.
|
|
@@ -3359,7 +3368,8 @@ Outputs:
|
|
|
3359
3368
|
- `class: string = ''`
|
|
3360
3369
|
|
|
3361
3370
|
Properties:
|
|
3362
|
-
-
|
|
3371
|
+
- ``cssClasses: unknown = computed(() => { const variant = this.variant(); return [ super.getCssClasses('ecl-tag'), variant ? `ecl-tag--${variant}` : '', this.isWrapped() ? '' : 'ecl-tag…``
|
|
3372
|
+
- `isVisible: unknown = signal(true)`
|
|
3363
3373
|
- `title: string = 'dismiss'`
|
|
3364
3374
|
|
|
3365
3375
|
Methods:
|
|
@@ -3383,13 +3393,16 @@ Inputs:
|
|
|
3383
3393
|
Outputs:
|
|
3384
3394
|
- `class: string = ''`
|
|
3385
3395
|
|
|
3396
|
+
Properties:
|
|
3397
|
+
- `cssClasses: unknown = computed(() => { return [super.getCssClasses('ecl-text-media'), this.variant() === 'primary' ? 'ecl-text-media--primary' : '', this.mediaPosition() === 'left' ?…`
|
|
3398
|
+
|
|
3386
3399
|
Methods:
|
|
3387
3400
|
- `getCssClasses(rootClass: string): string`
|
|
3388
3401
|
|
|
3389
3402
|
### EclTimelineComponent
|
|
3390
3403
|
|
|
3391
3404
|
File: `packages/ecl/components/ecl-timeline/ecl-timeline.component.ts`
|
|
3392
|
-
Selector: `
|
|
3405
|
+
Selector: `ol[eclTimeline]`
|
|
3393
3406
|
|
|
3394
3407
|
Inputs:
|
|
3395
3408
|
- `class: string = ''`
|
|
@@ -3399,25 +3412,20 @@ Inputs:
|
|
|
3399
3412
|
Outputs:
|
|
3400
3413
|
- `class: string = ''`
|
|
3401
3414
|
|
|
3402
|
-
Properties:
|
|
3403
|
-
- `isExpanded: boolean | null = null`
|
|
3404
|
-
- `timelineItems: unknown = contentChildren(forwardRef(() => EclTimelineItemComponent))` — List of projected EclTimelineItemComponent instances. Collected using @ContentChildren .
|
|
3405
|
-
|
|
3406
3415
|
Methods:
|
|
3407
|
-
- `onFocusFirstExpandedLink(item: EclTimelineItemComponent): void` — Focuses the first link in the expanded timeline item, ensuring it's only done once per toggle group interaction.
|
|
3408
3416
|
- `getCssClasses(rootClass: string): string`
|
|
3409
3417
|
|
|
3410
3418
|
### EclTimelineItemComponent
|
|
3411
3419
|
|
|
3412
3420
|
File: `packages/ecl/components/ecl-timeline/ecl-timeline-item.component.ts`
|
|
3413
|
-
Selector: `
|
|
3421
|
+
Selector: `li[eclTimelineItem]`
|
|
3414
3422
|
|
|
3415
3423
|
Inputs:
|
|
3416
3424
|
- `collapseLabel: string = 'Collapse'` — Text label shown when the item is expanded and can be collapsed. Defaults to 'Collapse' .
|
|
3417
3425
|
- `expandLabel: string = 'Expand'` — Text label shown when the item is collapsed and can be expanded. Defaults to 'Expand' .
|
|
3418
|
-
- `isCollapsed: boolean = false` — Whether the item is collapsed.
|
|
3426
|
+
- `isCollapsed: boolean = false` — Whether the item is initially collapsed. Applies the ecl-timeline\_\_item--collapsed CSS class when true.
|
|
3419
3427
|
- `isHeadline: boolean = false`
|
|
3420
|
-
- `isToggler: boolean = false` — Whether the item is a toggler (e.g. expands/collapses related items).
|
|
3428
|
+
- `isToggler: boolean = false` — Whether the item is a toggler (e.g. expands/collapses related items). Applies the ecl-timeline\_\_item--toggle CSS class when true.
|
|
3421
3429
|
- `isTogglerExpanded: boolean = false` — Indicates whether the toggler is initially expanded. Used for toggler-type items.
|
|
3422
3430
|
- `toggleGroup: string = undefined` — Name of the toggle group that this item belongs to. Used to coordinate collapsing/expanding related items.
|
|
3423
3431
|
- `class: string = ''`
|
|
@@ -3425,25 +3433,21 @@ Inputs:
|
|
|
3425
3433
|
- `tabindex = undefined`
|
|
3426
3434
|
|
|
3427
3435
|
Outputs:
|
|
3428
|
-
- `toggle: EventEmitter = new EventEmitter<EclTimelineItemToggleEvent>()` — Event emitted when the toggler is clicked. Consumers can call preventDefault() on the event to cancel toggle behavior.
|
|
3429
3436
|
- `isTogglerExpanded: boolean = false` — Indicates whether the toggler is initially expanded. Used for toggler-type items.
|
|
3437
|
+
- `toggle: EclTimelineItemToggleEvent` — Event emitted when the toggler is clicked. Consumers can call preventDefault() on the event to cancel toggle behavior.
|
|
3430
3438
|
- `class: string = ''`
|
|
3431
3439
|
|
|
3432
3440
|
Properties:
|
|
3433
|
-
- `eclLink: unknown = contentChild(forwardRef(() => EclLinkDirective))` — Reference to a projected ECL link, used for setting focus after toggle.
|
|
3434
|
-
- `
|
|
3435
|
-
- `timelineItemToggler: unknown = contentChild(forwardRef(() => EclTimelineItemTogglerComponent))` — Reference to a projected custom toggler component.
|
|
3436
|
-
- `timelineTitle: unknown = contentChild(forwardRef(() => EclTimelineItemTitleDirective))`
|
|
3441
|
+
- `eclLink: unknown = contentChild(forwardRef(() => EclLinkDirective))` — Reference to a projected ECL link, used for setting focus after toggle. Read by the parent EclTimelineComponent to move focus after a toggle.
|
|
3442
|
+
- `isCollapsedState: unknown = linkedSignal(() => this.isCollapsed())` — Live collapsed state of the item. Seeded from the isCollapsed input but writable at runtime, so the parent EclTimelineComponent can expand or collapse grouped items in response to a toggler interaction. Resets to the input value if the input changes.
|
|
3437
3443
|
|
|
3438
3444
|
Methods:
|
|
3439
|
-
- `hasDefaultToggler(): boolean` — Checks whether the default toggler UI should be used. Returns true if this is a toggler and no custom toggler component is projected.
|
|
3440
|
-
- `onTogglerClick(evt: MouseEvent): void` — Handles click events from the default toggler element.
|
|
3441
3445
|
- `getCssClasses(rootClass: string): string`
|
|
3442
3446
|
|
|
3443
3447
|
### EclTimelineItemTogglerComponent
|
|
3444
3448
|
|
|
3445
3449
|
File: `packages/ecl/components/ecl-timeline/ecl-timeline-item-toggler.component.ts`
|
|
3446
|
-
Selector: `
|
|
3450
|
+
Selector: `li[eclTimelineItemToggler]`
|
|
3447
3451
|
|
|
3448
3452
|
Description: Component representing a toggler inside a timeline item. Emits a toggle event when clicked.
|
|
3449
3453
|
|
|
@@ -3453,11 +3457,10 @@ Inputs:
|
|
|
3453
3457
|
- `tabindex = undefined`
|
|
3454
3458
|
|
|
3455
3459
|
Outputs:
|
|
3456
|
-
- `toggle:
|
|
3460
|
+
- `toggle: void` — Event emitted when the toggler is activated (clicked). Used to trigger expand/collapse behavior in the parent timeline item.
|
|
3457
3461
|
- `class: string = ''`
|
|
3458
3462
|
|
|
3459
3463
|
Methods:
|
|
3460
|
-
- `onTogglerClick(): void` — Handles click events on the toggler element and emits the toggle event.
|
|
3461
3464
|
- `getCssClasses(rootClass: string): string`
|
|
3462
3465
|
|
|
3463
3466
|
## Directives
|
|
@@ -3729,7 +3732,6 @@ Methods:
|
|
|
3729
3732
|
|
|
3730
3733
|
File: `packages/ecl/core/ecl-base.directive.ts`
|
|
3731
3734
|
Selector: `[eclBase]`
|
|
3732
|
-
Standalone: yes
|
|
3733
3735
|
|
|
3734
3736
|
Inputs:
|
|
3735
3737
|
- `class: string = ''`
|
|
@@ -3875,8 +3877,8 @@ Selector: `[eclCheckbox]`
|
|
|
3875
3877
|
Description: Directive that applies ECL styles and manages state for checkbox groups or standalone checkboxes.
|
|
3876
3878
|
|
|
3877
3879
|
Inputs:
|
|
3878
|
-
- `isDisabled: boolean = false` —
|
|
3879
|
-
- `isInvalid: boolean = false` —
|
|
3880
|
+
- `isDisabled: boolean = false` — Input controlling whether the checkbox starts disabled. Automatically coerced to a boolean value.
|
|
3881
|
+
- `isInvalid: boolean = false` — Input controlling whether the checkbox starts in an invalid state. Automatically coerced to a boolean value.
|
|
3880
3882
|
- `isSingle: boolean = false` — Indicates whether the checkbox is rendered as a single (standalone) item.
|
|
3881
3883
|
- `class: string = ''`
|
|
3882
3884
|
- `e2eAttr: string`
|
|
@@ -3886,10 +3888,13 @@ Outputs:
|
|
|
3886
3888
|
- `class: string = ''`
|
|
3887
3889
|
|
|
3888
3890
|
Properties:
|
|
3891
|
+
- `cssClasses: unknown = computed(() => super.getCssClasses('ecl-checkbox'))` — Applies base CSS classes for the checkbox container.
|
|
3889
3892
|
- `eclCheckboxHelpComponent: unknown = contentChild(forwardRef(() => EclCheckboxHelpComponent))` — Child help component projected into the checkbox.
|
|
3890
3893
|
- `eclCheckboxLabelComponent: unknown = contentChild(forwardRef(() => EclCheckboxLabelComponent))` — Child label component projected into the checkbox.
|
|
3891
3894
|
- `eclFormLabelDirective: unknown = contentChild(forwardRef(() => EclFormLabelComponent))` — Optional form label component projected into the checkbox.
|
|
3892
3895
|
- `eclHelpBlockDirective: unknown = contentChild(forwardRef(() => EclHelpBlockDirective))` — Optional help block directive projected into the checkbox.
|
|
3896
|
+
- `isDisabled: unknown = linkedSignal(() => this.isDisabledInput())` — Indicates whether the checkbox is disabled. Seeded from the isDisabled input but can be updated imperatively by the checkbox input directive as the associated control's state changes.
|
|
3897
|
+
- `isInvalid: unknown = linkedSignal(() => this.isInvalidInput())` — Indicates whether the checkbox is in an invalid state. Seeded from the isInvalid input but can be updated imperatively by the checkbox input directive as the associated control's validity changes.
|
|
3893
3898
|
|
|
3894
3899
|
Methods:
|
|
3895
3900
|
- `getCssClasses(rootClass: string): string`
|
|
@@ -3910,6 +3915,7 @@ Outputs:
|
|
|
3910
3915
|
- `class: string = ''`
|
|
3911
3916
|
|
|
3912
3917
|
Properties:
|
|
3918
|
+
- `cssClasses: unknown = computed(() => super.getCssClasses('ecl-checkbox__input'))` — Applies base CSS classes for checkbox input.
|
|
3913
3919
|
- `eclCheckbox: unknown = inject(EclCheckboxDirective)`
|
|
3914
3920
|
|
|
3915
3921
|
Methods:
|
|
@@ -4500,7 +4506,6 @@ Selector: `[eclFeaturedItemLink]`
|
|
|
4500
4506
|
Description: Applies specific additional class for the eclLink directive, used in construction.
|
|
4501
4507
|
|
|
4502
4508
|
Inputs:
|
|
4503
|
-
- `ariaDescribedBy: string | null`
|
|
4504
4509
|
- `class: string = ''`
|
|
4505
4510
|
- `e2eAttr: string`
|
|
4506
4511
|
- `tabindex = undefined`
|
|
@@ -4509,7 +4514,7 @@ Outputs:
|
|
|
4509
4514
|
- `class: string = ''`
|
|
4510
4515
|
|
|
4511
4516
|
Properties:
|
|
4512
|
-
- `
|
|
4517
|
+
- `ariaDescribedBy: unknown = signal<string | null>(null)` — The id of the element describing this link. Set imperatively by the parent featured item once the title id is known.
|
|
4513
4518
|
|
|
4514
4519
|
Methods:
|
|
4515
4520
|
- `getCssClasses(rootClass: string): string`
|
|
@@ -4964,7 +4969,7 @@ Description: Directive for the layout wrapper title. Applies the ecl-layout-wrap
|
|
|
4964
4969
|
File: `packages/ecl/components/ecl-layout-wrapper/ecl-layout-wrapper.directives.ts`
|
|
4965
4970
|
Selector: `[eclLayoutWrapperViewAll]`
|
|
4966
4971
|
|
|
4967
|
-
Description: Directive for the layout wrapper "view all" link. Applies the ecl-layout-wrapper\_\_view-all-link class to the link element. Example : \<a eclLayoutWrapperViewAll eclLink
|
|
4972
|
+
Description: Directive for the layout wrapper "view all" link. Applies the ecl-layout-wrapper\_\_view-all-link class to the link element. Example : \<a eclLayoutWrapperViewAll eclLink icon="arrow-left"\>View all\</a\>
|
|
4968
4973
|
|
|
4969
4974
|
### EclLinkDirective
|
|
4970
4975
|
|
|
@@ -6909,6 +6914,9 @@ Inputs:
|
|
|
6909
6914
|
Outputs:
|
|
6910
6915
|
- `class: string = ''`
|
|
6911
6916
|
|
|
6917
|
+
Properties:
|
|
6918
|
+
- ``cssClasses: unknown = computed(() => { const eclSize = this.eclSize(); return [super.getCssClasses('ecl-text-area'), eclSize ? `ecl-text-area--${eclSize}` : ''].join(' ').trim(); })`` — Adds specific classes for the component.
|
|
6919
|
+
|
|
6912
6920
|
Methods:
|
|
6913
6921
|
- `getCssClasses(rootClass: string): string`
|
|
6914
6922
|
|
|
@@ -6930,6 +6938,9 @@ Inputs:
|
|
|
6930
6938
|
Outputs:
|
|
6931
6939
|
- `class: string = ''`
|
|
6932
6940
|
|
|
6941
|
+
Properties:
|
|
6942
|
+
- ``cssClasses: unknown = computed(() => { const eclSize = this.eclSize(); return [super.getCssClasses('ecl-text-input'), eclSize ? `ecl-text-input--${eclSize}` : ''].join(' ').trim(); }…`` — Adds ECL classes for the component.
|
|
6943
|
+
|
|
6933
6944
|
Methods:
|
|
6934
6945
|
- `getCssClasses(rootClass: string): string`
|
|
6935
6946
|
|
|
@@ -7029,9 +7040,6 @@ Inputs:
|
|
|
7029
7040
|
Outputs:
|
|
7030
7041
|
- `class: string = ''`
|
|
7031
7042
|
|
|
7032
|
-
Properties:
|
|
7033
|
-
- `hasClass: unknown = true`
|
|
7034
|
-
|
|
7035
7043
|
Methods:
|
|
7036
7044
|
- `getCssClasses(rootClass: string): string`
|
|
7037
7045
|
|
|
@@ -7876,18 +7884,18 @@ Properties:
|
|
|
7876
7884
|
File: `packages/ecl/components/ecl-carousel/models/ecl-carousel-item.model.ts`
|
|
7877
7885
|
|
|
7878
7886
|
Properties:
|
|
7879
|
-
- `id?: string
|
|
7880
|
-
- `index: number
|
|
7881
|
-
- `isCurrent: boolean
|
|
7887
|
+
- `id?: Signal<string | undefined>`
|
|
7888
|
+
- `index: WritableSignal<number | undefined>`
|
|
7889
|
+
- `isCurrent: WritableSignal<boolean>`
|
|
7882
7890
|
|
|
7883
7891
|
### EclCategoryFilterItem
|
|
7884
7892
|
|
|
7885
7893
|
File: `packages/ecl/components/ecl-category-filter/models/ecl-category-filter-item.model.ts`
|
|
7886
7894
|
|
|
7887
7895
|
Properties:
|
|
7888
|
-
- `id?: string
|
|
7889
|
-
- `isCurrent?: boolean
|
|
7890
|
-
- `isExpanded?: boolean
|
|
7896
|
+
- `id?: Signal<string | undefined>`
|
|
7897
|
+
- `isCurrent?: Signal<boolean>`
|
|
7898
|
+
- `isExpanded?: Signal<boolean>`
|
|
7891
7899
|
- `isRootItem?: boolean`
|
|
7892
7900
|
|
|
7893
7901
|
### EclFileUpload
|
package/docs/properties.html
CHANGED
|
@@ -46,12 +46,8 @@ class EclBreadcrumbSegmentClickEvent extends EclBaseEvent {
|
|
|
46
46
|
* Displays a single breadcrumb segment with optional navigation or ellipsis.
|
|
47
47
|
*/
|
|
48
48
|
class EclBreadcrumbSegmentComponent extends ECLBaseDirective {
|
|
49
|
-
get ariaHidden() {
|
|
50
|
-
return this.isHidden();
|
|
51
|
-
}
|
|
52
|
-
get ariaCurrent() { return this.isCurrentPage() ? 'page' : null; }
|
|
53
49
|
constructor() {
|
|
54
|
-
super();
|
|
50
|
+
super(...arguments);
|
|
55
51
|
this.el = inject(ElementRef);
|
|
56
52
|
/**
|
|
57
53
|
* Defines the tabindex attribute for accessibility.
|
|
@@ -95,11 +91,11 @@ class EclBreadcrumbSegmentComponent extends ECLBaseDirective {
|
|
|
95
91
|
* Emits when the segment is clicked.
|
|
96
92
|
*/
|
|
97
93
|
this.segmentClick = output();
|
|
98
|
-
const el = this.el;
|
|
99
|
-
if (el.nativeElement.tagName.toLowerCase() === 'ecl-breadcrumb-segment') {
|
|
100
|
-
console.warn('"ecl-breadcrumb-segment" selector is deprecated; use "li[eclBreadcrumbSegment]" instead.');
|
|
101
|
-
}
|
|
102
94
|
}
|
|
95
|
+
get ariaHidden() {
|
|
96
|
+
return this.isHidden();
|
|
97
|
+
}
|
|
98
|
+
get ariaCurrent() { return this.isCurrentPage() ? 'page' : null; }
|
|
103
99
|
/**
|
|
104
100
|
* Computes the CSS classes applied to the segment.
|
|
105
101
|
*/
|
|
@@ -119,7 +115,7 @@ class EclBreadcrumbSegmentComponent extends ECLBaseDirective {
|
|
|
119
115
|
evt.stopPropagation();
|
|
120
116
|
}
|
|
121
117
|
}
|
|
122
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclBreadcrumbSegmentComponent, deps:
|
|
118
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclBreadcrumbSegmentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
123
119
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: EclBreadcrumbSegmentComponent, isStandalone: true, selector: "li[eclBreadcrumbSegment]", inputs: { routerLink: { classPropertyName: "routerLink", publicName: "routerLink", isSignal: true, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: "queryParams", publicName: "queryParams", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, queryParamsHandling: { classPropertyName: "queryParamsHandling", publicName: "queryParamsHandling", isSignal: true, isRequired: false, transformFunction: null }, isEllipsis: { classPropertyName: "isEllipsis", publicName: "isEllipsis", isSignal: true, isRequired: false, transformFunction: null }, isCurrentPage: { classPropertyName: "isCurrentPage", publicName: "isCurrentPage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { segmentClick: "segmentClick" }, host: { properties: { "attr.aria-current": "ariaCurrent", "attr.tabindex": "this.tabIndex", "attr.aria-hidden": "this.ariaHidden", "class": "this.cssClasses" } }, usesInheritance: true, ngImport: i0, template: "@if (!isEllipsis()) {\n@if (!isCurrentPage() && href()) {\n<a [href]=\"href()\" (click)=\"onSegmentClick($event)\" class=\"ecl-breadcrumb__link ecl-link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n}\n@if (!isCurrentPage() && !href()) {\n<a [routerLink]=\"routerLink()\" [queryParams]=\"queryParams()\" [queryParamsHandling]=\"queryParamsHandling()\"\n tabindex=\"0\" (click)=\"onSegmentClick($event)\" class=\"ecl-breadcrumb__link ecl-link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n}\n} @else {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n\n@if (isCurrentPage()) {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else {\n<ecl-icon role=\"presentation\" icon=\"corner-arrow\" ariaHidden=\"true\" focusable=\"false\" size=\"fluid\"\n class=\"ecl-breadcrumb__icon\">\n</ecl-icon>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "component", type: i1.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "title", "ariaHidden", "focusable", "isFlipHorizontal"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
124
120
|
}
|
|
125
121
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclBreadcrumbSegmentComponent, decorators: [{
|
|
@@ -127,7 +123,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
|
|
|
127
123
|
args: [{ selector: 'li[eclBreadcrumbSegment]', imports: [NgTemplateOutlet, RouterLink, RouterLinkWithHref, ...EUI_ECL_ICON, ...EUI_ECL_LINK], encapsulation: ViewEncapsulation.None, host: {
|
|
128
124
|
'[attr.aria-current]': 'ariaCurrent'
|
|
129
125
|
}, template: "@if (!isEllipsis()) {\n@if (!isCurrentPage() && href()) {\n<a [href]=\"href()\" (click)=\"onSegmentClick($event)\" class=\"ecl-breadcrumb__link ecl-link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n}\n@if (!isCurrentPage() && !href()) {\n<a [routerLink]=\"routerLink()\" [queryParams]=\"queryParams()\" [queryParamsHandling]=\"queryParamsHandling()\"\n tabindex=\"0\" (click)=\"onSegmentClick($event)\" class=\"ecl-breadcrumb__link ecl-link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n}\n} @else {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n\n@if (isCurrentPage()) {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else {\n<ecl-icon role=\"presentation\" icon=\"corner-arrow\" ariaHidden=\"true\" focusable=\"false\" size=\"fluid\"\n class=\"ecl-breadcrumb__icon\">\n</ecl-icon>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>" }]
|
|
130
|
-
}],
|
|
126
|
+
}], propDecorators: { tabIndex: [{
|
|
131
127
|
type: HostBinding,
|
|
132
128
|
args: ['attr.tabindex']
|
|
133
129
|
}], routerLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLink", required: false }] }], queryParams: [{ type: i0.Input, args: [{ isSignal: true, alias: "queryParams", required: false }] }], href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], queryParamsHandling: [{ type: i0.Input, args: [{ isSignal: true, alias: "queryParamsHandling", required: false }] }], isEllipsis: [{ type: i0.Input, args: [{ isSignal: true, alias: "isEllipsis", required: false }] }], isCurrentPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCurrentPage", required: false }] }], ariaHidden: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-breadcrumb.mjs","sources":["../../components/ecl-breadcrumb/ecl-breadcrumb-container.directive.ts","../../components/ecl-breadcrumb/events/ecl-breadcrumb-segment-click.event.ts","../../components/ecl-breadcrumb/ecl-breadcrumb-segment.component.ts","../../components/ecl-breadcrumb/ecl-breadcrumb-segment.component.html","../../components/ecl-breadcrumb/ecl-breadcrumb.component.ts","../../components/ecl-breadcrumb/ecl-breadcrumb.component.html","../../components/ecl-breadcrumb/index.ts","../../components/ecl-breadcrumb/eui-ecl-components-ecl-breadcrumb.ts"],"sourcesContent":["import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Used to wrap breadcrumb segments inside the breadcrumb component.\n */\n@Directive({\n selector: '[eclBreadcrumbContainer]',\n})\nexport class EclBreadcrumbContainerDirective extends ECLBaseDirective {\n\n /**\n * Adds breadcrumb container CSS class to the host element.\n */\n @HostBinding('class.ecl-breadcrumb__container') hasClass = true;\n}\n","import { EclBaseEvent } from '@eui/ecl/core';\n\n/**\n * Event emitted when a breadcrumb segment is clicked.\n */\nexport class EclBreadcrumbSegmentClickEvent extends EclBaseEvent {}\n","import {\n Component,\n ElementRef,\n HostBinding,\n input,\n output,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Params, QueryParamsHandling, RouterLink, RouterLinkWithHref } from '@angular/router';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclBreadcrumbSegmentClickEvent } from './events/ecl-breadcrumb-segment-click.event';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\n\n/**\n * Displays a single breadcrumb segment with optional navigation or ellipsis.\n */\n@Component({\n selector: 'li[eclBreadcrumbSegment]',\n templateUrl: './ecl-breadcrumb-segment.component.html',\n imports: [NgTemplateOutlet, RouterLink, RouterLinkWithHref, ...EUI_ECL_ICON, ...EUI_ECL_LINK],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.aria-current]': 'ariaCurrent'\n }\n})\nexport class EclBreadcrumbSegmentComponent extends ECLBaseDirective {\n el = inject(ElementRef);\n\n /**\n * Defines the tabindex attribute for accessibility.\n */\n @HostBinding('attr.tabindex') tabIndex = '-1';\n\n /**\n * Router link for navigation.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n routerLink = input<string | any[] | null>(null);\n\n /**\n * Query parameters used with routerLink.\n */\n queryParams = input<Params | null>(null);\n\n /**\n * Href used for standard navigation.\n */\n href = input('');\n\n /**\n * Strategy for handling existing query parameters during navigation.\n */\n queryParamsHandling = input<QueryParamsHandling>(null);\n\n /**\n * Displays the segment as an ellipsis instead of a link.\n */\n isEllipsis = input(false, { transform: booleanAttribute });\n\n /**\n * Highlights the segment as the current page.\n */\n isCurrentPage = input(false, { transform: booleanAttribute });\n\n /**\n * Hides the segment visually and from assistive technologies.\n */\n isHidden = signal(false);\n\n @HostBinding('attr.aria-hidden')\n get ariaHidden() {\n return this.isHidden();\n }\n\n /**\n * Emits when the segment is clicked.\n */\n segmentClick = output<EclBreadcrumbSegmentClickEvent>();\n\n get ariaCurrent() { return this.isCurrentPage() ? 'page' : null; }\n\n constructor() {\n super();\n const el = this.el;\n\n if (el.nativeElement.tagName.toLowerCase() === 'ecl-breadcrumb-segment') {\n console.warn('\"ecl-breadcrumb-segment\" selector is deprecated; use \"li[eclBreadcrumbSegment]\" instead.');\n }\n }\n\n /**\n * Computes the CSS classes applied to the segment.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-breadcrumb__segment'),\n this.isCurrentPage() ? 'ecl-breadcrumb__current-page' : '',\n this.isEllipsis() ? 'ecl-breadcrumb__segment--ellipsis' : '',\n ].join(' ').trim();\n }\n\n /**\n * Handles the click event on the segment.\n */\n onSegmentClick(evt: MouseEvent): void {\n this.segmentClick.emit(new EclBreadcrumbSegmentClickEvent());\n if (!this.href()) {\n evt.stopPropagation();\n }\n }\n}\n","@if (!isEllipsis()) {\n@if (!isCurrentPage() && href()) {\n<a [href]=\"href()\" (click)=\"onSegmentClick($event)\" class=\"ecl-breadcrumb__link ecl-link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n}\n@if (!isCurrentPage() && !href()) {\n<a [routerLink]=\"routerLink()\" [queryParams]=\"queryParams()\" [queryParamsHandling]=\"queryParamsHandling()\"\n tabindex=\"0\" (click)=\"onSegmentClick($event)\" class=\"ecl-breadcrumb__link ecl-link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n}\n} @else {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n\n@if (isCurrentPage()) {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else {\n<ecl-icon role=\"presentation\" icon=\"corner-arrow\" ariaHidden=\"true\" focusable=\"false\" size=\"fluid\"\n class=\"ecl-breadcrumb__icon\">\n</ecl-icon>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>","import { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n DOCUMENT,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n signal,\n viewChild,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { animationFrameScheduler, auditTime, fromEvent, observeOn, Subject, takeUntil } from 'rxjs';\nimport { EclBreadcrumbContainerDirective } from './ecl-breadcrumb-container.directive';\nimport { EclBreadcrumbSegmentComponent } from './ecl-breadcrumb-segment.component';\n\ninterface VisibilityMap {\n mode: string;\n isItemVisible: boolean[];\n}\n\n/**\n * Displays navigation segments and handles overflow with ellipsis.\n */\n@Component({\n selector: 'nav[eclBreadcrumb]',\n templateUrl: './ecl-breadcrumb.component.html',\n imports: [TranslatePipe, ...EUI_ECL_BUTTON, EclBreadcrumbSegmentComponent],\n host: {\n '[attr.aria-label]': 'ariaLabel()',\n '[class]': 'cssClasses',\n },\n})\nexport class EclBreadcrumbComponent extends ECLBaseDirective implements AfterViewInit, OnDestroy {\n /**\n * Expands all breadcrumb segments instead of collapsing them.\n */\n isExpanded = input(false, { transform: booleanAttribute });\n \n /**\n * Visible label for the ellipsis button. Defaults to the ellipsis character.\n */\n ellipsisLabel = input<string>('…');\n\n /**\n * Accessible label for the ellipsis button. When not provided, falls back to the\n * translated value of `ecl.breadcrumb.SHOW-MORE-ITEMS`.\n */\n ellipsisAriaLabel = input<string | undefined>(undefined);\n\n /**\n * ARIA label describing the breadcrumb purpose.\n */\n ariaLabel = toSignal(inject(TranslateService).stream('ecl.breadcrumb.YOU-ARE-HERE'));\n\n /**\n * Reference to the ellipsis segment element.\n */\n eclEllipsisSegment = viewChild<EclBreadcrumbSegmentComponent>('ellipsisSegment');\n\n /**\n * Reference to the breadcrumb container directive inside this component.\n */\n eclBreadcrumbContainer = contentChild(EclBreadcrumbContainerDirective, { read: ElementRef });\n\n /**\n * List of breadcrumb segment components.\n */\n eclSegments = contentChildren(forwardRef(() => EclBreadcrumbSegmentComponent), { descendants: true });\n\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n private isExpandedState = signal(false);\n private staticItems = computed(() => {\n const items = this.realSegments();\n return items.filter((_, index) =>\n index === 0 || index === items.length - 2 || index === items.length - 1\n );\n });\n\n private expandableItems = computed(() => {\n const items = this.realSegments();\n return items.filter((_, index) =>\n index !== 0 && index !== items.length - 2 && index !== items.length - 1\n );\n });\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private readonly window = inject<Document>(DOCUMENT).defaultView; // Window | null\n private platformId = inject(PLATFORM_ID);\n private readonly breakpoint = 995;\n private readonly wrapperWidth = signal(0);\n private readonly windowWidth = signal(0);\n private readonly allItemsWidth = signal(0);\n private readonly incompressibleWidth = signal(0);\n private readonly expandableWidths = signal<number[]>([]);\n\n private readonly realSegments = computed(() => {\n const ellipsis = this.eclEllipsisSegment();\n return this.eclSegments()?.filter((segment) => segment !== ellipsis);\n });\n\n protected readonly visibilityMap = computed<VisibilityMap>(() => {\n const manuallyExpanded = this.isExpandedState();\n const wrapperWidth = this.wrapperWidth();\n const windowWidth = this.windowWidth();\n const allItemsWidth = this.allItemsWidth();\n const incompressibleWidth = this.incompressibleWidth();\n const expandableWidths = this.expandableWidths();\n\n if (manuallyExpanded) {\n return {\n mode: 'full',\n isItemVisible: expandableWidths.map(() => true),\n };\n }\n if (!wrapperWidth) {\n return {\n mode: 'full',\n isItemVisible: expandableWidths.map(() => true),\n };\n }\n\n if (!expandableWidths.length) {\n return {\n mode: 'full',\n isItemVisible: [],\n };\n }\n\n // Mobile mode: window is small, ECL CSS handles layout\n if (windowWidth <= this.breakpoint) {\n return {\n mode: 'compact',\n isItemVisible: expandableWidths.map(() => false),\n };\n }\n\n // Everything fits\n if (allItemsWidth * 1.1 <= wrapperWidth) {\n return {\n mode: 'full',\n isItemVisible: expandableWidths.map(() => true),\n };\n }\n\n // Even static + ellipsis do not fit\n if (incompressibleWidth >= wrapperWidth) {\n return {\n mode: 'collapsed',\n isItemVisible: expandableWidths.map(() => false),\n };\n }\n\n // Fit expandable items from right to left\n let usedWidth = 0;\n let canStillFit = true;\n\n const isItemVisible = [...expandableWidths]\n .reverse()\n .map((width) => {\n if (!canStillFit) {\n return false;\n }\n\n usedWidth += width;\n const fits = usedWidth + incompressibleWidth <= wrapperWidth;\n\n if (!fits) {\n canStillFit = false;\n }\n\n return fits;\n })\n .reverse();\n\n return {\n mode: 'collapsed',\n isItemVisible,\n };\n });\n\n\n /**\n * CSS classes applied to the breadcrumb element.\n */\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-breadcrumb'),\n ].join(' ').trim();\n }\n\n constructor() {\n super();\n effect(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const mode = this.visibilityMap().mode;\n const host = this.el?.nativeElement;\n if (!host) return;\n\n this.renderer.removeClass(host, 'ecl-breadcrumb--wrap');\n this.renderer.removeClass(host, 'ecl-breadcrumb--collapsed');\n\n if (mode === 'collapsed') {\n this.renderer.addClass(host, 'ecl-breadcrumb--collapsed');\n } else {\n this.renderer.addClass(host, 'ecl-breadcrumb--wrap');\n }\n });\n\n effect(() => {\n const expandableItems = this.expandableItems();\n const map = this.visibilityMap();\n const manuallyExpanded = this.isExpandedState();\n \n if (map.mode === 'full') {\n this.eclEllipsisSegment()?.isHidden.set(true);\n expandableItems.forEach((segment) => {\n segment.isHidden.set(false);\n });\n return;\n }\n if (map.mode === 'compact') {\n this.eclEllipsisSegment()?.isHidden.set(true);\n expandableItems.forEach((segment) => {\n segment.isHidden.set(true);\n });\n return;\n }\n // collapsed mode: show ellipsis, selectively show expandable items\n this.eclEllipsisSegment()?.isHidden.set(false);\n expandableItems.forEach((segment, index) => {\n const isVisible = map.isItemVisible[index] ?? false;\n segment.isHidden.set(!isVisible);\n });\n });\n }\n\n /**\n * Handles window resize and recalculates overflown segments.\n */\n ngAfterViewInit() {\n if (!isPlatformBrowser(this.platformId)) return;\n // Initial setup + first measurement after layout is ready\n animationFrameScheduler.schedule(() => {\n this.insertEllipsisSegmentIntoPosition();\n this.measureAll();\n });\n\n // Re-measure on resize after layout\n fromEvent(this.window, 'resize').pipe(\n auditTime(50), observeOn(animationFrameScheduler),\n takeUntil(this.destroy$)).subscribe(() => {\n this.measureAll();\n });\n }\n\n /**\n * Cleans up subscriptions on destroy.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Returns true if breadcrumb container directive exists.\n */\n hasContainer = computed(() => !!this.eclBreadcrumbContainer());\n\n /**\n * Expands hidden breadcrumb segments after clicking ellipsis.\n */\n onEllipsisSegmentClick(): void {\n this.eclEllipsisSegment().isHidden.set(true);\n this.isExpandedState.set(true);\n }\n\n private measureAll(): void {\n const host = this.el?.nativeElement;\n const ellipsis = this.eclEllipsisSegment()?.el.nativeElement;\n const staticItems = this.staticItems().map((x) => x.el.nativeElement);\n const expandableItems = this.expandableItems().map((x) => x.el.nativeElement);\n\n if (!host) return;\n\n const wrapperWidth = Math.floor(host.getBoundingClientRect().width);\n const windowWidth = this.window?.innerWidth ?? 0;\n const ellipsisWidth = ellipsis ? this.measureWidth(ellipsis) : 0;\n const staticWidths = staticItems.map((el) => this.measureWidth(el));\n const expandableWidths = expandableItems.map((el) => this.measureWidth(el));\n\n const allItemsWidth =\n ellipsisWidth +\n staticWidths.reduce((sum, w) => sum + w, 0) +\n expandableWidths.reduce((sum, w) => sum + w, 0);\n\n const incompressibleWidth =\n ellipsisWidth + staticWidths.reduce((sum, w) => sum + w, 0);\n\n this.windowWidth.set(windowWidth);\n this.wrapperWidth.set(wrapperWidth);\n this.expandableWidths.set(expandableWidths);\n this.allItemsWidth.set(allItemsWidth);\n this.incompressibleWidth.set(incompressibleWidth);\n }\n\n private measureWidth(el: HTMLElement): number {\n let width = el.getBoundingClientRect().width;\n\n if (width !== 0) {\n return width;\n }\n\n const previousCssText = el.style.cssText;\n const previousDisplay = el.style.display;\n\n el.style.display = 'inline-flex';\n width = el.getBoundingClientRect().width;\n\n el.style.cssText = previousCssText;\n if (!previousCssText) {\n el.style.display = previousDisplay;\n }\n\n return width;\n }\n\n private insertEllipsisSegmentIntoPosition(): void {\n if (this.hasEnoughSegments()) {\n const segments = this.realSegments();\n const secondEclSegmentEl: HTMLElement = segments[1].el.nativeElement;\n const ellipsisSegmentEl: HTMLElement = this.eclEllipsisSegment().el.nativeElement;\n if (this.hasContainer()) {\n this.renderer.insertBefore(this.eclBreadcrumbContainer()!.nativeElement, ellipsisSegmentEl, secondEclSegmentEl);\n }\n } else {\n // remove ellipsis\n this.renderer.removeChild(this.el.nativeElement, this.eclEllipsisSegment().el.nativeElement);\n }\n }\n\n private hasEnoughSegments(): boolean {\n return this.realSegments().length > 3;\n }\n}\n","<li eclBreadcrumbSegment #ellipsisSegment>\n <button tabindex=\"0\" eclButton variant=\"tertiary\" size=\"m\" eclStyle=\"neutral\" class=\"ecl-breadcrumb__ellipsis\"\n [attr.aria-label]=\"ellipsisAriaLabel() ?? ('ecl.breadcrumb.SHOW-MORE-ITEMS' | translate)\" (click)=\"onEllipsisSegmentClick()\">\n {{ ellipsisLabel() }}\n </button>\n</li>\n<ng-content></ng-content>\n","import { EclBreadcrumbComponent } from './ecl-breadcrumb.component';\nimport { EclBreadcrumbSegmentComponent } from './ecl-breadcrumb-segment.component';\nimport { EclBreadcrumbContainerDirective } from './ecl-breadcrumb-container.directive';\n\nexport * from './ecl-breadcrumb.component';\nexport * from './ecl-breadcrumb-segment.component';\nexport * from './models/ecl-breadcrumb.model';\nexport * from './events/ecl-breadcrumb-segment-click.event';\nexport * from './ecl-breadcrumb-container.directive';\n\nexport const EUI_ECL_BREADCRUMB = [\n EclBreadcrumbComponent, EclBreadcrumbSegmentComponent, EclBreadcrumbContainerDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-breadcrumb.mjs","sources":["../../components/ecl-breadcrumb/ecl-breadcrumb-container.directive.ts","../../components/ecl-breadcrumb/events/ecl-breadcrumb-segment-click.event.ts","../../components/ecl-breadcrumb/ecl-breadcrumb-segment.component.ts","../../components/ecl-breadcrumb/ecl-breadcrumb-segment.component.html","../../components/ecl-breadcrumb/ecl-breadcrumb.component.ts","../../components/ecl-breadcrumb/ecl-breadcrumb.component.html","../../components/ecl-breadcrumb/index.ts","../../components/ecl-breadcrumb/eui-ecl-components-ecl-breadcrumb.ts"],"sourcesContent":["import { Directive, HostBinding } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Used to wrap breadcrumb segments inside the breadcrumb component.\n */\n@Directive({\n selector: '[eclBreadcrumbContainer]',\n})\nexport class EclBreadcrumbContainerDirective extends ECLBaseDirective {\n\n /**\n * Adds breadcrumb container CSS class to the host element.\n */\n @HostBinding('class.ecl-breadcrumb__container') hasClass = true;\n}\n","import { EclBaseEvent } from '@eui/ecl/core';\n\n/**\n * Event emitted when a breadcrumb segment is clicked.\n */\nexport class EclBreadcrumbSegmentClickEvent extends EclBaseEvent {}\n","import {\n Component,\n ElementRef,\n HostBinding,\n input,\n output,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Params, QueryParamsHandling, RouterLink, RouterLinkWithHref } from '@angular/router';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclBreadcrumbSegmentClickEvent } from './events/ecl-breadcrumb-segment-click.event';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\n\n/**\n * Displays a single breadcrumb segment with optional navigation or ellipsis.\n */\n@Component({\n selector: 'li[eclBreadcrumbSegment]',\n templateUrl: './ecl-breadcrumb-segment.component.html',\n imports: [NgTemplateOutlet, RouterLink, RouterLinkWithHref, ...EUI_ECL_ICON, ...EUI_ECL_LINK],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.aria-current]': 'ariaCurrent'\n }\n})\nexport class EclBreadcrumbSegmentComponent extends ECLBaseDirective {\n el = inject(ElementRef);\n\n /**\n * Defines the tabindex attribute for accessibility.\n */\n @HostBinding('attr.tabindex') tabIndex = '-1';\n\n /**\n * Router link for navigation.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n routerLink = input<string | any[] | null>(null);\n\n /**\n * Query parameters used with routerLink.\n */\n queryParams = input<Params | null>(null);\n\n /**\n * Href used for standard navigation.\n */\n href = input('');\n\n /**\n * Strategy for handling existing query parameters during navigation.\n */\n queryParamsHandling = input<QueryParamsHandling>(null);\n\n /**\n * Displays the segment as an ellipsis instead of a link.\n */\n isEllipsis = input(false, { transform: booleanAttribute });\n\n /**\n * Highlights the segment as the current page.\n */\n isCurrentPage = input(false, { transform: booleanAttribute });\n\n /**\n * Hides the segment visually and from assistive technologies.\n */\n isHidden = signal(false);\n\n @HostBinding('attr.aria-hidden')\n get ariaHidden() {\n return this.isHidden();\n }\n\n /**\n * Emits when the segment is clicked.\n */\n segmentClick = output<EclBreadcrumbSegmentClickEvent>();\n\n get ariaCurrent() { return this.isCurrentPage() ? 'page' : null; }\n\n /**\n * Computes the CSS classes applied to the segment.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-breadcrumb__segment'),\n this.isCurrentPage() ? 'ecl-breadcrumb__current-page' : '',\n this.isEllipsis() ? 'ecl-breadcrumb__segment--ellipsis' : '',\n ].join(' ').trim();\n }\n\n /**\n * Handles the click event on the segment.\n */\n onSegmentClick(evt: MouseEvent): void {\n this.segmentClick.emit(new EclBreadcrumbSegmentClickEvent());\n if (!this.href()) {\n evt.stopPropagation();\n }\n }\n}\n","@if (!isEllipsis()) {\n@if (!isCurrentPage() && href()) {\n<a [href]=\"href()\" (click)=\"onSegmentClick($event)\" class=\"ecl-breadcrumb__link ecl-link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n}\n@if (!isCurrentPage() && !href()) {\n<a [routerLink]=\"routerLink()\" [queryParams]=\"queryParams()\" [queryParamsHandling]=\"queryParamsHandling()\"\n tabindex=\"0\" (click)=\"onSegmentClick($event)\" class=\"ecl-breadcrumb__link ecl-link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n}\n} @else {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n}\n\n@if (isCurrentPage()) {\n<ng-container *ngTemplateOutlet=\"content\"></ng-container>\n} @else {\n<ecl-icon role=\"presentation\" icon=\"corner-arrow\" ariaHidden=\"true\" focusable=\"false\" size=\"fluid\"\n class=\"ecl-breadcrumb__icon\">\n</ecl-icon>\n}\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>","import { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n booleanAttribute,\n Component,\n computed,\n contentChild,\n contentChildren,\n DOCUMENT,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n signal,\n viewChild,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { animationFrameScheduler, auditTime, fromEvent, observeOn, Subject, takeUntil } from 'rxjs';\nimport { EclBreadcrumbContainerDirective } from './ecl-breadcrumb-container.directive';\nimport { EclBreadcrumbSegmentComponent } from './ecl-breadcrumb-segment.component';\n\ninterface VisibilityMap {\n mode: string;\n isItemVisible: boolean[];\n}\n\n/**\n * Displays navigation segments and handles overflow with ellipsis.\n */\n@Component({\n selector: 'nav[eclBreadcrumb]',\n templateUrl: './ecl-breadcrumb.component.html',\n imports: [TranslatePipe, ...EUI_ECL_BUTTON, EclBreadcrumbSegmentComponent],\n host: {\n '[attr.aria-label]': 'ariaLabel()',\n '[class]': 'cssClasses',\n },\n})\nexport class EclBreadcrumbComponent extends ECLBaseDirective implements AfterViewInit, OnDestroy {\n /**\n * Expands all breadcrumb segments instead of collapsing them.\n */\n isExpanded = input(false, { transform: booleanAttribute });\n \n /**\n * Visible label for the ellipsis button. Defaults to the ellipsis character.\n */\n ellipsisLabel = input<string>('…');\n\n /**\n * Accessible label for the ellipsis button. When not provided, falls back to the\n * translated value of `ecl.breadcrumb.SHOW-MORE-ITEMS`.\n */\n ellipsisAriaLabel = input<string | undefined>(undefined);\n\n /**\n * ARIA label describing the breadcrumb purpose.\n */\n ariaLabel = toSignal(inject(TranslateService).stream('ecl.breadcrumb.YOU-ARE-HERE'));\n\n /**\n * Reference to the ellipsis segment element.\n */\n eclEllipsisSegment = viewChild<EclBreadcrumbSegmentComponent>('ellipsisSegment');\n\n /**\n * Reference to the breadcrumb container directive inside this component.\n */\n eclBreadcrumbContainer = contentChild(EclBreadcrumbContainerDirective, { read: ElementRef });\n\n /**\n * List of breadcrumb segment components.\n */\n eclSegments = contentChildren(forwardRef(() => EclBreadcrumbSegmentComponent), { descendants: true });\n\n private el = inject(ElementRef);\n private renderer = inject(Renderer2);\n private isExpandedState = signal(false);\n private staticItems = computed(() => {\n const items = this.realSegments();\n return items.filter((_, index) =>\n index === 0 || index === items.length - 2 || index === items.length - 1\n );\n });\n\n private expandableItems = computed(() => {\n const items = this.realSegments();\n return items.filter((_, index) =>\n index !== 0 && index !== items.length - 2 && index !== items.length - 1\n );\n });\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private readonly window = inject<Document>(DOCUMENT).defaultView; // Window | null\n private platformId = inject(PLATFORM_ID);\n private readonly breakpoint = 995;\n private readonly wrapperWidth = signal(0);\n private readonly windowWidth = signal(0);\n private readonly allItemsWidth = signal(0);\n private readonly incompressibleWidth = signal(0);\n private readonly expandableWidths = signal<number[]>([]);\n\n private readonly realSegments = computed(() => {\n const ellipsis = this.eclEllipsisSegment();\n return this.eclSegments()?.filter((segment) => segment !== ellipsis);\n });\n\n protected readonly visibilityMap = computed<VisibilityMap>(() => {\n const manuallyExpanded = this.isExpandedState();\n const wrapperWidth = this.wrapperWidth();\n const windowWidth = this.windowWidth();\n const allItemsWidth = this.allItemsWidth();\n const incompressibleWidth = this.incompressibleWidth();\n const expandableWidths = this.expandableWidths();\n\n if (manuallyExpanded) {\n return {\n mode: 'full',\n isItemVisible: expandableWidths.map(() => true),\n };\n }\n if (!wrapperWidth) {\n return {\n mode: 'full',\n isItemVisible: expandableWidths.map(() => true),\n };\n }\n\n if (!expandableWidths.length) {\n return {\n mode: 'full',\n isItemVisible: [],\n };\n }\n\n // Mobile mode: window is small, ECL CSS handles layout\n if (windowWidth <= this.breakpoint) {\n return {\n mode: 'compact',\n isItemVisible: expandableWidths.map(() => false),\n };\n }\n\n // Everything fits\n if (allItemsWidth * 1.1 <= wrapperWidth) {\n return {\n mode: 'full',\n isItemVisible: expandableWidths.map(() => true),\n };\n }\n\n // Even static + ellipsis do not fit\n if (incompressibleWidth >= wrapperWidth) {\n return {\n mode: 'collapsed',\n isItemVisible: expandableWidths.map(() => false),\n };\n }\n\n // Fit expandable items from right to left\n let usedWidth = 0;\n let canStillFit = true;\n\n const isItemVisible = [...expandableWidths]\n .reverse()\n .map((width) => {\n if (!canStillFit) {\n return false;\n }\n\n usedWidth += width;\n const fits = usedWidth + incompressibleWidth <= wrapperWidth;\n\n if (!fits) {\n canStillFit = false;\n }\n\n return fits;\n })\n .reverse();\n\n return {\n mode: 'collapsed',\n isItemVisible,\n };\n });\n\n\n /**\n * CSS classes applied to the breadcrumb element.\n */\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-breadcrumb'),\n ].join(' ').trim();\n }\n\n constructor() {\n super();\n effect(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const mode = this.visibilityMap().mode;\n const host = this.el?.nativeElement;\n if (!host) return;\n\n this.renderer.removeClass(host, 'ecl-breadcrumb--wrap');\n this.renderer.removeClass(host, 'ecl-breadcrumb--collapsed');\n\n if (mode === 'collapsed') {\n this.renderer.addClass(host, 'ecl-breadcrumb--collapsed');\n } else {\n this.renderer.addClass(host, 'ecl-breadcrumb--wrap');\n }\n });\n\n effect(() => {\n const expandableItems = this.expandableItems();\n const map = this.visibilityMap();\n const manuallyExpanded = this.isExpandedState();\n \n if (map.mode === 'full') {\n this.eclEllipsisSegment()?.isHidden.set(true);\n expandableItems.forEach((segment) => {\n segment.isHidden.set(false);\n });\n return;\n }\n if (map.mode === 'compact') {\n this.eclEllipsisSegment()?.isHidden.set(true);\n expandableItems.forEach((segment) => {\n segment.isHidden.set(true);\n });\n return;\n }\n // collapsed mode: show ellipsis, selectively show expandable items\n this.eclEllipsisSegment()?.isHidden.set(false);\n expandableItems.forEach((segment, index) => {\n const isVisible = map.isItemVisible[index] ?? false;\n segment.isHidden.set(!isVisible);\n });\n });\n }\n\n /**\n * Handles window resize and recalculates overflown segments.\n */\n ngAfterViewInit() {\n if (!isPlatformBrowser(this.platformId)) return;\n // Initial setup + first measurement after layout is ready\n animationFrameScheduler.schedule(() => {\n this.insertEllipsisSegmentIntoPosition();\n this.measureAll();\n });\n\n // Re-measure on resize after layout\n fromEvent(this.window, 'resize').pipe(\n auditTime(50), observeOn(animationFrameScheduler),\n takeUntil(this.destroy$)).subscribe(() => {\n this.measureAll();\n });\n }\n\n /**\n * Cleans up subscriptions on destroy.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Returns true if breadcrumb container directive exists.\n */\n hasContainer = computed(() => !!this.eclBreadcrumbContainer());\n\n /**\n * Expands hidden breadcrumb segments after clicking ellipsis.\n */\n onEllipsisSegmentClick(): void {\n this.eclEllipsisSegment().isHidden.set(true);\n this.isExpandedState.set(true);\n }\n\n private measureAll(): void {\n const host = this.el?.nativeElement;\n const ellipsis = this.eclEllipsisSegment()?.el.nativeElement;\n const staticItems = this.staticItems().map((x) => x.el.nativeElement);\n const expandableItems = this.expandableItems().map((x) => x.el.nativeElement);\n\n if (!host) return;\n\n const wrapperWidth = Math.floor(host.getBoundingClientRect().width);\n const windowWidth = this.window?.innerWidth ?? 0;\n const ellipsisWidth = ellipsis ? this.measureWidth(ellipsis) : 0;\n const staticWidths = staticItems.map((el) => this.measureWidth(el));\n const expandableWidths = expandableItems.map((el) => this.measureWidth(el));\n\n const allItemsWidth =\n ellipsisWidth +\n staticWidths.reduce((sum, w) => sum + w, 0) +\n expandableWidths.reduce((sum, w) => sum + w, 0);\n\n const incompressibleWidth =\n ellipsisWidth + staticWidths.reduce((sum, w) => sum + w, 0);\n\n this.windowWidth.set(windowWidth);\n this.wrapperWidth.set(wrapperWidth);\n this.expandableWidths.set(expandableWidths);\n this.allItemsWidth.set(allItemsWidth);\n this.incompressibleWidth.set(incompressibleWidth);\n }\n\n private measureWidth(el: HTMLElement): number {\n let width = el.getBoundingClientRect().width;\n\n if (width !== 0) {\n return width;\n }\n\n const previousCssText = el.style.cssText;\n const previousDisplay = el.style.display;\n\n el.style.display = 'inline-flex';\n width = el.getBoundingClientRect().width;\n\n el.style.cssText = previousCssText;\n if (!previousCssText) {\n el.style.display = previousDisplay;\n }\n\n return width;\n }\n\n private insertEllipsisSegmentIntoPosition(): void {\n if (this.hasEnoughSegments()) {\n const segments = this.realSegments();\n const secondEclSegmentEl: HTMLElement = segments[1].el.nativeElement;\n const ellipsisSegmentEl: HTMLElement = this.eclEllipsisSegment().el.nativeElement;\n if (this.hasContainer()) {\n this.renderer.insertBefore(this.eclBreadcrumbContainer()!.nativeElement, ellipsisSegmentEl, secondEclSegmentEl);\n }\n } else {\n // remove ellipsis\n this.renderer.removeChild(this.el.nativeElement, this.eclEllipsisSegment().el.nativeElement);\n }\n }\n\n private hasEnoughSegments(): boolean {\n return this.realSegments().length > 3;\n }\n}\n","<li eclBreadcrumbSegment #ellipsisSegment>\n <button tabindex=\"0\" eclButton variant=\"tertiary\" size=\"m\" eclStyle=\"neutral\" class=\"ecl-breadcrumb__ellipsis\"\n [attr.aria-label]=\"ellipsisAriaLabel() ?? ('ecl.breadcrumb.SHOW-MORE-ITEMS' | translate)\" (click)=\"onEllipsisSegmentClick()\">\n {{ ellipsisLabel() }}\n </button>\n</li>\n<ng-content></ng-content>\n","import { EclBreadcrumbComponent } from './ecl-breadcrumb.component';\nimport { EclBreadcrumbSegmentComponent } from './ecl-breadcrumb-segment.component';\nimport { EclBreadcrumbContainerDirective } from './ecl-breadcrumb-container.directive';\n\nexport * from './ecl-breadcrumb.component';\nexport * from './ecl-breadcrumb-segment.component';\nexport * from './models/ecl-breadcrumb.model';\nexport * from './events/ecl-breadcrumb-segment-click.event';\nexport * from './ecl-breadcrumb-container.directive';\n\nexport const EUI_ECL_BREADCRUMB = [\n EclBreadcrumbComponent, EclBreadcrumbSegmentComponent, EclBreadcrumbContainerDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|