@eui/eds 22.0.0-alpha.22 → 22.0.0-alpha.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/changelog.html +51 -0
- package/docs/components/EdsButton.html +77 -203
- package/docs/components/EdsCalendarDay.html +1 -1
- package/docs/components/EdsCalendarHeader.html +1 -1
- package/docs/components/EdsDatepicker.html +1 -1
- package/docs/components/EdsDialogContainer.html +1 -1
- package/docs/components/EdsFeedbackMessage.html +35 -73
- package/docs/components/EdsFileUpload.html +1 -1
- package/docs/components/EdsFlexLayout.html +1 -1
- package/docs/components/EdsGridLayout.html +1 -1
- package/docs/components/EdsGridLayoutCell.html +1 -1
- package/docs/components/EdsGridLayoutRow.html +1 -1
- package/docs/components/EdsIconState.html +38 -3
- package/docs/components/EdsInputButton.html +0 -57
- package/docs/components/EdsInputCheckbox.html +0 -62
- package/docs/components/EdsInputIcon.html +0 -53
- package/docs/components/EdsInputNumber.html +0 -60
- package/docs/components/EdsInputRadio.html +0 -62
- package/docs/components/EdsInputText.html +0 -62
- package/docs/components/EdsLabel.html +1 -1
- package/docs/components/EdsLanguageSelectorDialog.html +3 -5
- package/docs/components/EdsLink.html +1 -1
- package/docs/components/EdsLoadingIndicator.html +1 -1
- package/docs/components/EdsPaginator.html +1 -1
- package/docs/components/EdsRating.html +66 -57
- package/docs/components/EdsSelect.html +0 -45
- package/docs/components/EdsSnc.html +2 -2
- package/docs/components/EdsTab.html +8 -133
- package/docs/components/EdsTabBody.html +21 -41
- package/docs/components/EdsTabHeader.html +13 -25
- package/docs/components/EdsTabHeaderLabel.html +4 -126
- package/docs/components/EdsTabHeaderLeftContent.html +4 -126
- package/docs/components/EdsTabHeaderRightContent.html +4 -126
- package/docs/components/EdsTabHeaderSublabel.html +4 -126
- package/docs/components/EdsTabs.html +113 -140
- package/docs/components/EdsTextarea.html +0 -62
- package/docs/components/EdsTreeListToolbar.html +1 -1
- package/docs/components/EdsTrend.html +1 -1
- package/docs/directives/EdsColorDirective.html +0 -9
- package/docs/directives/EdsFlexColDirective.html +1 -1
- package/docs/directives/EdsFlexGrowDirective.html +1 -1
- package/docs/directives/EdsFlexNoShrinkDirective.html +1 -1
- package/docs/directives/EdsSizeDirective.html +0 -3
- package/docs/directives/EdsTooltip.html +45 -281
- package/docs/js/search/search_index.js +2 -2
- package/docs/json/EdsButton.md +15 -24
- package/docs/json/EdsFeedbackMessage.md +4 -10
- package/docs/json/EdsIconState.md +2 -1
- package/docs/json/EdsRating.md +2 -0
- package/docs/json/EdsTab.md +1 -1
- package/docs/json/EdsTabs.md +7 -8
- package/docs/json/EdsTooltip.md +3 -3
- package/docs/json/documentation.json +1803 -2031
- package/docs/llms.txt +72 -109
- package/docs/miscellaneous/typealiases.html +179 -16
- package/docs/miscellaneous/variables.html +16 -16
- package/docs/properties.html +1 -1
- package/eds-flex-layout/package.json +4 -0
- package/eds-grid-layout/package.json +4 -0
- package/eds-icon-state/package.json +4 -0
- package/eds-label/package.json +4 -0
- package/eds-link/package.json +4 -0
- package/eds-loading-indicator/package.json +4 -0
- package/eds-snc/package.json +4 -0
- package/eds-trend/package.json +4 -0
- package/fesm2022/eui-eds-eds-alert.mjs +3 -3
- package/fesm2022/eui-eds-eds-alert.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-button.mjs +53 -85
- package/fesm2022/eui-eds-eds-button.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-calendar.mjs +4 -4
- package/fesm2022/eui-eds-eds-calendar.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-datepicker.mjs +2 -2
- package/fesm2022/eui-eds-eds-datepicker.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-dialog.mjs +4 -4
- package/fesm2022/eui-eds-eds-dialog.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-discussion-thread.mjs +3 -3
- package/fesm2022/eui-eds-eds-discussion-thread.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-feedback-message.mjs +28 -42
- package/fesm2022/eui-eds-eds-feedback-message.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-file-upload.mjs +2 -2
- package/fesm2022/eui-eds-eds-file-upload.mjs.map +1 -1
- package/fesm2022/{eui-eds-utilities-eds-flex-layout.mjs → eui-eds-eds-flex-layout.mjs} +1 -1
- package/fesm2022/eui-eds-eds-flex-layout.mjs.map +1 -0
- package/fesm2022/{eui-eds-utilities-eds-grid-layout.mjs → eui-eds-eds-grid-layout.mjs} +1 -1
- package/fesm2022/eui-eds-eds-grid-layout.mjs.map +1 -0
- package/fesm2022/eui-eds-eds-growl.mjs +3 -3
- package/fesm2022/eui-eds-eds-growl.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-icon-state.mjs +56 -0
- package/fesm2022/eui-eds-eds-icon-state.mjs.map +1 -0
- package/fesm2022/eui-eds-eds-input-button.mjs +10 -13
- package/fesm2022/eui-eds-eds-input-button.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-input-checkbox.mjs +6 -17
- package/fesm2022/eui-eds-eds-input-checkbox.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-input-icon.mjs +10 -9
- package/fesm2022/eui-eds-eds-input-icon.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-input-number.mjs +5 -14
- package/fesm2022/eui-eds-eds-input-number.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-input-radio.mjs +6 -17
- package/fesm2022/eui-eds-eds-input-radio.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-input-text.mjs +5 -16
- package/fesm2022/eui-eds-eds-input-text.mjs.map +1 -1
- package/fesm2022/{eui-eds-utilities-eds-label.mjs → eui-eds-eds-label.mjs} +1 -1
- package/fesm2022/eui-eds-eds-label.mjs.map +1 -0
- package/fesm2022/eui-eds-eds-language-selector.mjs +5 -9
- package/fesm2022/eui-eds-eds-language-selector.mjs.map +1 -1
- package/fesm2022/{eui-eds-utilities-eds-link.mjs → eui-eds-eds-link.mjs} +1 -1
- package/fesm2022/eui-eds-eds-link.mjs.map +1 -0
- package/fesm2022/{eui-eds-utilities-eds-loading-indicator.mjs → eui-eds-eds-loading-indicator.mjs} +1 -1
- package/fesm2022/eui-eds-eds-loading-indicator.mjs.map +1 -0
- package/fesm2022/eui-eds-eds-paginator.mjs +2 -2
- package/fesm2022/eui-eds-eds-paginator.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-progress-bar.mjs +3 -3
- package/fesm2022/eui-eds-eds-progress-bar.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-rating.mjs +30 -16
- package/fesm2022/eui-eds-eds-rating.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-select.mjs +10 -33
- package/fesm2022/eui-eds-eds-select.mjs.map +1 -1
- package/fesm2022/{eui-eds-utilities-eds-snc.mjs → eui-eds-eds-snc.mjs} +3 -3
- package/fesm2022/eui-eds-eds-snc.mjs.map +1 -0
- package/fesm2022/eui-eds-eds-tabs.mjs +192 -259
- package/fesm2022/eui-eds-eds-tabs.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-textarea.mjs +5 -16
- package/fesm2022/eui-eds-eds-textarea.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-tooltip.mjs +71 -86
- package/fesm2022/eui-eds-eds-tooltip.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-tree-list.mjs +2 -2
- package/fesm2022/eui-eds-eds-tree-list.mjs.map +1 -1
- package/fesm2022/eui-eds-eds-tree.mjs +2 -2
- package/fesm2022/eui-eds-eds-tree.mjs.map +1 -1
- package/fesm2022/{eui-eds-utilities-eds-trend.mjs → eui-eds-eds-trend.mjs} +1 -1
- package/fesm2022/eui-eds-eds-trend.mjs.map +1 -0
- package/package.json +33 -33
- package/types/eui-eds-eds-button.d.ts +47 -33
- package/types/eui-eds-eds-button.d.ts.map +1 -1
- package/types/eui-eds-eds-feedback-message.d.ts +20 -10
- package/types/eui-eds-eds-feedback-message.d.ts.map +1 -1
- package/types/{eui-eds-utilities-eds-flex-layout.d.ts → eui-eds-eds-flex-layout.d.ts} +1 -1
- package/types/eui-eds-eds-flex-layout.d.ts.map +1 -0
- package/types/{eui-eds-utilities-eds-grid-layout.d.ts → eui-eds-eds-grid-layout.d.ts} +1 -1
- package/types/eui-eds-eds-grid-layout.d.ts.map +1 -0
- package/types/{eui-eds-utilities-eds-icon-state.d.ts → eui-eds-eds-icon-state.d.ts} +8 -3
- package/types/eui-eds-eds-icon-state.d.ts.map +1 -0
- package/types/eui-eds-eds-input-button.d.ts +5 -1
- package/types/eui-eds-eds-input-button.d.ts.map +1 -1
- package/types/eui-eds-eds-input-checkbox.d.ts +0 -4
- package/types/eui-eds-eds-input-checkbox.d.ts.map +1 -1
- package/types/eui-eds-eds-input-icon.d.ts +5 -1
- package/types/eui-eds-eds-input-icon.d.ts.map +1 -1
- package/types/eui-eds-eds-input-number.d.ts +1 -5
- package/types/eui-eds-eds-input-number.d.ts.map +1 -1
- package/types/eui-eds-eds-input-radio.d.ts +0 -4
- package/types/eui-eds-eds-input-radio.d.ts.map +1 -1
- package/types/eui-eds-eds-input-text.d.ts +1 -5
- package/types/eui-eds-eds-input-text.d.ts.map +1 -1
- package/types/{eui-eds-utilities-eds-label.d.ts → eui-eds-eds-label.d.ts} +1 -1
- package/types/eui-eds-eds-label.d.ts.map +1 -0
- package/types/eui-eds-eds-language-selector.d.ts.map +1 -1
- package/types/{eui-eds-utilities-eds-link.d.ts → eui-eds-eds-link.d.ts} +1 -1
- package/types/eui-eds-eds-link.d.ts.map +1 -0
- package/types/{eui-eds-utilities-eds-loading-indicator.d.ts → eui-eds-eds-loading-indicator.d.ts} +1 -1
- package/types/eui-eds-eds-loading-indicator.d.ts.map +1 -0
- package/types/eui-eds-eds-rating.d.ts +19 -2
- package/types/eui-eds-eds-rating.d.ts.map +1 -1
- package/types/eui-eds-eds-select.d.ts +1 -5
- package/types/eui-eds-eds-select.d.ts.map +1 -1
- package/types/{eui-eds-utilities-eds-snc.d.ts → eui-eds-eds-snc.d.ts} +1 -1
- package/types/eui-eds-eds-snc.d.ts.map +1 -0
- package/types/eui-eds-eds-tabs.d.ts +87 -100
- package/types/eui-eds-eds-tabs.d.ts.map +1 -1
- package/types/eui-eds-eds-textarea.d.ts +1 -5
- package/types/eui-eds-eds-textarea.d.ts.map +1 -1
- package/types/eui-eds-eds-tooltip.d.ts +27 -25
- package/types/eui-eds-eds-tooltip.d.ts.map +1 -1
- package/types/{eui-eds-utilities-eds-trend.d.ts → eui-eds-eds-trend.d.ts} +1 -1
- package/types/eui-eds-eds-trend.d.ts.map +1 -0
- package/fesm2022/eui-eds-utilities-eds-flex-layout.mjs.map +0 -1
- package/fesm2022/eui-eds-utilities-eds-grid-layout.mjs.map +0 -1
- package/fesm2022/eui-eds-utilities-eds-icon-state.mjs +0 -49
- package/fesm2022/eui-eds-utilities-eds-icon-state.mjs.map +0 -1
- package/fesm2022/eui-eds-utilities-eds-label.mjs.map +0 -1
- package/fesm2022/eui-eds-utilities-eds-link.mjs.map +0 -1
- package/fesm2022/eui-eds-utilities-eds-loading-indicator.mjs.map +0 -1
- package/fesm2022/eui-eds-utilities-eds-snc.mjs.map +0 -1
- package/fesm2022/eui-eds-utilities-eds-trend.mjs.map +0 -1
- package/types/eui-eds-utilities-eds-flex-layout.d.ts.map +0 -1
- package/types/eui-eds-utilities-eds-grid-layout.d.ts.map +0 -1
- package/types/eui-eds-utilities-eds-icon-state.d.ts.map +0 -1
- package/types/eui-eds-utilities-eds-label.d.ts.map +0 -1
- package/types/eui-eds-utilities-eds-link.d.ts.map +0 -1
- package/types/eui-eds-utilities-eds-loading-indicator.d.ts.map +0 -1
- package/types/eui-eds-utilities-eds-snc.d.ts.map +0 -1
- package/types/eui-eds-utilities-eds-trend.d.ts.map +0 -1
- package/utilities/eds-flex-layout/package.json +0 -4
- package/utilities/eds-grid-layout/package.json +0 -4
- package/utilities/eds-icon-state/package.json +0 -4
- package/utilities/eds-label/package.json +0 -4
- package/utilities/eds-link/package.json +0 -4
- package/utilities/eds-loading-indicator/package.json +0 -4
- package/utilities/eds-snc/package.json +0 -4
- package/utilities/eds-trend/package.json +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-eds-eds-tabs.mjs","sources":["../../eds-tabs/eds-tab-header.ts","../../eds-tabs/eds-tab-header.html","../../eds-tabs/eds-tab-body.ts","../../eds-tabs/eds-tab-body.html","../../eds-tabs/eds-tab.ts","../../eds-tabs/eds-tabs.ts","../../eds-tabs/eds-tabs.html","../../eds-tabs/eds-tabs-right-content.ts","../../eds-tabs/eds-tab-header-label.ts","../../eds-tabs/eds-tab-header-sub-label.ts","../../eds-tabs/eds-tab-header-left-content.ts","../../eds-tabs/eds-tab-header-right-content.ts","../../eds-tabs/index.ts","../../eds-tabs/eui-eds-eds-tabs.ts"],"sourcesContent":["import { Component, TemplateRef, ViewContainerRef, AfterViewInit, inject, viewChild } from '@angular/core';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\n@Component({\n selector: 'eds-tab-header',\n templateUrl: './eds-tab-header.html',\n})\nexport class EdsTabHeader implements AfterViewInit {\n readonly templateRef = viewChild.required<TemplateRef<HTMLElement>>('templateRef');\n\n public templatePortal!: TemplatePortal;\n private viewContainerRef = inject(ViewContainerRef);\n\n ngAfterViewInit(): void {\n this.templatePortal = new TemplatePortal(this.templateRef(), this.viewContainerRef);\n }\n}\n","<ng-template #templateRef>\n <div class=\"eds-tab-header-wrapper\">\n <ng-content select=\"eds-tab-header-left-content\"/>\n <div class=\"eds-tab-header-label-wrapper\">\n <ng-content select=\"eds-tab-header-label\"/>\n <ng-content select=\"eds-tab-header-sub-label\"/>\n </div>\n <ng-content/>\n <ng-content select=\"eds-tab-header-right-content\"/>\n </div>\n</ng-template>\n","import { Component, Input, TemplateRef, ViewContainerRef, AfterViewInit, booleanAttribute, inject, viewChild } from '@angular/core';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { BehaviorSubject } from 'rxjs';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'eds-tab-body',\n templateUrl: './eds-tab-body.html',\n imports: [\n AsyncPipe,\n ],\n})\nexport class EdsTabBody implements AfterViewInit {\n /**\n * Removes default padding from the tab content area.\n * Useful for full-width content, custom layouts, or when content provides its own spacing.\n * @default false\n */\n @Input({ transform: booleanAttribute }) hasNoContentPadding = false;\n\n readonly templateRef = viewChild.required<TemplateRef<HTMLElement>>('templateRef');\n\n public templatePortal!: TemplatePortal;\n tabIndex$ = new BehaviorSubject(0);\n private viewContainerRef = inject(ViewContainerRef);\n\n ngAfterViewInit(): void {\n this.templatePortal = new TemplatePortal(this.templateRef(), this.viewContainerRef);\n }\n}\n","<ng-template #templateRef>\n <div class=\"eds-tab__body\" [tabindex]=\"tabIndex$ | async\" [class.eds-tab__body--no-padding]=\"hasNoContentPadding\">\n <ng-content></ng-content>\n </div>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n OnChanges,\n SimpleChanges,\n booleanAttribute,\n forwardRef,\n contentChild,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { EdsTabHeader } from './eds-tab-header';\nimport { EdsTabBody } from './eds-tab-body';\n\n@Component({\n selector: 'eds-tab',\n template: '<ng-content/>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EdsTab implements OnChanges {\n /**\n * Unique identifier for the tab.\n * Used for programmatic tab selection and tracking.\n * Required for proper tab management and routing.\n */\n @Input() id!: string;\n /**\n * URL or route path associated with the tab.\n * Enables deep linking and browser history integration for tab navigation.\n */\n @Input() url!: string;\n /**\n * Data attribute used for end-to-end testing identification.\n * @default 'eui-tab'\n */\n @Input() e2eAttr = 'eds-tab';\n /**\n * Tooltip text displayed when hovering over the tab header.\n * Provides additional context or information about the tab content.\n */\n @Input() tooltip!: string;\n /**\n * Enables a close button on the tab header for dismissible tabs.\n * Allows users to remove or hide the tab from the tab bar.\n * @default false\n */\n @Input({ transform: booleanAttribute }) isClosable = false;\n /**\n * Disables the tab, preventing user interaction and selection.\n * Applies disabled styling and blocks tab activation.\n * @default false\n */\n @Input({ transform: booleanAttribute }) isDisabled = false;\n /**\n * Controls the visibility of the tab in the tab bar.\n * When false, hides the tab from display without removing it from the DOM.\n * @default true\n */\n @Input({ transform: booleanAttribute }) isVisible = true;\n /**\n * Enables automatic tab closure when the close button is clicked.\n * When false, close button click must be handled externally.\n * @default false\n */\n @Input({ transform: booleanAttribute }) isHandleCloseOnClose = false;\n /**\n * Enables automatic tab activation when the tab is clicked.\n * When false, tab activation must be handled externally.\n * @default false\n */\n @Input({ transform: booleanAttribute }) isHandleActivateTab = false;\n\n readonly templateHeader = contentChild.required(forwardRef(() => EdsTabHeader));\n @ContentChild(forwardRef(() => EdsTabBody)) templateBody!: EdsTabBody;\n\n @Input() euiVariant = 'euiPrimary';\n\n public isActive = false;\n\n public isVisible$ = new BehaviorSubject(this.isVisible);\n public isClosable$ = new BehaviorSubject(this.isClosable);\n public isDisabled$ = new BehaviorSubject(this.isDisabled);\n\n ngOnChanges(c: SimpleChanges): void {\n if (c?.isVisible) {\n this.isVisible$.next(c.isVisible.currentValue);\n }\n if (c?.isClosable) {\n this.isClosable$.next(c.isClosable.currentValue);\n }\n if (c?.isDisabled) {\n this.isDisabled$.next(c.isDisabled.currentValue);\n }\n }\n\n public activateTab(): void {\n this.isActive = true;\n }\n\n public deactivateTab(): void {\n this.isActive = false;\n }\n}\n","import {\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n forwardRef,\n AfterViewInit,\n ElementRef,\n ChangeDetectorRef,\n booleanAttribute,\n ChangeDetectionStrategy,\n ViewChild,\n SimpleChanges,\n ViewChildren,\n OnChanges,\n OnInit,\n inject,\n input,\n computed,\n PLATFORM_ID,\n DOCUMENT,\n} from '@angular/core';\nimport { AsyncPipe, isPlatformBrowser } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { animate, AnimationBuilder, AnimationFactory, AnimationPlayer, style } from '@angular/animations';\nimport { Subject, startWith, takeUntil } from 'rxjs';\n\nimport { EuiAppShellService, uniqueId } from '@eui/core';\n\nimport { EdsTab } from './eds-tab';\nimport { EDS_ICON_BUTTON } from '@eui/eds/eds-icon-button';\nimport { EdsColorDirective } from '@eui/eds/shared';\n\n@Component({\n selector: 'eds-tabs',\n templateUrl: './eds-tabs.html',\n styleUrl: './eds-tabs.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'eds-tabs',\n '[attr.data-e2e]': 'e2eAttr()',\n '[class]': 'hostColorClass()',\n },\n imports: [\n AsyncPipe,\n PortalModule,\n ...EDS_ICON_BUTTON,\n ],\n hostDirectives: [\n {\n directive: EdsColorDirective,\n inputs: [\n 'edsBrand',\n 'edsNeutral',\n 'edsColorVariant',\n ],\n },\n ],\n})\nexport class EdsTabs implements OnInit, OnChanges, OnDestroy, AfterViewInit {\n /**\n * Sets the `data-e2e` attribute for the host element.\n *\n * @default 'eds-tabs'\n */\n e2eAttr = input('eds-tabs');\n\n private colorDirective = inject(EdsColorDirective);\n\n /** Computed host class that applies the color and variant modifiers. */\n hostColorClass = computed(() => {\n const color = this.colorDirective.getCssClass('eds-tabs');\n const navbar = this.isNavBar() ? 'eds-tabs--navbar' : '';\n return `eds-tabs ${color} ${navbar}`.trim();\n });\n /**\n * Index of the active tab\n *\n * @default 0\n */\n @Input() activeTabIndex = 0;\n /**\n * Sets the `aria-label` attribute for the host element.\n *\n * @default 'eUI Tabs'\n */\n ariaLabel = input('EDS Tabs');\n\n isMainNavigation = input(false, { transform: booleanAttribute });\n isFlat = input(false, { transform: booleanAttribute });\n isNavBar = input(false, { transform: booleanAttribute });\n\n /**\n * Event emitted when a tab is closed\n */\n @Output() tabClose = new EventEmitter<{ tab: EdsTab; index: number }>();\n /**\n * Event emitted when a tab is activated\n */\n @Output() tabActivate = new EventEmitter<{ tab: EdsTab; index: number }>();\n /**\n * Event emitted when a tab is clicked\n */\n @Output() tabClick = new EventEmitter<{ tab: EdsTab; index: number }>();\n\n @ContentChildren(forwardRef(() => EdsTab), { descendants: false }) _tabs!: QueryList<EdsTab>;\n\n @ViewChild('edsTabsHeadersContainer') edsTabsHeadersContainer!: ElementRef;\n @ViewChild('edsTabsHeaders') edsTabsHeaders!: ElementRef;\n @ViewChild('edsTabsRightContent') edsTabsRightContent!: ElementRef;\n @ViewChildren('edsTabListItems') edsTabListItems!: QueryList<ElementRef>;\n\n public tabs: EdsTab[] = [];\n public scrolling = false;\n public navigationLeftButtonDisabled = true;\n public navigationRightButtonDisabled = false;\n public currentOffset = 0;\n\n protected tabId = uniqueId();\n\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private platformId = inject(PLATFORM_ID);\n private player!: AnimationPlayer;\n private stepMove = 400;\n private scrollOffset = 40;\n private scrollingCount = 0;\n private cd = inject(ChangeDetectorRef);\n private builder = inject(AnimationBuilder);\n private euiAppShellService = inject(EuiAppShellService);\n private document = inject(DOCUMENT);\n\n /**\n * Width of the tabs headers container\n */\n get edsTabsHeadersContainerWidth(): number {\n return (this.edsTabsHeadersContainer?.nativeElement.clientWidth - this.edsTabsRightContentWidth);\n }\n\n /**\n * Width of the tabs headers\n */\n get edsTabsHeadersWidth(): number {\n return this.edsTabsHeaders?.nativeElement.clientWidth;\n }\n\n /**\n * Width of the tabs right content\n */\n get edsTabsRightContentWidth(): number {\n return this.edsTabsRightContent?.nativeElement?.offsetWidth || 0;\n }\n\n ngOnChanges(c: SimpleChanges): void {\n if (c?.activeTabIndex && !c.activeTabIndex.isFirstChange()) {\n this.activate(this.activeTabIndex);\n }\n }\n\n ngOnInit(): void {\n this.euiAppShellService.state$.pipe(takeUntil(this.destroy$)).subscribe((state) => {\n this.tabsScrollingHandler();\n });\n }\n\n ngAfterViewInit(): void {\n this._tabs.changes.pipe(startWith(this._tabs), takeUntil(this.destroy$)).subscribe((tabs: QueryList<EdsTab>) => {\n this.tabs = tabs.toArray();\n setTimeout(() => {\n this.tabsScrollingHandler();\n });\n\n this.cd.detectChanges();\n });\n\n setTimeout(() => {\n if (this.tabs[this.activeTabIndex]) {\n this.cd.markForCheck();\n this.activate(this.activeTabIndex, false, { emitEvent: false });\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Activate a tab having index passed in parameter if exists.\n *\n * @param index Index of the tab to close\n * @param isAnimated Whether the tab activation should be animated\n * @param options Object with emitEvent property to emit the event or not\n */\n public activateTab(index: number, isAnimated = true, options = { emitEvent: true }): void {\n const tab = this.tabs[index];\n if (tab) {\n this.tabs.forEach((t) => {\n t.deactivateTab();\n });\n\n this.setScrollToTabIndex(index, isAnimated);\n\n tab.activateTab();\n this.activeTabIndex = index;\n\n if (options.emitEvent) {\n this.tabActivate.emit({ tab, index });\n }\n\n this.cd.detectChanges();\n }\n }\n\n /**\n * Close a tab having index passed in parameter if exists.\n * @param index Index of the tab to close\n */\n public closeTab(index: number): void {\n const tab = this.tabs[index];\n if (this.tabs[index]) {\n this.tabs[index].deactivateTab();\n this.tabs = this.tabs.filter((_, i) => i !== index);\n\n if (index === this.activeTabIndex) {\n const previousVisibleIndex = this.tabs.indexOf(this.tabs[index - 1]);\n this.cd.markForCheck();\n\n if (previousVisibleIndex < 0) {\n this.activate(0);\n } else {\n this.activate(previousVisibleIndex);\n }\n } else {\n if (index < this.activeTabIndex) {\n this.activeTabIndex = this.activeTabIndex - 1;\n }\n }\n\n this.cd.detectChanges();\n this.tabsScrollingHandler();\n }\n }\n\n /**\n * Scroll to the left handler\n */\n public goToLeft(): void {\n let scrollTo = this.currentOffset + this.stepMove;\n if (scrollTo > 0) {\n scrollTo = 0;\n }\n\n this.setScrollTo(scrollTo);\n }\n\n /**\n * Scroll to the rihgt handler\n */\n public goToRight(): void {\n let scrollTo = this.currentOffset - this.stepMove;\n if (Math.abs(scrollTo) > this.edsTabsHeadersWidth - this.edsTabsHeadersContainerWidth) {\n scrollTo = -(this.edsTabsHeadersWidth - this.edsTabsHeadersContainerWidth) - this.scrollOffset;\n }\n\n this.setScrollTo(scrollTo);\n }\n\n /**\n * Actions applied upon a keydown event\n *\n * @param i Index of the tab for each pressed key\n * @param event The keyboard event\n */\n protected onKeydown(i: number, event: KeyboardEvent): void {\n switch (event.key) {\n case 'Enter': {\n if (!this.tabs[i].isDisabled) {\n this.activate(i);\n }\n break;\n }\n case 'ArrowRight': {\n const isLastItem = i === this.edsTabListItems.toArray().length - 1;\n const index = isLastItem ? 0 : i + 1;\n\n this.setScrollToTabIndex(index, false);\n this.edsTabListItems.toArray()[index]?.nativeElement.focus();\n\n break;\n }\n case 'ArrowLeft': {\n const lastIndex = this.edsTabListItems.toArray().length - 1;\n const index = i === 0 ? lastIndex : i - 1;\n\n this.setScrollToTabIndex(index, false);\n this.edsTabListItems.toArray()[index]?.nativeElement.focus();\n\n break;\n }\n case 'Home': {\n this.setScrollToTabIndex(0, false);\n this.edsTabListItems.toArray()[0]?.nativeElement.focus();\n event.preventDefault();\n break;\n }\n case 'End': {\n this.setScrollToTabIndex(this.edsTabListItems.toArray().length - 1, false);\n this.edsTabListItems.toArray()[this.edsTabListItems.toArray().length - 1]?.nativeElement.focus();\n event.preventDefault();\n break;\n }\n case 'Delete': {\n if (this.tabs[i].isClosable) {\n if (i === this.edsTabListItems.toArray().length - 1) {\n this.edsTabListItems.toArray()[i - 1]?.nativeElement.focus();\n this.close(i, event);\n } else {\n this.close(i, event);\n this.edsTabListItems.toArray()[i]?.nativeElement.focus();\n }\n }\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * Click handler for tab list item\n *\n * @param index Index of the tab clicked\n */\n protected tabListItemClick(index: number): void {\n const tab = this.tabs[index];\n\n this.tabClick.emit({ tab, index });\n\n this.activate(index);\n }\n\n /**\n * Activates a tab\n *\n * @param index Index of the tab to activate\n * @param isAnimated Whether the activation should be animated\n * @param options Object with emitEvent property to emit the event or not\n */\n protected activate(index: number, isAnimated = true, options = { emitEvent: true }): void {\n const tab = this.tabs[index];\n\n if (tab && !tab.isHandleActivateTab) {\n this.activateTab(index, isAnimated, options);\n }\n }\n\n /**\n * Closes a tab\n *\n * @param index Index of the tab to close\n * @param e\n */\n protected close(index: number, e: Event): void {\n const tab = this.tabs[index];\n\n if (tab && !tab.isHandleCloseOnClose) {\n this.closeTab(index);\n }\n\n this.tabClose.emit({ tab, index });\n e.stopPropagation();\n }\n\n /**\n * Checks if there are html elements within the tab panel, in order to focus or not the tab panel\n * @param index The tab index\n */\n protected onAttached(index: number): void {\n if (isPlatformBrowser(this.platformId)) {\n const tabbody = this.document.querySelector('#tabpanel-' + index + '-' + this.tabId)?.children[0];\n if (tabbody?.children?.length && tabbody.children.length > 0) {\n for (const child of Array.from(tabbody.children)) {\n if (this.isFocusableElement(child)) {\n this.tabs[index - 1].templateBody.tabIndex$.next(-1);\n } else {\n this.tabs[index - 1].templateBody.tabIndex$.next(0);\n }\n }\n } else {\n this.tabs[index - 1].templateBody.tabIndex$.next(0);\n }\n }\n }\n\n /**\n * Checks the existence of focusable elements\n * @param origin The element to check\n */\n private isFocusableElement(origin: Element): boolean {\n return (\n origin.matches('button') ||\n origin.matches('a') ||\n origin.matches('input') ||\n origin.matches('select') ||\n origin.matches('textarea') ||\n origin.matches('[tabindex]:not([tabindex=\"-1\"])')\n );\n }\n\n /**\n * Checks if the tabs headers are scrolling and calculates the scrolling position\n */\n private tabsScrollingHandler(): void {\n if (this.edsTabsHeadersContainerWidth && this.edsTabsHeadersWidth) {\n\n this.scrolling = this.edsTabsHeadersWidth > this.edsTabsHeadersContainerWidth;\n\n if (!this.scrolling) {\n this.scrollingCount = 0;\n this.setScrollTo(0, false);\n this.navigationLeftButtonDisabled = true;\n this.navigationRightButtonDisabled = true;\n } else {\n const maxScrollableWidth = this.edsTabsHeadersWidth - this.edsTabsHeadersContainerWidth;\n\n if (maxScrollableWidth <= Math.abs(this.currentOffset) + this.scrollOffset && this.scrollingCount !== 0) {\n const scrollTo = -maxScrollableWidth - this.scrollOffset;\n this.setScrollTo(scrollTo);\n } else {\n this.navigationRightButtonDisabled = Math.abs(this.currentOffset) >= maxScrollableWidth;\n this.navigationLeftButtonDisabled = this.currentOffset >= 0;\n }\n\n this.scrollingCount++;\n }\n\n this.cd.detectChanges();\n }\n }\n\n /**\n * Sets the scroll position oon the tab header specified by index\n *\n * @param index Index of the tab header to scroll to\n * @param isAnimated Whether the tab activation should be animated\n */\n private setScrollToTabIndex(index: number, isAnimated = true): void {\n const activeTab = this.edsTabsHeaders.nativeElement.children.item(index);\n\n if (activeTab && !this.isActiveTabFullyVisible(activeTab) && !this.isMainNavigation()) {\n let scrollTo = 0;\n let subsetWidth = 0;\n for (let i = 0; i <= index; i++) {\n subsetWidth += this.edsTabsHeaders.nativeElement.children.item(i).clientWidth;\n }\n\n scrollTo = this.edsTabsHeadersContainerWidth / 2 - subsetWidth;\n\n if (Math.abs(scrollTo) > this.edsTabsHeadersWidth - this.edsTabsHeadersContainerWidth + this.scrollOffset) {\n scrollTo = -(this.edsTabsHeadersWidth - this.edsTabsHeadersContainerWidth + this.scrollOffset);\n }\n\n if (scrollTo > 0 || (scrollTo < 0 && index === 0)) {\n scrollTo = 0;\n }\n\n this.setScrollTo(scrollTo, isAnimated);\n }\n }\n\n /**\n * Sets the scroll position of the tabs headers\n *\n * @param scrollTo Number to set on the margin-left style property\n * @param isAnimated Whether the tab activation should be animated\n */\n private setScrollTo(scrollTo: number, isAnimated = true): void {\n const timings = isAnimated ? '500ms cubic-bezier(0.35, 0, 0.25, 1)' : 0;\n const animation: AnimationFactory = this.builder.build([animate(timings, style({ 'margin-left': +scrollTo + 'px' }))]);\n\n this.player = animation.create(this.edsTabsHeaders.nativeElement);\n this.player.play();\n\n this.currentOffset = scrollTo;\n\n if (scrollTo === 0) {\n this.navigationLeftButtonDisabled = true;\n }\n if (Math.abs(this.currentOffset) < this.edsTabsHeadersWidth - this.edsTabsHeadersContainerWidth + this.scrollOffset) {\n this.navigationRightButtonDisabled = false;\n }\n if (this.currentOffset < 0) {\n this.navigationLeftButtonDisabled = false;\n }\n if (Math.abs(scrollTo) === this.edsTabsHeadersWidth - this.edsTabsHeadersContainerWidth + this.scrollOffset) {\n this.navigationRightButtonDisabled = true;\n }\n\n this.cd.detectChanges();\n }\n\n /**\n * Checks if the active tab is fully visible\n *\n * @param activeTab Index of the tab to check\n * @returns true if fully visible, false otherwise\n */\n private isActiveTabFullyVisible(activeTab: HTMLDivElement): boolean {\n const fullyVisible =\n activeTab.offsetLeft - this.scrollOffset >= 0 &&\n activeTab.offsetLeft + activeTab.clientWidth < this.edsTabsHeadersContainerWidth - this.scrollOffset;\n\n return fullyVisible;\n }\n}\n","<div #edsTabsHeadersContainer class=\"eds-tabs-wrapper\" [class.eds-tabs-wrapper--scrolling]=\"scrolling\">\n <div class=\"eds-tabs-navigation\">\n <div class=\"eds-tabs-navigation__left-item\">\n <button edsIconButton\n (click)=\"goToLeft()\"\n [disabled]=\"navigationLeftButtonDisabled\"\n icon=\"caret-left:core\"\n ariaLabel=\"Scroll left\">\n </button>\n </div>\n\n <ul #edsTabsHeaders class=\"eds-tab-items\" [attr.data-offset]=\"currentOffset\" role=\"tablist\" [attr.aria-label]=\"ariaLabel\">\n @for (tab of tabs; let i = $index; track tab) {\n @if (tab.isVisible$ | async) {\n <li #edsTabListItems\n class=\"eds-tab-item\"\n id=\"tab-{{ i + 1 }}-{{ tabId }}\"\n [tabindex]=\"i === activeTabIndex ? '0' : '-1'\"\n role=\"tab\"\n attr.aria-controls=\"tabpanel-{{ i + 1 }}-{{ tabId }}\"\n [attr.aria-selected]=\"i === activeTabIndex\"\n [class.eds-tab-item--active]=\"i === activeTabIndex\"\n [class.eds-tab-item--disabled]=\"tab.isDisabled$ | async\"\n attr.aria-disabled=\"{{ tab.isDisabled$ | async }}\"\n (click)=\"tabListItemClick(i)\"\n (keydown)=\"onKeydown(i, $event)\">\n <ng-template [cdkPortalOutlet]=\"tab.templateHeader().templatePortal\"></ng-template>\n\n @if (tab.isClosable$ | async) {\n <button edsIconButton\n [tabindex]=\"-1\"\n ariaLabel=\"Closable\"\n rounded\n class=\"eds-tab-close-button\"\n icon=\"x:core\"\n size=\"s\"\n [disabled]=\"tab.isDisabled$ | async\"\n (buttonClick)=\"close(i, $event)\">\n </button>\n }\n </li>\n }\n }\n </ul>\n\n <div class=\"eds-tabs-navigation__right-item\">\n <button edsIconButton\n (click)=\"goToRight()\"\n [disabled]=\"navigationRightButtonDisabled\"\n icon=\"caret-right:core\"\n ariaLabel=\"Scroll right\">\n </button>\n </div>\n </div>\n <div #edsTabsRightContent class=\"eds-tabs-right-content-wrapper\">\n <ng-content select=\"eds-tabs-right-content\"></ng-content>\n </div>\n</div>\n\n@for (tab of tabs; let i = $index; track tab) {\n @if (i === activeTabIndex && (tab.isDisabled$ | async) === false && tab.templateBody) {\n <div id=\"tabpanel-{{ i + 1 }}-{{ tabId }}\" class=\"eds-tab-body-container\" role=\"tabpanel\" attr.aria-labelledby=\"tab-{{ i + 1 }}-{{ tabId }}\">\n <ng-template [cdkPortalOutlet]=\"tab.templateBody.templatePortal\" (attached)=\"onAttached(i + 1)\"></ng-template>\n </div>\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'eds-tabs-right-content',\n template: '<ng-content/>',\n styles: `\n :host {\n display: flex;\n margin-left: auto;\n }\n `,\n})\nexport class EdsTabsRightContent {\n}\n","import { Component, HostBinding, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'eds-tab-header-label',\n template: '<ng-content />',\n})\nexport class EdsTabHeaderLabel {\n @HostBinding('class') string = 'eds-tab-header-label';\n}\n","import { Component, HostBinding, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'eds-tab-header-sub-label',\n template: '<ng-content />',\n})\nexport class EdsTabHeaderSublabel {\n @HostBinding('class') string = 'eds-tab-header-sub-label';\n}\n","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'eds-tab-header-left-content',\n template: '<ng-content />',\n})\nexport class EdsTabHeaderLeftContent {\n @HostBinding('class') string = 'eds-tab-header-left-content';\n}\n","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'eds-tab-header-right-content',\n template: '<ng-content />',\n})\nexport class EdsTabHeaderRightContent {\n @HostBinding('class') string = 'eds-tab-header-right-content';\n}\n","export * from './eds-tabs';\nexport * from './eds-tabs-right-content';\nexport * from './eds-tab';\nexport * from './eds-tab-header';\nexport * from './eds-tab-header-label';\nexport * from './eds-tab-header-sub-label';\nexport * from './eds-tab-header-left-content';\nexport * from './eds-tab-header-right-content';\nexport * from './eds-tab-body';\n\nimport { EdsTabs } from './eds-tabs';\nimport { EdsTabsRightContent } from './eds-tabs-right-content';\nimport { EdsTabBody } from './eds-tab-body';\nimport { EdsTabHeader } from './eds-tab-header';\nimport { EdsTab } from './eds-tab';\nimport { EdsTabHeaderLabel } from './eds-tab-header-label';\nimport { EdsTabHeaderSublabel } from './eds-tab-header-sub-label';\nimport { EdsTabHeaderRightContent } from './eds-tab-header-right-content';\nimport { EdsTabHeaderLeftContent } from './eds-tab-header-left-content';\n\nexport const EDS_TABS = [\n EdsTabs,\n EdsTabsRightContent,\n EdsTabBody,\n EdsTabHeader,\n EdsTabHeaderLabel,\n EdsTabHeaderSublabel,\n EdsTabHeaderRightContent,\n EdsTabHeaderLeftContent,\n EdsTab,\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-eds-eds-tabs.mjs","sources":["../../eds-tabs/eds-tab-header.ts","../../eds-tabs/eds-tab-header.html","../../eds-tabs/eds-tab-body.ts","../../eds-tabs/eds-tab-body.html","../../eds-tabs/eds-tab.ts","../../eds-tabs/eds-tabs.ts","../../eds-tabs/eds-tabs.html","../../eds-tabs/eds-tabs-right-content.ts","../../eds-tabs/eds-tab-header-label.ts","../../eds-tabs/eds-tab-header-sub-label.ts","../../eds-tabs/eds-tab-header-left-content.ts","../../eds-tabs/eds-tab-header-right-content.ts","../../eds-tabs/index.ts","../../eds-tabs/eui-eds-eds-tabs.ts"],"sourcesContent":["import { Component, TemplateRef, ViewContainerRef, inject, viewChild, afterNextRender } from '@angular/core';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\n@Component({\n selector: 'eds-tab-header',\n templateUrl: './eds-tab-header.html',\n})\nexport class EdsTabHeader {\n readonly templateRef = viewChild.required<TemplateRef<HTMLElement>>('templateRef');\n\n public templatePortal!: TemplatePortal;\n private viewContainerRef = inject(ViewContainerRef);\n\n constructor() {\n afterNextRender(() => {\n this.templatePortal = new TemplatePortal(this.templateRef(), this.viewContainerRef);\n });\n }\n}\n","<ng-template #templateRef>\n <div class=\"eds-tab-header-wrapper\">\n <ng-content select=\"eds-tab-header-left-content\"/>\n <div class=\"eds-tab-header-label-wrapper\">\n <ng-content select=\"eds-tab-header-label\"/>\n <ng-content select=\"eds-tab-header-sub-label\"/>\n </div>\n <ng-content/>\n <ng-content select=\"eds-tab-header-right-content\"/>\n </div>\n</ng-template>\n","import { Component, TemplateRef, ViewContainerRef, booleanAttribute, inject, input, signal, viewChild, afterNextRender } from '@angular/core';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\n@Component({\n selector: 'eds-tab-body',\n templateUrl: './eds-tab-body.html',\n})\nexport class EdsTabBody {\n /**\n * Removes default padding from the tab content area.\n * Useful for full-width content, custom layouts, or when content provides its own spacing.\n * @default false\n */\n hasNoContentPadding = input(false, { transform: booleanAttribute });\n\n readonly templateRef = viewChild.required<TemplateRef<HTMLElement>>('templateRef');\n\n public templatePortal!: TemplatePortal;\n readonly tabIndex = signal(0);\n private viewContainerRef = inject(ViewContainerRef);\n\n constructor() {\n afterNextRender(() => {\n this.templatePortal = new TemplatePortal(this.templateRef(), this.viewContainerRef);\n });\n }\n}\n","<ng-template #templateRef>\n <div class=\"eds-tab__body\" [tabindex]=\"tabIndex()\" [class.eds-tab__body--no-padding]=\"hasNoContentPadding()\">\n <ng-content></ng-content>\n </div>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n contentChild,\n forwardRef,\n input,\n signal,\n} from '@angular/core';\n\nimport { EdsTabHeader } from './eds-tab-header';\nimport { EdsTabBody } from './eds-tab-body';\n\n@Component({\n selector: 'eds-tab',\n template: '<ng-content/>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EdsTab {\n /**\n * Unique identifier for the tab.\n * Used for programmatic tab selection and tracking.\n * Required for proper tab management and routing.\n */\n id = input<string>();\n /**\n * URL or route path associated with the tab.\n * Enables deep linking and browser history integration for tab navigation.\n */\n url = input<string>();\n /**\n * Data attribute used for end-to-end testing identification.\n * @default 'eds-tab'\n */\n e2eAttr = input('eds-tab');\n /**\n * Tooltip text displayed when hovering over the tab header.\n * Provides additional context or information about the tab content.\n */\n tooltip = input<string>();\n /**\n * Enables a close button on the tab header for dismissible tabs.\n * Allows users to remove or hide the tab from the tab bar.\n * @default false\n */\n isClosable = input(false, { transform: booleanAttribute });\n /**\n * Disables the tab, preventing user interaction and selection.\n * Applies disabled styling and blocks tab activation.\n * @default false\n */\n isDisabled = input(false, { transform: booleanAttribute });\n /**\n * Controls the visibility of the tab in the tab bar.\n * When false, hides the tab from display without removing it from the DOM.\n * @default true\n */\n isVisible = input(true, { transform: booleanAttribute });\n /**\n * Enables automatic tab closure when the close button is clicked.\n * When false, close button click must be handled externally.\n * @default false\n */\n isHandleCloseOnClose = input(false, { transform: booleanAttribute });\n /**\n * Enables automatic tab activation when the tab is clicked.\n * When false, tab activation must be handled externally.\n * @default false\n */\n isHandleActivateTab = input(false, { transform: booleanAttribute });\n\n euiVariant = input('euiPrimary');\n\n readonly templateHeader = contentChild.required(forwardRef(() => EdsTabHeader));\n readonly templateBody = contentChild(forwardRef(() => EdsTabBody));\n\n readonly isActive = signal(false);\n\n public activateTab(): void {\n this.isActive.set(true);\n }\n\n public deactivateTab(): void {\n this.isActive.set(false);\n }\n}\n","import {\n Component,\n ElementRef,\n booleanAttribute,\n ChangeDetectionStrategy,\n inject,\n input,\n model,\n output,\n signal,\n effect,\n afterNextRender,\n contentChildren,\n viewChild,\n viewChildren,\n DestroyRef,\n PLATFORM_ID,\n DOCUMENT,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { isPlatformBrowser } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { animate, AnimationBuilder, AnimationFactory, AnimationPlayer, style } from '@angular/animations';\n\nimport { EuiAppShellService, uniqueId } from '@eui/core';\n\nimport { EdsTab } from './eds-tab';\nimport { EDS_ICON_BUTTON } from '@eui/eds/eds-icon-button';\n\n/** Local narrowed color union — the tabs variant contract (String-Props model). */\nexport type EdsTabsColor = 'brand' | 'neutral';\n\n@Component({\n selector: 'eds-tabs',\n templateUrl: './eds-tabs.html',\n styleUrl: './eds-tabs.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'eds-tabs',\n '[attr.data-e2e]': 'e2eAttr()',\n '[attr.color]': 'color()',\n '[attr.navbar]': 'isNavBar() || null',\n },\n imports: [\n PortalModule,\n ...EDS_ICON_BUTTON,\n ],\n})\nexport class EdsTabs {\n /**\n * Sets the `data-e2e` attribute for the host element.\n *\n * @default 'eds-tabs'\n */\n e2eAttr = input('eds-tabs');\n\n /**\n * Semantic color variant, reflected as the `color` host attribute.\n *\n * @default 'neutral'\n */\n color = input<EdsTabsColor>('neutral');\n\n /**\n * Index of the active tab. Two-way bindable.\n *\n * @default 0\n */\n activeTabIndex = model(0);\n\n /**\n * Sets the `aria-label` attribute for the tab list.\n *\n * @default 'EDS Tabs'\n */\n ariaLabel = input('EDS Tabs');\n\n isMainNavigation = input(false, { transform: booleanAttribute });\n isFlat = input(false, { transform: booleanAttribute });\n isNavBar = input(false, { transform: booleanAttribute });\n\n /**\n * Event emitted when a tab is closed\n */\n tabClose = output<{ tab: EdsTab; index: number }>();\n /**\n * Event emitted when a tab is activated\n */\n tabActivate = output<{ tab: EdsTab; index: number }>();\n /**\n * Event emitted when a tab is clicked\n */\n tabClick = output<{ tab: EdsTab; index: number }>();\n\n readonly _tabs = contentChildren(EdsTab, { descendants: false });\n\n readonly edsTabsHeadersContainer = viewChild<ElementRef>('edsTabsHeadersContainer');\n readonly edsTabsHeaders = viewChild<ElementRef>('edsTabsHeaders');\n readonly edsTabsRightContent = viewChild<ElementRef>('edsTabsRightContent');\n readonly edsTabListItems = viewChildren<ElementRef>('edsTabListItems');\n\n readonly tabs = signal<EdsTab[]>([]);\n readonly scrolling = signal(false);\n readonly navigationLeftButtonDisabled = signal(true);\n readonly navigationRightButtonDisabled = signal(false);\n readonly currentOffset = signal(0);\n\n protected tabId = uniqueId();\n\n private platformId = inject(PLATFORM_ID);\n private destroyRef = inject(DestroyRef);\n private player!: AnimationPlayer;\n private stepMove = 400;\n private scrollOffset = 40;\n private scrollingCount = 0;\n private builder = inject(AnimationBuilder);\n private euiAppShellService = inject(EuiAppShellService);\n private document = inject(DOCUMENT);\n private viewReady = false;\n\n constructor() {\n // React to app-shell state changes (e.g. layout resize) to recompute scrolling.\n this.euiAppShellService.state$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n if (this.viewReady) {\n this.tabsScrollingHandler();\n }\n });\n\n // Rebuild the tabs array whenever the projected tabs change.\n effect(() => {\n this.tabs.set(this._tabs().slice());\n if (this.viewReady) {\n setTimeout(() => this.tabsScrollingHandler());\n }\n });\n\n afterNextRender(() => {\n this.viewReady = true;\n setTimeout(() => {\n this.tabsScrollingHandler();\n if (this.tabs()[this.activeTabIndex()]) {\n this.activate(this.activeTabIndex(), false, { emitEvent: false });\n }\n });\n });\n }\n\n /**\n * Width of the tabs headers container\n */\n get edsTabsHeadersContainerWidth(): number {\n return (this.edsTabsHeadersContainer()?.nativeElement.clientWidth - this.edsTabsRightContentWidth);\n }\n\n /**\n * Width of the tabs headers\n */\n get edsTabsHeadersWidth(): number {\n return this.edsTabsHeaders()?.nativeElement.clientWidth;\n }\n\n /**\n * Width of the tabs right content\n */\n get edsTabsRightContentWidth(): number {\n return this.edsTabsRightContent()?.nativeElement?.offsetWidth || 0;\n }\n\n /**\n * Activate a tab having index passed in parameter if exists.\n *\n * @param index Index of the tab to close\n * @param isAnimated Whether the tab activation should be animated\n * @param options Object with emitEvent property to emit the event or not\n */\n public activateTab(index: number, isAnimated = true, options = { emitEvent: true }): void {\n const tab = this.tabs()[index];\n if (tab) {\n this.tabs().forEach((t) => {\n t.deactivateTab();\n });\n\n this.setScrollToTabIndex(index, isAnimated);\n\n tab.activateTab();\n this.activeTabIndex.set(index);\n\n if (options.emitEvent) {\n this.tabActivate.emit({ tab, index });\n }\n }\n }\n\n /**\n * Close a tab having index passed in parameter if exists.\n * @param index Index of the tab to close\n */\n public closeTab(index: number): void {\n const tab = this.tabs()[index];\n if (tab) {\n tab.deactivateTab();\n const activeIndex = this.activeTabIndex();\n this.tabs.set(this.tabs().filter((_, i) => i !== index));\n\n if (index === activeIndex) {\n const previousVisibleIndex = index - 1;\n\n if (previousVisibleIndex < 0) {\n this.activate(0);\n } else {\n this.activate(previousVisibleIndex);\n }\n } else if (index < activeIndex) {\n this.activeTabIndex.set(activeIndex - 1);\n }\n\n this.tabsScrollingHandler();\n }\n }\n\n /**\n * Scroll to the left handler\n */\n public goToLeft(): void {\n let scrollTo = this.currentOffset() + this.stepMove;\n if (scrollTo > 0) {\n scrollTo = 0;\n }\n\n this.setScrollTo(scrollTo);\n }\n\n /**\n * Scroll to the rihgt handler\n */\n public goToRight(): void {\n let scrollTo = this.currentOffset() - this.stepMove;\n if (Math.abs(scrollTo) > this.edsTabsHeadersWidth - this.edsTabsHeadersContainerWidth) {\n scrollTo = -(this.edsTabsHeadersWidth - this.edsTabsHeadersContainerWidth) - this.scrollOffset;\n }\n\n this.setScrollTo(scrollTo);\n }\n\n /**\n * Actions applied upon a keydown event\n *\n * @param i Index of the tab for each pressed key\n * @param event The keyboard event\n */\n protected onKeydown(i: number, event: KeyboardEvent): void {\n const items = this.edsTabListItems();\n switch (event.key) {\n case 'Enter': {\n if (!this.tabs()[i].isDisabled()) {\n this.activate(i);\n }\n break;\n }\n case 'ArrowRight': {\n const isLastItem = i === items.length - 1;\n const index = isLastItem ? 0 : i + 1;\n\n this.setScrollToTabIndex(index, false);\n items[index]?.nativeElement.focus();\n\n break;\n }\n case 'ArrowLeft': {\n const lastIndex = items.length - 1;\n const index = i === 0 ? lastIndex : i - 1;\n\n this.setScrollToTabIndex(index, false);\n items[index]?.nativeElement.focus();\n\n break;\n }\n case 'Home': {\n this.setScrollToTabIndex(0, false);\n items[0]?.nativeElement.focus();\n event.preventDefault();\n break;\n }\n case 'End': {\n this.setScrollToTabIndex(items.length - 1, false);\n items[items.length - 1]?.nativeElement.focus();\n event.preventDefault();\n break;\n }\n case 'Delete': {\n if (this.tabs()[i].isClosable()) {\n if (i === items.length - 1) {\n items[i - 1]?.nativeElement.focus();\n this.close(i, event);\n } else {\n this.close(i, event);\n items[i]?.nativeElement.focus();\n }\n }\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * Click handler for tab list item\n *\n * @param index Index of the tab clicked\n */\n protected tabListItemClick(index: number): void {\n const tab = this.tabs()[index];\n\n this.tabClick.emit({ tab, index });\n\n this.activate(index);\n }\n\n /**\n * Activates a tab\n *\n * @param index Index of the tab to activate\n * @param isAnimated Whether the activation should be animated\n * @param options Object with emitEvent property to emit the event or not\n */\n protected activate(index: number, isAnimated = true, options = { emitEvent: true }): void {\n const tab = this.tabs()[index];\n\n if (tab && !tab.isHandleActivateTab()) {\n this.activateTab(index, isAnimated, options);\n }\n }\n\n /**\n * Closes a tab\n *\n * @param index Index of the tab to close\n * @param e\n */\n protected close(index: number, e: Event): void {\n const tab = this.tabs()[index];\n\n if (tab && !tab.isHandleCloseOnClose()) {\n this.closeTab(index);\n }\n\n this.tabClose.emit({ tab, index });\n e.stopPropagation();\n }\n\n /**\n * Checks if there are html elements within the tab panel, in order to focus or not the tab panel\n * @param index The tab index\n */\n protected onAttached(index: number): void {\n if (isPlatformBrowser(this.platformId)) {\n const tabbody = this.document.querySelector('#tabpanel-' + index + '-' + this.tabId)?.children[0];\n const body = this.tabs()[index - 1].templateBody();\n if (tabbody?.children?.length && tabbody.children.length > 0) {\n for (const child of Array.from(tabbody.children)) {\n if (this.isFocusableElement(child)) {\n body?.tabIndex.set(-1);\n } else {\n body?.tabIndex.set(0);\n }\n }\n } else {\n body?.tabIndex.set(0);\n }\n }\n }\n\n /**\n * Checks the existence of focusable elements\n * @param origin The element to check\n */\n private isFocusableElement(origin: Element): boolean {\n return (\n origin.matches('button') ||\n origin.matches('a') ||\n origin.matches('input') ||\n origin.matches('select') ||\n origin.matches('textarea') ||\n origin.matches('[tabindex]:not([tabindex=\"-1\"])')\n );\n }\n\n /**\n * Checks if the tabs headers are scrolling and calculates the scrolling position\n */\n private tabsScrollingHandler(): void {\n if (this.edsTabsHeadersContainerWidth && this.edsTabsHeadersWidth) {\n\n const isScrolling = this.edsTabsHeadersWidth > this.edsTabsHeadersContainerWidth;\n this.scrolling.set(isScrolling);\n\n if (!isScrolling) {\n this.scrollingCount = 0;\n this.setScrollTo(0, false);\n this.navigationLeftButtonDisabled.set(true);\n this.navigationRightButtonDisabled.set(true);\n } else {\n const maxScrollableWidth = this.edsTabsHeadersWidth - this.edsTabsHeadersContainerWidth;\n\n if (maxScrollableWidth <= Math.abs(this.currentOffset()) + this.scrollOffset && this.scrollingCount !== 0) {\n const scrollTo = -maxScrollableWidth - this.scrollOffset;\n this.setScrollTo(scrollTo);\n } else {\n this.navigationRightButtonDisabled.set(Math.abs(this.currentOffset()) >= maxScrollableWidth);\n this.navigationLeftButtonDisabled.set(this.currentOffset() >= 0);\n }\n\n this.scrollingCount++;\n }\n }\n }\n\n /**\n * Sets the scroll position oon the tab header specified by index\n *\n * @param index Index of the tab header to scroll to\n * @param isAnimated Whether the tab activation should be animated\n */\n private setScrollToTabIndex(index: number, isAnimated = true): void {\n const headers = this.edsTabsHeaders();\n const activeTab = headers?.nativeElement.children.item(index);\n\n if (activeTab && !this.isActiveTabFullyVisible(activeTab) && !this.isMainNavigation()) {\n let scrollTo = 0;\n let subsetWidth = 0;\n for (let i = 0; i <= index; i++) {\n subsetWidth += headers.nativeElement.children.item(i).clientWidth;\n }\n\n scrollTo = this.edsTabsHeadersContainerWidth / 2 - subsetWidth;\n\n if (Math.abs(scrollTo) > this.edsTabsHeadersWidth - this.edsTabsHeadersContainerWidth + this.scrollOffset) {\n scrollTo = -(this.edsTabsHeadersWidth - this.edsTabsHeadersContainerWidth + this.scrollOffset);\n }\n\n if (scrollTo > 0 || (scrollTo < 0 && index === 0)) {\n scrollTo = 0;\n }\n\n this.setScrollTo(scrollTo, isAnimated);\n }\n }\n\n /**\n * Sets the scroll position of the tabs headers\n *\n * @param scrollTo Number to set on the margin-left style property\n * @param isAnimated Whether the tab activation should be animated\n */\n private setScrollTo(scrollTo: number, isAnimated = true): void {\n const headers = this.edsTabsHeaders();\n if (!headers) {\n return;\n }\n const timings = isAnimated ? '500ms cubic-bezier(0.35, 0, 0.25, 1)' : 0;\n const animation: AnimationFactory = this.builder.build([animate(timings, style({ 'margin-left': +scrollTo + 'px' }))]);\n\n this.player = animation.create(headers.nativeElement);\n this.player.play();\n\n this.currentOffset.set(scrollTo);\n\n if (scrollTo === 0) {\n this.navigationLeftButtonDisabled.set(true);\n }\n if (Math.abs(this.currentOffset()) < this.edsTabsHeadersWidth - this.edsTabsHeadersContainerWidth + this.scrollOffset) {\n this.navigationRightButtonDisabled.set(false);\n }\n if (this.currentOffset() < 0) {\n this.navigationLeftButtonDisabled.set(false);\n }\n if (Math.abs(scrollTo) === this.edsTabsHeadersWidth - this.edsTabsHeadersContainerWidth + this.scrollOffset) {\n this.navigationRightButtonDisabled.set(true);\n }\n }\n\n /**\n * Checks if the active tab is fully visible\n *\n * @param activeTab Index of the tab to check\n * @returns true if fully visible, false otherwise\n */\n private isActiveTabFullyVisible(activeTab: HTMLDivElement): boolean {\n const fullyVisible =\n activeTab.offsetLeft - this.scrollOffset >= 0 &&\n activeTab.offsetLeft + activeTab.clientWidth < this.edsTabsHeadersContainerWidth - this.scrollOffset;\n\n return fullyVisible;\n }\n}\n","<div #edsTabsHeadersContainer class=\"eds-tabs-wrapper\" [class.eds-tabs-wrapper--scrolling]=\"scrolling()\">\n <div class=\"eds-tabs-navigation\">\n <div class=\"eds-tabs-navigation__left-item\">\n <button edsIconButton\n (click)=\"goToLeft()\"\n [disabled]=\"navigationLeftButtonDisabled()\"\n icon=\"caret-left:core\"\n ariaLabel=\"Scroll left\">\n </button>\n </div>\n\n <ul #edsTabsHeaders class=\"eds-tab-items\" [attr.data-offset]=\"currentOffset()\" role=\"tablist\" [attr.aria-label]=\"ariaLabel()\">\n @for (tab of tabs(); let i = $index; track tab) {\n @if (tab.isVisible()) {\n <li #edsTabListItems\n class=\"eds-tab-item\"\n id=\"tab-{{ i + 1 }}-{{ tabId }}\"\n [tabindex]=\"i === activeTabIndex() ? '0' : '-1'\"\n role=\"tab\"\n attr.aria-controls=\"tabpanel-{{ i + 1 }}-{{ tabId }}\"\n [attr.aria-selected]=\"i === activeTabIndex()\"\n [class.eds-tab-item--active]=\"i === activeTabIndex()\"\n [class.eds-tab-item--disabled]=\"tab.isDisabled()\"\n [attr.aria-disabled]=\"tab.isDisabled()\"\n (click)=\"tabListItemClick(i)\"\n (keydown)=\"onKeydown(i, $event)\">\n <ng-template [cdkPortalOutlet]=\"tab.templateHeader().templatePortal\"></ng-template>\n\n @if (tab.isClosable()) {\n <button edsIconButton\n [tabindex]=\"-1\"\n ariaLabel=\"Closable\"\n rounded\n class=\"eds-tab-close-button\"\n icon=\"x:core\"\n size=\"s\"\n [disabled]=\"tab.isDisabled()\"\n (buttonClick)=\"close(i, $event)\">\n </button>\n }\n </li>\n }\n }\n </ul>\n\n <div class=\"eds-tabs-navigation__right-item\">\n <button edsIconButton\n (click)=\"goToRight()\"\n [disabled]=\"navigationRightButtonDisabled()\"\n icon=\"caret-right:core\"\n ariaLabel=\"Scroll right\">\n </button>\n </div>\n </div>\n <div #edsTabsRightContent class=\"eds-tabs-right-content-wrapper\">\n <ng-content select=\"eds-tabs-right-content\"></ng-content>\n </div>\n</div>\n\n@for (tab of tabs(); let i = $index; track tab) {\n @if (i === activeTabIndex() && tab.isDisabled() === false && tab.templateBody()) {\n <div id=\"tabpanel-{{ i + 1 }}-{{ tabId }}\" class=\"eds-tab-body-container\" role=\"tabpanel\" attr.aria-labelledby=\"tab-{{ i + 1 }}-{{ tabId }}\">\n <ng-template [cdkPortalOutlet]=\"tab.templateBody()!.templatePortal\" (attached)=\"onAttached(i + 1)\"></ng-template>\n </div>\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'eds-tabs-right-content',\n template: '<ng-content/>',\n styles: `\n :host {\n display: flex;\n margin-left: auto;\n }\n `,\n})\nexport class EdsTabsRightContent {\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'eds-tab-header-label',\n template: '<ng-content />',\n host: { class: 'eds-tab-header-label' },\n})\nexport class EdsTabHeaderLabel {\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'eds-tab-header-sub-label',\n template: '<ng-content />',\n host: { class: 'eds-tab-header-sub-label' },\n})\nexport class EdsTabHeaderSublabel {\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'eds-tab-header-left-content',\n template: '<ng-content />',\n host: { class: 'eds-tab-header-left-content' },\n})\nexport class EdsTabHeaderLeftContent {\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'eds-tab-header-right-content',\n template: '<ng-content />',\n host: { class: 'eds-tab-header-right-content' },\n})\nexport class EdsTabHeaderRightContent {\n}\n","export * from './eds-tabs';\nexport * from './eds-tabs-right-content';\nexport * from './eds-tab';\nexport * from './eds-tab-header';\nexport * from './eds-tab-header-label';\nexport * from './eds-tab-header-sub-label';\nexport * from './eds-tab-header-left-content';\nexport * from './eds-tab-header-right-content';\nexport * from './eds-tab-body';\n\nimport { EdsTabs } from './eds-tabs';\nimport { EdsTabsRightContent } from './eds-tabs-right-content';\nimport { EdsTabBody } from './eds-tab-body';\nimport { EdsTabHeader } from './eds-tab-header';\nimport { EdsTab } from './eds-tab';\nimport { EdsTabHeaderLabel } from './eds-tab-header-label';\nimport { EdsTabHeaderSublabel } from './eds-tab-header-sub-label';\nimport { EdsTabHeaderRightContent } from './eds-tab-header-right-content';\nimport { EdsTabHeaderLeftContent } from './eds-tab-header-left-content';\n\nexport const EDS_TABS = [\n EdsTabs,\n EdsTabsRightContent,\n EdsTabBody,\n EdsTabHeader,\n EdsTabHeaderLabel,\n EdsTabHeaderSublabel,\n EdsTabHeaderRightContent,\n EdsTabHeaderLeftContent,\n EdsTab,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, booleanAttribute,
|
|
2
|
+
import { input, booleanAttribute, inject, ElementRef, ChangeDetectionStrategy, Component, numberAttribute, Renderer2, NgZone, effect, Directive } from '@angular/core';
|
|
3
3
|
import { NgControl } from '@angular/forms';
|
|
4
4
|
import { Subject } from 'rxjs';
|
|
5
5
|
import { takeUntil, startWith } from 'rxjs/operators';
|
|
@@ -38,18 +38,6 @@ class EdsTextarea {
|
|
|
38
38
|
* @default false
|
|
39
39
|
*/
|
|
40
40
|
this.isInvalid = input(false, { ...(ngDevMode ? { debugName: "isInvalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
41
|
-
/**
|
|
42
|
-
* Computed host CSS classes based on current state.
|
|
43
|
-
*/
|
|
44
|
-
this.hostClasses = computed(() => {
|
|
45
|
-
return [
|
|
46
|
-
'eds-textarea',
|
|
47
|
-
this._isInvalid ? 'eds-textarea--invalid' : '',
|
|
48
|
-
]
|
|
49
|
-
.join(' ')
|
|
50
|
-
.trim();
|
|
51
|
-
}, /* @ts-ignore */
|
|
52
|
-
...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
|
|
53
41
|
this._elementRef = inject(ElementRef);
|
|
54
42
|
this._ngControl = inject(NgControl, { optional: true, self: true });
|
|
55
43
|
this._isInvalid = false;
|
|
@@ -88,18 +76,19 @@ class EdsTextarea {
|
|
|
88
76
|
this._onChange(target.value);
|
|
89
77
|
}
|
|
90
78
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsTextarea, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
91
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.2", type: EdsTextarea, isStandalone: true, selector: "textarea[edsTextarea]", inputs: { e2eAttr: { classPropertyName: "e2eAttr", publicName: "e2eAttr", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, isInvalid: { classPropertyName: "isInvalid", publicName: "isInvalid", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "input": "onHostInput($event)", "blur": "onTouched()" }, properties: { "
|
|
79
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.2", type: EdsTextarea, isStandalone: true, selector: "textarea[edsTextarea]", inputs: { e2eAttr: { classPropertyName: "e2eAttr", publicName: "e2eAttr", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, isInvalid: { classPropertyName: "isInvalid", publicName: "isInvalid", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "input": "onHostInput($event)", "blur": "onTouched()" }, properties: { "attr.invalid": "_isInvalid || null", "attr.data-e2e": "e2eAttr()", "disabled": "disabled()", "attr.readonly": "readonly() || null" }, classAttribute: "eds-textarea" }, ngImport: i0, template: '', isInline: true, styles: [".eui-21 :host.eds-textarea{font:var(--eds-f-paragraph-m);appearance:none;background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:none;color:var(--eds-c-foreground-default);min-height:var(--eds-si-3xl);padding:var(--eds-sp-xs) var(--eds-sp-s);width:100%}.eui-21 :host.eds-textarea:focus-visible:not([readonly]){outline:2px solid var(--eds-c-border-primary)!important;outline-offset:-2px!important;transition:none}.eui-21 :host.eds-textarea:not([hidden]){display:block}.eui-21 :host.eds-textarea::placeholder{color:var(--eds-c-foreground-subtler);opacity:1}.eui-21 :host.eds-textarea[readonly]{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0;pointer-events:none}.eui-21 :host.eds-textarea:disabled:not([readonly]),.eui-21 :host.eds-textarea--disabled:not([readonly]){background-color:var(--eds-c-suface-disabled);border-color:var(--eds-c-border-disabled);color:var(--eds-c-foreground-subtler);pointer-events:none}.eui-21 :host.eds-textarea--invalid{border-color:var(--eds-c-border-critical)}.eui-21 :host.eds-textarea--loading{padding-right:var(--eds-sp-7xl)}.eui-21 :host.eds-textarea--loading-icon{align-items:center;display:flex}.eui-21 :host.eds-textarea--loading-icon:after,.eui-21 :host.eds-textarea--loading-icon:before{content:\"\";height:var(--eds-sp-l);position:absolute;right:var(--eds-sp-s);width:var(--eds-sp-l)}.eui-21 :host.eds-textarea--loading-icon:before{border:var(--eds-sp-3xs) solid rgba(0,0,0,.35);border-radius:100%}.eui-21 :host.eds-textarea--loading-icon:after{animation:loading .6s linear;animation-iteration-count:infinite;border-color:var(--eui-c-white) transparent transparent;border-radius:100%;border-style:solid;border-width:var(--eds-sp-3xs);box-shadow:0 0 0 1px transparent}.eui-21 :host.eds-textarea--loading-icon--sm:after,.eui-21 :host.eds-textarea--loading-icon--sm:before{height:var(--eds-sp-m);width:var(--eds-sp-m)}@keyframes loading{to{transform:rotate(360deg)}}.eui-21 :host.eds-textarea{height:auto;min-height:calc(var(--eds-si-3xl) * 2);resize:vertical}.eui-21 :host.eds-textarea[readonly]{pointer-events:auto;resize:none}.eui-21 :host.eds-textarea[readonly]::placeholder{color:transparent}.eui-21 :host.eds-textarea[invalid]{border-color:var(--eds-c-border-critical)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
92
80
|
}
|
|
93
81
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: EdsTextarea, decorators: [{
|
|
94
82
|
type: Component,
|
|
95
83
|
args: [{ selector: 'textarea[edsTextarea]', template: '', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
96
|
-
|
|
84
|
+
class: 'eds-textarea',
|
|
85
|
+
'[attr.invalid]': '_isInvalid || null',
|
|
97
86
|
'[attr.data-e2e]': 'e2eAttr()',
|
|
98
87
|
'[disabled]': 'disabled()',
|
|
99
88
|
'[attr.readonly]': 'readonly() || null',
|
|
100
89
|
'(input)': 'onHostInput($event)',
|
|
101
90
|
'(blur)': 'onTouched()',
|
|
102
|
-
}, styles: [".eui-21 :host.eds-textarea{font:var(--eds-f-paragraph-m);appearance:none;background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:none;color:var(--eds-c-foreground-default);min-height:var(--eds-si-3xl);padding:var(--eds-sp-xs) var(--eds-sp-s);width:100%}.eui-21 :host.eds-textarea:focus-visible:not([readonly]){outline:2px solid var(--eds-c-border-primary)!important;outline-offset:-2px!important;transition:none}.eui-21 :host.eds-textarea:not([hidden]){display:block}.eui-21 :host.eds-textarea::placeholder{color:var(--eds-c-foreground-subtler);opacity:1}.eui-21 :host.eds-textarea[readonly]{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0;pointer-events:none}.eui-21 :host.eds-textarea:disabled:not([readonly]),.eui-21 :host.eds-textarea--disabled:not([readonly]){background-color:var(--eds-c-suface-disabled);border-color:var(--eds-c-border-disabled);color:var(--eds-c-foreground-subtler);pointer-events:none}.eui-21 :host.eds-textarea--invalid{border-color:var(--eds-c-border-critical)}.eui-21 :host.eds-textarea--loading{padding-right:var(--eds-sp-7xl)}.eui-21 :host.eds-textarea--loading-icon{align-items:center;display:flex}.eui-21 :host.eds-textarea--loading-icon:after,.eui-21 :host.eds-textarea--loading-icon:before{content:\"\";height:var(--eds-sp-l);position:absolute;right:var(--eds-sp-s);width:var(--eds-sp-l)}.eui-21 :host.eds-textarea--loading-icon:before{border:var(--eds-sp-3xs) solid rgba(0,0,0,.35);border-radius:100%}.eui-21 :host.eds-textarea--loading-icon:after{animation:loading .6s linear;animation-iteration-count:infinite;border-color:var(--eui-c-white) transparent transparent;border-radius:100%;border-style:solid;border-width:var(--eds-sp-3xs);box-shadow:0 0 0 1px transparent}.eui-21 :host.eds-textarea--loading-icon--sm:after,.eui-21 :host.eds-textarea--loading-icon--sm:before{height:var(--eds-sp-m);width:var(--eds-sp-m)}@keyframes loading{to{transform:rotate(360deg)}}.eui-21 :host.eds-textarea{height:auto;min-height:calc(var(--eds-si-3xl) * 2);resize:vertical}.eui-21 :host.eds-textarea[readonly]{pointer-events:auto;resize:none}.eui-21 :host.eds-textarea[readonly]::placeholder{color:transparent}\n"] }]
|
|
91
|
+
}, styles: [".eui-21 :host.eds-textarea{font:var(--eds-f-paragraph-m);appearance:none;background-color:var(--eds-c-surface-elevation);border:var(--eds-bw-xs) solid var(--eds-c-border-neutral);border-radius:var(--eds-br-s);box-shadow:none;color:var(--eds-c-foreground-default);min-height:var(--eds-si-3xl);padding:var(--eds-sp-xs) var(--eds-sp-s);width:100%}.eui-21 :host.eds-textarea:focus-visible:not([readonly]){outline:2px solid var(--eds-c-border-primary)!important;outline-offset:-2px!important;transition:none}.eui-21 :host.eds-textarea:not([hidden]){display:block}.eui-21 :host.eds-textarea::placeholder{color:var(--eds-c-foreground-subtler);opacity:1}.eui-21 :host.eds-textarea[readonly]{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0;pointer-events:none}.eui-21 :host.eds-textarea:disabled:not([readonly]),.eui-21 :host.eds-textarea--disabled:not([readonly]){background-color:var(--eds-c-suface-disabled);border-color:var(--eds-c-border-disabled);color:var(--eds-c-foreground-subtler);pointer-events:none}.eui-21 :host.eds-textarea--invalid{border-color:var(--eds-c-border-critical)}.eui-21 :host.eds-textarea--loading{padding-right:var(--eds-sp-7xl)}.eui-21 :host.eds-textarea--loading-icon{align-items:center;display:flex}.eui-21 :host.eds-textarea--loading-icon:after,.eui-21 :host.eds-textarea--loading-icon:before{content:\"\";height:var(--eds-sp-l);position:absolute;right:var(--eds-sp-s);width:var(--eds-sp-l)}.eui-21 :host.eds-textarea--loading-icon:before{border:var(--eds-sp-3xs) solid rgba(0,0,0,.35);border-radius:100%}.eui-21 :host.eds-textarea--loading-icon:after{animation:loading .6s linear;animation-iteration-count:infinite;border-color:var(--eui-c-white) transparent transparent;border-radius:100%;border-style:solid;border-width:var(--eds-sp-3xs);box-shadow:0 0 0 1px transparent}.eui-21 :host.eds-textarea--loading-icon--sm:after,.eui-21 :host.eds-textarea--loading-icon--sm:before{height:var(--eds-sp-m);width:var(--eds-sp-m)}@keyframes loading{to{transform:rotate(360deg)}}.eui-21 :host.eds-textarea{height:auto;min-height:calc(var(--eds-si-3xl) * 2);resize:vertical}.eui-21 :host.eds-textarea[readonly]{pointer-events:auto;resize:none}.eui-21 :host.eds-textarea[readonly]::placeholder{color:transparent}.eui-21 :host.eds-textarea[invalid]{border-color:var(--eds-c-border-critical)}\n"] }]
|
|
103
92
|
}], ctorParameters: () => [], propDecorators: { e2eAttr: [{ type: i0.Input, args: [{ isSignal: true, alias: "e2eAttr", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], isInvalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "isInvalid", required: false }] }] } });
|
|
104
93
|
|
|
105
94
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-eds-eds-textarea.mjs","sources":["../../eds-textarea/eds-textarea.ts","../../eds-textarea/eds-auto-resize.directive.ts","../../eds-textarea/index.ts","../../eds-textarea/eui-eds-eds-textarea.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n inject,\n input,\n booleanAttribute,\n computed,\n DoCheck,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\n/**\n * @description\n * EDS Textarea component — a styled native `<textarea>` element.\n * Integrates with Angular forms and supports validation, readonly, and disabled states.\n *\n * @usageNotes\n * ```html\n * <textarea edsTextarea placeholder=\"Enter description...\"></textarea>\n * <textarea edsTextarea [(ngModel)]=\"value\"></textarea>\n * ```\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'textarea[edsTextarea]',\n template: '',\n styleUrl: './eds-textarea.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-e2e]': 'e2eAttr()',\n '[disabled]': 'disabled()',\n '[attr.readonly]': 'readonly() || null',\n '(input)': 'onHostInput($event)',\n '(blur)': 'onTouched()',\n },\n})\nexport class EdsTextarea implements ControlValueAccessor, DoCheck {\n /**\n * Data attribute value for end-to-end testing identification.\n * @default 'eds-textarea'\n */\n e2eAttr = input('eds-textarea');\n\n /**\n * Controls whether the textarea is disabled.\n * @default false\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the textarea is readonly.\n * @default false\n */\n readonly = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the textarea shows an invalid/error state.\n * @default false\n */\n isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * Computed host CSS classes based on current state.\n */\n hostClasses = computed(() => {\n return [\n 'eds-textarea',\n this._isInvalid ? 'eds-textarea--invalid' : '',\n ]\n .join(' ')\n .trim();\n });\n\n private _elementRef: ElementRef<HTMLTextAreaElement> = inject(ElementRef);\n private _ngControl = inject(NgControl, { optional: true, self: true });\n private _isInvalid = false;\n\n constructor() {\n if (this._ngControl) {\n this._ngControl.valueAccessor = this;\n }\n }\n\n ngDoCheck(): void {\n if (this._ngControl) {\n this._isInvalid = this._ngControl.invalid && this._ngControl.touched;\n } else {\n this._isInvalid = this.isInvalid();\n }\n }\n\n // --- ControlValueAccessor ---\n\n writeValue(value: string): void {\n this._elementRef.nativeElement.value = value ?? '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // Disabled is handled via the input signal binding on the host element.\n }\n\n // --- Event handlers ---\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected onTouched: () => void = () => { /* noop */ };\n\n protected onHostInput(event: Event): void {\n const target = event.target as HTMLTextAreaElement;\n this._onChange(target.value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private _onChange: (value: string) => void = () => { /* noop */ };\n}\n","import {\n Directive,\n OnInit,\n OnDestroy,\n AfterViewInit,\n ElementRef,\n NgZone,\n Renderer2,\n inject,\n input,\n effect,\n numberAttribute,\n booleanAttribute,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\n/**\n * Directive that automatically adjusts the height of a textarea based on its content.\n * Supports minimum and maximum row constraints and can be enabled/disabled dynamically.\n *\n * @usageNotes\n * ```html\n * <textarea edsTextarea edsAutoResize [minRows]=\"2\" [maxRows]=\"10\"></textarea>\n * ```\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'textarea[edsAutoResize]',\n host: {\n '(input)': 'resize()',\n },\n})\nexport class EdsAutoResizeDirective implements OnInit, AfterViewInit, OnDestroy {\n /** Controls whether auto-resize is enabled. */\n edsAutoResize = input(true, { transform: booleanAttribute });\n\n /** Minimum number of rows. */\n minRows = input(1, { transform: numberAttribute });\n\n /** Maximum number of rows (0 = unlimited). */\n maxRows = input(0, { transform: numberAttribute });\n\n private _el = inject(ElementRef);\n private _renderer = inject(Renderer2);\n private _control = inject(NgControl, { optional: true });\n private _ngZone = inject(NgZone);\n private _destroy$ = new Subject<void>();\n private _observer: MutationObserver;\n private _resizeObserver: ResizeObserver;\n private _lastObservedWidth = -1;\n private _pendingResize: number | null = null;\n\n constructor() {\n effect(() => {\n const enable = this.edsAutoResize();\n this._renderer.setProperty(this._el.nativeElement, 'rows', this.minRows());\n this._renderer.setStyle(this._el.nativeElement, 'overflow', enable ? 'hidden' : '');\n this._renderer.setStyle(this._el.nativeElement, 'resize', enable ? 'none' : '');\n if (enable) {\n this.resize();\n }\n });\n }\n\n ngOnInit(): void {\n this._setupResizeObserver();\n\n this._observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'readonly') {\n this.resize();\n }\n }\n });\n this._observer.observe(this._el.nativeElement, { attributes: true });\n }\n\n ngAfterViewInit(): void {\n if (this.edsAutoResize()) {\n if (this._control) {\n this._control.valueChanges\n .pipe(takeUntil(this._destroy$), startWith(''))\n .subscribe(() => this.resize());\n } else {\n this.resize();\n }\n }\n }\n\n ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n this._observer?.disconnect();\n this._resizeObserver?.disconnect();\n if (this._pendingResize !== null) {\n cancelAnimationFrame(this._pendingResize);\n }\n }\n\n /** Calculates and applies the appropriate height based on content. */\n resize(): void {\n if (!this.edsAutoResize()) return;\n\n const el = this._el.nativeElement as HTMLTextAreaElement;\n const parent = el.parentNode;\n if (!parent) return;\n\n // A zero-width element (hidden panel, closed side container e.g. eui-app-side-container) cannot be measured\n // reliably; the ResizeObserver re-runs resize() once it gets a real width.\n if (el.offsetWidth === 0) return;\n\n // Clone to measure\n const clone = el.cloneNode(true) as HTMLTextAreaElement;\n clone.style.width = el.offsetWidth + 'px';\n clone.style.visibility = 'hidden';\n clone.style.position = 'absolute';\n clone.textContent = el.value;\n parent.appendChild(clone);\n clone.style.overflowY = 'hidden';\n clone.style.height = 'auto';\n\n let scrollHeight = clone.scrollHeight;\n\n // Enforce maxRows\n if (this.maxRows() > 0) {\n const lineHeight = parseInt(getComputedStyle(clone).lineHeight, 10) || 20;\n const maxHeight = lineHeight * this.maxRows();\n scrollHeight = Math.min(scrollHeight, maxHeight);\n if (scrollHeight >= maxHeight) {\n this._renderer.removeStyle(el, 'overflow');\n } else {\n this._renderer.setStyle(el, 'overflow', 'hidden');\n }\n }\n\n const height = scrollHeight <= 0 ? 'auto' : `${scrollHeight}px`;\n parent.removeChild(clone);\n this._renderer.setStyle(el, 'height', height);\n }\n\n /**\n * Observes the textarea's width and re-runs the height calculation when it changes,\n * covering cases the event-based triggers miss: a container that becomes visible after\n * the initial (zero-width) measurement, resizable panels being dragged, or any layout\n * change that reflows the textarea without a window resize.\n *\n * Only width changes are acted on: resize() itself sets the element's height, so\n * reacting to height changes would make the observer re-trigger its own work.\n * The observer runs outside the Angular zone as resize() is pure DOM manipulation,\n * and callbacks are coalesced through requestAnimationFrame.\n */\n private _setupResizeObserver(): void {\n if (typeof ResizeObserver === 'undefined') {\n return;\n }\n this._ngZone.runOutsideAngular(() => {\n this._resizeObserver = new ResizeObserver((entries) => {\n const width = entries[entries.length - 1].contentRect.width;\n if (width === this._lastObservedWidth) {\n return;\n }\n this._lastObservedWidth = width;\n if (width === 0) {\n return;\n }\n this._scheduleResize();\n });\n this._resizeObserver.observe(this._el.nativeElement);\n });\n }\n\n /** Coalesces resize requests into at most one measurement per animation frame. */\n private _scheduleResize(): void {\n if (this._pendingResize !== null) {\n return;\n }\n this._pendingResize = requestAnimationFrame(() => {\n this._pendingResize = null;\n this.resize();\n });\n }\n}\n","import { EdsTextarea } from './eds-textarea';\nimport { EdsAutoResizeDirective } from './eds-auto-resize.directive';\n\nexport { EdsTextarea, EdsAutoResizeDirective };\n\n/** Convenience array for importing eds-textarea with auto-resize. */\nexport const EDS_TEXTAREA = [\n EdsTextarea,\n EdsAutoResizeDirective,\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-eds-eds-textarea.mjs","sources":["../../eds-textarea/eds-textarea.ts","../../eds-textarea/eds-auto-resize.directive.ts","../../eds-textarea/index.ts","../../eds-textarea/eui-eds-eds-textarea.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n inject,\n input,\n booleanAttribute,\n DoCheck,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\n/**\n * @description\n * EDS Textarea component — a styled native `<textarea>` element.\n * Integrates with Angular forms and supports validation, readonly, and disabled states.\n *\n * @usageNotes\n * ```html\n * <textarea edsTextarea placeholder=\"Enter description...\"></textarea>\n * <textarea edsTextarea [(ngModel)]=\"value\"></textarea>\n * ```\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'textarea[edsTextarea]',\n template: '',\n styleUrl: './eds-textarea.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'eds-textarea',\n '[attr.invalid]': '_isInvalid || null',\n '[attr.data-e2e]': 'e2eAttr()',\n '[disabled]': 'disabled()',\n '[attr.readonly]': 'readonly() || null',\n '(input)': 'onHostInput($event)',\n '(blur)': 'onTouched()',\n },\n})\nexport class EdsTextarea implements ControlValueAccessor, DoCheck {\n /**\n * Data attribute value for end-to-end testing identification.\n * @default 'eds-textarea'\n */\n e2eAttr = input('eds-textarea');\n\n /**\n * Controls whether the textarea is disabled.\n * @default false\n */\n disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the textarea is readonly.\n * @default false\n */\n readonly = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the textarea shows an invalid/error state.\n * @default false\n */\n isInvalid = input(false, { transform: booleanAttribute });\n\n private _elementRef: ElementRef<HTMLTextAreaElement> = inject(ElementRef);\n private _ngControl = inject(NgControl, { optional: true, self: true });\n protected _isInvalid = false;\n\n constructor() {\n if (this._ngControl) {\n this._ngControl.valueAccessor = this;\n }\n }\n\n ngDoCheck(): void {\n if (this._ngControl) {\n this._isInvalid = this._ngControl.invalid && this._ngControl.touched;\n } else {\n this._isInvalid = this.isInvalid();\n }\n }\n\n // --- ControlValueAccessor ---\n\n writeValue(value: string): void {\n this._elementRef.nativeElement.value = value ?? '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(_isDisabled: boolean): void {\n // Disabled is handled via the input signal binding on the host element.\n }\n\n // --- Event handlers ---\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n protected onTouched: () => void = () => { /* noop */ };\n\n protected onHostInput(event: Event): void {\n const target = event.target as HTMLTextAreaElement;\n this._onChange(target.value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private _onChange: (value: string) => void = () => { /* noop */ };\n}\n","import {\n Directive,\n OnInit,\n OnDestroy,\n AfterViewInit,\n ElementRef,\n NgZone,\n Renderer2,\n inject,\n input,\n effect,\n numberAttribute,\n booleanAttribute,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\n/**\n * Directive that automatically adjusts the height of a textarea based on its content.\n * Supports minimum and maximum row constraints and can be enabled/disabled dynamically.\n *\n * @usageNotes\n * ```html\n * <textarea edsTextarea edsAutoResize [minRows]=\"2\" [maxRows]=\"10\"></textarea>\n * ```\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'textarea[edsAutoResize]',\n host: {\n '(input)': 'resize()',\n },\n})\nexport class EdsAutoResizeDirective implements OnInit, AfterViewInit, OnDestroy {\n /** Controls whether auto-resize is enabled. */\n edsAutoResize = input(true, { transform: booleanAttribute });\n\n /** Minimum number of rows. */\n minRows = input(1, { transform: numberAttribute });\n\n /** Maximum number of rows (0 = unlimited). */\n maxRows = input(0, { transform: numberAttribute });\n\n private _el = inject(ElementRef);\n private _renderer = inject(Renderer2);\n private _control = inject(NgControl, { optional: true });\n private _ngZone = inject(NgZone);\n private _destroy$ = new Subject<void>();\n private _observer: MutationObserver;\n private _resizeObserver: ResizeObserver;\n private _lastObservedWidth = -1;\n private _pendingResize: number | null = null;\n\n constructor() {\n effect(() => {\n const enable = this.edsAutoResize();\n this._renderer.setProperty(this._el.nativeElement, 'rows', this.minRows());\n this._renderer.setStyle(this._el.nativeElement, 'overflow', enable ? 'hidden' : '');\n this._renderer.setStyle(this._el.nativeElement, 'resize', enable ? 'none' : '');\n if (enable) {\n this.resize();\n }\n });\n }\n\n ngOnInit(): void {\n this._setupResizeObserver();\n\n this._observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'readonly') {\n this.resize();\n }\n }\n });\n this._observer.observe(this._el.nativeElement, { attributes: true });\n }\n\n ngAfterViewInit(): void {\n if (this.edsAutoResize()) {\n if (this._control) {\n this._control.valueChanges\n .pipe(takeUntil(this._destroy$), startWith(''))\n .subscribe(() => this.resize());\n } else {\n this.resize();\n }\n }\n }\n\n ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n this._observer?.disconnect();\n this._resizeObserver?.disconnect();\n if (this._pendingResize !== null) {\n cancelAnimationFrame(this._pendingResize);\n }\n }\n\n /** Calculates and applies the appropriate height based on content. */\n resize(): void {\n if (!this.edsAutoResize()) return;\n\n const el = this._el.nativeElement as HTMLTextAreaElement;\n const parent = el.parentNode;\n if (!parent) return;\n\n // A zero-width element (hidden panel, closed side container e.g. eui-app-side-container) cannot be measured\n // reliably; the ResizeObserver re-runs resize() once it gets a real width.\n if (el.offsetWidth === 0) return;\n\n // Clone to measure\n const clone = el.cloneNode(true) as HTMLTextAreaElement;\n clone.style.width = el.offsetWidth + 'px';\n clone.style.visibility = 'hidden';\n clone.style.position = 'absolute';\n clone.textContent = el.value;\n parent.appendChild(clone);\n clone.style.overflowY = 'hidden';\n clone.style.height = 'auto';\n\n let scrollHeight = clone.scrollHeight;\n\n // Enforce maxRows\n if (this.maxRows() > 0) {\n const lineHeight = parseInt(getComputedStyle(clone).lineHeight, 10) || 20;\n const maxHeight = lineHeight * this.maxRows();\n scrollHeight = Math.min(scrollHeight, maxHeight);\n if (scrollHeight >= maxHeight) {\n this._renderer.removeStyle(el, 'overflow');\n } else {\n this._renderer.setStyle(el, 'overflow', 'hidden');\n }\n }\n\n const height = scrollHeight <= 0 ? 'auto' : `${scrollHeight}px`;\n parent.removeChild(clone);\n this._renderer.setStyle(el, 'height', height);\n }\n\n /**\n * Observes the textarea's width and re-runs the height calculation when it changes,\n * covering cases the event-based triggers miss: a container that becomes visible after\n * the initial (zero-width) measurement, resizable panels being dragged, or any layout\n * change that reflows the textarea without a window resize.\n *\n * Only width changes are acted on: resize() itself sets the element's height, so\n * reacting to height changes would make the observer re-trigger its own work.\n * The observer runs outside the Angular zone as resize() is pure DOM manipulation,\n * and callbacks are coalesced through requestAnimationFrame.\n */\n private _setupResizeObserver(): void {\n if (typeof ResizeObserver === 'undefined') {\n return;\n }\n this._ngZone.runOutsideAngular(() => {\n this._resizeObserver = new ResizeObserver((entries) => {\n const width = entries[entries.length - 1].contentRect.width;\n if (width === this._lastObservedWidth) {\n return;\n }\n this._lastObservedWidth = width;\n if (width === 0) {\n return;\n }\n this._scheduleResize();\n });\n this._resizeObserver.observe(this._el.nativeElement);\n });\n }\n\n /** Coalesces resize requests into at most one measurement per animation frame. */\n private _scheduleResize(): void {\n if (this._pendingResize !== null) {\n return;\n }\n this._pendingResize = requestAnimationFrame(() => {\n this._pendingResize = null;\n this.resize();\n });\n }\n}\n","import { EdsTextarea } from './eds-textarea';\nimport { EdsAutoResizeDirective } from './eds-auto-resize.directive';\n\nexport { EdsTextarea, EdsAutoResizeDirective };\n\n/** Convenience array for importing eds-textarea with auto-resize. */\nexport const EDS_TEXTAREA = [\n EdsTextarea,\n EdsAutoResizeDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|