@eui/ecl 22.0.0-alpha.41 → 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 +66 -0
- package/docs/components/EclBreadcrumbSegmentComponent.html +0 -13
- package/docs/components/EclCarouselItemComponent.html +58 -63
- package/docs/components/EclCategoryFilterItemComponent.html +178 -134
- package/docs/components/EclCategoryFilterListComponent.html +8 -1
- package/docs/components/EclCheckboxHelpComponent.html +89 -83
- package/docs/components/EclCheckboxLabelComponent.html +126 -142
- package/docs/components/EclDateBlockComponent.html +67 -131
- package/docs/components/EclFeaturedComponent.html +23 -141
- package/docs/components/EclFeaturedItemComponent.html +4 -85
- package/docs/components/EclFeaturedItemDescriptionComponent.html +4 -104
- package/docs/components/EclLayoutWrapperComponent.html +2 -2
- 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/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/documentation.json +610 -810
- package/docs/llms.txt +40 -28
- 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/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/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.
|
|
@@ -3868,8 +3877,8 @@ Selector: `[eclCheckbox]`
|
|
|
3868
3877
|
Description: Directive that applies ECL styles and manages state for checkbox groups or standalone checkboxes.
|
|
3869
3878
|
|
|
3870
3879
|
Inputs:
|
|
3871
|
-
- `isDisabled: boolean = false` —
|
|
3872
|
-
- `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.
|
|
3873
3882
|
- `isSingle: boolean = false` — Indicates whether the checkbox is rendered as a single (standalone) item.
|
|
3874
3883
|
- `class: string = ''`
|
|
3875
3884
|
- `e2eAttr: string`
|
|
@@ -3879,10 +3888,13 @@ Outputs:
|
|
|
3879
3888
|
- `class: string = ''`
|
|
3880
3889
|
|
|
3881
3890
|
Properties:
|
|
3891
|
+
- `cssClasses: unknown = computed(() => super.getCssClasses('ecl-checkbox'))` — Applies base CSS classes for the checkbox container.
|
|
3882
3892
|
- `eclCheckboxHelpComponent: unknown = contentChild(forwardRef(() => EclCheckboxHelpComponent))` — Child help component projected into the checkbox.
|
|
3883
3893
|
- `eclCheckboxLabelComponent: unknown = contentChild(forwardRef(() => EclCheckboxLabelComponent))` — Child label component projected into the checkbox.
|
|
3884
3894
|
- `eclFormLabelDirective: unknown = contentChild(forwardRef(() => EclFormLabelComponent))` — Optional form label component projected into the checkbox.
|
|
3885
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.
|
|
3886
3898
|
|
|
3887
3899
|
Methods:
|
|
3888
3900
|
- `getCssClasses(rootClass: string): string`
|
|
@@ -3903,6 +3915,7 @@ Outputs:
|
|
|
3903
3915
|
- `class: string = ''`
|
|
3904
3916
|
|
|
3905
3917
|
Properties:
|
|
3918
|
+
- `cssClasses: unknown = computed(() => super.getCssClasses('ecl-checkbox__input'))` — Applies base CSS classes for checkbox input.
|
|
3906
3919
|
- `eclCheckbox: unknown = inject(EclCheckboxDirective)`
|
|
3907
3920
|
|
|
3908
3921
|
Methods:
|
|
@@ -4493,7 +4506,6 @@ Selector: `[eclFeaturedItemLink]`
|
|
|
4493
4506
|
Description: Applies specific additional class for the eclLink directive, used in construction.
|
|
4494
4507
|
|
|
4495
4508
|
Inputs:
|
|
4496
|
-
- `ariaDescribedBy: string | null`
|
|
4497
4509
|
- `class: string = ''`
|
|
4498
4510
|
- `e2eAttr: string`
|
|
4499
4511
|
- `tabindex = undefined`
|
|
@@ -4502,7 +4514,7 @@ Outputs:
|
|
|
4502
4514
|
- `class: string = ''`
|
|
4503
4515
|
|
|
4504
4516
|
Properties:
|
|
4505
|
-
- `
|
|
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.
|
|
4506
4518
|
|
|
4507
4519
|
Methods:
|
|
4508
4520
|
- `getCssClasses(rootClass: string): string`
|
|
@@ -4957,7 +4969,7 @@ Description: Directive for the layout wrapper title. Applies the ecl-layout-wrap
|
|
|
4957
4969
|
File: `packages/ecl/components/ecl-layout-wrapper/ecl-layout-wrapper.directives.ts`
|
|
4958
4970
|
Selector: `[eclLayoutWrapperViewAll]`
|
|
4959
4971
|
|
|
4960
|
-
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\>
|
|
4961
4973
|
|
|
4962
4974
|
### EclLinkDirective
|
|
4963
4975
|
|
|
@@ -7872,18 +7884,18 @@ Properties:
|
|
|
7872
7884
|
File: `packages/ecl/components/ecl-carousel/models/ecl-carousel-item.model.ts`
|
|
7873
7885
|
|
|
7874
7886
|
Properties:
|
|
7875
|
-
- `id?: string
|
|
7876
|
-
- `index: number
|
|
7877
|
-
- `isCurrent: boolean
|
|
7887
|
+
- `id?: Signal<string | undefined>`
|
|
7888
|
+
- `index: WritableSignal<number | undefined>`
|
|
7889
|
+
- `isCurrent: WritableSignal<boolean>`
|
|
7878
7890
|
|
|
7879
7891
|
### EclCategoryFilterItem
|
|
7880
7892
|
|
|
7881
7893
|
File: `packages/ecl/components/ecl-category-filter/models/ecl-category-filter-item.model.ts`
|
|
7882
7894
|
|
|
7883
7895
|
Properties:
|
|
7884
|
-
- `id?: string
|
|
7885
|
-
- `isCurrent?: boolean
|
|
7886
|
-
- `isExpanded?: boolean
|
|
7896
|
+
- `id?: Signal<string | undefined>`
|
|
7897
|
+
- `isCurrent?: Signal<boolean>`
|
|
7898
|
+
- `isExpanded?: Signal<boolean>`
|
|
7887
7899
|
- `isRootItem?: boolean`
|
|
7888
7900
|
|
|
7889
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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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BreakpointObserver } from '@angular/cdk/layout';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { inject, ElementRef,
|
|
3
|
+
import { inject, ElementRef, signal, input, booleanAttribute, linkedSignal, output, contentChild, forwardRef, Component, numberAttribute, viewChild, contentChildren, viewChildren, ChangeDetectorRef, Renderer2, DOCUMENT, afterNextRender } from '@angular/core';
|
|
4
4
|
import { EclIconComponent } from '@eui/ecl/components/ecl-icon';
|
|
5
5
|
import { EclBaseEvent, ECLBaseDirective, EclRtlService, KeyCode } from '@eui/ecl/core';
|
|
6
6
|
import { TranslatePipe } from '@ngx-translate/core';
|
|
@@ -23,10 +23,27 @@ class EclCarouselItemComponent extends ECLBaseDirective {
|
|
|
23
23
|
super(...arguments);
|
|
24
24
|
this.el = inject(ElementRef);
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
26
|
+
* The aria-label for the slide, assigned dynamically by the carousel.
|
|
27
|
+
*/
|
|
28
|
+
this.ariaLabel = signal(undefined, /* @ts-ignore */
|
|
29
|
+
...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
30
|
+
/**
|
|
31
|
+
* The unique identifier of the slide.
|
|
32
|
+
*/
|
|
33
|
+
this.id = input(/* @ts-ignore */
|
|
34
|
+
...(ngDevMode ? [undefined, { debugName: "id" }] : /* istanbul ignore next */ []));
|
|
35
|
+
/**
|
|
36
|
+
* Input controlling whether this slide starts as the active/visible one.
|
|
27
37
|
* Automatically coerced to a boolean value.
|
|
28
38
|
*/
|
|
29
|
-
this.
|
|
39
|
+
this.isCurrentInput = input(false, { ...(ngDevMode ? { debugName: "isCurrentInput" } : /* istanbul ignore next */ {}), alias: 'isCurrent', transform: booleanAttribute });
|
|
40
|
+
/**
|
|
41
|
+
* Indicates whether this slide is currently active/visible.
|
|
42
|
+
* Seeded from the `isCurrent` input but can be updated imperatively by the
|
|
43
|
+
* parent carousel as the user navigates between slides.
|
|
44
|
+
*/
|
|
45
|
+
this.isCurrent = linkedSignal(() => this.isCurrentInput(), /* @ts-ignore */
|
|
46
|
+
...(ngDevMode ? [{ debugName: "isCurrent" }] : /* istanbul ignore next */ []));
|
|
30
47
|
/**
|
|
31
48
|
* Emits an event when the slide is clicked.
|
|
32
49
|
*/
|
|
@@ -36,6 +53,11 @@ class EclCarouselItemComponent extends ECLBaseDirective {
|
|
|
36
53
|
*/
|
|
37
54
|
this.banner = contentChild(forwardRef(() => EclBannerComponent), /* @ts-ignore */
|
|
38
55
|
...(ngDevMode ? [{ debugName: "banner" }] : /* istanbul ignore next */ []));
|
|
56
|
+
/**
|
|
57
|
+
* Internal slide index, assigned dynamically by the carousel.
|
|
58
|
+
*/
|
|
59
|
+
this.index = signal(undefined, /* @ts-ignore */
|
|
60
|
+
...(ngDevMode ? [{ debugName: "index" }] : /* istanbul ignore next */ []));
|
|
39
61
|
}
|
|
40
62
|
/**
|
|
41
63
|
* Computes the slide's CSS class.
|
|
@@ -50,26 +72,19 @@ class EclCarouselItemComponent extends ECLBaseDirective {
|
|
|
50
72
|
this.slideClick.emit(new EclSlideEvent(this));
|
|
51
73
|
}
|
|
52
74
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclCarouselItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
53
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.2", type: EclCarouselItemComponent, isStandalone: true, selector: "ecl-carousel-item", inputs: { id: "id",
|
|
75
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.2", type: EclCarouselItemComponent, isStandalone: true, selector: "ecl-carousel-item", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, isCurrentInput: { classPropertyName: "isCurrentInput", publicName: "isCurrent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { slideClick: "slideClick" }, host: { attributes: { "role": "tabpanel" }, listeners: { "click": "onSlideClick()" }, properties: { "attr.aria-label": "ariaLabel()", "attr.aria-roledescription": "\"slide\"", "attr.inert": "!isCurrent() || undefined", "class": "cssClasses" } }, queries: [{ propertyName: "banner", first: true, predicate: i0.forwardRef(() => EclBannerComponent), descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host:before{left:0!important;display:none}\n"] }); }
|
|
54
76
|
}
|
|
55
77
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EclCarouselItemComponent, decorators: [{
|
|
56
78
|
type: Component,
|
|
57
79
|
args: [{ selector: 'ecl-carousel-item', host: {
|
|
58
80
|
role: 'tabpanel',
|
|
59
|
-
'[attr.aria-label]': 'ariaLabel',
|
|
81
|
+
'[attr.aria-label]': 'ariaLabel()',
|
|
60
82
|
'[attr.aria-roledescription]': '"slide"',
|
|
61
|
-
'[attr.inert]': '!isCurrent || undefined',
|
|
83
|
+
'[attr.inert]': '!isCurrent() || undefined',
|
|
62
84
|
'[class]': 'cssClasses',
|
|
85
|
+
'(click)': 'onSlideClick()',
|
|
63
86
|
}, template: "<ng-content></ng-content>\n", styles: [":host:before{left:0!important;display:none}\n"] }]
|
|
64
|
-
}], propDecorators: { id: [{
|
|
65
|
-
type: Input
|
|
66
|
-
}], isCurrent: [{
|
|
67
|
-
type: Input,
|
|
68
|
-
args: [{ transform: booleanAttribute }]
|
|
69
|
-
}], slideClick: [{ type: i0.Output, args: ["slideClick"] }], banner: [{ type: i0.ContentChild, args: [forwardRef(() => EclBannerComponent), { isSignal: true }] }], onSlideClick: [{
|
|
70
|
-
type: HostListener,
|
|
71
|
-
args: ['click']
|
|
72
|
-
}] } });
|
|
87
|
+
}], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], isCurrentInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCurrent", required: false }] }], slideClick: [{ type: i0.Output, args: ["slideClick"] }], banner: [{ type: i0.ContentChild, args: [forwardRef(() => EclBannerComponent), { isSignal: true }] }] } });
|
|
73
88
|
|
|
74
89
|
/**
|
|
75
90
|
* Component responsible for rendering a carousel (slideshow) with autoplay, keyboard navigation,
|
|
@@ -350,7 +365,7 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
350
365
|
getCurrentSlideIndex() {
|
|
351
366
|
let currentIndex;
|
|
352
367
|
this.getAllSlidesArray().forEach((item, idx) => {
|
|
353
|
-
if (item && item.isCurrent) {
|
|
368
|
+
if (item && item.isCurrent()) {
|
|
354
369
|
currentIndex = idx;
|
|
355
370
|
}
|
|
356
371
|
});
|
|
@@ -400,7 +415,7 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
400
415
|
getCurrentItemIndex() {
|
|
401
416
|
let result = 0;
|
|
402
417
|
this.getAllSlidesArray().forEach((item, index) => {
|
|
403
|
-
if (item && item.isCurrent) {
|
|
418
|
+
if (item && item.isCurrent()) {
|
|
404
419
|
result = index;
|
|
405
420
|
}
|
|
406
421
|
});
|
|
@@ -425,9 +440,9 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
425
440
|
*/
|
|
426
441
|
initHiddenItems() {
|
|
427
442
|
this.firstHiddenItem().el.nativeElement.innerHTML = this.getLastContentChild();
|
|
428
|
-
this.firstHiddenItem().isCurrent
|
|
443
|
+
this.firstHiddenItem().isCurrent.set(false);
|
|
429
444
|
this.lastHiddenItem().el.nativeElement.innerHTML = this.getFirstContentChild();
|
|
430
|
-
this.lastHiddenItem().isCurrent
|
|
445
|
+
this.lastHiddenItem().isCurrent.set(false);
|
|
431
446
|
this.unsubscribeListener = this.renderer2.listen(this.slidesContainer().nativeElement, 'transitionend', () => this.checkIndex());
|
|
432
447
|
}
|
|
433
448
|
/**
|
|
@@ -459,8 +474,8 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
459
474
|
* Sets up a slide with index and ARIA label.
|
|
460
475
|
*/
|
|
461
476
|
initSlide(item, idx) {
|
|
462
|
-
item.index
|
|
463
|
-
item.ariaLabel
|
|
477
|
+
item.index.set(idx);
|
|
478
|
+
item.ariaLabel.set(`slide ${idx + 1} of ${this.getSlidesCount()}`);
|
|
464
479
|
const banner = item.banner();
|
|
465
480
|
if (banner) {
|
|
466
481
|
banner.skipHeightManagement = true;
|
|
@@ -490,9 +505,9 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
490
505
|
}
|
|
491
506
|
if (slideItem) {
|
|
492
507
|
this.getAllSlidesArray().forEach((item) => {
|
|
493
|
-
item.isCurrent
|
|
508
|
+
item.isCurrent.set(false);
|
|
494
509
|
});
|
|
495
|
-
slideItem.isCurrent
|
|
510
|
+
slideItem.isCurrent.set(true);
|
|
496
511
|
}
|
|
497
512
|
this.cd.detectChanges();
|
|
498
513
|
if (withTransition) {
|
|
@@ -608,7 +623,7 @@ class EclCarouselComponent extends ECLBaseDirective {
|
|
|
608
623
|
* Determines whether no slide is currently marked as active.
|
|
609
624
|
*/
|
|
610
625
|
isNoSlideSelected() {
|
|
611
|
-
return !this.slides().some((item) => item.isCurrent);
|
|
626
|
+
return !this.slides().some((item) => item.isCurrent());
|
|
612
627
|
}
|
|
613
628
|
/**
|
|
614
629
|
* Handles right arrow key navigation for buttons.
|