@fundamental-ngx/core 0.56.2-rc.0 → 0.56.2-rc.2

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.
Files changed (122) hide show
  1. package/action-sheet/action-sheet.component.d.ts +10 -2
  2. package/bar/bar.component.d.ts +5 -1
  3. package/busy-indicator/busy-indicator.component.d.ts +3 -1
  4. package/carousel/carousel-item/carousel-item.component.d.ts +8 -4
  5. package/carousel/carousel.component.d.ts +8 -0
  6. package/dialog/base/dialog-content-base.class.d.ts +4 -0
  7. package/dialog/dialog-default/dialog-default.component.d.ts +12 -1
  8. package/feed-input/feed-input.component.d.ts +3 -1
  9. package/fesm2022/fundamental-ngx-core-action-bar.mjs +2 -2
  10. package/fesm2022/fundamental-ngx-core-action-sheet.mjs +12 -2
  11. package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  12. package/fesm2022/fundamental-ngx-core-avatar-group.mjs +3 -3
  13. package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  14. package/fesm2022/fundamental-ngx-core-avatar.mjs +2 -2
  15. package/fesm2022/fundamental-ngx-core-bar.mjs +10 -4
  16. package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +2 -2
  18. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +8 -3
  20. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  21. package/fesm2022/fundamental-ngx-core-button.mjs +2 -2
  22. package/fesm2022/fundamental-ngx-core-button.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-core-calendar.mjs +2 -2
  24. package/fesm2022/fundamental-ngx-core-card.mjs +2 -2
  25. package/fesm2022/fundamental-ngx-core-carousel.mjs +52 -24
  26. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  27. package/fesm2022/fundamental-ngx-core-checkbox.mjs +2 -2
  28. package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
  29. package/fesm2022/fundamental-ngx-core-date-picker.mjs +1 -1
  30. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  31. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +1 -1
  32. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  33. package/fesm2022/fundamental-ngx-core-dialog.mjs +36 -15
  34. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  35. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +2 -2
  36. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +2 -2
  37. package/fesm2022/fundamental-ngx-core-facets.mjs +2 -2
  38. package/fesm2022/fundamental-ngx-core-feed-input.mjs +5 -3
  39. package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
  40. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
  41. package/fesm2022/fundamental-ngx-core-file-uploader.mjs +2 -2
  42. package/fesm2022/fundamental-ngx-core-file-uploader.mjs.map +1 -1
  43. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +2 -2
  44. package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs +2 -2
  45. package/fesm2022/fundamental-ngx-core-form.mjs +14 -14
  46. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  47. package/fesm2022/fundamental-ngx-core-generic-tag.mjs +2 -2
  48. package/fesm2022/fundamental-ngx-core-grid-list.mjs +2 -2
  49. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  50. package/fesm2022/fundamental-ngx-core-icon.mjs +2 -2
  51. package/fesm2022/fundamental-ngx-core-icon.mjs.map +1 -1
  52. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +2 -2
  53. package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
  54. package/fesm2022/fundamental-ngx-core-input-group.mjs +2 -2
  55. package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
  56. package/fesm2022/fundamental-ngx-core-layout-grid.mjs +2 -2
  57. package/fesm2022/fundamental-ngx-core-layout-panel.mjs +2 -2
  58. package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
  59. package/fesm2022/fundamental-ngx-core-list.mjs +4 -4
  60. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  61. package/fesm2022/fundamental-ngx-core-menu.mjs +2 -2
  62. package/fesm2022/fundamental-ngx-core-message-box.mjs +39 -11
  63. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  64. package/fesm2022/fundamental-ngx-core-message-page.mjs +2 -2
  65. package/fesm2022/fundamental-ngx-core-message-page.mjs.map +1 -1
  66. package/fesm2022/fundamental-ngx-core-message-strip.mjs +2 -2
  67. package/fesm2022/fundamental-ngx-core-message-toast.mjs +2 -2
  68. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +2 -2
  69. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +2 -2
  70. package/fesm2022/fundamental-ngx-core-notification.mjs +2 -2
  71. package/fesm2022/fundamental-ngx-core-object-attribute.mjs +2 -2
  72. package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
  73. package/fesm2022/fundamental-ngx-core-object-marker.mjs +2 -2
  74. package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
  75. package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
  76. package/fesm2022/fundamental-ngx-core-pagination.mjs +2 -2
  77. package/fesm2022/fundamental-ngx-core-panel.mjs +2 -2
  78. package/fesm2022/fundamental-ngx-core-popover.mjs +2 -2
  79. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  80. package/fesm2022/fundamental-ngx-core-product-switch.mjs +2 -2
  81. package/fesm2022/fundamental-ngx-core-progress-indicator.mjs +2 -2
  82. package/fesm2022/fundamental-ngx-core-quick-view.mjs +4 -4
  83. package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
  84. package/fesm2022/fundamental-ngx-core-radio.mjs +2 -2
  85. package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
  86. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +2 -2
  87. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +4 -4
  88. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  89. package/fesm2022/fundamental-ngx-core-segmented-button.mjs +2 -2
  90. package/fesm2022/fundamental-ngx-core-select.mjs +2 -2
  91. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  92. package/fesm2022/fundamental-ngx-core-settings.mjs +2 -2
  93. package/fesm2022/fundamental-ngx-core-shellbar.mjs +3 -3
  94. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  95. package/fesm2022/fundamental-ngx-core-side-navigation.mjs +2 -2
  96. package/fesm2022/fundamental-ngx-core-skeleton.mjs +2 -2
  97. package/fesm2022/fundamental-ngx-core-slider.mjs +2 -2
  98. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  99. package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
  100. package/fesm2022/fundamental-ngx-core-status-indicator.mjs +2 -2
  101. package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
  102. package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
  103. package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
  104. package/fesm2022/fundamental-ngx-core-table.mjs +4 -4
  105. package/fesm2022/fundamental-ngx-core-tabs.mjs +4 -4
  106. package/fesm2022/fundamental-ngx-core-text.mjs +2 -2
  107. package/fesm2022/fundamental-ngx-core-tile.mjs +2 -2
  108. package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
  109. package/fesm2022/fundamental-ngx-core-time.mjs +2 -2
  110. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  111. package/fesm2022/fundamental-ngx-core-title.mjs +2 -2
  112. package/fesm2022/fundamental-ngx-core-token.mjs +4 -4
  113. package/fesm2022/fundamental-ngx-core-toolbar.mjs +2 -2
  114. package/fesm2022/fundamental-ngx-core-tree.mjs +2 -2
  115. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +2 -2
  116. package/fesm2022/fundamental-ngx-core-user-menu.mjs +3 -3
  117. package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
  118. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +4 -4
  119. package/fesm2022/fundamental-ngx-core-wizard.mjs +3 -3
  120. package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
  121. package/message-box/message-box-default/message-box-default.component.d.ts +10 -0
  122. package/package.json +26 -26
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Input, HostBinding, Directive, ViewEncapsulation, ChangeDetectionStrategy, Component, EventEmitter, inject, DestroyRef, Inject, Injectable, computed, effect, HostListener, ViewChild, ContentChildren, Output, NgModule } from '@angular/core';
2
+ import { Input, HostBinding, Directive, signal, ViewEncapsulation, ChangeDetectionStrategy, Component, EventEmitter, inject, DestroyRef, Inject, Injectable, computed, effect, HostListener, ViewChild, ContentChildren, Output, NgModule } from '@angular/core';
3
3
  import { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator';
4
4
  import { LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';
5
5
  import { DOCUMENT, NgTemplateOutlet, NgClass } from '@angular/common';
@@ -73,12 +73,16 @@ class CarouselItemComponent {
73
73
  this.loading = false;
74
74
  /** Sets tooltip for carousel item */
75
75
  this.title = null;
76
- /** @hidden */
77
- this.carouselItem = true;
78
- /** @hidden */
79
- this.carouselItemActive = true;
80
76
  /** @hidden Hide/show slide, useful for managing tab order */
81
77
  this._visibility = 'visible';
78
+ /** @hidden value for aria-setsize attribute */
79
+ this.ariaSetsize = signal(0);
80
+ /** @hidden value for aria-posinset attribute */
81
+ this.ariaPosinset = signal(0);
82
+ /** @hidden value for aria-selected attribute */
83
+ this.ariaSelected = signal(false);
84
+ /** @hidden value for aria-hidden attribute */
85
+ this.ariaHidden = signal(false);
82
86
  }
83
87
  /** Native element */
84
88
  get element() {
@@ -93,11 +97,18 @@ class CarouselItemComponent {
93
97
  return this.element.getBoundingClientRect().height || this.initialHeight;
94
98
  }
95
99
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.3", ngImport: i0, type: CarouselItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
96
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.3", type: CarouselItemComponent, isStandalone: true, selector: "fd-carousel-item", inputs: { id: "id", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy", loading: "loading", title: "title", initialHeight: "initialHeight", initialWidth: "initialWidth", value: "value" }, host: { properties: { "attr.id": "this.id", "attr.aria-label": "this.ariaLabel", "attr.aria-labelledby": "this.ariaLabelledBy", "attr.aria-describedby": "this.ariaDescribedBy", "attr.title": "this.title", "class.fd-carousel__item": "this.carouselItem", "class.fd-carousel__item--active": "this.carouselItemActive", "style.visibility": "this._visibility" } }, ngImport: i0, template: "<fd-busy-indicator [loading]=\"loading\" [style.max-width.%]=\"100\">\n <ng-content></ng-content>\n</fd-busy-indicator>\n", styles: [".fd-carousel__slides{min-width:initial!important}.fd-carousel__item--active{display:flex;max-width:100%}\n"], dependencies: [{ kind: "component", type: BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
100
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.3", type: CarouselItemComponent, isStandalone: true, selector: "fd-carousel-item", inputs: { id: "id", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy", loading: "loading", title: "title", initialHeight: "initialHeight", initialWidth: "initialWidth", value: "value" }, host: { attributes: { "role": "option" }, properties: { "attr.aria-setsize": "ariaSetsize()", "attr.aria-posinset": "ariaPosinset()", "attr.aria-selected": "ariaSelected()", "attr.aria-hidden": "ariaHidden()", "attr.id": "this.id", "attr.aria-label": "this.ariaLabel", "attr.aria-labelledby": "this.ariaLabelledBy", "attr.aria-describedby": "this.ariaDescribedBy", "attr.title": "this.title", "style.visibility": "this._visibility" }, classAttribute: "fd-carousel__item fd-carousel__item--active" }, ngImport: i0, template: "<fd-busy-indicator [loading]=\"loading\" [style.max-width.%]=\"100\">\n <ng-content></ng-content>\n</fd-busy-indicator>\n", styles: [".fd-carousel__slides{min-width:initial!important}.fd-carousel__item--active{display:flex;max-width:100%}\n"], dependencies: [{ kind: "component", type: BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "ariaValueText", "title", "label", "ariaLive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
97
101
  }
98
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.3", ngImport: i0, type: CarouselItemComponent, decorators: [{
99
103
  type: Component,
100
- args: [{ selector: 'fd-carousel-item', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [BusyIndicatorComponent], template: "<fd-busy-indicator [loading]=\"loading\" [style.max-width.%]=\"100\">\n <ng-content></ng-content>\n</fd-busy-indicator>\n", styles: [".fd-carousel__slides{min-width:initial!important}.fd-carousel__item--active{display:flex;max-width:100%}\n"] }]
104
+ args: [{ selector: 'fd-carousel-item', host: {
105
+ role: 'option',
106
+ class: 'fd-carousel__item fd-carousel__item--active',
107
+ '[attr.aria-setsize]': 'ariaSetsize()',
108
+ '[attr.aria-posinset]': 'ariaPosinset()',
109
+ '[attr.aria-selected]': 'ariaSelected()',
110
+ '[attr.aria-hidden]': 'ariaHidden()'
111
+ }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [BusyIndicatorComponent], template: "<fd-busy-indicator [loading]=\"loading\" [style.max-width.%]=\"100\">\n <ng-content></ng-content>\n</fd-busy-indicator>\n", styles: [".fd-carousel__slides{min-width:initial!important}.fd-carousel__item--active{display:flex;max-width:100%}\n"] }]
101
112
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { id: [{
102
113
  type: Input
103
114
  }, {
@@ -131,12 +142,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.3", ngImpor
131
142
  type: Input
132
143
  }], value: [{
133
144
  type: Input
134
- }], carouselItem: [{
135
- type: HostBinding,
136
- args: ['class.fd-carousel__item']
137
- }], carouselItemActive: [{
138
- type: HostBinding,
139
- args: ['class.fd-carousel__item--active']
140
145
  }], _visibility: [{
141
146
  type: HostBinding,
142
147
  args: ['style.visibility']
@@ -560,6 +565,12 @@ class CarouselComponent {
560
565
  this.slideChange = new EventEmitter();
561
566
  /** @hidden Start index of currently active items */
562
567
  this.currentActiveSlidesStartIndex = 0;
568
+ /** @hidden End index of currently active items */
569
+ this.currentActiveSlidesEndIndex = 0;
570
+ /** @hidden an array of id(s) of currently active item(s) */
571
+ this.currentActiveSlidesIds = [];
572
+ /** @hidden the total number of slides in the carousel */
573
+ this.totalSlides = 0;
563
574
  /** @hidden handles rtl service */
564
575
  this._dir$ = computed(() => (this._rtl$() ? 'rtl' : 'ltr'));
565
576
  /** @hidden Make left navigation button disabled */
@@ -628,6 +639,20 @@ class CarouselComponent {
628
639
  ngAfterContentInit() {
629
640
  // On carousel load, display first slide + number of slide visible
630
641
  this.currentActiveSlidesStartIndex = 0;
642
+ this.currentActiveSlidesEndIndex = this._visibleSlidesNumericCount - 1;
643
+ this.currentActiveSlidesIds = [];
644
+ this.totalSlides = this.slides.length;
645
+ this.slides.forEach((slide, index) => {
646
+ const isActive = index >= this.currentActiveSlidesStartIndex && index <= this.currentActiveSlidesEndIndex;
647
+ slide.ariaSetsize.set(this.totalSlides);
648
+ slide.ariaPosinset.set(index + 1);
649
+ slide.ariaHidden.set(!isActive);
650
+ slide.ariaSelected.set(isActive);
651
+ if (isActive) {
652
+ this.currentActiveSlidesIds.push(slide.id);
653
+ }
654
+ });
655
+ this.ariaActivedescendant = this.currentActiveSlidesIds.join(' ');
631
656
  // Change pagination display to numeric, if item count is more than 8
632
657
  if (this.slides.length > ICON_PAGE_INDICATOR_LIMIT) {
633
658
  this.numericIndicator = true;
@@ -908,18 +933,21 @@ class CarouselComponent {
908
933
  /** @hidden Manages visibility for slides. Useful in managing tab order */
909
934
  _manageSlideVisibility(firstActiveSlideIndex) {
910
935
  setTimeout(() => {
911
- this.slides.forEach((_slides, index) => {
912
- if (index >= firstActiveSlideIndex && index < firstActiveSlideIndex + this._visibleSlidesNumericCount) {
913
- if (_slides.visibility === 'hidden') {
914
- _slides.visibility = 'visible';
915
- }
936
+ const lastActiveSlideIndex = firstActiveSlideIndex + this._visibleSlidesNumericCount;
937
+ this.currentActiveSlidesIds = [];
938
+ this.slides.forEach((slide, index) => {
939
+ const isVisible = index >= firstActiveSlideIndex && index < lastActiveSlideIndex;
940
+ // Only update visibility if it has changed
941
+ if (slide.visibility !== (isVisible ? 'visible' : 'hidden')) {
942
+ slide.visibility = isVisible ? 'visible' : 'hidden';
916
943
  }
917
- else {
918
- if (_slides.visibility === 'visible') {
919
- _slides.visibility = 'hidden';
920
- }
944
+ if (isVisible) {
945
+ this.currentActiveSlidesIds.push(slide.id);
921
946
  }
947
+ slide.ariaHidden.set(!isVisible);
948
+ slide.ariaSelected.set(isVisible);
922
949
  });
950
+ this.ariaActivedescendant = this.currentActiveSlidesIds.join(' ');
923
951
  this._changeDetectorRef.markForCheck();
924
952
  }, this.slideTransitionDuration);
925
953
  }
@@ -1049,13 +1077,13 @@ class CarouselComponent {
1049
1077
  return slides;
1050
1078
  }
1051
1079
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.3", ngImport: i0, type: CarouselComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: CarouselService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1052
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.3", type: CarouselComponent, isStandalone: true, selector: "fd-carousel", inputs: { id: "id", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy", pageIndicatorsOrientation: "pageIndicatorsOrientation", height: "height", width: "width", loop: "loop", navigation: "navigation", navigatorInPageIndicator: "navigatorInPageIndicator", numericIndicator: "numericIndicator", pageIndicatorContainer: "pageIndicatorContainer", pageIndicator: "pageIndicator", resourceStrings: "resourceStrings", slideTransitionDuration: "slideTransitionDuration", swipeEnabled: "swipeEnabled", vertical: "vertical", noPaginationContainerBorder: "noPaginationContainerBorder", contentBackground: "contentBackground", pageIndicatorBackground: "pageIndicatorBackground", visibleSlidesCount: "visibleSlidesCount" }, outputs: { slideChange: "slideChange" }, host: { listeners: { "keydown": "handleKeyboardEvent($event)" }, properties: { "style.width": "width", "attr.id": "this.id" } }, providers: [CarouselService], queries: [{ propertyName: "slides", predicate: CarouselItemComponent, descendants: true }], viewQueries: [{ propertyName: "slideContainer", first: true, predicate: ["slideContainer"], descendants: true }, { propertyName: "carouselContainer", first: true, predicate: ["carouselContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"fd-carousel\"\n [class.fd-carousel--no-navigation]=\"!navigation\"\n data-ride=\"carousel\"\n tabindex=\"0\"\n [style.height]=\"height\"\n [style.width]=\"width\"\n [attr.dir]=\"_dir$()\"\n role=\"region\"\n #carouselContainer\n (click)=\"_focus()\"\n>\n @if (_showPageIndicatorContainer && pageIndicatorsOrientation === 'top') {\n <ng-template [ngTemplateOutlet]=\"pageIndicatorContainer\"></ng-template>\n }\n <div\n class=\"fd-carousel__content\"\n [class.fd-carousel__content--horizontal]=\"!vertical\"\n [ngClass]=\"'fd-carousel__content--' + contentBackground\"\n [style.width]=\"_contentSizePx\"\n >\n @if (_showNavigationButtonInContent) {\n <ng-template [ngTemplateOutlet]=\"buttonLeft\"></ng-template>\n }\n <div #slideContainer class=\"fd-carousel__slides\">\n <ng-content></ng-content>\n </div>\n @if (_showNavigationButtonInContent) {\n <ng-template [ngTemplateOutlet]=\"buttonRight\"></ng-template>\n }\n </div>\n @if (_showPageIndicatorContainer && pageIndicatorsOrientation === 'bottom') {\n <ng-template [ngTemplateOutlet]=\"pageIndicatorContainer\"></ng-template>\n }\n <div [style.display]=\"'none'\" role=\"region\" [attr.id]=\"id + '-accessibility'\" aria-live=\"polite\" dir=\"ltr\">\n {{ screenReaderLabel }}\n </div>\n</div>\n<ng-template #pageIndicatorContainer>\n <div\n class=\"fd-carousel__page-indicator-container\"\n [class.fd-carousel__page-indicator-container--no-border]=\"noPaginationContainerBorder\"\n [ngClass]=\"'fd-carousel__page-indicator-container--' + pageIndicatorBackground\"\n >\n @if (_showNavigationButtonInPageIndicatorContainer) {\n <ng-template [ngTemplateOutlet]=\"buttonLeft\"></ng-template>\n }\n <ng-template [ngTemplateOutlet]=\"pageIndicators\"> </ng-template>\n @if (_showNavigationButtonInPageIndicatorContainer) {\n <ng-template [ngTemplateOutlet]=\"buttonRight\"></ng-template>\n }\n </div>\n</ng-template>\n<ng-template #pageIndicators>\n @if (numericIndicator) {\n <div class=\"fd-carousel__page-indicators\">\n @if (pageIndicator) {\n <div class=\"fd-carousel__text\" dir=\"ltr\">\n {{ getPageIndicatorLabel }}\n </div>\n }\n </div>\n }\n @if (!numericIndicator && _showNavigationButtonInPageIndicatorContainer) {\n <ol class=\"fd-carousel__page-indicators\" [attr.dir]=\"_dir$()\">\n @if (pageIndicator) {\n @for (item of pageIndicatorsCountArray; track item; let i = $index) {\n <li\n [attr.data-slide-to]=\"i + 1\"\n class=\"fd-carousel__page-indicator\"\n [class.fd-carousel__page-indicator--active]=\"i === currentActiveSlidesStartIndex\"\n ></li>\n }\n }\n </ol>\n }\n</ng-template>\n<ng-template #buttonLeft>\n <button\n fd-button\n class=\"fd-carousel__button\"\n [class.fd-carousel__button--left]=\"!vertical\"\n [class.fd-carousel__button--up]=\"vertical\"\n [style.z-index]=\"1\"\n data-slide=\"previous\"\n [attr.aria-label]=\"'coreCarousel.leftNavigationBtnLabel' | fdTranslate\"\n (click)=\"previous(); $event.stopPropagation()\"\n [disabled]=\"leftButtonDisabled\"\n [attr.title]=\"'coreCarousel.leftNavigationBtnLabel' | fdTranslate\"\n [glyph]=\"vertical ? 'slim-arrow-up' : 'slim-arrow-left'\"\n ></button>\n</ng-template>\n<ng-template #buttonRight>\n <button\n fd-button\n class=\"fd-carousel__button\"\n [class.fd-carousel__button--right]=\"!vertical\"\n [class.fd-carousel__button--down]=\"vertical\"\n [style.z-index]=\"1\"\n data-slide=\"next\"\n [attr.aria-label]=\"'coreCarousel.rightNavigationBtnLabel' | fdTranslate\"\n (click)=\"next(); $event.stopPropagation()\"\n [disabled]=\"rightButtonDisabled\"\n [attr.title]=\"'coreCarousel.rightNavigationBtnLabel' | fdTranslate\"\n [glyph]=\"vertical ? 'slim-arrow-down' : 'slim-arrow-right'\"\n ></button>\n</ng-template>\n", styles: [".fd-carousel{--fdCarousel_Button_Display:block;--fdCarousel_Content_Background:var(--sapBackgroundColor);--fdCarousel_Page_Indicator_Margin:var(--fdCarousel_Dot_Margin);--fdCarousel_Page_Indicator_Size:var(--fdCarousel_Dot_Size);--fdCarousel_Page_Indicator_Background_Color:var(--fdCarousel_Dot_Background);--fdCarousel_Page_Indicator_Border:var(--fdCarousel_Dot_Border);--fdCarousel_Page_Indicator_Container_Background:var(--sapPageFooter_Background);border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;max-width:100%;min-width:15.5rem;width:100%}.fd-carousel:after,.fd-carousel:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel.is-focus,.fd-carousel:focus{outline:var(--sapContent_FocusColor) var(--sapContent_FocusStyle) var(--sapContent_FocusWidth)}.fd-carousel.is-hover .fd-carousel__content .fd-carousel__button,.fd-carousel:hover .fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:block}.fd-carousel__content{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-ms-flex-preferred-size:100%;background:var(--fdCarousel_Content_Background);flex-basis:100%;overflow:hidden;position:relative}.fd-carousel__content:after,.fd-carousel__content:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:none;-webkit-box-shadow:var(--sapContent_Shadow1);box-shadow:var(--sapContent_Shadow1);margin-block:0;margin-inline:0;position:absolute}.fd-carousel__content .fd-carousel__button--left,.fd-carousel__content .fd-carousel__button--right{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.fd-carousel__content .fd-carousel__button--down,.fd-carousel__content .fd-carousel__button--up{left:50%;-webkit-transform:translateX(-50%);transform:translate(-50%)}.fd-carousel__content .fd-carousel__button--down[dir=rtl]>[class*=sap-icon],.fd-carousel__content .fd-carousel__button--up[dir=rtl]>[class*=sap-icon],[dir=rtl] .fd-carousel__content .fd-carousel__button--down>[class*=sap-icon],[dir=rtl] .fd-carousel__content .fd-carousel__button--up>[class*=sap-icon]{-webkit-transform:rotate(0deg);transform:rotate(0)}.fd-carousel__content .fd-carousel__button--left{left:.5rem}.fd-carousel__content .fd-carousel__button--left[dir=rtl],[dir=rtl] .fd-carousel__content .fd-carousel__button--left{left:auto;right:.5rem}.fd-carousel__content .fd-carousel__button--right{right:.5rem}.fd-carousel__content .fd-carousel__button--right[dir=rtl],[dir=rtl] .fd-carousel__content .fd-carousel__button--right{left:.5rem;right:auto}.fd-carousel__content .fd-carousel__button--up{top:.5rem}.fd-carousel__content .fd-carousel__button--down{bottom:.5rem}.fd-carousel__content .fd-carousel__item img{height:auto;min-width:100%}.fd-carousel__content--horizontal .fd-carousel__slides{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;-ms-touch-action:pan-y;touch-action:pan-y;width:100%}.fd-carousel__content--horizontal .fd-carousel__item img{min-height:100%;min-width:auto;width:auto}.fd-carousel__content--solid{--fdCarousel_Content_Background:var(--sapGroup_ContentBackground)}.fd-carousel__content--transparent{--fdCarousel_Content_Background:transparent}.fd-carousel__slides{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:normal;margin-block:0;margin-inline:0;min-height:-webkit-fit-content;min-height:-moz-fit-content;min-height:fit-content;padding-block:0;padding-inline:0;-ms-touch-action:pan-x;touch-action:pan-x;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.fd-carousel__slides:after,.fd-carousel__slides:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__item{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:none;height:100%;line-height:0}.fd-carousel__item:after,.fd-carousel__item:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__item--active{display:block}.fd-carousel__item img{pointer-events:none}.fd-carousel__page-indicator-container{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:var(--fdCarousel_Page_Indicator_Container_Background);border-top:var(--fdCarousel_Pagination_Border);max-height:3.5rem;min-height:2.75rem;padding-block:.375rem;padding-inline:.5rem}.fd-carousel__page-indicator-container:after,.fd-carousel__page-indicator-container:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator-container:first-child{border-bottom:var(--fdCarousel_Pagination_Border);border-top:none}.fd-carousel__page-indicator-container--translucent{--fdCarousel_Page_Indicator_Container_Background:var(--sapBackgroundColor)}.fd-carousel__page-indicator-container--transparent{--fdCarousel_Page_Indicator_Container_Background:transparent}.fd-carousel__page-indicator-container--no-border{border-top-color:transparent}.fd-carousel__page-indicator-container--no-border:first-child{border-bottom-color:transparent;border-top:none}.fd-carousel__page-indicators{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;min-width:9rem;padding-block:.5rem;padding-inline:.5rem}.fd-carousel__page-indicators:after,.fd-carousel__page-indicators:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator{background-color:var(--fdCarousel_Page_Indicator_Background_Color);border:0;border:var(--fdCarousel_Page_Indicator_Border);border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdCarousel_Page_Indicator_Size);line-height:normal;list-style-type:none;margin-block:0;margin-inline:0;margin-inline:var(--fdCarousel_Page_Indicator_Margin);max-height:var(--fdCarousel_Page_Indicator_Size);max-width:var(--fdCarousel_Page_Indicator_Size);min-height:var(--fdCarousel_Page_Indicator_Size);min-width:var(--fdCarousel_Page_Indicator_Size);padding-block:0;padding-inline:0;width:var(--fdCarousel_Page_Indicator_Size)}.fd-carousel__page-indicator:after,.fd-carousel__page-indicator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator--active{--fdCarousel_Page_Indicator_Size:.5rem;--fdCarousel_Page_Indicator_Margin:.25rem;--fdCarousel_Page_Indicator_Border:var(--fdCarousel_Dot_Selected_Border);--fdCarousel_Page_Indicator_Background_Color:var(--fdCarousel_Dot_Selected_Background)}.fd-carousel__text{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapPageFooter_TextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.fd-carousel__text:after,.fd-carousel__text:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel .fd-carousel__button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:50%;display:var(--fdCarousel_Button_Display);height:2.125rem;margin-block:.25rem;margin-inline:.25rem;max-height:2.125rem;max-width:2.125rem;min-height:2.125rem;min-width:2.125rem;padding-block:0;padding-inline:0;width:2.125rem}.fd-carousel .fd-carousel__button:before{inset:-.25rem;width:auto}.fd-carousel .fd-carousel__button[dir=rtl]>[class*=sap-icon],[dir=rtl] .fd-carousel .fd-carousel__button>[class*=sap-icon]{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fd-carousel .fd-carousel__button.is-focus,.fd-carousel .fd-carousel__button:focus{z-index:5}.fd-carousel .fd-carousel__button.is-focus:after,.fd-carousel .fd-carousel__button:focus:after{--fdButton_Focus_Border_Radius:50%}.fd-carousel--no-navigation .fd-carousel__button,.fd-carousel--no-navigation.is-hover .fd-carousel__content .fd-carousel__button,.fd-carousel--no-navigation:hover .fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:none}.fd-carousel__item fd-busy-indicator{display:block;height:100%;width:100%}\n/*! Bundled license information:\n\nfundamental-styles/dist/carousel.css:\n (*!\n * Fundamental Library Styles v0.39.3\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *)\n*/\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1080
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.3", type: CarouselComponent, isStandalone: true, selector: "fd-carousel", inputs: { id: "id", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy", pageIndicatorsOrientation: "pageIndicatorsOrientation", height: "height", width: "width", loop: "loop", navigation: "navigation", navigatorInPageIndicator: "navigatorInPageIndicator", numericIndicator: "numericIndicator", pageIndicatorContainer: "pageIndicatorContainer", pageIndicator: "pageIndicator", resourceStrings: "resourceStrings", slideTransitionDuration: "slideTransitionDuration", swipeEnabled: "swipeEnabled", vertical: "vertical", noPaginationContainerBorder: "noPaginationContainerBorder", contentBackground: "contentBackground", pageIndicatorBackground: "pageIndicatorBackground", visibleSlidesCount: "visibleSlidesCount" }, outputs: { slideChange: "slideChange" }, host: { listeners: { "keydown": "handleKeyboardEvent($event)" }, properties: { "style.width": "width", "attr.id": "this.id" } }, providers: [CarouselService], queries: [{ propertyName: "slides", predicate: CarouselItemComponent, descendants: true }], viewQueries: [{ propertyName: "slideContainer", first: true, predicate: ["slideContainer"], descendants: true }, { propertyName: "carouselContainer", first: true, predicate: ["carouselContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<section\n class=\"fd-carousel\"\n [class.fd-carousel--no-navigation]=\"!navigation\"\n tabindex=\"0\"\n [style.height]=\"height\"\n [style.width]=\"width\"\n [attr.dir]=\"_dir$()\"\n role=\"listbox\"\n aria-roledescription=\"Carousel\"\n [attr.aria-activedescendant]=\"ariaActivedescendant\"\n #carouselContainer\n (click)=\"_focus()\"\n>\n @if (_showPageIndicatorContainer && pageIndicatorsOrientation === 'top') {\n <ng-template [ngTemplateOutlet]=\"pageIndicatorContainer\"></ng-template>\n }\n <div\n class=\"fd-carousel__content\"\n [class.fd-carousel__content--horizontal]=\"!vertical\"\n [ngClass]=\"'fd-carousel__content--' + contentBackground\"\n [style.width]=\"_contentSizePx\"\n >\n @if (_showNavigationButtonInContent) {\n <ng-template [ngTemplateOutlet]=\"buttonLeft\"></ng-template>\n }\n <div #slideContainer class=\"fd-carousel__slides\">\n <ng-content></ng-content>\n </div>\n @if (_showNavigationButtonInContent) {\n <ng-template [ngTemplateOutlet]=\"buttonRight\"></ng-template>\n }\n </div>\n @if (_showPageIndicatorContainer && pageIndicatorsOrientation === 'bottom') {\n <ng-template [ngTemplateOutlet]=\"pageIndicatorContainer\"></ng-template>\n }\n <div [style.display]=\"'none'\" role=\"region\" [attr.id]=\"id + '-accessibility'\" aria-live=\"polite\" dir=\"ltr\">\n {{ screenReaderLabel }}\n </div>\n</section>\n<ng-template #pageIndicatorContainer>\n <div\n class=\"fd-carousel__page-indicator-container\"\n [class.fd-carousel__page-indicator-container--no-border]=\"noPaginationContainerBorder\"\n [ngClass]=\"'fd-carousel__page-indicator-container--' + pageIndicatorBackground\"\n >\n @if (_showNavigationButtonInPageIndicatorContainer) {\n <ng-template [ngTemplateOutlet]=\"buttonLeft\"></ng-template>\n }\n <ng-template [ngTemplateOutlet]=\"pageIndicators\"> </ng-template>\n @if (_showNavigationButtonInPageIndicatorContainer) {\n <ng-template [ngTemplateOutlet]=\"buttonRight\"></ng-template>\n }\n </div>\n</ng-template>\n<ng-template #pageIndicators>\n @if (numericIndicator) {\n <div class=\"fd-carousel__page-indicators\">\n @if (pageIndicator) {\n <div class=\"fd-carousel__text\" dir=\"ltr\">\n {{ getPageIndicatorLabel }}\n </div>\n }\n </div>\n }\n @if (!numericIndicator && _showNavigationButtonInPageIndicatorContainer) {\n <div class=\"fd-carousel__page-indicators\" [attr.dir]=\"_dir$()\">\n @if (pageIndicator) {\n @for (item of pageIndicatorsCountArray; track item; let i = $index) {\n <span\n role=\"img\"\n [attr.aria-label]=\"\n 'coreCarousel.pageIndicatorLabel' | fdTranslate: { itemNum: i + 1, totalNum: totalSlides }\n \"\n class=\"fd-carousel__page-indicator\"\n [class.fd-carousel__page-indicator--active]=\"i === currentActiveSlidesStartIndex\"\n ></span>\n }\n }\n </div>\n }\n</ng-template>\n<ng-template #buttonLeft>\n <button\n fd-button\n role=\"button\"\n class=\"fd-carousel__button\"\n [class.fd-carousel__button--left]=\"!vertical\"\n [class.fd-carousel__button--up]=\"vertical\"\n [style.z-index]=\"1\"\n [attr.aria-label]=\"'coreCarousel.leftNavigationBtnLabel' | fdTranslate\"\n (click)=\"previous(); $event.stopPropagation()\"\n [disabled]=\"leftButtonDisabled\"\n [attr.title]=\"'coreCarousel.leftNavigationBtnLabel' | fdTranslate\"\n [glyph]=\"vertical ? 'slim-arrow-up' : 'slim-arrow-left'\"\n ></button>\n</ng-template>\n<ng-template #buttonRight>\n <button\n fd-button\n role=\"button\"\n class=\"fd-carousel__button\"\n [class.fd-carousel__button--right]=\"!vertical\"\n [class.fd-carousel__button--down]=\"vertical\"\n [style.z-index]=\"1\"\n [attr.aria-label]=\"'coreCarousel.rightNavigationBtnLabel' | fdTranslate\"\n (click)=\"next(); $event.stopPropagation()\"\n [disabled]=\"rightButtonDisabled\"\n [attr.title]=\"'coreCarousel.rightNavigationBtnLabel' | fdTranslate\"\n [glyph]=\"vertical ? 'slim-arrow-down' : 'slim-arrow-right'\"\n ></button>\n</ng-template>\n", styles: [".fd-carousel{--fdCarousel_Button_Display:block;--fdCarousel_Content_Background:var(--sapBackgroundColor);--fdCarousel_Page_Indicator_Margin:var(--fdCarousel_Dot_Margin);--fdCarousel_Page_Indicator_Size:var(--fdCarousel_Dot_Size);--fdCarousel_Page_Indicator_Background_Color:var(--fdCarousel_Dot_Background);--fdCarousel_Page_Indicator_Border:var(--fdCarousel_Dot_Border);--fdCarousel_Page_Indicator_Container_Background:var(--sapPageFooter_Background);border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;max-width:100%;min-width:15.5rem;width:100%}.fd-carousel:after,.fd-carousel:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel.is-focus,.fd-carousel:focus{outline:var(--sapContent_FocusColor) var(--sapContent_FocusStyle) var(--sapContent_FocusWidth)}.fd-carousel.is-hover .fd-carousel__content .fd-carousel__button,.fd-carousel:hover .fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:block}.fd-carousel .fd-carousel__button+.fd-carousel__button{-webkit-margin-start:.5rem;margin-inline-start:.5rem}.fd-carousel__content{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-ms-flex-preferred-size:100%;background:var(--fdCarousel_Content_Background);flex-basis:100%;overflow:hidden;position:relative}.fd-carousel__content:after,.fd-carousel__content:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:none;-webkit-box-shadow:var(--sapContent_Shadow0);box-shadow:var(--sapContent_Shadow0);margin-block:0;margin-inline:0;position:absolute}.fd-carousel__content .fd-carousel__button--left,.fd-carousel__content .fd-carousel__button--right{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.fd-carousel__content .fd-carousel__button--down,.fd-carousel__content .fd-carousel__button--up{left:50%;-webkit-transform:translateX(-50%);transform:translate(-50%)}.fd-carousel__content .fd-carousel__button--down[dir=rtl]>[class*=sap-icon],.fd-carousel__content .fd-carousel__button--up[dir=rtl]>[class*=sap-icon],[dir=rtl] .fd-carousel__content .fd-carousel__button--down>[class*=sap-icon],[dir=rtl] .fd-carousel__content .fd-carousel__button--up>[class*=sap-icon]{-webkit-transform:rotate(0deg);transform:rotate(0)}.fd-carousel__content .fd-carousel__button--left{left:.5rem}.fd-carousel__content .fd-carousel__button--left[dir=rtl],[dir=rtl] .fd-carousel__content .fd-carousel__button--left{left:auto;right:.5rem}.fd-carousel__content .fd-carousel__button--right{right:.5rem}.fd-carousel__content .fd-carousel__button--right[dir=rtl],[dir=rtl] .fd-carousel__content .fd-carousel__button--right{left:.5rem;right:auto}.fd-carousel__content .fd-carousel__button--up{top:.5rem}.fd-carousel__content .fd-carousel__button--down{bottom:.5rem}.fd-carousel__content .fd-carousel__item img{height:auto;min-width:100%}.fd-carousel__content--horizontal .fd-carousel__slides{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;-ms-touch-action:pan-y;touch-action:pan-y;width:100%}.fd-carousel__content--horizontal .fd-carousel__item img{min-height:100%;min-width:auto;width:auto}.fd-carousel__content--solid{--fdCarousel_Content_Background:var(--sapGroup_ContentBackground)}.fd-carousel__content--transparent{--fdCarousel_Content_Background:transparent}.fd-carousel__slides{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:normal;margin-block:0;margin-inline:0;min-height:-webkit-fit-content;min-height:-moz-fit-content;min-height:fit-content;padding-block:0;padding-inline:0;-ms-touch-action:pan-x;touch-action:pan-x;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-tap-highlight-color:rgba(0,0,0,0);--fdMessage_Page_Container_Corner_Radius:0}.fd-carousel__slides:after,.fd-carousel__slides:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__item{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:none;height:100%;line-height:0}.fd-carousel__item:after,.fd-carousel__item:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__item--active{display:block}.fd-carousel__item img{pointer-events:none}.fd-carousel__page-indicator-container{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:var(--fdCarousel_Page_Indicator_Container_Background);border-top:var(--fdCarousel_Pagination_Border);max-height:3.5rem;min-height:2.75rem;padding-block:.375rem;padding-inline:.5rem}.fd-carousel__page-indicator-container:after,.fd-carousel__page-indicator-container:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator-container:first-child{border-bottom:var(--fdCarousel_Pagination_Border);border-top:none}.fd-carousel__page-indicator-container--translucent{--fdCarousel_Page_Indicator_Container_Background:var(--sapBackgroundColor)}.fd-carousel__page-indicator-container--transparent{--fdCarousel_Page_Indicator_Container_Background:transparent}.fd-carousel__page-indicator-container--no-border{border-top-color:transparent}.fd-carousel__page-indicator-container--no-border:first-child{border-bottom-color:transparent;border-top:none}.fd-carousel__page-indicators{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;min-width:9rem;padding-block:.5rem;padding-inline:.5rem}.fd-carousel__page-indicators:after,.fd-carousel__page-indicators:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator{background-color:var(--fdCarousel_Page_Indicator_Background_Color);border:0;border:var(--fdCarousel_Page_Indicator_Border);border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdCarousel_Page_Indicator_Size);line-height:normal;list-style-type:none;margin-block:0;margin-inline:0;margin-inline:var(--fdCarousel_Page_Indicator_Margin);max-height:var(--fdCarousel_Page_Indicator_Size);max-width:var(--fdCarousel_Page_Indicator_Size);min-height:var(--fdCarousel_Page_Indicator_Size);min-width:var(--fdCarousel_Page_Indicator_Size);padding-block:0;padding-inline:0;width:var(--fdCarousel_Page_Indicator_Size)}.fd-carousel__page-indicator:after,.fd-carousel__page-indicator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator--active{--fdCarousel_Page_Indicator_Size:.5rem;--fdCarousel_Page_Indicator_Margin:.25rem;--fdCarousel_Page_Indicator_Border:var(--fdCarousel_Dot_Selected_Border);--fdCarousel_Page_Indicator_Background_Color:var(--fdCarousel_Dot_Selected_Background)}.fd-carousel__text{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapPageFooter_TextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.fd-carousel__text:after,.fd-carousel__text:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel .fd-carousel__button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:50%;display:var(--fdCarousel_Button_Display);height:2.125rem;margin-block:.25rem;margin-inline:.25rem;max-height:2.125rem;max-width:2.125rem;min-height:2.125rem;min-width:2.125rem;padding-block:0;padding-inline:0;width:2.125rem}.fd-carousel .fd-carousel__button:before{inset:-.25rem;width:auto}.fd-carousel .fd-carousel__button[dir=rtl]>[class*=sap-icon],[dir=rtl] .fd-carousel .fd-carousel__button>[class*=sap-icon]{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fd-carousel .fd-carousel__button.is-focus,.fd-carousel .fd-carousel__button:focus{z-index:5}.fd-carousel .fd-carousel__button.is-focus:after,.fd-carousel .fd-carousel__button:focus:after{--fdButton_Focus_Border_Radius:50%}.fd-carousel--no-navigation .fd-carousel__button,.fd-carousel--no-navigation.is-hover .fd-carousel__content .fd-carousel__button,.fd-carousel--no-navigation:hover .fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:none}.fd-carousel__item fd-busy-indicator{display:block;height:100%;width:100%}\n/*! Bundled license information:\n\nfundamental-styles/dist/carousel.css:\n (*!\n * Fundamental Library Styles v0.40.1\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *)\n*/\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1053
1081
  }
1054
1082
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.3", ngImport: i0, type: CarouselComponent, decorators: [{
1055
1083
  type: Component,
1056
1084
  args: [{ selector: 'fd-carousel', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [CarouselService], host: {
1057
1085
  '[style.width]': 'width'
1058
- }, imports: [NgTemplateOutlet, NgClass, ButtonComponent, FdTranslatePipe], template: "<div\n class=\"fd-carousel\"\n [class.fd-carousel--no-navigation]=\"!navigation\"\n data-ride=\"carousel\"\n tabindex=\"0\"\n [style.height]=\"height\"\n [style.width]=\"width\"\n [attr.dir]=\"_dir$()\"\n role=\"region\"\n #carouselContainer\n (click)=\"_focus()\"\n>\n @if (_showPageIndicatorContainer && pageIndicatorsOrientation === 'top') {\n <ng-template [ngTemplateOutlet]=\"pageIndicatorContainer\"></ng-template>\n }\n <div\n class=\"fd-carousel__content\"\n [class.fd-carousel__content--horizontal]=\"!vertical\"\n [ngClass]=\"'fd-carousel__content--' + contentBackground\"\n [style.width]=\"_contentSizePx\"\n >\n @if (_showNavigationButtonInContent) {\n <ng-template [ngTemplateOutlet]=\"buttonLeft\"></ng-template>\n }\n <div #slideContainer class=\"fd-carousel__slides\">\n <ng-content></ng-content>\n </div>\n @if (_showNavigationButtonInContent) {\n <ng-template [ngTemplateOutlet]=\"buttonRight\"></ng-template>\n }\n </div>\n @if (_showPageIndicatorContainer && pageIndicatorsOrientation === 'bottom') {\n <ng-template [ngTemplateOutlet]=\"pageIndicatorContainer\"></ng-template>\n }\n <div [style.display]=\"'none'\" role=\"region\" [attr.id]=\"id + '-accessibility'\" aria-live=\"polite\" dir=\"ltr\">\n {{ screenReaderLabel }}\n </div>\n</div>\n<ng-template #pageIndicatorContainer>\n <div\n class=\"fd-carousel__page-indicator-container\"\n [class.fd-carousel__page-indicator-container--no-border]=\"noPaginationContainerBorder\"\n [ngClass]=\"'fd-carousel__page-indicator-container--' + pageIndicatorBackground\"\n >\n @if (_showNavigationButtonInPageIndicatorContainer) {\n <ng-template [ngTemplateOutlet]=\"buttonLeft\"></ng-template>\n }\n <ng-template [ngTemplateOutlet]=\"pageIndicators\"> </ng-template>\n @if (_showNavigationButtonInPageIndicatorContainer) {\n <ng-template [ngTemplateOutlet]=\"buttonRight\"></ng-template>\n }\n </div>\n</ng-template>\n<ng-template #pageIndicators>\n @if (numericIndicator) {\n <div class=\"fd-carousel__page-indicators\">\n @if (pageIndicator) {\n <div class=\"fd-carousel__text\" dir=\"ltr\">\n {{ getPageIndicatorLabel }}\n </div>\n }\n </div>\n }\n @if (!numericIndicator && _showNavigationButtonInPageIndicatorContainer) {\n <ol class=\"fd-carousel__page-indicators\" [attr.dir]=\"_dir$()\">\n @if (pageIndicator) {\n @for (item of pageIndicatorsCountArray; track item; let i = $index) {\n <li\n [attr.data-slide-to]=\"i + 1\"\n class=\"fd-carousel__page-indicator\"\n [class.fd-carousel__page-indicator--active]=\"i === currentActiveSlidesStartIndex\"\n ></li>\n }\n }\n </ol>\n }\n</ng-template>\n<ng-template #buttonLeft>\n <button\n fd-button\n class=\"fd-carousel__button\"\n [class.fd-carousel__button--left]=\"!vertical\"\n [class.fd-carousel__button--up]=\"vertical\"\n [style.z-index]=\"1\"\n data-slide=\"previous\"\n [attr.aria-label]=\"'coreCarousel.leftNavigationBtnLabel' | fdTranslate\"\n (click)=\"previous(); $event.stopPropagation()\"\n [disabled]=\"leftButtonDisabled\"\n [attr.title]=\"'coreCarousel.leftNavigationBtnLabel' | fdTranslate\"\n [glyph]=\"vertical ? 'slim-arrow-up' : 'slim-arrow-left'\"\n ></button>\n</ng-template>\n<ng-template #buttonRight>\n <button\n fd-button\n class=\"fd-carousel__button\"\n [class.fd-carousel__button--right]=\"!vertical\"\n [class.fd-carousel__button--down]=\"vertical\"\n [style.z-index]=\"1\"\n data-slide=\"next\"\n [attr.aria-label]=\"'coreCarousel.rightNavigationBtnLabel' | fdTranslate\"\n (click)=\"next(); $event.stopPropagation()\"\n [disabled]=\"rightButtonDisabled\"\n [attr.title]=\"'coreCarousel.rightNavigationBtnLabel' | fdTranslate\"\n [glyph]=\"vertical ? 'slim-arrow-down' : 'slim-arrow-right'\"\n ></button>\n</ng-template>\n", styles: [".fd-carousel{--fdCarousel_Button_Display:block;--fdCarousel_Content_Background:var(--sapBackgroundColor);--fdCarousel_Page_Indicator_Margin:var(--fdCarousel_Dot_Margin);--fdCarousel_Page_Indicator_Size:var(--fdCarousel_Dot_Size);--fdCarousel_Page_Indicator_Background_Color:var(--fdCarousel_Dot_Background);--fdCarousel_Page_Indicator_Border:var(--fdCarousel_Dot_Border);--fdCarousel_Page_Indicator_Container_Background:var(--sapPageFooter_Background);border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;max-width:100%;min-width:15.5rem;width:100%}.fd-carousel:after,.fd-carousel:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel.is-focus,.fd-carousel:focus{outline:var(--sapContent_FocusColor) var(--sapContent_FocusStyle) var(--sapContent_FocusWidth)}.fd-carousel.is-hover .fd-carousel__content .fd-carousel__button,.fd-carousel:hover .fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:block}.fd-carousel__content{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-ms-flex-preferred-size:100%;background:var(--fdCarousel_Content_Background);flex-basis:100%;overflow:hidden;position:relative}.fd-carousel__content:after,.fd-carousel__content:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:none;-webkit-box-shadow:var(--sapContent_Shadow1);box-shadow:var(--sapContent_Shadow1);margin-block:0;margin-inline:0;position:absolute}.fd-carousel__content .fd-carousel__button--left,.fd-carousel__content .fd-carousel__button--right{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.fd-carousel__content .fd-carousel__button--down,.fd-carousel__content .fd-carousel__button--up{left:50%;-webkit-transform:translateX(-50%);transform:translate(-50%)}.fd-carousel__content .fd-carousel__button--down[dir=rtl]>[class*=sap-icon],.fd-carousel__content .fd-carousel__button--up[dir=rtl]>[class*=sap-icon],[dir=rtl] .fd-carousel__content .fd-carousel__button--down>[class*=sap-icon],[dir=rtl] .fd-carousel__content .fd-carousel__button--up>[class*=sap-icon]{-webkit-transform:rotate(0deg);transform:rotate(0)}.fd-carousel__content .fd-carousel__button--left{left:.5rem}.fd-carousel__content .fd-carousel__button--left[dir=rtl],[dir=rtl] .fd-carousel__content .fd-carousel__button--left{left:auto;right:.5rem}.fd-carousel__content .fd-carousel__button--right{right:.5rem}.fd-carousel__content .fd-carousel__button--right[dir=rtl],[dir=rtl] .fd-carousel__content .fd-carousel__button--right{left:.5rem;right:auto}.fd-carousel__content .fd-carousel__button--up{top:.5rem}.fd-carousel__content .fd-carousel__button--down{bottom:.5rem}.fd-carousel__content .fd-carousel__item img{height:auto;min-width:100%}.fd-carousel__content--horizontal .fd-carousel__slides{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;-ms-touch-action:pan-y;touch-action:pan-y;width:100%}.fd-carousel__content--horizontal .fd-carousel__item img{min-height:100%;min-width:auto;width:auto}.fd-carousel__content--solid{--fdCarousel_Content_Background:var(--sapGroup_ContentBackground)}.fd-carousel__content--transparent{--fdCarousel_Content_Background:transparent}.fd-carousel__slides{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:normal;margin-block:0;margin-inline:0;min-height:-webkit-fit-content;min-height:-moz-fit-content;min-height:fit-content;padding-block:0;padding-inline:0;-ms-touch-action:pan-x;touch-action:pan-x;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.fd-carousel__slides:after,.fd-carousel__slides:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__item{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:none;height:100%;line-height:0}.fd-carousel__item:after,.fd-carousel__item:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__item--active{display:block}.fd-carousel__item img{pointer-events:none}.fd-carousel__page-indicator-container{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:var(--fdCarousel_Page_Indicator_Container_Background);border-top:var(--fdCarousel_Pagination_Border);max-height:3.5rem;min-height:2.75rem;padding-block:.375rem;padding-inline:.5rem}.fd-carousel__page-indicator-container:after,.fd-carousel__page-indicator-container:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator-container:first-child{border-bottom:var(--fdCarousel_Pagination_Border);border-top:none}.fd-carousel__page-indicator-container--translucent{--fdCarousel_Page_Indicator_Container_Background:var(--sapBackgroundColor)}.fd-carousel__page-indicator-container--transparent{--fdCarousel_Page_Indicator_Container_Background:transparent}.fd-carousel__page-indicator-container--no-border{border-top-color:transparent}.fd-carousel__page-indicator-container--no-border:first-child{border-bottom-color:transparent;border-top:none}.fd-carousel__page-indicators{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;min-width:9rem;padding-block:.5rem;padding-inline:.5rem}.fd-carousel__page-indicators:after,.fd-carousel__page-indicators:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator{background-color:var(--fdCarousel_Page_Indicator_Background_Color);border:0;border:var(--fdCarousel_Page_Indicator_Border);border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdCarousel_Page_Indicator_Size);line-height:normal;list-style-type:none;margin-block:0;margin-inline:0;margin-inline:var(--fdCarousel_Page_Indicator_Margin);max-height:var(--fdCarousel_Page_Indicator_Size);max-width:var(--fdCarousel_Page_Indicator_Size);min-height:var(--fdCarousel_Page_Indicator_Size);min-width:var(--fdCarousel_Page_Indicator_Size);padding-block:0;padding-inline:0;width:var(--fdCarousel_Page_Indicator_Size)}.fd-carousel__page-indicator:after,.fd-carousel__page-indicator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator--active{--fdCarousel_Page_Indicator_Size:.5rem;--fdCarousel_Page_Indicator_Margin:.25rem;--fdCarousel_Page_Indicator_Border:var(--fdCarousel_Dot_Selected_Border);--fdCarousel_Page_Indicator_Background_Color:var(--fdCarousel_Dot_Selected_Background)}.fd-carousel__text{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapPageFooter_TextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.fd-carousel__text:after,.fd-carousel__text:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel .fd-carousel__button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:50%;display:var(--fdCarousel_Button_Display);height:2.125rem;margin-block:.25rem;margin-inline:.25rem;max-height:2.125rem;max-width:2.125rem;min-height:2.125rem;min-width:2.125rem;padding-block:0;padding-inline:0;width:2.125rem}.fd-carousel .fd-carousel__button:before{inset:-.25rem;width:auto}.fd-carousel .fd-carousel__button[dir=rtl]>[class*=sap-icon],[dir=rtl] .fd-carousel .fd-carousel__button>[class*=sap-icon]{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fd-carousel .fd-carousel__button.is-focus,.fd-carousel .fd-carousel__button:focus{z-index:5}.fd-carousel .fd-carousel__button.is-focus:after,.fd-carousel .fd-carousel__button:focus:after{--fdButton_Focus_Border_Radius:50%}.fd-carousel--no-navigation .fd-carousel__button,.fd-carousel--no-navigation.is-hover .fd-carousel__content .fd-carousel__button,.fd-carousel--no-navigation:hover .fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:none}.fd-carousel__item fd-busy-indicator{display:block;height:100%;width:100%}\n/*! Bundled license information:\n\nfundamental-styles/dist/carousel.css:\n (*!\n * Fundamental Library Styles v0.39.3\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *)\n*/\n"] }]
1086
+ }, imports: [NgTemplateOutlet, NgClass, ButtonComponent, FdTranslatePipe], template: "<section\n class=\"fd-carousel\"\n [class.fd-carousel--no-navigation]=\"!navigation\"\n tabindex=\"0\"\n [style.height]=\"height\"\n [style.width]=\"width\"\n [attr.dir]=\"_dir$()\"\n role=\"listbox\"\n aria-roledescription=\"Carousel\"\n [attr.aria-activedescendant]=\"ariaActivedescendant\"\n #carouselContainer\n (click)=\"_focus()\"\n>\n @if (_showPageIndicatorContainer && pageIndicatorsOrientation === 'top') {\n <ng-template [ngTemplateOutlet]=\"pageIndicatorContainer\"></ng-template>\n }\n <div\n class=\"fd-carousel__content\"\n [class.fd-carousel__content--horizontal]=\"!vertical\"\n [ngClass]=\"'fd-carousel__content--' + contentBackground\"\n [style.width]=\"_contentSizePx\"\n >\n @if (_showNavigationButtonInContent) {\n <ng-template [ngTemplateOutlet]=\"buttonLeft\"></ng-template>\n }\n <div #slideContainer class=\"fd-carousel__slides\">\n <ng-content></ng-content>\n </div>\n @if (_showNavigationButtonInContent) {\n <ng-template [ngTemplateOutlet]=\"buttonRight\"></ng-template>\n }\n </div>\n @if (_showPageIndicatorContainer && pageIndicatorsOrientation === 'bottom') {\n <ng-template [ngTemplateOutlet]=\"pageIndicatorContainer\"></ng-template>\n }\n <div [style.display]=\"'none'\" role=\"region\" [attr.id]=\"id + '-accessibility'\" aria-live=\"polite\" dir=\"ltr\">\n {{ screenReaderLabel }}\n </div>\n</section>\n<ng-template #pageIndicatorContainer>\n <div\n class=\"fd-carousel__page-indicator-container\"\n [class.fd-carousel__page-indicator-container--no-border]=\"noPaginationContainerBorder\"\n [ngClass]=\"'fd-carousel__page-indicator-container--' + pageIndicatorBackground\"\n >\n @if (_showNavigationButtonInPageIndicatorContainer) {\n <ng-template [ngTemplateOutlet]=\"buttonLeft\"></ng-template>\n }\n <ng-template [ngTemplateOutlet]=\"pageIndicators\"> </ng-template>\n @if (_showNavigationButtonInPageIndicatorContainer) {\n <ng-template [ngTemplateOutlet]=\"buttonRight\"></ng-template>\n }\n </div>\n</ng-template>\n<ng-template #pageIndicators>\n @if (numericIndicator) {\n <div class=\"fd-carousel__page-indicators\">\n @if (pageIndicator) {\n <div class=\"fd-carousel__text\" dir=\"ltr\">\n {{ getPageIndicatorLabel }}\n </div>\n }\n </div>\n }\n @if (!numericIndicator && _showNavigationButtonInPageIndicatorContainer) {\n <div class=\"fd-carousel__page-indicators\" [attr.dir]=\"_dir$()\">\n @if (pageIndicator) {\n @for (item of pageIndicatorsCountArray; track item; let i = $index) {\n <span\n role=\"img\"\n [attr.aria-label]=\"\n 'coreCarousel.pageIndicatorLabel' | fdTranslate: { itemNum: i + 1, totalNum: totalSlides }\n \"\n class=\"fd-carousel__page-indicator\"\n [class.fd-carousel__page-indicator--active]=\"i === currentActiveSlidesStartIndex\"\n ></span>\n }\n }\n </div>\n }\n</ng-template>\n<ng-template #buttonLeft>\n <button\n fd-button\n role=\"button\"\n class=\"fd-carousel__button\"\n [class.fd-carousel__button--left]=\"!vertical\"\n [class.fd-carousel__button--up]=\"vertical\"\n [style.z-index]=\"1\"\n [attr.aria-label]=\"'coreCarousel.leftNavigationBtnLabel' | fdTranslate\"\n (click)=\"previous(); $event.stopPropagation()\"\n [disabled]=\"leftButtonDisabled\"\n [attr.title]=\"'coreCarousel.leftNavigationBtnLabel' | fdTranslate\"\n [glyph]=\"vertical ? 'slim-arrow-up' : 'slim-arrow-left'\"\n ></button>\n</ng-template>\n<ng-template #buttonRight>\n <button\n fd-button\n role=\"button\"\n class=\"fd-carousel__button\"\n [class.fd-carousel__button--right]=\"!vertical\"\n [class.fd-carousel__button--down]=\"vertical\"\n [style.z-index]=\"1\"\n [attr.aria-label]=\"'coreCarousel.rightNavigationBtnLabel' | fdTranslate\"\n (click)=\"next(); $event.stopPropagation()\"\n [disabled]=\"rightButtonDisabled\"\n [attr.title]=\"'coreCarousel.rightNavigationBtnLabel' | fdTranslate\"\n [glyph]=\"vertical ? 'slim-arrow-down' : 'slim-arrow-right'\"\n ></button>\n</ng-template>\n", styles: [".fd-carousel{--fdCarousel_Button_Display:block;--fdCarousel_Content_Background:var(--sapBackgroundColor);--fdCarousel_Page_Indicator_Margin:var(--fdCarousel_Dot_Margin);--fdCarousel_Page_Indicator_Size:var(--fdCarousel_Dot_Size);--fdCarousel_Page_Indicator_Background_Color:var(--fdCarousel_Dot_Background);--fdCarousel_Page_Indicator_Border:var(--fdCarousel_Dot_Border);--fdCarousel_Page_Indicator_Container_Background:var(--sapPageFooter_Background);border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;max-width:100%;min-width:15.5rem;width:100%}.fd-carousel:after,.fd-carousel:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel.is-focus,.fd-carousel:focus{outline:var(--sapContent_FocusColor) var(--sapContent_FocusStyle) var(--sapContent_FocusWidth)}.fd-carousel.is-hover .fd-carousel__content .fd-carousel__button,.fd-carousel:hover .fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:block}.fd-carousel .fd-carousel__button+.fd-carousel__button{-webkit-margin-start:.5rem;margin-inline-start:.5rem}.fd-carousel__content{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-ms-flex-preferred-size:100%;background:var(--fdCarousel_Content_Background);flex-basis:100%;overflow:hidden;position:relative}.fd-carousel__content:after,.fd-carousel__content:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:none;-webkit-box-shadow:var(--sapContent_Shadow0);box-shadow:var(--sapContent_Shadow0);margin-block:0;margin-inline:0;position:absolute}.fd-carousel__content .fd-carousel__button--left,.fd-carousel__content .fd-carousel__button--right{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.fd-carousel__content .fd-carousel__button--down,.fd-carousel__content .fd-carousel__button--up{left:50%;-webkit-transform:translateX(-50%);transform:translate(-50%)}.fd-carousel__content .fd-carousel__button--down[dir=rtl]>[class*=sap-icon],.fd-carousel__content .fd-carousel__button--up[dir=rtl]>[class*=sap-icon],[dir=rtl] .fd-carousel__content .fd-carousel__button--down>[class*=sap-icon],[dir=rtl] .fd-carousel__content .fd-carousel__button--up>[class*=sap-icon]{-webkit-transform:rotate(0deg);transform:rotate(0)}.fd-carousel__content .fd-carousel__button--left{left:.5rem}.fd-carousel__content .fd-carousel__button--left[dir=rtl],[dir=rtl] .fd-carousel__content .fd-carousel__button--left{left:auto;right:.5rem}.fd-carousel__content .fd-carousel__button--right{right:.5rem}.fd-carousel__content .fd-carousel__button--right[dir=rtl],[dir=rtl] .fd-carousel__content .fd-carousel__button--right{left:.5rem;right:auto}.fd-carousel__content .fd-carousel__button--up{top:.5rem}.fd-carousel__content .fd-carousel__button--down{bottom:.5rem}.fd-carousel__content .fd-carousel__item img{height:auto;min-width:100%}.fd-carousel__content--horizontal .fd-carousel__slides{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;-ms-touch-action:pan-y;touch-action:pan-y;width:100%}.fd-carousel__content--horizontal .fd-carousel__item img{min-height:100%;min-width:auto;width:auto}.fd-carousel__content--solid{--fdCarousel_Content_Background:var(--sapGroup_ContentBackground)}.fd-carousel__content--transparent{--fdCarousel_Content_Background:transparent}.fd-carousel__slides{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:normal;margin-block:0;margin-inline:0;min-height:-webkit-fit-content;min-height:-moz-fit-content;min-height:fit-content;padding-block:0;padding-inline:0;-ms-touch-action:pan-x;touch-action:pan-x;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-tap-highlight-color:rgba(0,0,0,0);--fdMessage_Page_Container_Corner_Radius:0}.fd-carousel__slides:after,.fd-carousel__slides:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__item{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:none;height:100%;line-height:0}.fd-carousel__item:after,.fd-carousel__item:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__item--active{display:block}.fd-carousel__item img{pointer-events:none}.fd-carousel__page-indicator-container{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:var(--fdCarousel_Page_Indicator_Container_Background);border-top:var(--fdCarousel_Pagination_Border);max-height:3.5rem;min-height:2.75rem;padding-block:.375rem;padding-inline:.5rem}.fd-carousel__page-indicator-container:after,.fd-carousel__page-indicator-container:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator-container:first-child{border-bottom:var(--fdCarousel_Pagination_Border);border-top:none}.fd-carousel__page-indicator-container--translucent{--fdCarousel_Page_Indicator_Container_Background:var(--sapBackgroundColor)}.fd-carousel__page-indicator-container--transparent{--fdCarousel_Page_Indicator_Container_Background:transparent}.fd-carousel__page-indicator-container--no-border{border-top-color:transparent}.fd-carousel__page-indicator-container--no-border:first-child{border-bottom-color:transparent;border-top:none}.fd-carousel__page-indicators{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;min-width:9rem;padding-block:.5rem;padding-inline:.5rem}.fd-carousel__page-indicators:after,.fd-carousel__page-indicators:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator{background-color:var(--fdCarousel_Page_Indicator_Background_Color);border:0;border:var(--fdCarousel_Page_Indicator_Border);border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdCarousel_Page_Indicator_Size);line-height:normal;list-style-type:none;margin-block:0;margin-inline:0;margin-inline:var(--fdCarousel_Page_Indicator_Margin);max-height:var(--fdCarousel_Page_Indicator_Size);max-width:var(--fdCarousel_Page_Indicator_Size);min-height:var(--fdCarousel_Page_Indicator_Size);min-width:var(--fdCarousel_Page_Indicator_Size);padding-block:0;padding-inline:0;width:var(--fdCarousel_Page_Indicator_Size)}.fd-carousel__page-indicator:after,.fd-carousel__page-indicator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel__page-indicator--active{--fdCarousel_Page_Indicator_Size:.5rem;--fdCarousel_Page_Indicator_Margin:.25rem;--fdCarousel_Page_Indicator_Border:var(--fdCarousel_Dot_Selected_Border);--fdCarousel_Page_Indicator_Background_Color:var(--fdCarousel_Dot_Selected_Background)}.fd-carousel__text{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapPageFooter_TextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;overflow:hidden;padding-block:0;padding-inline:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.fd-carousel__text:after,.fd-carousel__text:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-carousel .fd-carousel__button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:50%;display:var(--fdCarousel_Button_Display);height:2.125rem;margin-block:.25rem;margin-inline:.25rem;max-height:2.125rem;max-width:2.125rem;min-height:2.125rem;min-width:2.125rem;padding-block:0;padding-inline:0;width:2.125rem}.fd-carousel .fd-carousel__button:before{inset:-.25rem;width:auto}.fd-carousel .fd-carousel__button[dir=rtl]>[class*=sap-icon],[dir=rtl] .fd-carousel .fd-carousel__button>[class*=sap-icon]{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fd-carousel .fd-carousel__button.is-focus,.fd-carousel .fd-carousel__button:focus{z-index:5}.fd-carousel .fd-carousel__button.is-focus:after,.fd-carousel .fd-carousel__button:focus:after{--fdButton_Focus_Border_Radius:50%}.fd-carousel--no-navigation .fd-carousel__button,.fd-carousel--no-navigation.is-hover .fd-carousel__content .fd-carousel__button,.fd-carousel--no-navigation:hover .fd-carousel__content .fd-carousel__button{--fdCarousel_Button_Display:none}.fd-carousel__item fd-busy-indicator{display:block;height:100%;width:100%}\n/*! Bundled license information:\n\nfundamental-styles/dist/carousel.css:\n (*!\n * Fundamental Library Styles v0.40.1\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *)\n*/\n"] }]
1059
1087
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: CarouselService }, { type: i0.NgZone }], propDecorators: { id: [{
1060
1088
  type: Input
1061
1089
  }, {