@eui/ecl 22.0.0-alpha.45 → 22.0.0-alpha.47

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 (159) hide show
  1. package/docs/changelog.html +60 -0
  2. package/docs/components/EclMenuItemComponent.html +203 -161
  3. package/docs/components/EclMenuMegaItemComponent.html +3 -3
  4. package/docs/interfaces/EclMenuItem.html +4 -4
  5. package/docs/js/search/search_index.js +2 -2
  6. package/docs/json/documentation.json +152 -124
  7. package/docs/llms.txt +13 -7
  8. package/docs/properties.html +1 -1
  9. package/fesm2022/eui-ecl-components-ecl-accordion.mjs.map +1 -1
  10. package/fesm2022/eui-ecl-components-ecl-add-to-calendar.mjs.map +1 -1
  11. package/fesm2022/eui-ecl-components-ecl-animated-numbers.mjs.map +1 -1
  12. package/fesm2022/eui-ecl-components-ecl-app.mjs.map +1 -1
  13. package/fesm2022/eui-ecl-components-ecl-banner.mjs.map +1 -1
  14. package/fesm2022/eui-ecl-components-ecl-blockquote.mjs.map +1 -1
  15. package/fesm2022/eui-ecl-components-ecl-breadcrumb.mjs.map +1 -1
  16. package/fesm2022/eui-ecl-components-ecl-button.mjs.map +1 -1
  17. package/fesm2022/eui-ecl-components-ecl-card.mjs.map +1 -1
  18. package/fesm2022/eui-ecl-components-ecl-carousel.mjs.map +1 -1
  19. package/fesm2022/eui-ecl-components-ecl-category-filter.mjs.map +1 -1
  20. package/fesm2022/eui-ecl-components-ecl-checkbox.mjs.map +1 -1
  21. package/fesm2022/eui-ecl-components-ecl-content-block.mjs.map +1 -1
  22. package/fesm2022/eui-ecl-components-ecl-content-item.mjs.map +1 -1
  23. package/fesm2022/eui-ecl-components-ecl-date-block.mjs.map +1 -1
  24. package/fesm2022/eui-ecl-components-ecl-date-picker.mjs.map +1 -1
  25. package/fesm2022/eui-ecl-components-ecl-divider.mjs.map +1 -1
  26. package/fesm2022/eui-ecl-components-ecl-expandable.mjs.map +1 -1
  27. package/fesm2022/eui-ecl-components-ecl-fact-figures.mjs.map +1 -1
  28. package/fesm2022/eui-ecl-components-ecl-featured.mjs.map +1 -1
  29. package/fesm2022/eui-ecl-components-ecl-feedback-message.mjs.map +1 -1
  30. package/fesm2022/eui-ecl-components-ecl-file-upload.mjs.map +1 -1
  31. package/fesm2022/eui-ecl-components-ecl-file.mjs.map +1 -1
  32. package/fesm2022/eui-ecl-components-ecl-form-group.mjs.map +1 -1
  33. package/fesm2022/eui-ecl-components-ecl-form-label.mjs.map +1 -1
  34. package/fesm2022/eui-ecl-components-ecl-gallery.mjs.map +1 -1
  35. package/fesm2022/eui-ecl-components-ecl-help-block.mjs.map +1 -1
  36. package/fesm2022/eui-ecl-components-ecl-highlight-box.mjs.map +1 -1
  37. package/fesm2022/eui-ecl-components-ecl-highlighted-search.mjs.map +1 -1
  38. package/fesm2022/eui-ecl-components-ecl-icon.mjs.map +1 -1
  39. package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs.map +1 -1
  40. package/fesm2022/eui-ecl-components-ecl-label.mjs.map +1 -1
  41. package/fesm2022/eui-ecl-components-ecl-layout-wrapper.mjs.map +1 -1
  42. package/fesm2022/eui-ecl-components-ecl-link.mjs.map +1 -1
  43. package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs.map +1 -1
  44. package/fesm2022/eui-ecl-components-ecl-list.mjs.map +1 -1
  45. package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs.map +1 -1
  46. package/fesm2022/eui-ecl-components-ecl-media-container.mjs.map +1 -1
  47. package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs.map +1 -1
  48. package/fesm2022/eui-ecl-components-ecl-menu.mjs +67 -49
  49. package/fesm2022/eui-ecl-components-ecl-menu.mjs.map +1 -1
  50. package/fesm2022/eui-ecl-components-ecl-modal.mjs.map +1 -1
  51. package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
  52. package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs.map +1 -1
  53. package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs.map +1 -1
  54. package/fesm2022/eui-ecl-components-ecl-notification.mjs.map +1 -1
  55. package/fesm2022/eui-ecl-components-ecl-page-header.mjs.map +1 -1
  56. package/fesm2022/eui-ecl-components-ecl-page-information.mjs.map +1 -1
  57. package/fesm2022/eui-ecl-components-ecl-page-summary.mjs.map +1 -1
  58. package/fesm2022/eui-ecl-components-ecl-pagination.mjs.map +1 -1
  59. package/fesm2022/eui-ecl-components-ecl-popover.mjs.map +1 -1
  60. package/fesm2022/eui-ecl-components-ecl-quiz.mjs.map +1 -1
  61. package/fesm2022/eui-ecl-components-ecl-radio.mjs.map +1 -1
  62. package/fesm2022/eui-ecl-components-ecl-range.mjs.map +1 -1
  63. package/fesm2022/eui-ecl-components-ecl-rating-field.mjs.map +1 -1
  64. package/fesm2022/eui-ecl-components-ecl-search-form.mjs.map +1 -1
  65. package/fesm2022/eui-ecl-components-ecl-select.mjs.map +1 -1
  66. package/fesm2022/eui-ecl-components-ecl-site-footer.mjs.map +1 -1
  67. package/fesm2022/eui-ecl-components-ecl-site-header.mjs.map +1 -1
  68. package/fesm2022/eui-ecl-components-ecl-slogan-ticker.mjs.map +1 -1
  69. package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs.map +1 -1
  70. package/fesm2022/eui-ecl-components-ecl-splash-page.mjs.map +1 -1
  71. package/fesm2022/eui-ecl-components-ecl-spotlight.mjs.map +1 -1
  72. package/fesm2022/eui-ecl-components-ecl-sticky-container.mjs.map +1 -1
  73. package/fesm2022/eui-ecl-components-ecl-story-card.mjs.map +1 -1
  74. package/fesm2022/eui-ecl-components-ecl-table.mjs.map +1 -1
  75. package/fesm2022/eui-ecl-components-ecl-tabs.mjs.map +1 -1
  76. package/fesm2022/eui-ecl-components-ecl-tag.mjs.map +1 -1
  77. package/fesm2022/eui-ecl-components-ecl-text-area.mjs.map +1 -1
  78. package/fesm2022/eui-ecl-components-ecl-text-input.mjs.map +1 -1
  79. package/fesm2022/eui-ecl-components-ecl-text-media.mjs.map +1 -1
  80. package/fesm2022/eui-ecl-components-ecl-timeline.mjs.map +1 -1
  81. package/fesm2022/eui-ecl-components-ecl-tooltip.mjs.map +1 -1
  82. package/fesm2022/eui-ecl-core.mjs.map +1 -1
  83. package/fesm2022/eui-ecl-shared.mjs.map +1 -1
  84. package/package.json +1 -1
  85. package/types/eui-ecl-components-ecl-accordion.d.ts.map +1 -1
  86. package/types/eui-ecl-components-ecl-add-to-calendar.d.ts.map +1 -1
  87. package/types/eui-ecl-components-ecl-animated-numbers.d.ts.map +1 -1
  88. package/types/eui-ecl-components-ecl-app.d.ts.map +1 -1
  89. package/types/eui-ecl-components-ecl-banner.d.ts.map +1 -1
  90. package/types/eui-ecl-components-ecl-blockquote.d.ts.map +1 -1
  91. package/types/eui-ecl-components-ecl-breadcrumb.d.ts.map +1 -1
  92. package/types/eui-ecl-components-ecl-button.d.ts.map +1 -1
  93. package/types/eui-ecl-components-ecl-card.d.ts.map +1 -1
  94. package/types/eui-ecl-components-ecl-carousel.d.ts.map +1 -1
  95. package/types/eui-ecl-components-ecl-category-filter.d.ts.map +1 -1
  96. package/types/eui-ecl-components-ecl-checkbox.d.ts.map +1 -1
  97. package/types/eui-ecl-components-ecl-content-block.d.ts.map +1 -1
  98. package/types/eui-ecl-components-ecl-content-item.d.ts.map +1 -1
  99. package/types/eui-ecl-components-ecl-date-block.d.ts.map +1 -1
  100. package/types/eui-ecl-components-ecl-date-picker.d.ts.map +1 -1
  101. package/types/eui-ecl-components-ecl-divider.d.ts.map +1 -1
  102. package/types/eui-ecl-components-ecl-expandable.d.ts.map +1 -1
  103. package/types/eui-ecl-components-ecl-fact-figures.d.ts.map +1 -1
  104. package/types/eui-ecl-components-ecl-featured.d.ts.map +1 -1
  105. package/types/eui-ecl-components-ecl-feedback-message.d.ts.map +1 -1
  106. package/types/eui-ecl-components-ecl-file-upload.d.ts.map +1 -1
  107. package/types/eui-ecl-components-ecl-file.d.ts.map +1 -1
  108. package/types/eui-ecl-components-ecl-form-group.d.ts.map +1 -1
  109. package/types/eui-ecl-components-ecl-form-label.d.ts.map +1 -1
  110. package/types/eui-ecl-components-ecl-gallery.d.ts.map +1 -1
  111. package/types/eui-ecl-components-ecl-help-block.d.ts.map +1 -1
  112. package/types/eui-ecl-components-ecl-highlight-box.d.ts.map +1 -1
  113. package/types/eui-ecl-components-ecl-highlighted-search.d.ts.map +1 -1
  114. package/types/eui-ecl-components-ecl-icon.d.ts.map +1 -1
  115. package/types/eui-ecl-components-ecl-inpage-navigation.d.ts.map +1 -1
  116. package/types/eui-ecl-components-ecl-label.d.ts.map +1 -1
  117. package/types/eui-ecl-components-ecl-layout-wrapper.d.ts.map +1 -1
  118. package/types/eui-ecl-components-ecl-link.d.ts.map +1 -1
  119. package/types/eui-ecl-components-ecl-list-illustration.d.ts.map +1 -1
  120. package/types/eui-ecl-components-ecl-list.d.ts.map +1 -1
  121. package/types/eui-ecl-components-ecl-loading-indicator.d.ts.map +1 -1
  122. package/types/eui-ecl-components-ecl-media-container.d.ts.map +1 -1
  123. package/types/eui-ecl-components-ecl-mega-menu.d.ts.map +1 -1
  124. package/types/eui-ecl-components-ecl-menu.d.ts +16 -11
  125. package/types/eui-ecl-components-ecl-menu.d.ts.map +1 -1
  126. package/types/eui-ecl-components-ecl-modal.d.ts.map +1 -1
  127. package/types/eui-ecl-components-ecl-multiselect.d.ts.map +1 -1
  128. package/types/eui-ecl-components-ecl-navigation-list.d.ts.map +1 -1
  129. package/types/eui-ecl-components-ecl-news-ticker.d.ts.map +1 -1
  130. package/types/eui-ecl-components-ecl-notification.d.ts.map +1 -1
  131. package/types/eui-ecl-components-ecl-page-header.d.ts.map +1 -1
  132. package/types/eui-ecl-components-ecl-page-information.d.ts.map +1 -1
  133. package/types/eui-ecl-components-ecl-page-summary.d.ts.map +1 -1
  134. package/types/eui-ecl-components-ecl-pagination.d.ts.map +1 -1
  135. package/types/eui-ecl-components-ecl-popover.d.ts.map +1 -1
  136. package/types/eui-ecl-components-ecl-quiz.d.ts.map +1 -1
  137. package/types/eui-ecl-components-ecl-radio.d.ts.map +1 -1
  138. package/types/eui-ecl-components-ecl-range.d.ts.map +1 -1
  139. package/types/eui-ecl-components-ecl-rating-field.d.ts.map +1 -1
  140. package/types/eui-ecl-components-ecl-search-form.d.ts.map +1 -1
  141. package/types/eui-ecl-components-ecl-select.d.ts.map +1 -1
  142. package/types/eui-ecl-components-ecl-site-footer.d.ts.map +1 -1
  143. package/types/eui-ecl-components-ecl-site-header.d.ts.map +1 -1
  144. package/types/eui-ecl-components-ecl-slogan-ticker.d.ts.map +1 -1
  145. package/types/eui-ecl-components-ecl-social-media-follow.d.ts.map +1 -1
  146. package/types/eui-ecl-components-ecl-splash-page.d.ts.map +1 -1
  147. package/types/eui-ecl-components-ecl-spotlight.d.ts.map +1 -1
  148. package/types/eui-ecl-components-ecl-sticky-container.d.ts.map +1 -1
  149. package/types/eui-ecl-components-ecl-story-card.d.ts.map +1 -1
  150. package/types/eui-ecl-components-ecl-table.d.ts.map +1 -1
  151. package/types/eui-ecl-components-ecl-tabs.d.ts.map +1 -1
  152. package/types/eui-ecl-components-ecl-tag.d.ts.map +1 -1
  153. package/types/eui-ecl-components-ecl-text-area.d.ts.map +1 -1
  154. package/types/eui-ecl-components-ecl-text-input.d.ts.map +1 -1
  155. package/types/eui-ecl-components-ecl-text-media.d.ts.map +1 -1
  156. package/types/eui-ecl-components-ecl-timeline.d.ts.map +1 -1
  157. package/types/eui-ecl-components-ecl-tooltip.d.ts.map +1 -1
  158. package/types/eui-ecl-core.d.ts.map +1 -1
  159. package/types/eui-ecl-shared.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-tabs.mjs","sources":["../../components/ecl-tabs/ecl-tab-label.component.ts","../../components/ecl-tabs/ecl-tab-label.component.html","../../components/ecl-tabs/events/ecl-tab-select.event.ts","../../components/ecl-tabs/ecl-tab.component.ts","../../components/ecl-tabs/ecl-tab.component.html","../../components/ecl-tabs/ecl-tabs.component.ts","../../components/ecl-tabs/ecl-tabs.component.html","../../components/ecl-tabs/index.ts","../../components/ecl-tabs/eui-ecl-components-ecl-tabs.ts"],"sourcesContent":["import { Component, ElementRef, inject } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Component representing a tab label within ECL Tabs.\n * Used as a container for the tab's visual label content.\n */\n@Component({\n selector: 'ecl-tab-label',\n templateUrl: './ecl-tab-label.component.html',\n})\nexport class EclTabLabelComponent extends ECLBaseDirective {\n el = inject(ElementRef);\n}\n","<ng-content></ng-content>\n","import { EclBaseEvent } from '@eui/ecl/core';\nimport { EclTabComponent } from '../ecl-tab.component';\n\n/**\n * Event emitted when a tab is selected.\n *\n * Contains a reference to the selected tab instance.\n */\nexport class EclTabSelectEvent extends EclBaseEvent {\n /**\n * The tab instance that has been selected.\n */\n constructor(public tab: EclTabComponent) {\n super();\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n TemplateRef,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n model,\n viewChild,\n contentChild,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclLinkDirective, EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { EclTabLabelComponent } from './ecl-tab-label.component';\nimport { EclTabSelectEvent } from './events/ecl-tab-select.event';\n\n/**\n * Represents a single tab inside the ECL Tabs component.\n * Manages its label, state (active, hidden), and interaction events like click or keydown.\n */\n@Component({\n selector: 'div[eclTab]',\n host: {\n '[attr.id]': 'id()',\n '[class]': 'cssClasses()',\n '[class.ecl-tabs__item--hidden]': 'isHidden()',\n },\n templateUrl: './ecl-tab.component.html',\n imports: [...EUI_ECL_LINK],\n})\nexport class EclTabComponent extends ECLBaseDirective implements AfterViewInit {\n /**\n * Unique identifier for the tab.\n */\n readonly id = input<string>();\n\n /**\n * Extra classes to be added to the anchor tag.\n */\n readonly anchorExtraClasses = input<string>();\n\n /**\n * Hides the tab when true by applying the `ecl-tabs__item--hidden` CSS class.\n */\n readonly isHidden = model(false);\n\n /**\n * Marks the tab as active.\n */\n readonly isActive = input(false, { transform: booleanAttribute });\n readonly _isActive = signal(false);\n\n /**\n * Emits when the tab is selected via click.\n */\n readonly selectTab = output<EclTabSelectEvent>();\n\n /**\n * Emits when a keydown event occurs on the tab.\n */\n readonly keydownTab = output<Event>();\n\n /**\n * Reference to the tab content template.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly contentTemplate = viewChild<TemplateRef<any>>('content');\n\n /**\n * Contains the inner HTML of the tab label.\n */\n tabLabel = '';\n\n /**\n * The computed id used across the tab's DOM hooks.\n */\n readonly finalId = computed(() => this.id() ?? this.generatedId());\n\n /**\n * The tab index value for the tab's link.\n */\n protected readonly hrefTabindex = computed(() => this._isActive() ? 0 : -1);\n\n /**\n * CSS classes applied to the host element, bound via the `host` metadata (`[class]`).\n * Reactive to the base `class` model signal.\n */\n protected readonly cssClasses = computed(() => this.getCssClasses('ecl-tabs__item'));\n\n protected readonly linkId = computed(() => `${this.finalId()}-link`);\n\n protected readonly ariaControls = computed(() => `${this.finalId()}-tabpanel`);\n\n private readonly link = viewChild(EclLinkDirective);\n\n private readonly label = contentChild(EclTabLabelComponent);\n\n private readonly generatedId = signal(crypto.randomUUID());\n\n private readonly elementRef = inject(ElementRef);\n\n private isFirstCall = true;\n\n private width: number;\n\n constructor() {\n super();\n if (this.isUsingOldSelector) {\n console.warn('\"ecl-tab\" selector is deprecated; use \"div[eclTab]\" instead.');\n }\n effect(() => {\n this._isActive.set(this.isActive());\n });\n }\n\n /**\n * Returns the host HTML element of the tab component.\n */\n get hostElement(): HTMLElement {\n return this.elementRef?.nativeElement;\n }\n\n /**\n * Determines if the deprecated selector `<ecl-tab>` is used.\n */\n get isUsingOldSelector(): boolean {\n if (this.elementRef?.nativeElement.tagName.toLowerCase() === 'ecl-tab') {\n return true;\n }\n return false;\n }\n\n ngAfterViewInit(): void {\n this.tabLabel = this.label().el.nativeElement.innerHTML;\n // this._isActive.set(this.isActive());\n }\n\n /**\n * Returns the inner HTML content of the tab label.\n */\n getTabLabel(): string {\n return this.label().el.nativeElement.innerHTML;\n }\n\n /**\n * Returns the width of the tab element in pixels.\n * The measurement is cached after the first call.\n */\n getWidth(): number {\n if (this.isFirstCall) {\n this.width = this.hostElement.getBoundingClientRect().width;\n this.isFirstCall = false;\n }\n return this.width;\n }\n\n /**\n * Calls the focus method on the inner link directive.\n */\n onFocus(): void {\n this.link().onFocus();\n }\n\n /**\n * Calls the blur method on the inner link directive.\n */\n onBlur(): void {\n this.link().onBlur();\n }\n\n /**\n * Handles a click event on the tab and emits the `selectTab` event.\n */\n protected onTabClick(): void {\n this.selectTab.emit(new EclTabSelectEvent(this));\n }\n\n /**\n * Handles a keydown event on the tab and emits the `keydownTab` event.\n */\n protected onKeydown(event: Event): void {\n this.keydownTab.emit(event);\n }\n}\n","<a\n eclLink\n role=\"tab\"\n class=\"ecl-tabs__link eui-ecl-u-cursor-pointer {{anchorExtraClasses()}}\"\n [class.ecl-tabs__link--active]=\"_isActive()\"\n [attr.aria-selected]=\"_isActive()\"\n [tabindex]=\"hrefTabindex()\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"onTabClick()\"\n [id]=\"linkId()\"\n [attr.aria-controls]=\"ariaControls()\">\n <ng-content select=\"ecl-tab-label\"></ng-content>\n</a>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n afterNextRender,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n forwardRef,\n inject,\n IterableChanges,\n IterableDiffer,\n IterableDiffers,\n OnInit,\n PLATFORM_ID,\n signal,\n ViewEncapsulation,\n output,\n input,\n contentChildren,\n viewChild,\n} from '@angular/core';\nimport { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { OutputRefSubscription } from '@angular/core';\nimport { EclRtlService } from '@eui/ecl/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclButtonComponent, EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EclTabComponent } from './ecl-tab.component';\nimport { EclTabSelectEvent } from './events/ecl-tab-select.event';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EclTabLabelComponent } from './ecl-tab-label.component';\n\nexport enum ShiftDirection {\n NEXT = 'next',\n PREVIOUS = 'prev',\n}\n\n/**\n * ECL Tabs component for displaying tabbed content and managing tab selection and navigation.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclTabs]',\n templateUrl: './ecl-tabs.component.html',\n imports: [TranslatePipe, NgTemplateOutlet, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON, EclTabComponent, EclTabLabelComponent],\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'ecl-tabs',\n 'data-ecl-auto-initialized': 'true',\n '(document:click)': 'onClick($event.target)',\n },\n})\nexport class EclTabsComponent extends ECLBaseDirective implements OnInit {\n /**\n * Class applied to the tab body container.\n */\n readonly bodyClass = input('ecl-u-mt-s');\n\n /**\n * Emits an event when a tab is selected.\n */\n readonly tabSelect = output<EclTabSelectEvent>();\n\n /**\n * All projected tabs inside the component.\n */\n protected readonly tabs = contentChildren(forwardRef(() => EclTabComponent));\n\n /**\n * Tabs displayed in the visible list.\n */\n protected readonly listTabs = signal<EclTabComponent[]>([]);\n\n /**\n * Indicates whether the dropdown is expanded.\n */\n protected readonly isDropdownExpanded = signal(false);\n\n /**\n * Indicates whether the scroll previous button is shown.\n */\n protected readonly isScrollPrevBtnShow = signal(false);\n\n /**\n * Indicates whether the scroll next button is shown.\n */\n protected readonly isScrollNextBtnShow = signal(false);\n\n /**\n * CSS transform applied to the scrollable tab list.\n */\n protected readonly styleTransform = signal('translate3d(0px, 0px, 0px)');\n\n /**\n * Whether any visible tab is active.\n */\n protected readonly isMoreButtonActive = computed(\n () => this.listTabs().find((el) => el._isActive() && !el.isHidden()) !== undefined,\n );\n\n /**\n * Get the tabindex for more button.\n */\n protected readonly customTabIndex = computed(() => {\n if (!this.isMoreButtonActive()) {\n return '-1';\n }\n return this.isDropdownExpanded() ? '-1' : '0';\n });\n\n /**\n * Returns the number of tabs shown in the dropdown.\n *\n * Counts the dropdown clones that are visible (`isHidden() === false`), which is the\n * exact set rendered in the dropdown. Counting the main tabs' hidden state instead can\n * diverge from what the dropdown shows, because the main-bar hidden signals are updated\n * by the imperative resize measurement pass.\n */\n protected readonly hiddenTabsCount = computed(() => this.listTabs().filter((item) => !item.isHidden()).length);\n\n /**\n * Returns the duration of the transition animation.\n */\n protected readonly transitionDuration = computed(() => (this.isMobileBreakpoint() ? '0.4s' : '0'));\n\n private readonly tabsList = viewChild<ElementRef>('tabsList');\n\n private readonly moreButton = viewChild<EclButtonComponent>('moreButton');\n\n private readonly btnPrev = viewChild<EclButtonComponent>('btnPrev');\n\n private readonly dropdownList = viewChild<ElementRef>('dropdownList');\n\n private readonly moreItem = viewChild<ElementRef>('moreItem');\n\n /**\n * Index of the active tab.\n */\n private readonly index = signal(0);\n\n /**\n * Indicates whether the mobile breakpoint is active.\n */\n private readonly isMobileBreakpoint = signal(false);\n\n private readonly differs = inject(IterableDiffers);\n private readonly cdkBreakpointObserver = inject(BreakpointObserver);\n private readonly cd = inject(ChangeDetectorRef);\n private readonly el = inject(ElementRef);\n private readonly eclRtlService = inject(EclRtlService);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\n private readonly tabsChanges$ = toObservable(this.tabs);\n private readonly tabSubscriptions = new Map<EclTabComponent, OutputRefSubscription[]>();\n private differ: IterableDiffer<EclTabComponent>;\n private diff: IterableChanges<EclTabComponent>;\n private isRtl = false;\n private TIMEOUT_INTERVAL = 0;\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n afterNextRender(() => {\n this.observeTabsChanges();\n this.observeElementSizeChanges();\n this.cd.detectChanges();\n });\n }\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.observeBreakpointChanges();\n this.handleRtlChangeState();\n }\n }\n\n protected onClick(target): void {\n if (!this.moreButton().el.nativeElement.contains(target) && !this.dropdownList().nativeElement.contains(target)) {\n this.closeDropdown();\n }\n }\n\n /**\n * Scrolls the tab list to the left.\n */\n protected onScrollPrev(): void {\n this.shiftTabs(ShiftDirection.PREVIOUS);\n }\n\n /**\n * Scrolls the tab list to the right.\n */\n protected onScrollNext(): void {\n this.shiftTabs(ShiftDirection.NEXT);\n }\n\n /**\n * Toggles the dropdown visibility.\n */\n protected onDropdownToggle(): void {\n this.isDropdownExpanded.set(!this.isDropdownExpanded());\n }\n\n /**\n * Returns the label of the tab at the specified index.\n */\n protected getTabLabel(index: number): string {\n return this.getTabsAsArray()[index].getTabLabel();\n }\n\n /**\n * Handles tab selection.\n * @param tab Tab to activate.\n */\n protected onTabSelect(tab: EclTabComponent): void {\n this.deactivateAllTabs(Array.from(this.tabs()), this.listTabs());\n this.activateTab(tab);\n this.sendTabSelectEvent(tab);\n }\n\n /**\n * Handles all supported keyboard events for a tab.\n * @param event KeyboardEvent triggered.\n * @param tab Target tab.\n */\n protected onTabKeydown(event: Event, tab: EclTabComponent): void {\n if (!(event instanceof KeyboardEvent)) {\n return;\n }\n\n const index = this.getCurrentTabIndex(tab);\n switch (event.key) {\n case KeyCode.ARROW_LEFT: {\n event.preventDefault();\n this.onTabKeydownArrowLeft(index);\n break;\n }\n case KeyCode.ARROW_RIGHT: {\n event.preventDefault();\n this.onTabKeydownArrowRight(index);\n break;\n }\n case KeyCode.END: {\n event.preventDefault();\n this.onTabKeydownEnd();\n break;\n }\n case KeyCode.HOME: {\n event.preventDefault();\n this.onTabKeydownHome();\n break;\n }\n case KeyCode.ENTER: {\n event.preventDefault();\n this.onTabSelect(tab);\n break;\n }\n case KeyCode.TAB: {\n this.onTabTab();\n break;\n }\n default: {\n break;\n }\n }\n }\n\n protected onMoreButtonFocus(): void {\n const index = this.listTabs().findIndex(\n (el) => el._isActive() && !el.isHidden()\n );\n if (index < 0) return;\n this.openDropdown();\n this.moreButton().el.nativeElement.blur();\n this.focusOnDropdownTab(index);\n }\n\n /**\n * Handles right arrow key navigation.\n * @param index Current tab index.\n */\n private onTabKeydownArrowRight(index: number): void {\n if (this.isMobileBreakpoint()) {\n this.shiftTabs(ShiftDirection.NEXT);\n if (index === this.getTabsCount() - 1) {\n return;\n }\n }\n if (index === this.getTabsCount() - 1 && !this.isMobileBreakpoint()) {\n this.focusOnFirstTab();\n } else {\n this.focusOnNextTab(index);\n }\n }\n\n /**\n * Handles left arrow key navigation.\n * @param index Current tab index.\n */\n private onTabKeydownArrowLeft(index: number): void {\n if (this.isMobileBreakpoint()) {\n this.shiftTabs(ShiftDirection.PREVIOUS);\n if (index === 0) {\n return;\n }\n }\n\n if (index === 0 && !this.isMobileBreakpoint()) {\n this.focusOnLastTab();\n } else {\n this.focusOnPrevTab(index);\n }\n }\n\n /**\n * Focuses the first tab in the list.\n */\n private onTabKeydownHome(): void {\n this.focusOnFirstTab();\n }\n\n /**\n * Focuses the last tab in the list.\n */\n private onTabKeydownEnd(): void {\n this.focusOnLastTab();\n }\n\n private onTabTab(): void {\n this.closeDropdown();\n }\n\n private getCurrentTabIndex(tab: EclTabComponent): number {\n const index = this.getTabsAsArray().indexOf(tab)\n return index !== -1 ? index : this.listTabs().indexOf(tab);\n }\n\n private shiftTabs(dir: string): void {\n const newIndex = this.getShifIndex(dir, this.index());\n this.index.set(newIndex);\n\n this.isScrollPrevBtnShow.set(newIndex >= 1);\n this.isScrollNextBtnShow.set(newIndex < this.getTabsCount() - 1);\n\n const leftMargin = newIndex === 0 ? 0 : this.btnPrev().el.nativeElement.getBoundingClientRect().width + 13;\n\n let newOffset = 0;\n if (this.isRtl) {\n newOffset = Math.ceil(\n this.tabsList().nativeElement.offsetWidth -\n this.getTabsAsArray()[newIndex].hostElement.offsetLeft -\n this.getTabsAsArray()[newIndex].hostElement.offsetWidth -\n leftMargin,\n );\n } else {\n newOffset = Math.ceil(this.getTabsAsArray()[newIndex]?.hostElement.offsetLeft - leftMargin);\n }\n\n const maxScroll = Math.ceil(this.getTabsListWidth() - this.el.nativeElement.getBoundingClientRect().width);\n\n if (newOffset > maxScroll) {\n this.isScrollNextBtnShow.set(false);\n newOffset = maxScroll;\n }\n\n if (this.isRtl) {\n this.styleTransform.set(`translate3d(${newOffset}px, 0px, 0px)`);\n } else {\n this.styleTransform.set(`translate3d(-${newOffset}px, 0px, 0px)`);\n }\n }\n\n private getShifIndex(dir: string, index: number): number {\n if (dir === ShiftDirection.NEXT) {\n if (index === this.getTabsCount() - 1 && !this.isMobileBreakpoint() ) {\n return 0;\n } else {\n return index + 1;\n }\n } else {\n if (index === 0 && !this.isMobileBreakpoint()) {\n return this.getTabsCount() - 1;\n } else {\n return index - 1;\n }\n }\n }\n\n private createSecondListForDropdown(): void {\n const newList: EclTabComponent[] = [];\n this.tabs().forEach((tab) => {\n // Shallow-copying a tab would share the original's `isHidden`/`_isActive`\n // signal references, so writes to a dropdown clone would mutate the real tab\n // (corrupting the main-bar hidden state, the \"More\" count, and keyboard focus).\n // Build the clone with its own independent writable signals instead. A plain\n // `signal` is used (not `model`) because `model()` may only be called in a class\n // field initializer, and the clone only needs read/`set` access.\n const newTab = {\n ...tab,\n isHidden: signal(true),\n _isActive: signal(tab.isActive()),\n } as unknown as EclTabComponent;\n newList.push(newTab);\n });\n this.listTabs.set(newList);\n }\n\n private getTabsAsArray(): EclTabComponent[] {\n return Array.from(this.tabs());\n }\n\n private getTabsCount(): number {\n return this.tabs().length;\n }\n\n private closeDropdown(): void {\n this.isDropdownExpanded.set(false);\n }\n\n private openDropdown(): void {\n this.isDropdownExpanded.set(true);\n }\n\n private observeTabsChanges(): void {\n this.tabsChanges$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.onTabsChanges.bind(this));\n }\n\n private onTabsChanges(): void {\n this.diff = this.differ.diff(this.tabs());\n\n if (!this.diff) {\n this.tabs().forEach((tab) => {\n this.connectTabEvents(tab);\n });\n } else {\n this.diff.forEachAddedItem((change) => {\n this.connectTabEvents(change.item);\n });\n\n this.diff.forEachRemovedItem((change) => {\n this.disconnectTabEvents(change.item);\n });\n }\n this.createSecondListForDropdown();\n }\n\n private connectTabEvents(tab: EclTabComponent): void {\n if (this.tabSubscriptions.has(tab)) {\n return;\n }\n const subscriptions: OutputRefSubscription[] = [\n tab.selectTab.subscribe(() => {\n this.onTabSelect(tab);\n }),\n tab.keydownTab.subscribe((event) => {\n this.onTabKeydown(event, tab);\n }),\n ];\n this.tabSubscriptions.set(tab, subscriptions);\n }\n\n private focusOnNextTab(index: number): void {\n if (this.getTabsAsArray()[index + 1].isHidden()) {\n this.openDropdown();\n this.focusOnDropdownTab(index + 1);\n } else {\n this.closeDropdown();\n this.getTabsAsArray()[index + 1].onFocus();\n }\n }\n\n private focusOnFirstTab(): void {\n this.closeDropdown();\n this.getFirstTabFromArray().onFocus();\n }\n\n private focusOnLastTab(): void {\n if (!this.getLastTabFromArray().isHidden()) {\n this.getLastTabFromArray().onFocus();\n } else {\n this.openDropdown();\n this.focusOnDropdownTab(this.getTabsCount() - 1);\n }\n }\n\n private focusOnPrevTab(index: number): void {\n if (!this.listTabs()[index - 1].isHidden()) {\n this.focusOnDropdownTab(index - 1);\n } else {\n this.closeDropdown();\n this.getTabsAsArray()[index - 1].onFocus();\n }\n }\n\n private focusOnDropdownTab(index: number): void {\n this.dropdownList().nativeElement.children[index].firstChild.focus();\n }\n\n private getLastTabFromArray(): EclTabComponent {\n return this.getTabsAsArray()[this.getTabsAsArray().length - 1];\n }\n\n private getFirstTabFromArray(): EclTabComponent {\n return this.getTabsAsArray()[0];\n }\n\n private disconnectTabEvents(tab: EclTabComponent): void {\n const subscriptions = this.tabSubscriptions.get(tab);\n if (subscriptions) {\n subscriptions.forEach((subscription) => subscription.unsubscribe());\n this.tabSubscriptions.delete(tab);\n }\n }\n\n private deactivateAllTabs(tabs: EclTabComponent[], listTabs: EclTabComponent[]): void {\n tabs.forEach((it) => {\n it._isActive.set(false);\n });\n\n listTabs.forEach((it) => {\n it._isActive.set(false);\n });\n }\n\n private activateTab(tab: EclTabComponent): void {\n tab._isActive.set(true);\n }\n\n private sendTabSelectEvent(tab: EclTabComponent): void {\n this.tabSelect.emit(new EclTabSelectEvent(tab));\n }\n\n private observeBreakpointChanges(): void {\n this.cdkBreakpointObserver\n .observe(['(max-width: 480px)'])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((result) => {\n this.isMobileBreakpoint.set(result.matches);\n });\n }\n\n private handleResize(): void {\n this.closeDropdown();\n if (this.isMobileBreakpoint()) {\n this.handleMobile();\n return;\n }\n\n this.styleTransform.set('translate3d(0px, 0px, 0px)');\n this.index.set(0);\n this.isScrollNextBtnShow.set(false);\n this.isScrollPrevBtnShow.set(false);\n\n // Reset list width to auto for measurement (direct DOM, same as ECL)\n this.tabsList().nativeElement.style.width = 'auto';\n\n // Temporarily show the more button to get its actual width\n this.moreItem().nativeElement.classList.remove('ecl-tabs__item--hidden');\n this.moreButton().el.nativeElement.classList.remove('ecl-tabs__toggle--hidden');\n const moreButtonWidth = this.moreButton().el.nativeElement.getBoundingClientRect().width;\n this.moreItem().nativeElement.classList.add('ecl-tabs__item--hidden');\n this.moreButton().el.nativeElement.classList.add('ecl-tabs__toggle--hidden');\n\n const hiddenItems: number[] = [];\n const listWidth = this.getTabsListWidth();\n\n // Measure all items first to check if they fit without the button\n this.tabs().forEach((item) => {\n item.isHidden.set(false);\n item.hostElement.classList.remove('ecl-tabs__item--hidden');\n });\n const itemWidths = this.tabs().map((item) => {\n const itemMargin = parseFloat(getComputedStyle(item.hostElement).marginInlineEnd) || 0;\n return item.hostElement.getBoundingClientRect().width + itemMargin;\n });\n const totalWidth = itemWidths.reduce((sum, w) => sum + w, 0);\n\n if (totalWidth > listWidth) {\n // Reserve space for the more button and hide items that don't fit\n this.tabs().forEach((item) => {\n item.isHidden.set(true);\n item.hostElement.classList.add('ecl-tabs__item--hidden');\n });\n let stopWidth = moreButtonWidth;\n this.tabs().forEach((item, i) => {\n item.isHidden.set(false);\n item.hostElement.classList.remove('ecl-tabs__item--hidden');\n if (listWidth >= stopWidth + itemWidths[i] && !hiddenItems.includes(i - 1)) {\n stopWidth += itemWidths[i];\n } else {\n item.isHidden.set(true);\n item.hostElement.classList.add('ecl-tabs__item--hidden');\n if (item._isActive()) {\n this.listTabs()[i]._isActive.set(true);\n }\n hiddenItems.push(i);\n }\n });\n }\n\n // Toggle the visibility of More button and items in dropdown\n if (!hiddenItems.length) {\n this.moreItem().nativeElement.classList.add('ecl-tabs__item--hidden');\n this.moreButton().el.nativeElement.classList.add('ecl-tabs__toggle--hidden');\n this.setActiveItemForMainTabs();\n this.hideAllDropdownTabs();\n } else {\n this.moreItem().nativeElement.classList.remove('ecl-tabs__item--hidden');\n this.moreButton().el.nativeElement.classList.remove('ecl-tabs__toggle--hidden');\n this.setHiddenItemsForDropdownTabs(hiddenItems);\n }\n this.cd.markForCheck();\n }\n\n private hideAllDropdownTabs(): void {\n this.listTabs().forEach(item => item.isHidden.set(true));\n }\n\n private setActiveItemForMainTabs(): void {\n this.listTabs().forEach((item, index) => {\n if (item._isActive()) {\n setTimeout(() => this.tabs()[index]._isActive.set(true));\n }\n });\n this.cd.markForCheck();\n }\n\n private getTabsListWidth(): number {\n return this.tabsList().nativeElement.getBoundingClientRect().width;\n }\n\n private setHiddenItemsForDropdownTabs(hiddenItems: number[]): void {\n this.listTabs().forEach((item, index) => {\n if (hiddenItems.includes(index)) {\n item.isHidden.set(false);\n } else {\n item.isHidden.set(true);\n }\n });\n }\n\n private handleMobile(): void {\n this.isScrollPrevBtnShow.set(false);\n this.isScrollNextBtnShow.set(true);\n this.setAllTabsVisible();\n\n // Hide the more item and button (direct DOM, same as ECL)\n this.moreItem().nativeElement.classList.add('ecl-tabs__item--hidden');\n this.moreButton().el.nativeElement.classList.add('ecl-tabs__toggle--hidden');\n\n // Reset to auto so scrollWidth reflects the natural content width\n this.tabsList().nativeElement.style.width = 'auto';\n // Remove hidden class directly from DOM elements\n this.tabs().forEach((item) => {\n item.hostElement.classList.remove('ecl-tabs__item--hidden');\n });\n // Use scrollWidth to also include item margins\n this.tabsList().nativeElement.style.width = `${this.tabsList().nativeElement.scrollWidth}px`;\n }\n\n private setAllTabsVisible(): void {\n this.tabs().forEach((item) => {\n item.isHidden.set(false);\n });\n }\n\n private handleRtlChangeState(): void {\n const isRtlOld = this.isRtl;\n this.eclRtlService.currentRtlState$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((rtlState) => {\n setTimeout(() => {\n this.isRtl = rtlState;\n if (this.isMobileBreakpoint() && this.hasRtlChanged(isRtlOld)) {\n this.handleRtlChange();\n }\n });\n });\n }\n\n private hasRtlChanged(isRtlOld: boolean): boolean {\n return isRtlOld !== this.isRtl;\n }\n\n private handleRtlChange(): void {\n this.handleMobile();\n this.styleTransform.set('translate3d(0px, 0px, 0px)');\n this.index.set(0);\n }\n\n private observeElementSizeChanges(): void {\n const resizeObserver = new ResizeObserver(() => {\n setTimeout(() => {\n this.handleResize();\n }, this.TIMEOUT_INTERVAL);\n });\n resizeObserver.observe(this.tabsList().nativeElement);\n this.destroyRef.onDestroy(() => resizeObserver.disconnect());\n }\n}\n","<div class=\"ecl-tabs__container\" [class.ecl-tabs__container--right]=\"isScrollNextBtnShow()\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow()\">\n <div class=\"ecl-tabs__list\" role=\"tablist\" #tabsList\n [style.transform]=\"styleTransform()\" [style.transition-duration]=\"transitionDuration()\">\n <ng-content select=\"[eclTab]\"></ng-content>\n <div class=\"ecl-tabs__item ecl-tabs__item--more\" #moreItem>\n @if (listTabs().length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded()\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs(); track tab.finalId(); let i = $index) {\n <div eclTab [isActive]=\"tab._isActive()\" [isHidden]=\"tab.isHidden()\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" variant=\"tertiary\" [tabindex]=\"customTabIndex()\"\n [attr.aria-expanded]=\"isDropdownExpanded()\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive()\"\n (click)=\"onDropdownToggle()\" (focus)=\"onMoreButtonFocus()\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ hiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n</div>\n\n<div class=\"ecl-tabs__controls\">\n <button #btnPrev eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__prev\"\n [style.display]=\"isScrollPrevBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollPrev()\">\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n <button #btnNext eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__next\"\n [style.display]=\"isScrollNextBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollNext()\">\n <span eclButtonLabel>{{ 'ecl.common.NEXT' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n</div>\n\n@for (tab of tabs(); track tab.finalId()) {\n@if (tab._isActive()) {\n<div id=\"{{tab.finalId()}}-tabpanel\" role=\"tabpanel\" aria-labelledby=\"{{tab.finalId()}}-link\" class=\"{{ bodyClass() }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate()\"></ng-container>\n</div>\n}\n}\n@for (tab of listTabs(); track tab.finalId()) {\n@if (tab._isActive()) {\n<div id=\"{{tab.finalId()}}-tabpanel\" role=\"tabpanel\" aria-labelledby=\"{{tab.finalId()}}-link\" class=\"{{ bodyClass() }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate()\"></ng-container>\n</div>\n}\n}","import { EclTabLabelComponent } from './ecl-tab-label.component';\nimport { EclTabComponent } from './ecl-tab.component';\nimport { EclTabsComponent } from './ecl-tabs.component';\n\nexport * from './ecl-tabs.component';\nexport * from './ecl-tab.component';\nexport * from './ecl-tab-label.component';\nexport * from './models/ecl-tab.model';\nexport * from './events/ecl-tab-select.event';\n\nexport const EUI_ECL_TABS = [\n EclTabsComponent, EclTabComponent, EclTabLabelComponent,\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-tabs.mjs","sources":["../../components/ecl-tabs/ecl-tab-label.component.ts","../../components/ecl-tabs/ecl-tab-label.component.html","../../components/ecl-tabs/events/ecl-tab-select.event.ts","../../components/ecl-tabs/ecl-tab.component.ts","../../components/ecl-tabs/ecl-tab.component.html","../../components/ecl-tabs/ecl-tabs.component.ts","../../components/ecl-tabs/ecl-tabs.component.html","../../components/ecl-tabs/index.ts","../../components/ecl-tabs/eui-ecl-components-ecl-tabs.ts"],"sourcesContent":["import { Component, ElementRef, inject } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Component representing a tab label within ECL Tabs.\n * Used as a container for the tab's visual label content.\n */\n@Component({\n selector: 'ecl-tab-label',\n templateUrl: './ecl-tab-label.component.html',\n})\nexport class EclTabLabelComponent extends ECLBaseDirective {\n el = inject(ElementRef);\n}\n","<ng-content></ng-content>\n","import { EclBaseEvent } from '@eui/ecl/core';\nimport { EclTabComponent } from '../ecl-tab.component';\n\n/**\n * Event emitted when a tab is selected.\n *\n * Contains a reference to the selected tab instance.\n */\nexport class EclTabSelectEvent extends EclBaseEvent {\n /**\n * The tab instance that has been selected.\n */\n constructor(public tab: EclTabComponent) {\n super();\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n TemplateRef,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n model,\n viewChild,\n contentChild,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclLinkDirective, EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';\nimport { EclTabLabelComponent } from './ecl-tab-label.component';\nimport { EclTabSelectEvent } from './events/ecl-tab-select.event';\n\n/**\n * Represents a single tab inside the ECL Tabs component.\n * Manages its label, state (active, hidden), and interaction events like click or keydown.\n */\n@Component({\n selector: 'div[eclTab]',\n host: {\n '[attr.id]': 'id()',\n '[class]': 'cssClasses()',\n '[class.ecl-tabs__item--hidden]': 'isHidden()',\n },\n templateUrl: './ecl-tab.component.html',\n imports: [...EUI_ECL_LINK],\n})\nexport class EclTabComponent extends ECLBaseDirective implements AfterViewInit {\n /**\n * Unique identifier for the tab.\n */\n readonly id = input<string>();\n\n /**\n * Extra classes to be added to the anchor tag.\n */\n readonly anchorExtraClasses = input<string>();\n\n /**\n * Hides the tab when true by applying the `ecl-tabs__item--hidden` CSS class.\n */\n readonly isHidden = model(false);\n\n /**\n * Marks the tab as active.\n */\n readonly isActive = input(false, { transform: booleanAttribute });\n readonly _isActive = signal(false);\n\n /**\n * Emits when the tab is selected via click.\n */\n readonly selectTab = output<EclTabSelectEvent>();\n\n /**\n * Emits when a keydown event occurs on the tab.\n */\n readonly keydownTab = output<Event>();\n\n /**\n * Reference to the tab content template.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly contentTemplate = viewChild<TemplateRef<any>>('content');\n\n /**\n * Contains the inner HTML of the tab label.\n */\n tabLabel = '';\n\n /**\n * The computed id used across the tab's DOM hooks.\n */\n readonly finalId = computed(() => this.id() ?? this.generatedId());\n\n /**\n * The tab index value for the tab's link.\n */\n protected readonly hrefTabindex = computed(() => this._isActive() ? 0 : -1);\n\n /**\n * CSS classes applied to the host element, bound via the `host` metadata (`[class]`).\n * Reactive to the base `class` model signal.\n */\n protected readonly cssClasses = computed(() => this.getCssClasses('ecl-tabs__item'));\n\n protected readonly linkId = computed(() => `${this.finalId()}-link`);\n\n protected readonly ariaControls = computed(() => `${this.finalId()}-tabpanel`);\n\n private readonly link = viewChild(EclLinkDirective);\n\n private readonly label = contentChild(EclTabLabelComponent);\n\n private readonly generatedId = signal(crypto.randomUUID());\n\n private readonly elementRef = inject(ElementRef);\n\n private isFirstCall = true;\n\n private width: number;\n\n constructor() {\n super();\n if (this.isUsingOldSelector) {\n console.warn('\"ecl-tab\" selector is deprecated; use \"div[eclTab]\" instead.');\n }\n effect(() => {\n this._isActive.set(this.isActive());\n });\n }\n\n /**\n * Returns the host HTML element of the tab component.\n */\n get hostElement(): HTMLElement {\n return this.elementRef?.nativeElement;\n }\n\n /**\n * Determines if the deprecated selector `<ecl-tab>` is used.\n */\n get isUsingOldSelector(): boolean {\n if (this.elementRef?.nativeElement.tagName.toLowerCase() === 'ecl-tab') {\n return true;\n }\n return false;\n }\n\n ngAfterViewInit(): void {\n this.tabLabel = this.label().el.nativeElement.innerHTML;\n // this._isActive.set(this.isActive());\n }\n\n /**\n * Returns the inner HTML content of the tab label.\n */\n getTabLabel(): string {\n return this.label().el.nativeElement.innerHTML;\n }\n\n /**\n * Returns the width of the tab element in pixels.\n * The measurement is cached after the first call.\n */\n getWidth(): number {\n if (this.isFirstCall) {\n this.width = this.hostElement.getBoundingClientRect().width;\n this.isFirstCall = false;\n }\n return this.width;\n }\n\n /**\n * Calls the focus method on the inner link directive.\n */\n onFocus(): void {\n this.link().onFocus();\n }\n\n /**\n * Calls the blur method on the inner link directive.\n */\n onBlur(): void {\n this.link().onBlur();\n }\n\n /**\n * Handles a click event on the tab and emits the `selectTab` event.\n */\n protected onTabClick(): void {\n this.selectTab.emit(new EclTabSelectEvent(this));\n }\n\n /**\n * Handles a keydown event on the tab and emits the `keydownTab` event.\n */\n protected onKeydown(event: Event): void {\n this.keydownTab.emit(event);\n }\n}\n","<a\n eclLink\n role=\"tab\"\n class=\"ecl-tabs__link eui-ecl-u-cursor-pointer {{anchorExtraClasses()}}\"\n [class.ecl-tabs__link--active]=\"_isActive()\"\n [attr.aria-selected]=\"_isActive()\"\n [tabindex]=\"hrefTabindex()\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"onTabClick()\"\n [id]=\"linkId()\"\n [attr.aria-controls]=\"ariaControls()\">\n <ng-content select=\"ecl-tab-label\"></ng-content>\n</a>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n afterNextRender,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n forwardRef,\n inject,\n IterableChanges,\n IterableDiffer,\n IterableDiffers,\n OnInit,\n PLATFORM_ID,\n signal,\n ViewEncapsulation,\n output,\n input,\n contentChildren,\n viewChild,\n} from '@angular/core';\nimport { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { OutputRefSubscription } from '@angular/core';\nimport { EclRtlService } from '@eui/ecl/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclButtonComponent, EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EclTabComponent } from './ecl-tab.component';\nimport { EclTabSelectEvent } from './events/ecl-tab-select.event';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EclTabLabelComponent } from './ecl-tab-label.component';\n\nexport enum ShiftDirection {\n NEXT = 'next',\n PREVIOUS = 'prev',\n}\n\n/**\n * ECL Tabs component for displaying tabbed content and managing tab selection and navigation.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclTabs]',\n templateUrl: './ecl-tabs.component.html',\n imports: [TranslatePipe, NgTemplateOutlet, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON, EclTabComponent, EclTabLabelComponent],\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'ecl-tabs',\n 'data-ecl-auto-initialized': 'true',\n '(document:click)': 'onClick($event.target)',\n },\n})\nexport class EclTabsComponent extends ECLBaseDirective implements OnInit {\n /**\n * Class applied to the tab body container.\n */\n readonly bodyClass = input('ecl-u-mt-s');\n\n /**\n * Emits an event when a tab is selected.\n */\n readonly tabSelect = output<EclTabSelectEvent>();\n\n /**\n * All projected tabs inside the component.\n */\n protected readonly tabs = contentChildren(forwardRef(() => EclTabComponent));\n\n /**\n * Tabs displayed in the visible list.\n */\n protected readonly listTabs = signal<EclTabComponent[]>([]);\n\n /**\n * Indicates whether the dropdown is expanded.\n */\n protected readonly isDropdownExpanded = signal(false);\n\n /**\n * Indicates whether the scroll previous button is shown.\n */\n protected readonly isScrollPrevBtnShow = signal(false);\n\n /**\n * Indicates whether the scroll next button is shown.\n */\n protected readonly isScrollNextBtnShow = signal(false);\n\n /**\n * CSS transform applied to the scrollable tab list.\n */\n protected readonly styleTransform = signal('translate3d(0px, 0px, 0px)');\n\n /**\n * Whether any visible tab is active.\n */\n protected readonly isMoreButtonActive = computed(\n () => this.listTabs().find((el) => el._isActive() && !el.isHidden()) !== undefined,\n );\n\n /**\n * Get the tabindex for more button.\n */\n protected readonly customTabIndex = computed(() => {\n if (!this.isMoreButtonActive()) {\n return '-1';\n }\n return this.isDropdownExpanded() ? '-1' : '0';\n });\n\n /**\n * Returns the number of tabs shown in the dropdown.\n *\n * Counts the dropdown clones that are visible (`isHidden() === false`), which is the\n * exact set rendered in the dropdown. Counting the main tabs' hidden state instead can\n * diverge from what the dropdown shows, because the main-bar hidden signals are updated\n * by the imperative resize measurement pass.\n */\n protected readonly hiddenTabsCount = computed(() => this.listTabs().filter((item) => !item.isHidden()).length);\n\n /**\n * Returns the duration of the transition animation.\n */\n protected readonly transitionDuration = computed(() => (this.isMobileBreakpoint() ? '0.4s' : '0'));\n\n private readonly tabsList = viewChild<ElementRef>('tabsList');\n\n private readonly moreButton = viewChild<EclButtonComponent>('moreButton');\n\n private readonly btnPrev = viewChild<EclButtonComponent>('btnPrev');\n\n private readonly dropdownList = viewChild<ElementRef>('dropdownList');\n\n private readonly moreItem = viewChild<ElementRef>('moreItem');\n\n /**\n * Index of the active tab.\n */\n private readonly index = signal(0);\n\n /**\n * Indicates whether the mobile breakpoint is active.\n */\n private readonly isMobileBreakpoint = signal(false);\n\n private readonly differs = inject(IterableDiffers);\n private readonly cdkBreakpointObserver = inject(BreakpointObserver);\n private readonly cd = inject(ChangeDetectorRef);\n private readonly el = inject(ElementRef);\n private readonly eclRtlService = inject(EclRtlService);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\n private readonly tabsChanges$ = toObservable(this.tabs);\n private readonly tabSubscriptions = new Map<EclTabComponent, OutputRefSubscription[]>();\n private differ: IterableDiffer<EclTabComponent>;\n private diff: IterableChanges<EclTabComponent>;\n private isRtl = false;\n private TIMEOUT_INTERVAL = 0;\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n afterNextRender(() => {\n this.observeTabsChanges();\n this.observeElementSizeChanges();\n this.cd.detectChanges();\n });\n }\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.observeBreakpointChanges();\n this.handleRtlChangeState();\n }\n }\n\n protected onClick(target): void {\n if (!this.moreButton().el.nativeElement.contains(target) && !this.dropdownList().nativeElement.contains(target)) {\n this.closeDropdown();\n }\n }\n\n /**\n * Scrolls the tab list to the left.\n */\n protected onScrollPrev(): void {\n this.shiftTabs(ShiftDirection.PREVIOUS);\n }\n\n /**\n * Scrolls the tab list to the right.\n */\n protected onScrollNext(): void {\n this.shiftTabs(ShiftDirection.NEXT);\n }\n\n /**\n * Toggles the dropdown visibility.\n */\n protected onDropdownToggle(): void {\n this.isDropdownExpanded.set(!this.isDropdownExpanded());\n }\n\n /**\n * Returns the label of the tab at the specified index.\n */\n protected getTabLabel(index: number): string {\n return this.getTabsAsArray()[index].getTabLabel();\n }\n\n /**\n * Handles tab selection.\n * @param tab Tab to activate.\n */\n protected onTabSelect(tab: EclTabComponent): void {\n this.deactivateAllTabs(Array.from(this.tabs()), this.listTabs());\n this.activateTab(tab);\n this.sendTabSelectEvent(tab);\n }\n\n /**\n * Handles all supported keyboard events for a tab.\n * @param event KeyboardEvent triggered.\n * @param tab Target tab.\n */\n protected onTabKeydown(event: Event, tab: EclTabComponent): void {\n if (!(event instanceof KeyboardEvent)) {\n return;\n }\n\n const index = this.getCurrentTabIndex(tab);\n switch (event.key) {\n case KeyCode.ARROW_LEFT: {\n event.preventDefault();\n this.onTabKeydownArrowLeft(index);\n break;\n }\n case KeyCode.ARROW_RIGHT: {\n event.preventDefault();\n this.onTabKeydownArrowRight(index);\n break;\n }\n case KeyCode.END: {\n event.preventDefault();\n this.onTabKeydownEnd();\n break;\n }\n case KeyCode.HOME: {\n event.preventDefault();\n this.onTabKeydownHome();\n break;\n }\n case KeyCode.ENTER: {\n event.preventDefault();\n this.onTabSelect(tab);\n break;\n }\n case KeyCode.TAB: {\n this.onTabTab();\n break;\n }\n default: {\n break;\n }\n }\n }\n\n protected onMoreButtonFocus(): void {\n const index = this.listTabs().findIndex(\n (el) => el._isActive() && !el.isHidden()\n );\n if (index < 0) return;\n this.openDropdown();\n this.moreButton().el.nativeElement.blur();\n this.focusOnDropdownTab(index);\n }\n\n /**\n * Handles right arrow key navigation.\n * @param index Current tab index.\n */\n private onTabKeydownArrowRight(index: number): void {\n if (this.isMobileBreakpoint()) {\n this.shiftTabs(ShiftDirection.NEXT);\n if (index === this.getTabsCount() - 1) {\n return;\n }\n }\n if (index === this.getTabsCount() - 1 && !this.isMobileBreakpoint()) {\n this.focusOnFirstTab();\n } else {\n this.focusOnNextTab(index);\n }\n }\n\n /**\n * Handles left arrow key navigation.\n * @param index Current tab index.\n */\n private onTabKeydownArrowLeft(index: number): void {\n if (this.isMobileBreakpoint()) {\n this.shiftTabs(ShiftDirection.PREVIOUS);\n if (index === 0) {\n return;\n }\n }\n\n if (index === 0 && !this.isMobileBreakpoint()) {\n this.focusOnLastTab();\n } else {\n this.focusOnPrevTab(index);\n }\n }\n\n /**\n * Focuses the first tab in the list.\n */\n private onTabKeydownHome(): void {\n this.focusOnFirstTab();\n }\n\n /**\n * Focuses the last tab in the list.\n */\n private onTabKeydownEnd(): void {\n this.focusOnLastTab();\n }\n\n private onTabTab(): void {\n this.closeDropdown();\n }\n\n private getCurrentTabIndex(tab: EclTabComponent): number {\n const index = this.getTabsAsArray().indexOf(tab)\n return index !== -1 ? index : this.listTabs().indexOf(tab);\n }\n\n private shiftTabs(dir: string): void {\n const newIndex = this.getShifIndex(dir, this.index());\n this.index.set(newIndex);\n\n this.isScrollPrevBtnShow.set(newIndex >= 1);\n this.isScrollNextBtnShow.set(newIndex < this.getTabsCount() - 1);\n\n const leftMargin = newIndex === 0 ? 0 : this.btnPrev().el.nativeElement.getBoundingClientRect().width + 13;\n\n let newOffset = 0;\n if (this.isRtl) {\n newOffset = Math.ceil(\n this.tabsList().nativeElement.offsetWidth -\n this.getTabsAsArray()[newIndex].hostElement.offsetLeft -\n this.getTabsAsArray()[newIndex].hostElement.offsetWidth -\n leftMargin,\n );\n } else {\n newOffset = Math.ceil(this.getTabsAsArray()[newIndex]?.hostElement.offsetLeft - leftMargin);\n }\n\n const maxScroll = Math.ceil(this.getTabsListWidth() - this.el.nativeElement.getBoundingClientRect().width);\n\n if (newOffset > maxScroll) {\n this.isScrollNextBtnShow.set(false);\n newOffset = maxScroll;\n }\n\n if (this.isRtl) {\n this.styleTransform.set(`translate3d(${newOffset}px, 0px, 0px)`);\n } else {\n this.styleTransform.set(`translate3d(-${newOffset}px, 0px, 0px)`);\n }\n }\n\n private getShifIndex(dir: string, index: number): number {\n if (dir === ShiftDirection.NEXT) {\n if (index === this.getTabsCount() - 1 && !this.isMobileBreakpoint() ) {\n return 0;\n } else {\n return index + 1;\n }\n } else {\n if (index === 0 && !this.isMobileBreakpoint()) {\n return this.getTabsCount() - 1;\n } else {\n return index - 1;\n }\n }\n }\n\n private createSecondListForDropdown(): void {\n const newList: EclTabComponent[] = [];\n this.tabs().forEach((tab) => {\n // Shallow-copying a tab would share the original's `isHidden`/`_isActive`\n // signal references, so writes to a dropdown clone would mutate the real tab\n // (corrupting the main-bar hidden state, the \"More\" count, and keyboard focus).\n // Build the clone with its own independent writable signals instead. A plain\n // `signal` is used (not `model`) because `model()` may only be called in a class\n // field initializer, and the clone only needs read/`set` access.\n const newTab = {\n ...tab,\n isHidden: signal(true),\n _isActive: signal(tab.isActive()),\n } as unknown as EclTabComponent;\n newList.push(newTab);\n });\n this.listTabs.set(newList);\n }\n\n private getTabsAsArray(): EclTabComponent[] {\n return Array.from(this.tabs());\n }\n\n private getTabsCount(): number {\n return this.tabs().length;\n }\n\n private closeDropdown(): void {\n this.isDropdownExpanded.set(false);\n }\n\n private openDropdown(): void {\n this.isDropdownExpanded.set(true);\n }\n\n private observeTabsChanges(): void {\n this.tabsChanges$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.onTabsChanges.bind(this));\n }\n\n private onTabsChanges(): void {\n this.diff = this.differ.diff(this.tabs());\n\n if (!this.diff) {\n this.tabs().forEach((tab) => {\n this.connectTabEvents(tab);\n });\n } else {\n this.diff.forEachAddedItem((change) => {\n this.connectTabEvents(change.item);\n });\n\n this.diff.forEachRemovedItem((change) => {\n this.disconnectTabEvents(change.item);\n });\n }\n this.createSecondListForDropdown();\n }\n\n private connectTabEvents(tab: EclTabComponent): void {\n if (this.tabSubscriptions.has(tab)) {\n return;\n }\n const subscriptions: OutputRefSubscription[] = [\n tab.selectTab.subscribe(() => {\n this.onTabSelect(tab);\n }),\n tab.keydownTab.subscribe((event) => {\n this.onTabKeydown(event, tab);\n }),\n ];\n this.tabSubscriptions.set(tab, subscriptions);\n }\n\n private focusOnNextTab(index: number): void {\n if (this.getTabsAsArray()[index + 1].isHidden()) {\n this.openDropdown();\n this.focusOnDropdownTab(index + 1);\n } else {\n this.closeDropdown();\n this.getTabsAsArray()[index + 1].onFocus();\n }\n }\n\n private focusOnFirstTab(): void {\n this.closeDropdown();\n this.getFirstTabFromArray().onFocus();\n }\n\n private focusOnLastTab(): void {\n if (!this.getLastTabFromArray().isHidden()) {\n this.getLastTabFromArray().onFocus();\n } else {\n this.openDropdown();\n this.focusOnDropdownTab(this.getTabsCount() - 1);\n }\n }\n\n private focusOnPrevTab(index: number): void {\n if (!this.listTabs()[index - 1].isHidden()) {\n this.focusOnDropdownTab(index - 1);\n } else {\n this.closeDropdown();\n this.getTabsAsArray()[index - 1].onFocus();\n }\n }\n\n private focusOnDropdownTab(index: number): void {\n this.dropdownList().nativeElement.children[index].firstChild.focus();\n }\n\n private getLastTabFromArray(): EclTabComponent {\n return this.getTabsAsArray()[this.getTabsAsArray().length - 1];\n }\n\n private getFirstTabFromArray(): EclTabComponent {\n return this.getTabsAsArray()[0];\n }\n\n private disconnectTabEvents(tab: EclTabComponent): void {\n const subscriptions = this.tabSubscriptions.get(tab);\n if (subscriptions) {\n subscriptions.forEach((subscription) => subscription.unsubscribe());\n this.tabSubscriptions.delete(tab);\n }\n }\n\n private deactivateAllTabs(tabs: EclTabComponent[], listTabs: EclTabComponent[]): void {\n tabs.forEach((it) => {\n it._isActive.set(false);\n });\n\n listTabs.forEach((it) => {\n it._isActive.set(false);\n });\n }\n\n private activateTab(tab: EclTabComponent): void {\n tab._isActive.set(true);\n }\n\n private sendTabSelectEvent(tab: EclTabComponent): void {\n this.tabSelect.emit(new EclTabSelectEvent(tab));\n }\n\n private observeBreakpointChanges(): void {\n this.cdkBreakpointObserver\n .observe(['(max-width: 480px)'])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((result) => {\n this.isMobileBreakpoint.set(result.matches);\n });\n }\n\n private handleResize(): void {\n this.closeDropdown();\n if (this.isMobileBreakpoint()) {\n this.handleMobile();\n return;\n }\n\n this.styleTransform.set('translate3d(0px, 0px, 0px)');\n this.index.set(0);\n this.isScrollNextBtnShow.set(false);\n this.isScrollPrevBtnShow.set(false);\n\n // Reset list width to auto for measurement (direct DOM, same as ECL)\n this.tabsList().nativeElement.style.width = 'auto';\n\n // Temporarily show the more button to get its actual width\n this.moreItem().nativeElement.classList.remove('ecl-tabs__item--hidden');\n this.moreButton().el.nativeElement.classList.remove('ecl-tabs__toggle--hidden');\n const moreButtonWidth = this.moreButton().el.nativeElement.getBoundingClientRect().width;\n this.moreItem().nativeElement.classList.add('ecl-tabs__item--hidden');\n this.moreButton().el.nativeElement.classList.add('ecl-tabs__toggle--hidden');\n\n const hiddenItems: number[] = [];\n const listWidth = this.getTabsListWidth();\n\n // Measure all items first to check if they fit without the button\n this.tabs().forEach((item) => {\n item.isHidden.set(false);\n item.hostElement.classList.remove('ecl-tabs__item--hidden');\n });\n const itemWidths = this.tabs().map((item) => {\n const itemMargin = parseFloat(getComputedStyle(item.hostElement).marginInlineEnd) || 0;\n return item.hostElement.getBoundingClientRect().width + itemMargin;\n });\n const totalWidth = itemWidths.reduce((sum, w) => sum + w, 0);\n\n if (totalWidth > listWidth) {\n // Reserve space for the more button and hide items that don't fit\n this.tabs().forEach((item) => {\n item.isHidden.set(true);\n item.hostElement.classList.add('ecl-tabs__item--hidden');\n });\n let stopWidth = moreButtonWidth;\n this.tabs().forEach((item, i) => {\n item.isHidden.set(false);\n item.hostElement.classList.remove('ecl-tabs__item--hidden');\n if (listWidth >= stopWidth + itemWidths[i] && !hiddenItems.includes(i - 1)) {\n stopWidth += itemWidths[i];\n } else {\n item.isHidden.set(true);\n item.hostElement.classList.add('ecl-tabs__item--hidden');\n if (item._isActive()) {\n this.listTabs()[i]._isActive.set(true);\n }\n hiddenItems.push(i);\n }\n });\n }\n\n // Toggle the visibility of More button and items in dropdown\n if (!hiddenItems.length) {\n this.moreItem().nativeElement.classList.add('ecl-tabs__item--hidden');\n this.moreButton().el.nativeElement.classList.add('ecl-tabs__toggle--hidden');\n this.setActiveItemForMainTabs();\n this.hideAllDropdownTabs();\n } else {\n this.moreItem().nativeElement.classList.remove('ecl-tabs__item--hidden');\n this.moreButton().el.nativeElement.classList.remove('ecl-tabs__toggle--hidden');\n this.setHiddenItemsForDropdownTabs(hiddenItems);\n }\n this.cd.markForCheck();\n }\n\n private hideAllDropdownTabs(): void {\n this.listTabs().forEach(item => item.isHidden.set(true));\n }\n\n private setActiveItemForMainTabs(): void {\n this.listTabs().forEach((item, index) => {\n if (item._isActive()) {\n setTimeout(() => this.tabs()[index]._isActive.set(true));\n }\n });\n this.cd.markForCheck();\n }\n\n private getTabsListWidth(): number {\n return this.tabsList().nativeElement.getBoundingClientRect().width;\n }\n\n private setHiddenItemsForDropdownTabs(hiddenItems: number[]): void {\n this.listTabs().forEach((item, index) => {\n if (hiddenItems.includes(index)) {\n item.isHidden.set(false);\n } else {\n item.isHidden.set(true);\n }\n });\n }\n\n private handleMobile(): void {\n this.isScrollPrevBtnShow.set(false);\n this.isScrollNextBtnShow.set(true);\n this.setAllTabsVisible();\n\n // Hide the more item and button (direct DOM, same as ECL)\n this.moreItem().nativeElement.classList.add('ecl-tabs__item--hidden');\n this.moreButton().el.nativeElement.classList.add('ecl-tabs__toggle--hidden');\n\n // Reset to auto so scrollWidth reflects the natural content width\n this.tabsList().nativeElement.style.width = 'auto';\n // Remove hidden class directly from DOM elements\n this.tabs().forEach((item) => {\n item.hostElement.classList.remove('ecl-tabs__item--hidden');\n });\n // Use scrollWidth to also include item margins\n this.tabsList().nativeElement.style.width = `${this.tabsList().nativeElement.scrollWidth}px`;\n }\n\n private setAllTabsVisible(): void {\n this.tabs().forEach((item) => {\n item.isHidden.set(false);\n });\n }\n\n private handleRtlChangeState(): void {\n const isRtlOld = this.isRtl;\n this.eclRtlService.currentRtlState$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((rtlState) => {\n setTimeout(() => {\n this.isRtl = rtlState;\n if (this.isMobileBreakpoint() && this.hasRtlChanged(isRtlOld)) {\n this.handleRtlChange();\n }\n });\n });\n }\n\n private hasRtlChanged(isRtlOld: boolean): boolean {\n return isRtlOld !== this.isRtl;\n }\n\n private handleRtlChange(): void {\n this.handleMobile();\n this.styleTransform.set('translate3d(0px, 0px, 0px)');\n this.index.set(0);\n }\n\n private observeElementSizeChanges(): void {\n const resizeObserver = new ResizeObserver(() => {\n setTimeout(() => {\n this.handleResize();\n }, this.TIMEOUT_INTERVAL);\n });\n resizeObserver.observe(this.tabsList().nativeElement);\n this.destroyRef.onDestroy(() => resizeObserver.disconnect());\n }\n}\n","<div class=\"ecl-tabs__container\" [class.ecl-tabs__container--right]=\"isScrollNextBtnShow()\"\n [class.ecl-tabs__container--left]=\"isScrollPrevBtnShow()\">\n <div class=\"ecl-tabs__list\" role=\"tablist\" #tabsList\n [style.transform]=\"styleTransform()\" [style.transition-duration]=\"transitionDuration()\">\n <ng-content select=\"[eclTab]\"></ng-content>\n <div class=\"ecl-tabs__item ecl-tabs__item--more\" #moreItem>\n @if (listTabs().length > 0) {\n <div class=\"ecl-tabs__dropdown\" [class.ecl-tabs__dropdown--show]=\"isDropdownExpanded()\">\n <div class=\"ecl-tabs__dropdown-list\" #dropdownList>\n @for (tab of listTabs(); track tab.finalId(); let i = $index) {\n <div eclTab [isActive]=\"tab._isActive()\" [isHidden]=\"tab.isHidden()\" (click)=\"onTabSelect(tab)\"\n (keydown)=\"onTabKeydown($event, tab)\">\n <ecl-tab-label>{{ getTabLabel(i) }}</ecl-tab-label>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n <button #moreButton eclButton class=\"ecl-tabs__toggle\" variant=\"tertiary\" [tabindex]=\"customTabIndex()\"\n [attr.aria-expanded]=\"isDropdownExpanded()\" [class.ecl-tabs__toggle--active]=\"isMoreButtonActive()\"\n (click)=\"onDropdownToggle()\" (focus)=\"onMoreButtonFocus()\">\n <span eclButtonLabel>\n {{ 'ecl.common.MORE' | translate }}\n ({{ hiddenTabsCount() }})\n </span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-180\" size=\"fluid\"></ecl-icon>\n </button>\n</div>\n\n<div class=\"ecl-tabs__controls\">\n <button #btnPrev eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__prev\"\n [style.display]=\"isScrollPrevBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollPrev()\">\n <span eclButtonLabel>{{ 'ecl.common.PREVIOUS' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-270\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n <button #btnNext eclButton variant=\"tertiary\" isIconOnly class=\"ecl-tabs__next\"\n [style.display]=\"isScrollNextBtnShow() ? 'flex' : 'none'\" (click)=\"onScrollNext()\">\n <span eclButtonLabel>{{ 'ecl.common.NEXT' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" transform=\"rotate-90\" size=\"s\" class=\"\"> </ecl-icon>\n </button>\n</div>\n\n@for (tab of tabs(); track tab.finalId()) {\n@if (tab._isActive()) {\n<div id=\"{{tab.finalId()}}-tabpanel\" role=\"tabpanel\" aria-labelledby=\"{{tab.finalId()}}-link\" class=\"{{ bodyClass() }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate()\"></ng-container>\n</div>\n}\n}\n@for (tab of listTabs(); track tab.finalId()) {\n@if (tab._isActive()) {\n<div id=\"{{tab.finalId()}}-tabpanel\" role=\"tabpanel\" aria-labelledby=\"{{tab.finalId()}}-link\" class=\"{{ bodyClass() }}\">\n <ng-container *ngTemplateOutlet=\"tab.contentTemplate()\"></ng-container>\n</div>\n}\n}","import { EclTabLabelComponent } from './ecl-tab-label.component';\nimport { EclTabComponent } from './ecl-tab.component';\nimport { EclTabsComponent } from './ecl-tabs.component';\n\nexport * from './ecl-tabs.component';\nexport * from './ecl-tab.component';\nexport * from './ecl-tab-label.component';\nexport * from './models/ecl-tab.model';\nexport * from './events/ecl-tab-select.event';\n\nexport const EUI_ECL_TABS = [\n EclTabsComponent, EclTabComponent, EclTabLabelComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-tag.mjs","sources":["../../components/ecl-tag/events/ecl-tag-remove.event.ts","../../components/ecl-tag/ecl-tag.component.ts","../../components/ecl-tag/ecl-tag.component.html","../../components/ecl-tag/ecl-tag-set.directive.ts","../../components/ecl-tag/ecl-tag-icon.directive.ts","../../components/ecl-tag/index.ts","../../components/ecl-tag/eui-ecl-components-ecl-tag.ts"],"sourcesContent":["import { EclBaseEvent } from '@eui/ecl/core';\n\n/**\n * Event emitted when a tag is removed.\n */\nexport class EclTagRemoveEvent extends EclBaseEvent {}\n","import {\n Component,\n booleanAttribute,\n ElementRef,\n afterNextRender,\n OnDestroy,\n inject,\n output,\n input,\n computed,\n signal,\n} from '@angular/core';\nimport { TitleCasePipe } from '@angular/common';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { Subject, fromEvent, takeUntil } from 'rxjs';\nimport { KeyCode } from '@eui/ecl/core';\nimport { EclTagRemoveEvent } from './events/ecl-tag-remove.event';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n@Component({\n selector: 'ecl-tag, [eclTag]',\n templateUrl: './ecl-tag.component.html',\n imports: [...EUI_ECL_ICON, TitleCasePipe],\n host: {\n '[style.display]': 'isVisible() ? null : \"none\"',\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTagComponent extends ECLBaseDirective implements OnDestroy {\n /**\n * Defines the variant of the tag.\n * Currently only 'removable' is supported.\n */\n readonly variant = input<'removable'>(undefined);\n\n /**\n * Whether the tag content should be allowed to wrap onto multiple lines.\n * Set to false to force single-line display (adds `ecl-tag--nowrap` class).\n * Defaults to true.\n */\n readonly isWrapped = input(true, { transform: booleanAttribute });\n\n /**\n * Event emitted when the tag is removed.\n * Can be prevented by calling `preventDefault()` on the emitted event.\n */\n readonly remove = output<EclTagRemoveEvent>();\n\n readonly isVisible = signal(true);\n\n readonly cssClasses = computed(() => {\n const variant = this.variant();\n return [\n super.getCssClasses('ecl-tag'),\n variant ? `ecl-tag--${variant}` : '',\n this.isWrapped() ? '' : 'ecl-tag--nowrap',\n ].join(' ').trim();\n });\n title = 'dismiss';\n private el = inject(ElementRef);\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor() {\n super();\n afterNextRender(() => {\n this.connectEvents();\n });\n }\n\n /**\n * Whether the tag is removable (based on the `variant` input).\n */\n get isRemovable(): boolean {\n return this.variant() == 'removable';\n }\n\n /**\n * Lifecycle hook that cleans up subscriptions when the component is destroyed.\n */\n ngOnDestroy(): void {\n this.destroy$.next(null);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Called when the tag’s remove button is clicked (or enter key pressed).\n * Emits the `remove` event. If not prevented, the tag is hidden.\n */\n onRemoveClick(): void {\n const event = new EclTagRemoveEvent();\n this.remove.emit(event);\n\n if (!event.defaultPrevented) {\n this.isVisible.set(false);\n }\n }\n\n private connectEvents(): void {\n fromEvent(this.el.nativeElement, 'keydown')\n .pipe(takeUntil(this.destroy$))\n .subscribe((e: KeyboardEvent) => {\n if (this.isRemovable && e.key === KeyCode.ENTER) {\n this.onRemoveClick();\n }\n });\n }\n}\n","<ng-content></ng-content>\n@if(isRemovable) {\n <span class=\"ecl-tag__icon\" (click)=\"onRemoveClick()\">\n <ecl-icon icon=\"close-outline\" class=\"ecl-tag__icon-close\" [title]=\"title | titlecase\"></ecl-icon>\n</span>\n}\n","import { Directive, computed } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive to style a container as a set of tags.\n * Adds the `ecl-tag-set` class to the host element.\n */\n@Directive({\n selector: '[eclTagSet]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTagSetDirective extends ECLBaseDirective {\n /**\n * CSS classes applied to the host element.\n * Adds `ecl-tag-set` to define the layout for a group of tags.\n */\n protected readonly cssClasses = computed<string>(() => super.getCssClasses('ecl-tag-set'));\n}\n\n/**\n * Directive to mark an element as an individual item in a tag set.\n * Adds the `ecl-tag-set__item` class to the host element.\n */\n@Directive({\n selector: '[eclTagSetItem]',\n host: {\n 'class': 'ecl-tag-set__item',\n },\n})\nexport class EclTagSetItemDirective extends ECLBaseDirective {}\n","import { Directive, computed } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive to apply external icon styling inside an ECL tag.\n * Adds specific CSS classes to render an \"external\" icon next to the tag content.\n */\n@Directive({\n selector: '[eclTagIconExternal]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTagIconExternalDirective extends ECLBaseDirective {\n /**\n * CSS classes applied to the host element.\n * Adds `ecl-tag__icon ecl-tag__icon--external` to display the icon correctly.\n */\n protected readonly cssClasses = computed<string>(() => super.getCssClasses('ecl-tag__icon ecl-tag__icon--external'));\n}\n","import { EclTagComponent } from './ecl-tag.component';\nimport { EclTagSetDirective, EclTagSetItemDirective } from './ecl-tag-set.directive';\nimport { EclTagIconExternalDirective } from './ecl-tag-icon.directive';\n\nexport * from './ecl-tag.component';\nexport * from './ecl-tag-set.directive';\nexport * from './ecl-tag-icon.directive';\nexport * from './events/ecl-tag-remove.event';\n\nexport const EUI_ECL_TAG = [\n EclTagComponent, EclTagSetDirective, EclTagSetItemDirective, EclTagIconExternalDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eui-ecl-components-ecl-tag.mjs","sources":["../../components/ecl-tag/events/ecl-tag-remove.event.ts","../../components/ecl-tag/ecl-tag.component.ts","../../components/ecl-tag/ecl-tag.component.html","../../components/ecl-tag/ecl-tag-set.directive.ts","../../components/ecl-tag/ecl-tag-icon.directive.ts","../../components/ecl-tag/index.ts","../../components/ecl-tag/eui-ecl-components-ecl-tag.ts"],"sourcesContent":["import { EclBaseEvent } from '@eui/ecl/core';\n\n/**\n * Event emitted when a tag is removed.\n */\nexport class EclTagRemoveEvent extends EclBaseEvent {}\n","import {\n Component,\n booleanAttribute,\n ElementRef,\n afterNextRender,\n OnDestroy,\n inject,\n output,\n input,\n computed,\n signal,\n} from '@angular/core';\nimport { TitleCasePipe } from '@angular/common';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { Subject, fromEvent, takeUntil } from 'rxjs';\nimport { KeyCode } from '@eui/ecl/core';\nimport { EclTagRemoveEvent } from './events/ecl-tag-remove.event';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n@Component({\n selector: 'ecl-tag, [eclTag]',\n templateUrl: './ecl-tag.component.html',\n imports: [...EUI_ECL_ICON, TitleCasePipe],\n host: {\n '[style.display]': 'isVisible() ? null : \"none\"',\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTagComponent extends ECLBaseDirective implements OnDestroy {\n /**\n * Defines the variant of the tag.\n * Currently only 'removable' is supported.\n */\n readonly variant = input<'removable'>(undefined);\n\n /**\n * Whether the tag content should be allowed to wrap onto multiple lines.\n * Set to false to force single-line display (adds `ecl-tag--nowrap` class).\n * Defaults to true.\n */\n readonly isWrapped = input(true, { transform: booleanAttribute });\n\n /**\n * Event emitted when the tag is removed.\n * Can be prevented by calling `preventDefault()` on the emitted event.\n */\n readonly remove = output<EclTagRemoveEvent>();\n\n readonly isVisible = signal(true);\n\n readonly cssClasses = computed(() => {\n const variant = this.variant();\n return [\n super.getCssClasses('ecl-tag'),\n variant ? `ecl-tag--${variant}` : '',\n this.isWrapped() ? '' : 'ecl-tag--nowrap',\n ].join(' ').trim();\n });\n title = 'dismiss';\n private el = inject(ElementRef);\n private destroy$: Subject<boolean> = new Subject<boolean>();\n\n constructor() {\n super();\n afterNextRender(() => {\n this.connectEvents();\n });\n }\n\n /**\n * Whether the tag is removable (based on the `variant` input).\n */\n get isRemovable(): boolean {\n return this.variant() == 'removable';\n }\n\n /**\n * Lifecycle hook that cleans up subscriptions when the component is destroyed.\n */\n ngOnDestroy(): void {\n this.destroy$.next(null);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Called when the tag’s remove button is clicked (or enter key pressed).\n * Emits the `remove` event. If not prevented, the tag is hidden.\n */\n onRemoveClick(): void {\n const event = new EclTagRemoveEvent();\n this.remove.emit(event);\n\n if (!event.defaultPrevented) {\n this.isVisible.set(false);\n }\n }\n\n private connectEvents(): void {\n fromEvent(this.el.nativeElement, 'keydown')\n .pipe(takeUntil(this.destroy$))\n .subscribe((e: KeyboardEvent) => {\n if (this.isRemovable && e.key === KeyCode.ENTER) {\n this.onRemoveClick();\n }\n });\n }\n}\n","<ng-content></ng-content>\n@if(isRemovable) {\n <span class=\"ecl-tag__icon\" (click)=\"onRemoveClick()\">\n <ecl-icon icon=\"close-outline\" class=\"ecl-tag__icon-close\" [title]=\"title | titlecase\"></ecl-icon>\n</span>\n}\n","import { Directive, computed } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive to style a container as a set of tags.\n * Adds the `ecl-tag-set` class to the host element.\n */\n@Directive({\n selector: '[eclTagSet]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTagSetDirective extends ECLBaseDirective {\n /**\n * CSS classes applied to the host element.\n * Adds `ecl-tag-set` to define the layout for a group of tags.\n */\n protected readonly cssClasses = computed<string>(() => super.getCssClasses('ecl-tag-set'));\n}\n\n/**\n * Directive to mark an element as an individual item in a tag set.\n * Adds the `ecl-tag-set__item` class to the host element.\n */\n@Directive({\n selector: '[eclTagSetItem]',\n host: {\n 'class': 'ecl-tag-set__item',\n },\n})\nexport class EclTagSetItemDirective extends ECLBaseDirective {}\n","import { Directive, computed } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive to apply external icon styling inside an ECL tag.\n * Adds specific CSS classes to render an \"external\" icon next to the tag content.\n */\n@Directive({\n selector: '[eclTagIconExternal]',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTagIconExternalDirective extends ECLBaseDirective {\n /**\n * CSS classes applied to the host element.\n * Adds `ecl-tag__icon ecl-tag__icon--external` to display the icon correctly.\n */\n protected readonly cssClasses = computed<string>(() => super.getCssClasses('ecl-tag__icon ecl-tag__icon--external'));\n}\n","import { EclTagComponent } from './ecl-tag.component';\nimport { EclTagSetDirective, EclTagSetItemDirective } from './ecl-tag-set.directive';\nimport { EclTagIconExternalDirective } from './ecl-tag-icon.directive';\n\nexport * from './ecl-tag.component';\nexport * from './ecl-tag-set.directive';\nexport * from './ecl-tag-icon.directive';\nexport * from './events/ecl-tag-remove.event';\n\nexport const EUI_ECL_TAG = [\n EclTagComponent, EclTagSetDirective, EclTagSetItemDirective, EclTagIconExternalDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAEA;;AAEG;AACG,MAAO,iBAAkB,SAAQ,YAAY,CAAA;AAAG;;ACuBhD,MAAO,eAAgB,SAAQ,gBAAgB,CAAA;AAkCjD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AAlCX;;;AAGG;QACM,IAAA,CAAA,OAAO,GAAG,KAAK,CAAc,SAAS;oFAAC;AAEhD;;;;AAIG;QACM,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,IAAI,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEjE;;;AAGG;QACM,IAAA,CAAA,MAAM,GAAG,MAAM,EAAqB;QAEpC,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,IAAI;sFAAC;AAExB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;YAC9B,OAAO;AACH,gBAAA,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;gBAC9B,OAAO,GAAG,CAAA,SAAA,EAAY,OAAO,CAAA,CAAE,GAAG,EAAE;gBACpC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,iBAAiB;AAC5C,aAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;QACtB,CAAC;uFAAC;QACF,IAAA,CAAA,KAAK,GAAG,SAAS;AACT,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACvB,QAAA,IAAA,CAAA,QAAQ,GAAqB,IAAI,OAAO,EAAW;QAIvD,eAAe,CAAC,MAAK;YACjB,IAAI,CAAC,aAAa,EAAE;AACxB,QAAA,CAAC,CAAC;IACN;AAEA;;AAEG;AACH,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,WAAW;IACxC;AAEA;;AAEG;IACH,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;IAC/B;AAEA;;;AAGG;IACH,aAAa,GAAA;AACT,QAAA,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAE;AACrC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAEvB,QAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B;IACJ;IAEQ,aAAa,GAAA;QACjB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS;AACrC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC,CAAC,CAAgB,KAAI;AAC5B,YAAA,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,EAAE;gBAC7C,IAAI,CAAC,aAAa,EAAE;YACxB;AACJ,QAAA,CAAC,CAAC;IACV;8GA7ES,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,+BAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5B5B,2OAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDgB+B,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAM/B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAT3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,WAEpB,CAAC,GAAG,YAAY,EAAE,aAAa,CAAC,EAAA,IAAA,EACnC;AACF,wBAAA,iBAAiB,EAAE,6BAA6B;AAChD,wBAAA,SAAS,EAAE,cAAc;AAC5B,qBAAA,EAAA,QAAA,EAAA,2OAAA,EAAA;;;AEvBL;;;AAGG;AAOG,MAAO,kBAAmB,SAAQ,gBAAgB,CAAA;AANxD,IAAA,WAAA,GAAA;;AAOI;;;AAGG;QACgB,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAAM,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC;uFAAC;AAC7F,IAAA;8GANY,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,cAAc;AAC5B,qBAAA;AACJ,iBAAA;;AASD;;;AAGG;AAOG,MAAO,sBAAuB,SAAQ,gBAAgB,CAAA;8GAA/C,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,IAAI,EAAE;AACF,wBAAA,OAAO,EAAE,mBAAmB;AAC/B,qBAAA;AACJ,iBAAA;;;AC3BD;;;AAGG;AAOG,MAAO,2BAA4B,SAAQ,gBAAgB,CAAA;AANjE,IAAA,WAAA,GAAA;;AAOI;;;AAGG;QACgB,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAAM,KAAK,CAAC,aAAa,CAAC,uCAAuC,CAAC;uFAAC;AACvH,IAAA;8GANY,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,cAAc;AAC5B,qBAAA;AACJ,iBAAA;;;ACHM,MAAM,WAAW,GAAG;AACvB,IAAA,eAAe,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,2BAA2B;;;ACV5F;;AAEG;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-text-area.mjs","sources":["../../components/ecl-text-area/ecl-text-area.directive.ts","../../components/ecl-text-area/index.ts","../../components/ecl-text-area/eui-ecl-components-ecl-text-area.ts"],"sourcesContent":["import { Directive, booleanAttribute, computed, inject, input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive to be used with <textarea> HTML component. Applies custom styles and formatting, that comply with the ECL standards.\n */\n@Directive({\n selector: 'textarea[eclTextArea]',\n host: {\n '[class]': 'cssClasses()',\n '[class.ecl-text-area--invalid]': 'invalidState',\n },\n})\nexport class EclTextAreaDirective extends ECLBaseDirective {\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n /**\n * Width of the component, can be 's', 'm' or 'l'. Default value is 'm'.\n */\n readonly eclSize = input('m');\n readonly isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * Adds specific classes for the component.\n */\n readonly cssClasses = computed(() => {\n const eclSize = this.eclSize();\n return [super.getCssClasses('ecl-text-area'), eclSize ? `ecl-text-area--${eclSize}` : ''].join(' ').trim();\n });\n\n /**\n * Adds 'ecl-text-area--invalid' class, depending on the invalid status of the component.\n */\n get invalidState(): boolean {\n if (this.ngControl) {\n return this.ngControl.status === 'INVALID' && this.ngControl.touched;\n } else {\n return this.isInvalid();\n }\n }\n}\n","import { EclTextAreaDirective } from './ecl-text-area.directive';\n\nexport * from './ecl-text-area.directive';\n\nexport const EUI_ECL_TEXT_AREA = [\n EclTextAreaDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAIA;;AAEG;AAQG,MAAO,oBAAqB,SAAQ,gBAAgB,CAAA;AAP1D,IAAA,WAAA,GAAA;;AAQqB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAE9E;;AAEG;QACM,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,GAAG;oFAAC;QACpB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAElE;;AAEG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,CAAA,eAAA,EAAkB,OAAO,CAAA,CAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;QAC9G,CAAC;uFAAC;AAYL,IAAA;AAVG;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;QACxE;aAAO;AACH,YAAA,OAAO,IAAI,CAAC,SAAS,EAAE;QAC3B;IACJ;8GA1BS,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,cAAc;AACzB,wBAAA,gCAAgC,EAAE,cAAc;AACnD,qBAAA;AACJ,iBAAA;;;ACTM,MAAM,iBAAiB,GAAG;IAC/B,oBAAoB;;;ACLtB;;AAEG;;;;"}
1
+ {"version":3,"file":"eui-ecl-components-ecl-text-area.mjs","sources":["../../components/ecl-text-area/ecl-text-area.directive.ts","../../components/ecl-text-area/index.ts","../../components/ecl-text-area/eui-ecl-components-ecl-text-area.ts"],"sourcesContent":["import { Directive, booleanAttribute, computed, inject, input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive to be used with <textarea> HTML component. Applies custom styles and formatting, that comply with the ECL standards.\n */\n@Directive({\n selector: 'textarea[eclTextArea]',\n host: {\n '[class]': 'cssClasses()',\n '[class.ecl-text-area--invalid]': 'invalidState',\n },\n})\nexport class EclTextAreaDirective extends ECLBaseDirective {\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n /**\n * Width of the component, can be 's', 'm' or 'l'. Default value is 'm'.\n */\n readonly eclSize = input('m');\n readonly isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * Adds specific classes for the component.\n */\n readonly cssClasses = computed(() => {\n const eclSize = this.eclSize();\n return [super.getCssClasses('ecl-text-area'), eclSize ? `ecl-text-area--${eclSize}` : ''].join(' ').trim();\n });\n\n /**\n * Adds 'ecl-text-area--invalid' class, depending on the invalid status of the component.\n */\n get invalidState(): boolean {\n if (this.ngControl) {\n return this.ngControl.status === 'INVALID' && this.ngControl.touched;\n } else {\n return this.isInvalid();\n }\n }\n}\n","import { EclTextAreaDirective } from './ecl-text-area.directive';\n\nexport * from './ecl-text-area.directive';\n\nexport const EUI_ECL_TEXT_AREA = [\n EclTextAreaDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAIA;;AAEG;AAQG,MAAO,oBAAqB,SAAQ,gBAAgB,CAAA;AAP1D,IAAA,WAAA,GAAA;;AAQqB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAE9E;;AAEG;QACM,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,GAAG;oFAAC;QACpB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAElE;;AAEG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,CAAA,eAAA,EAAkB,OAAO,CAAA,CAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;QAC9G,CAAC;uFAAC;AAYL,IAAA;AAVG;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;QACxE;aAAO;AACH,YAAA,OAAO,IAAI,CAAC,SAAS,EAAE;QAC3B;IACJ;8GA1BS,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,cAAc;AACzB,wBAAA,gCAAgC,EAAE,cAAc;AACnD,qBAAA;AACJ,iBAAA;;;ACTM,MAAM,iBAAiB,GAAG;IAC/B,oBAAoB;;;ACLtB;;AAEG;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-text-input.mjs","sources":["../../components/ecl-text-input/ecl-text-input.directive.ts","../../components/ecl-text-input/index.ts","../../components/ecl-text-input/eui-ecl-components-ecl-text-input.ts"],"sourcesContent":["import { Directive, booleanAttribute, computed, inject, input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive, to be used with the HTMl element text <input>. Adds ECL compliant styling.\n */\n@Directive({\n selector: 'input[eclTextInput]',\n host: {\n '[attr.type]': 'type()',\n '[class]': 'cssClasses()',\n '[class.ecl-text-input--invalid]': 'invalidState',\n },\n})\nexport class EclTextInputDirective extends ECLBaseDirective {\n /**\n * This directive should be used with the input type 'text'.\n */\n readonly type = input('text');\n\n /**\n * The size of the input width. Can be 's', 'm' or 'l'. Default value is 'm'.\n */\n readonly eclSize = input('m');\n readonly isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * Adds ECL classes for the component.\n */\n readonly cssClasses = computed(() => {\n const eclSize = this.eclSize();\n return [super.getCssClasses('ecl-text-input'), eclSize ? `ecl-text-input--${eclSize}` : ''].join(' ').trim();\n });\n\n protected readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n /**\n * Adds 'ecl-text-input--invalid' class, depending on the invalid status of the component.\n */\n protected get invalidState(): boolean {\n if (this.ngControl) {\n return Boolean(this.ngControl.status === 'INVALID' && this.ngControl.touched);\n } else {\n return this.isInvalid();\n }\n }\n}\n","import { EclTextInputDirective } from './ecl-text-input.directive';\n\nexport * from './ecl-text-input.directive';\n\nexport const EUI_ECL_TEXT_INPUT = [\n EclTextInputDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAIA;;AAEG;AASG,MAAO,qBAAsB,SAAQ,gBAAgB,CAAA;AAR3D,IAAA,WAAA,GAAA;;AASI;;AAEG;QACM,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,MAAM;iFAAC;AAE7B;;AAEG;QACM,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,GAAG;oFAAC;QACpB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAElE;;AAEG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,CAAA,gBAAA,EAAmB,OAAO,CAAA,CAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;QAChH,CAAC;uFAAC;AAEiB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAYnF,IAAA;AAVG;;AAEG;AACH,IAAA,IAAc,YAAY,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACjF;aAAO;AACH,YAAA,OAAO,IAAI,CAAC,SAAS,EAAE;QAC3B;IACJ;8GA/BS,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,cAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,IAAI,EAAE;AACF,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,SAAS,EAAE,cAAc;AACzB,wBAAA,iCAAiC,EAAE,cAAc;AACpD,qBAAA;AACJ,iBAAA;;;ACVM,MAAM,kBAAkB,GAAG;IAChC,qBAAqB;;;ACLvB;;AAEG;;;;"}
1
+ {"version":3,"file":"eui-ecl-components-ecl-text-input.mjs","sources":["../../components/ecl-text-input/ecl-text-input.directive.ts","../../components/ecl-text-input/index.ts","../../components/ecl-text-input/eui-ecl-components-ecl-text-input.ts"],"sourcesContent":["import { Directive, booleanAttribute, computed, inject, input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive, to be used with the HTMl element text <input>. Adds ECL compliant styling.\n */\n@Directive({\n selector: 'input[eclTextInput]',\n host: {\n '[attr.type]': 'type()',\n '[class]': 'cssClasses()',\n '[class.ecl-text-input--invalid]': 'invalidState',\n },\n})\nexport class EclTextInputDirective extends ECLBaseDirective {\n /**\n * This directive should be used with the input type 'text'.\n */\n readonly type = input('text');\n\n /**\n * The size of the input width. Can be 's', 'm' or 'l'. Default value is 'm'.\n */\n readonly eclSize = input('m');\n readonly isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * Adds ECL classes for the component.\n */\n readonly cssClasses = computed(() => {\n const eclSize = this.eclSize();\n return [super.getCssClasses('ecl-text-input'), eclSize ? `ecl-text-input--${eclSize}` : ''].join(' ').trim();\n });\n\n protected readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n /**\n * Adds 'ecl-text-input--invalid' class, depending on the invalid status of the component.\n */\n protected get invalidState(): boolean {\n if (this.ngControl) {\n return Boolean(this.ngControl.status === 'INVALID' && this.ngControl.touched);\n } else {\n return this.isInvalid();\n }\n }\n}\n","import { EclTextInputDirective } from './ecl-text-input.directive';\n\nexport * from './ecl-text-input.directive';\n\nexport const EUI_ECL_TEXT_INPUT = [\n EclTextInputDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAIA;;AAEG;AASG,MAAO,qBAAsB,SAAQ,gBAAgB,CAAA;AAR3D,IAAA,WAAA,GAAA;;AASI;;AAEG;QACM,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,MAAM;iFAAC;AAE7B;;AAEG;QACM,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,GAAG;oFAAC;QACpB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAElE;;AAEG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,CAAA,gBAAA,EAAmB,OAAO,CAAA,CAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;QAChH,CAAC;uFAAC;AAEiB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAYnF,IAAA;AAVG;;AAEG;AACH,IAAA,IAAc,YAAY,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACjF;aAAO;AACH,YAAA,OAAO,IAAI,CAAC,SAAS,EAAE;QAC3B;IACJ;8GA/BS,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,cAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,IAAI,EAAE;AACF,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,SAAS,EAAE,cAAc;AACzB,wBAAA,iCAAiC,EAAE,cAAc;AACpD,qBAAA;AACJ,iBAAA;;;ACVM,MAAM,kBAAkB,GAAG;IAChC,qBAAqB;;;ACLvB;;AAEG;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"eui-ecl-components-ecl-text-media.mjs","sources":["../../components/ecl-text-media/ecl-text-media.component.ts","../../components/ecl-text-media/ecl-text-media.component.html","../../components/ecl-text-media/ecl-text-media-title.directive.ts","../../components/ecl-text-media/index.ts","../../components/ecl-text-media/eui-ecl-components-ecl-text-media.ts"],"sourcesContent":["import { Component, computed, contentChild, effect, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclMediaContainerComponent } from '@eui/ecl/components/ecl-media-container';\n\n/**\n * A media container is used to display media items (video, audio, image or other data)\n * with text and a caption.\n */\n@Component({\n selector: 'article[eclTextMedia]',\n templateUrl: './ecl-text-media.component.html',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTextMediaComponent extends ECLBaseDirective {\n variant = input<'default' | 'primary'>('default');\n\n mediaPosition = input<'left' | 'right'>('right');\n\n private mediaContainer = contentChild(EclMediaContainerComponent);\n\n constructor() {\n super();\n effect(() => {\n const mc = this.mediaContainer();\n if (mc?.hasVideo()) {\n mc.captionPositionOverride.set('hidden');\n }\n });\n }\n\n cssClasses = computed(() => {\n return [super.getCssClasses('ecl-text-media'),\n this.variant() === 'primary' ? 'ecl-text-media--primary' : '',\n this.mediaPosition() === 'left' ? 'ecl-text-media--position-left' : '',\n ].filter(Boolean).join(' ');\n });\n}\n","<div class=\"ecl-text-media__content\">\n <ng-content select=\"div[eclTextMediaMicroTitle]\"></ng-content>\n <ng-content select=\"div[eclTextMediaTitle]\"></ng-content>\n <ng-content select=\"div[eclTextMediaDescription]\"></ng-content>\n <ng-content select=\"a[eclTextMediaLink]\"></ng-content>\n</div>\n<div class=\"ecl-text-media__media\">\n <ng-content select=\"ecl-media-container\"></ng-content>\n</div>","import { Directive, input } from '@angular/core';\n\n/**\n * Applies styles for the micro title element.\n */\n@Directive({\n selector: 'div[eclTextMediaMicroTitle]',\n host: {\n class: 'ecl-text-media__micro-title',\n },\n})\nexport class EclTextMediaMicroTitleDirective {}\n\n/**\n * Applies styles for the title element.\n */\n@Directive({\n selector: 'div[eclTextMediaTitle]',\n host: {\n class: 'ecl-text-media__title',\n },\n})\nexport class EclTextMediaTitleDirective {}\n\n/**\n * Applies styles for the description element.\n */\n@Directive({\n selector: 'div[eclTextMediaDescription]',\n host: {\n class: 'ecl-text-media__description ecl-content-color',\n },\n})\nexport class EclTextMediaDescriptionDirective {}\n\n/**\n * Applies styles for the link element.\n */\n@Directive({\n selector: 'a[eclTextMediaLink]',\n host: {\n class: 'ecl-text-media__link',\n },\n})\nexport class EclTextMediaLinkDirective {}\n\n/**\n * Sets the `--ecl-image-anchor` CSS custom property for an image used\n * within the `ecl-text-media` component.\n *\n * Intended to be used together with `img[eclMediaContainerImage]`\n * from the `ecl-media-container` component.\n */\n@Directive({\n selector: 'img[eclTextMediaImgAnchor]',\n host: {\n '[style.--ecl-image-anchor]': 'anchor()',\n },\n})\nexport class EclTextMediaMediaAnchorDirective {\n readonly anchor = input<'center' | 'top left' | 'bottom right' | '20% 20%'>('center', { alias: \"eclTextMediaImgAnchor\" });\n}\n\n/**\n * Sets custom class for the `ecl-text-media` component, used within eclTextMedia component.\n */\n@Directive({\n selector: 'ecl-media-container[eclTextMediaContainer]',\n host: {\n class: 'ecl-text-media__media_container',\n },\n})\nexport class EclTextMediaContainerDirective {}\n","import { EclTextMediaComponent } from \"./ecl-text-media.component\";\nimport { EclTextMediaMicroTitleDirective, EclTextMediaTitleDirective, EclTextMediaDescriptionDirective, EclTextMediaLinkDirective, EclTextMediaMediaAnchorDirective, EclTextMediaContainerDirective } from \"./ecl-text-media-title.directive\";\n\nexport * from './ecl-text-media.component';\nexport * from './ecl-text-media-title.directive';\n\nexport const EUI_ECL_TEXT_MEDIA = [\n EclTextMediaComponent,\n EclTextMediaMicroTitleDirective,\n EclTextMediaTitleDirective,\n EclTextMediaDescriptionDirective,\n EclTextMediaLinkDirective,\n EclTextMediaMediaAnchorDirective,\n EclTextMediaContainerDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eui-ecl-components-ecl-text-media.mjs","sources":["../../components/ecl-text-media/ecl-text-media.component.ts","../../components/ecl-text-media/ecl-text-media.component.html","../../components/ecl-text-media/ecl-text-media-title.directive.ts","../../components/ecl-text-media/index.ts","../../components/ecl-text-media/eui-ecl-components-ecl-text-media.ts"],"sourcesContent":["import { Component, computed, contentChild, effect, input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclMediaContainerComponent } from '@eui/ecl/components/ecl-media-container';\n\n/**\n * A media container is used to display media items (video, audio, image or other data)\n * with text and a caption.\n */\n@Component({\n selector: 'article[eclTextMedia]',\n templateUrl: './ecl-text-media.component.html',\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclTextMediaComponent extends ECLBaseDirective {\n variant = input<'default' | 'primary'>('default');\n\n mediaPosition = input<'left' | 'right'>('right');\n\n private mediaContainer = contentChild(EclMediaContainerComponent);\n\n constructor() {\n super();\n effect(() => {\n const mc = this.mediaContainer();\n if (mc?.hasVideo()) {\n mc.captionPositionOverride.set('hidden');\n }\n });\n }\n\n cssClasses = computed(() => {\n return [super.getCssClasses('ecl-text-media'),\n this.variant() === 'primary' ? 'ecl-text-media--primary' : '',\n this.mediaPosition() === 'left' ? 'ecl-text-media--position-left' : '',\n ].filter(Boolean).join(' ');\n });\n}\n","<div class=\"ecl-text-media__content\">\n <ng-content select=\"div[eclTextMediaMicroTitle]\"></ng-content>\n <ng-content select=\"div[eclTextMediaTitle]\"></ng-content>\n <ng-content select=\"div[eclTextMediaDescription]\"></ng-content>\n <ng-content select=\"a[eclTextMediaLink]\"></ng-content>\n</div>\n<div class=\"ecl-text-media__media\">\n <ng-content select=\"ecl-media-container\"></ng-content>\n</div>","import { Directive, input } from '@angular/core';\n\n/**\n * Applies styles for the micro title element.\n */\n@Directive({\n selector: 'div[eclTextMediaMicroTitle]',\n host: {\n class: 'ecl-text-media__micro-title',\n },\n})\nexport class EclTextMediaMicroTitleDirective {}\n\n/**\n * Applies styles for the title element.\n */\n@Directive({\n selector: 'div[eclTextMediaTitle]',\n host: {\n class: 'ecl-text-media__title',\n },\n})\nexport class EclTextMediaTitleDirective {}\n\n/**\n * Applies styles for the description element.\n */\n@Directive({\n selector: 'div[eclTextMediaDescription]',\n host: {\n class: 'ecl-text-media__description ecl-content-color',\n },\n})\nexport class EclTextMediaDescriptionDirective {}\n\n/**\n * Applies styles for the link element.\n */\n@Directive({\n selector: 'a[eclTextMediaLink]',\n host: {\n class: 'ecl-text-media__link',\n },\n})\nexport class EclTextMediaLinkDirective {}\n\n/**\n * Sets the `--ecl-image-anchor` CSS custom property for an image used\n * within the `ecl-text-media` component.\n *\n * Intended to be used together with `img[eclMediaContainerImage]`\n * from the `ecl-media-container` component.\n */\n@Directive({\n selector: 'img[eclTextMediaImgAnchor]',\n host: {\n '[style.--ecl-image-anchor]': 'anchor()',\n },\n})\nexport class EclTextMediaMediaAnchorDirective {\n readonly anchor = input<'center' | 'top left' | 'bottom right' | '20% 20%'>('center', { alias: \"eclTextMediaImgAnchor\" });\n}\n\n/**\n * Sets custom class for the `ecl-text-media` component, used within eclTextMedia component.\n */\n@Directive({\n selector: 'ecl-media-container[eclTextMediaContainer]',\n host: {\n class: 'ecl-text-media__media_container',\n },\n})\nexport class EclTextMediaContainerDirective {}\n","import { EclTextMediaComponent } from \"./ecl-text-media.component\";\nimport { EclTextMediaMicroTitleDirective, EclTextMediaTitleDirective, EclTextMediaDescriptionDirective, EclTextMediaLinkDirective, EclTextMediaMediaAnchorDirective, EclTextMediaContainerDirective } from \"./ecl-text-media-title.directive\";\n\nexport * from './ecl-text-media.component';\nexport * from './ecl-text-media-title.directive';\n\nexport const EUI_ECL_TEXT_MEDIA = [\n EclTextMediaComponent,\n EclTextMediaMicroTitleDirective,\n EclTextMediaTitleDirective,\n EclTextMediaDescriptionDirective,\n EclTextMediaLinkDirective,\n EclTextMediaMediaAnchorDirective,\n EclTextMediaContainerDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}