@eui/ecl 22.0.0-alpha.45 → 22.0.0-alpha.46
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 +38 -0
- package/docs/components/EclMenuItemComponent.html +203 -161
- package/docs/components/EclMenuMegaItemComponent.html +3 -3
- package/docs/interfaces/EclMenuItem.html +4 -4
- package/docs/js/search/search_index.js +2 -2
- package/docs/json/documentation.json +152 -124
- package/docs/llms.txt +13 -7
- package/docs/properties.html +1 -1
- package/fesm2022/eui-ecl-components-ecl-accordion.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-add-to-calendar.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-animated-numbers.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-app.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-banner.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-blockquote.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-breadcrumb.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-button.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-card.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-carousel.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-category-filter.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-checkbox.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-content-block.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-content-item.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-date-block.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-date-picker.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-divider.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-expandable.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-fact-figures.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-featured.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-feedback-message.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-file-upload.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-file.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-form-group.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-form-label.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-gallery.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-help-block.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-highlight-box.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-highlighted-search.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-icon.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-inpage-navigation.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-label.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-layout-wrapper.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-link.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-list-illustration.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-list.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-loading-indicator.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-media-container.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-mega-menu.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-menu.mjs +67 -49
- package/fesm2022/eui-ecl-components-ecl-menu.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-modal.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-navigation-list.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-news-ticker.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-notification.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-page-header.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-page-information.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-page-summary.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-pagination.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-popover.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-quiz.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-radio.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-range.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-rating-field.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-search-form.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-select.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-site-footer.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-site-header.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-slogan-ticker.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-social-media-follow.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-splash-page.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-spotlight.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-sticky-container.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-story-card.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-table.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-tabs.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-tag.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-text-area.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-text-input.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-text-media.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-timeline.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-tooltip.mjs.map +1 -1
- package/fesm2022/eui-ecl-core.mjs.map +1 -1
- package/fesm2022/eui-ecl-shared.mjs.map +1 -1
- package/package.json +1 -1
- package/types/eui-ecl-components-ecl-accordion.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-add-to-calendar.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-animated-numbers.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-app.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-banner.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-blockquote.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-breadcrumb.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-button.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-card.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-carousel.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-category-filter.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-checkbox.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-content-block.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-content-item.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-date-block.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-date-picker.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-divider.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-expandable.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-fact-figures.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-featured.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-feedback-message.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-file-upload.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-file.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-form-group.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-form-label.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-gallery.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-help-block.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-highlight-box.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-highlighted-search.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-icon.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-inpage-navigation.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-label.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-layout-wrapper.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-link.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-list-illustration.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-list.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-loading-indicator.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-media-container.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-mega-menu.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-menu.d.ts +16 -11
- package/types/eui-ecl-components-ecl-menu.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-modal.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-multiselect.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-navigation-list.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-news-ticker.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-notification.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-page-header.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-page-information.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-page-summary.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-pagination.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-popover.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-quiz.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-radio.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-range.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-rating-field.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-search-form.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-select.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-site-footer.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-site-header.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-slogan-ticker.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-social-media-follow.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-splash-page.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-spotlight.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-sticky-container.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-story-card.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-table.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-tabs.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-tag.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-text-area.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-text-input.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-text-media.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-timeline.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-tooltip.d.ts.map +1 -1
- package/types/eui-ecl-core.d.ts.map +1 -1
- package/types/eui-ecl-shared.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-range.mjs","sources":["../../components/ecl-range/ecl-range-bubble.component.ts","../../components/ecl-range/ecl-range-bubble.component.html","../../components/ecl-range/ecl-range-value.component.ts","../../components/ecl-range/ecl-range-value.component.html","../../components/ecl-range/events/ecl-range.event.ts","../../components/ecl-range/ecl-range.directive.ts","../../components/ecl-range/index.ts","../../components/ecl-range/eui-ecl-components-ecl-range.ts"],"sourcesContent":["import { Component, ElementRef, computed, inject, signal } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Component representing a bubble tooltip shown above a range input,\n * used to display the current value with ECL styling.\n */\n@Component({\n\tselector: 'ecl-range-bubble',\n\ttemplateUrl: './ecl-range-bubble.component.html',\n\thost: {\n\t\t'[class]': 'cssClasses()',\n\t\t'[style.left.px]': 'left()',\n\t},\n})\nexport class EclRangeBubbleComponent extends ECLBaseDirective {\n\tel = inject(ElementRef);\n\n\t/**\n\t * Value displayed inside the bubble.\n\t */\n\tvalue = signal<number>(0);\n\n\t/**\n\t * Horizontal offset in pixels for positioning the bubble.\n\t * Applied as the left style property of the host element.\n\t */\n\tleft = signal<number>(0);\n\n\t/**\n\t * Controls the visibility of the bubble.\n\t * Adds the `ecl-range__bubble--visible` class when true.\n\t */\n\tisVisible = signal(false);\n\n\t/**\n\t * Returns the CSS classes applied to the host element.\n\t * Always includes `ecl-range__bubble` and optionally adds the visible modifier.\n\t */\n\tprotected readonly cssClasses = computed<string>(() =>\n\t\t[\n\t\t\tsuper.getCssClasses('ecl-range__bubble'),\n\t\t\tthis.isVisible() ? 'ecl-range__bubble--visible' : '',\n\t\t].join(' ').trim());\n}\n","<span class=\"ecl-range__value-bubble\">{{ value() }}</span>","import { Component, computed, signal } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Component representing the value label displayed next to a range input.\n * Applies ECL styling for the value element.\n */\n@Component({\n selector: 'ecl-range-value',\n templateUrl: './ecl-range-value.component.html',\n imports: [TranslatePipe],\n host: {\n '[class]': 'cssClasses()',\n '[attr.id]': 'idBinding',\n },\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class EclRangeValueComponent extends ECLBaseDirective {\n /**\n * Value to display next to the range input.\n */\n value = signal<number>(0);\n\n /**\n * ID attribute applied to the component's host element.\n */\n id = signal<string>('');\n\n protected get idBinding(): string | null {\n return this.id() || null;\n }\n\n /**\n * Returns the CSS classes applied to the host element.\n * Adds the base `ecl-range__value` class for styling.\n */\n protected readonly cssClasses = computed<string>(() => super.getCssClasses('ecl-range__value'));\n}\n","{{ 'ecl.common.VALUE' | translate }}: <span class=\"ecl-range__value-current\"> {{ value() }} </span>\n","import { EclBaseEvent } from '@eui/ecl/core';\n\n/**\n * Event emitted by the ECL range directive\n * whenever the range value changes.\n */\nexport class EclRangeEvent extends EclBaseEvent {\n /**\n * The current numeric value of the range input.\n */\n constructor(public value: number) {\n super();\n }\n}\n","import { Directive, ElementRef, OnDestroy, OnInit, ViewContainerRef, booleanAttribute, ChangeDetectorRef, computed, inject, input, output, Renderer2, AfterViewInit, ComponentRef } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subject, distinctUntilChanged, fromEvent, takeUntil } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclRtlService } from '@eui/ecl/core';\nimport { EclRangeValueComponent } from './ecl-range-value.component';\nimport { EclRangeBubbleComponent } from './ecl-range-bubble.component';\nimport { EclRangeEvent } from './events/ecl-range.event';\n\n/**\n * Directive enhancing native input[type=range] with ECL styles and behavior.\n * Adds value display, bubble indicator, RTL support and integration with reactive forms.\n */\n@Directive({\n selector: 'input[eclRange]',\n host: {\n '[class]': 'cssClasses()',\n '[class.ecl-range--invalid]': 'invalidState',\n '(input)': 'onInput($any($event))',\n },\n})\nexport class EclRangeDirective extends ECLBaseDirective implements OnInit, AfterViewInit, OnDestroy {\n\n /**\n * Defines the size of the range component.\n * Adds a corresponding size class like `ecl-range--m`.\n */\n eclSize = input('m');\n\n /**\n * Initial value for the range input when used standalone.\n */\n value = input<string>();\n\n /**\n * ID assigned to the projected ECL range value component.\n */\n rangeValueId = input<string>();\n\n /**\n * Adds the `ecl-range--invalid` class when true.\n */\n isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * Enables or disables the display of a value label.\n */\n hasValueLabel = input(true, { transform: booleanAttribute });\n\n /**\n * Emits when the range value changes.\n */\n rangeChange = output<EclRangeEvent>();\n\n protected ngControl = inject(NgControl, { optional: true, self: true });\n private container: HTMLElement;\n private bubbleRef!: ComponentRef<EclRangeBubbleComponent>;\n private valueRef!: ComponentRef<EclRangeValueComponent>;\n private rangeValueComponent: EclRangeValueComponent;\n private rangeBubbleComponent: EclRangeBubbleComponent;\n private isRtl = false;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private viewContainerRef = inject(ViewContainerRef);\n private eclRtlService = inject(EclRtlService);\n private cd = inject(ChangeDetectorRef);\n private readonly el = inject(ElementRef<HTMLInputElement>);\n private readonly renderer = inject(Renderer2);\n\n protected readonly cssClasses = computed<string>(() =>\n [super.getCssClasses('ecl-range'), this.eclSize() ? `ecl-range--${this.eclSize()}` : ''].join(' ').trim());\n\n protected 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 /**\n * Handles native input events on the range element\n * when not used with reactive forms.\n */\n onInput(evt: InputEvent): void {\n if (!this.ngControl) {\n const target = evt.target as HTMLInputElement;\n this.updateRangeValue(target.value);\n }\n }\n\n /**\n * Angular lifecycle hook.\n * Initializes dynamic components and event listeners.\n */\n ngOnInit(): void {\n this.createRangeValueComponent();\n this.initializeRangeValueComponent();\n this.initializeEventListeners();\n this.observeReactiveFormValueChanges();\n this.handleRtlChangeState();\n }\n\n ngAfterViewInit(): void {\n const input = this.el.nativeElement;\n const parent = input.parentNode as HTMLElement | null;\n if (!parent) return;\n\n // Prevent double-wrapping (e.g., HMR, re-init, etc.)\n if (parent.classList?.contains('ecl-range-container')) return;\n\n this.container = this.renderer.createElement('div');\n this.renderer.addClass(this.container, 'ecl-range-container');\n this.renderer.addClass(this.container, `ecl-range-container--${this.eclSize()}`);\n\n // Insert wrapper before input\n this.renderer.insertBefore(parent, this.container, input);\n\n // Move input inside wrapper\n this.renderer.removeChild(parent, input);\n this.renderer.appendChild(this.container, input);\n\n // Move bubble + value host elements into wrapper too\n const bubbleEl = this.bubbleRef?.location.nativeElement as HTMLElement | undefined;\n const valueEl = this.valueRef?.location.nativeElement as HTMLElement | undefined;\n\n if (bubbleEl?.parentNode) {\n this.renderer.removeChild(bubbleEl.parentNode, bubbleEl);\n this.renderer.appendChild(this.container, bubbleEl);\n }\n\n if (valueEl?.parentNode) {\n this.renderer.removeChild(valueEl.parentNode, valueEl);\n this.renderer.appendChild(this.container, valueEl);\n }\n\n requestAnimationFrame(() => this.recalculateBubblePosition());\n }\n\n /**\n * Angular lifecycle hook.\n * Cleans up subscriptions on destroy.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n this.isRtl = rtlState;\n });\n }\n\n private createRangeValueComponent(): void {\n this.bubbleRef = this.viewContainerRef.createComponent(EclRangeBubbleComponent);\n this.valueRef = this.viewContainerRef.createComponent(EclRangeValueComponent);\n\n this.rangeBubbleComponent = this.bubbleRef.instance;\n this.rangeValueComponent = this.valueRef.instance;\n\n const valueId = this.rangeValueId();\n if (valueId) {\n this.rangeValueComponent.id.set(valueId);\n }\n }\n\n private initializeRangeValueComponent(): void {\n const initialValue = this.ngControl ? this.ngControl.value : this.value();\n this.updateRangeValue(initialValue);\n }\n\n private observeReactiveFormValueChanges(): void {\n this.ngControl?.valueChanges.pipe(distinctUntilChanged(), takeUntil(this.destroy$)).subscribe((value: string) => {\n this.updateRangeValue(value);\n });\n }\n\n private updateRangeValue(value: string): void {\n const numberValue = parseInt(value, 10);\n\n this.rangeBubbleComponent.value.set(numberValue);\n this.rangeValueComponent.value.set(numberValue);\n\n this.rangeChange.emit(new EclRangeEvent(numberValue));\n }\n\n private initializeEventListeners(): void {\n const rangeElement = this.el.nativeElement;\n\n const mouseEnter$ = fromEvent(rangeElement, 'mouseenter');\n const mouseLeave$ = fromEvent(rangeElement, 'mouseleave');\n const rangeValueChange$ = fromEvent(rangeElement, 'input');\n\n mouseEnter$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.rangeBubbleComponent.isVisible.set(true);\n this.cd.detectChanges();\n this.recalculateBubblePosition();\n });\n\n rangeValueChange$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.recalculateBubblePosition();\n });\n\n mouseLeave$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.rangeBubbleComponent.isVisible.set(false);\n });\n }\n\n private recalculateBubblePosition(): void {\n let containerLeft = 0;\n const halfThumbWidth = 8;\n const halfLabelWidth = this.rangeBubbleComponent.el.nativeElement.offsetWidth / 2;\n\n const rect = this.el.nativeElement.getBoundingClientRect();\n const center = rect.width / 2;\n\n if (this.container) {\n const containerRect = this.container.getBoundingClientRect();\n containerLeft = containerRect.left;\n }\n\n const min = this.el.nativeElement.min ? Number(this.el.nativeElement.min) : 0;\n const max = Number(this.el.nativeElement.max);\n const val = Number(this.el.nativeElement.value);\n\n const percentOfRange = (val - min) / (max - min);\n\n const valuePxPosition = percentOfRange * rect.width;\n const distFromCenter = valuePxPosition - center;\n const percentDistFromCenter = distFromCenter / center;\n\n const offset = percentDistFromCenter * halfThumbWidth;\n const leftFromParent = rect.left - containerLeft;\n if (this.isRtl) {\n this.rangeBubbleComponent.left.set(leftFromParent + rect.width - valuePxPosition - halfLabelWidth + offset);\n } else {\n this.rangeBubbleComponent.left.set(leftFromParent + valuePxPosition - halfLabelWidth - offset);\n }\n }\n}\n","import { EclRangeBubbleComponent } from './ecl-range-bubble.component';\nimport { EclRangeValueComponent } from './ecl-range-value.component';\nimport { EclRangeDirective } from './ecl-range.directive';\n\nexport * from './ecl-range.directive';\nexport * from './ecl-range-value.component';\nexport * from './ecl-range-bubble.component';\nexport * from './events/ecl-range.event';\n\nexport const EUI_ECL_RANGE = [\n EclRangeDirective, EclRangeValueComponent, EclRangeBubbleComponent,\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-range.mjs","sources":["../../components/ecl-range/ecl-range-bubble.component.ts","../../components/ecl-range/ecl-range-bubble.component.html","../../components/ecl-range/ecl-range-value.component.ts","../../components/ecl-range/ecl-range-value.component.html","../../components/ecl-range/events/ecl-range.event.ts","../../components/ecl-range/ecl-range.directive.ts","../../components/ecl-range/index.ts","../../components/ecl-range/eui-ecl-components-ecl-range.ts"],"sourcesContent":["import { Component, ElementRef, computed, inject, signal } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Component representing a bubble tooltip shown above a range input,\n * used to display the current value with ECL styling.\n */\n@Component({\n\tselector: 'ecl-range-bubble',\n\ttemplateUrl: './ecl-range-bubble.component.html',\n\thost: {\n\t\t'[class]': 'cssClasses()',\n\t\t'[style.left.px]': 'left()',\n\t},\n})\nexport class EclRangeBubbleComponent extends ECLBaseDirective {\n\tel = inject(ElementRef);\n\n\t/**\n\t * Value displayed inside the bubble.\n\t */\n\tvalue = signal<number>(0);\n\n\t/**\n\t * Horizontal offset in pixels for positioning the bubble.\n\t * Applied as the left style property of the host element.\n\t */\n\tleft = signal<number>(0);\n\n\t/**\n\t * Controls the visibility of the bubble.\n\t * Adds the `ecl-range__bubble--visible` class when true.\n\t */\n\tisVisible = signal(false);\n\n\t/**\n\t * Returns the CSS classes applied to the host element.\n\t * Always includes `ecl-range__bubble` and optionally adds the visible modifier.\n\t */\n\tprotected readonly cssClasses = computed<string>(() =>\n\t\t[\n\t\t\tsuper.getCssClasses('ecl-range__bubble'),\n\t\t\tthis.isVisible() ? 'ecl-range__bubble--visible' : '',\n\t\t].join(' ').trim());\n}\n","<span class=\"ecl-range__value-bubble\">{{ value() }}</span>","import { Component, computed, signal } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Component representing the value label displayed next to a range input.\n * Applies ECL styling for the value element.\n */\n@Component({\n selector: 'ecl-range-value',\n templateUrl: './ecl-range-value.component.html',\n imports: [TranslatePipe],\n host: {\n '[class]': 'cssClasses()',\n '[attr.id]': 'idBinding',\n },\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class EclRangeValueComponent extends ECLBaseDirective {\n /**\n * Value to display next to the range input.\n */\n value = signal<number>(0);\n\n /**\n * ID attribute applied to the component's host element.\n */\n id = signal<string>('');\n\n protected get idBinding(): string | null {\n return this.id() || null;\n }\n\n /**\n * Returns the CSS classes applied to the host element.\n * Adds the base `ecl-range__value` class for styling.\n */\n protected readonly cssClasses = computed<string>(() => super.getCssClasses('ecl-range__value'));\n}\n","{{ 'ecl.common.VALUE' | translate }}: <span class=\"ecl-range__value-current\"> {{ value() }} </span>\n","import { EclBaseEvent } from '@eui/ecl/core';\n\n/**\n * Event emitted by the ECL range directive\n * whenever the range value changes.\n */\nexport class EclRangeEvent extends EclBaseEvent {\n /**\n * The current numeric value of the range input.\n */\n constructor(public value: number) {\n super();\n }\n}\n","import { Directive, ElementRef, OnDestroy, OnInit, ViewContainerRef, booleanAttribute, ChangeDetectorRef, computed, inject, input, output, Renderer2, AfterViewInit, ComponentRef } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subject, distinctUntilChanged, fromEvent, takeUntil } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclRtlService } from '@eui/ecl/core';\nimport { EclRangeValueComponent } from './ecl-range-value.component';\nimport { EclRangeBubbleComponent } from './ecl-range-bubble.component';\nimport { EclRangeEvent } from './events/ecl-range.event';\n\n/**\n * Directive enhancing native input[type=range] with ECL styles and behavior.\n * Adds value display, bubble indicator, RTL support and integration with reactive forms.\n */\n@Directive({\n selector: 'input[eclRange]',\n host: {\n '[class]': 'cssClasses()',\n '[class.ecl-range--invalid]': 'invalidState',\n '(input)': 'onInput($any($event))',\n },\n})\nexport class EclRangeDirective extends ECLBaseDirective implements OnInit, AfterViewInit, OnDestroy {\n\n /**\n * Defines the size of the range component.\n * Adds a corresponding size class like `ecl-range--m`.\n */\n eclSize = input('m');\n\n /**\n * Initial value for the range input when used standalone.\n */\n value = input<string>();\n\n /**\n * ID assigned to the projected ECL range value component.\n */\n rangeValueId = input<string>();\n\n /**\n * Adds the `ecl-range--invalid` class when true.\n */\n isInvalid = input(false, { transform: booleanAttribute });\n\n /**\n * Enables or disables the display of a value label.\n */\n hasValueLabel = input(true, { transform: booleanAttribute });\n\n /**\n * Emits when the range value changes.\n */\n rangeChange = output<EclRangeEvent>();\n\n protected ngControl = inject(NgControl, { optional: true, self: true });\n private container: HTMLElement;\n private bubbleRef!: ComponentRef<EclRangeBubbleComponent>;\n private valueRef!: ComponentRef<EclRangeValueComponent>;\n private rangeValueComponent: EclRangeValueComponent;\n private rangeBubbleComponent: EclRangeBubbleComponent;\n private isRtl = false;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private viewContainerRef = inject(ViewContainerRef);\n private eclRtlService = inject(EclRtlService);\n private cd = inject(ChangeDetectorRef);\n private readonly el = inject(ElementRef<HTMLInputElement>);\n private readonly renderer = inject(Renderer2);\n\n protected readonly cssClasses = computed<string>(() =>\n [super.getCssClasses('ecl-range'), this.eclSize() ? `ecl-range--${this.eclSize()}` : ''].join(' ').trim());\n\n protected 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 /**\n * Handles native input events on the range element\n * when not used with reactive forms.\n */\n onInput(evt: InputEvent): void {\n if (!this.ngControl) {\n const target = evt.target as HTMLInputElement;\n this.updateRangeValue(target.value);\n }\n }\n\n /**\n * Angular lifecycle hook.\n * Initializes dynamic components and event listeners.\n */\n ngOnInit(): void {\n this.createRangeValueComponent();\n this.initializeRangeValueComponent();\n this.initializeEventListeners();\n this.observeReactiveFormValueChanges();\n this.handleRtlChangeState();\n }\n\n ngAfterViewInit(): void {\n const input = this.el.nativeElement;\n const parent = input.parentNode as HTMLElement | null;\n if (!parent) return;\n\n // Prevent double-wrapping (e.g., HMR, re-init, etc.)\n if (parent.classList?.contains('ecl-range-container')) return;\n\n this.container = this.renderer.createElement('div');\n this.renderer.addClass(this.container, 'ecl-range-container');\n this.renderer.addClass(this.container, `ecl-range-container--${this.eclSize()}`);\n\n // Insert wrapper before input\n this.renderer.insertBefore(parent, this.container, input);\n\n // Move input inside wrapper\n this.renderer.removeChild(parent, input);\n this.renderer.appendChild(this.container, input);\n\n // Move bubble + value host elements into wrapper too\n const bubbleEl = this.bubbleRef?.location.nativeElement as HTMLElement | undefined;\n const valueEl = this.valueRef?.location.nativeElement as HTMLElement | undefined;\n\n if (bubbleEl?.parentNode) {\n this.renderer.removeChild(bubbleEl.parentNode, bubbleEl);\n this.renderer.appendChild(this.container, bubbleEl);\n }\n\n if (valueEl?.parentNode) {\n this.renderer.removeChild(valueEl.parentNode, valueEl);\n this.renderer.appendChild(this.container, valueEl);\n }\n\n requestAnimationFrame(() => this.recalculateBubblePosition());\n }\n\n /**\n * Angular lifecycle hook.\n * Cleans up subscriptions on destroy.\n */\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n private handleRtlChangeState(): void {\n this.eclRtlService.currentRtlState$.pipe(takeUntil(this.destroy$)).subscribe((rtlState) => {\n this.isRtl = rtlState;\n });\n }\n\n private createRangeValueComponent(): void {\n this.bubbleRef = this.viewContainerRef.createComponent(EclRangeBubbleComponent);\n this.valueRef = this.viewContainerRef.createComponent(EclRangeValueComponent);\n\n this.rangeBubbleComponent = this.bubbleRef.instance;\n this.rangeValueComponent = this.valueRef.instance;\n\n const valueId = this.rangeValueId();\n if (valueId) {\n this.rangeValueComponent.id.set(valueId);\n }\n }\n\n private initializeRangeValueComponent(): void {\n const initialValue = this.ngControl ? this.ngControl.value : this.value();\n this.updateRangeValue(initialValue);\n }\n\n private observeReactiveFormValueChanges(): void {\n this.ngControl?.valueChanges.pipe(distinctUntilChanged(), takeUntil(this.destroy$)).subscribe((value: string) => {\n this.updateRangeValue(value);\n });\n }\n\n private updateRangeValue(value: string): void {\n const numberValue = parseInt(value, 10);\n\n this.rangeBubbleComponent.value.set(numberValue);\n this.rangeValueComponent.value.set(numberValue);\n\n this.rangeChange.emit(new EclRangeEvent(numberValue));\n }\n\n private initializeEventListeners(): void {\n const rangeElement = this.el.nativeElement;\n\n const mouseEnter$ = fromEvent(rangeElement, 'mouseenter');\n const mouseLeave$ = fromEvent(rangeElement, 'mouseleave');\n const rangeValueChange$ = fromEvent(rangeElement, 'input');\n\n mouseEnter$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.rangeBubbleComponent.isVisible.set(true);\n this.cd.detectChanges();\n this.recalculateBubblePosition();\n });\n\n rangeValueChange$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.recalculateBubblePosition();\n });\n\n mouseLeave$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.rangeBubbleComponent.isVisible.set(false);\n });\n }\n\n private recalculateBubblePosition(): void {\n let containerLeft = 0;\n const halfThumbWidth = 8;\n const halfLabelWidth = this.rangeBubbleComponent.el.nativeElement.offsetWidth / 2;\n\n const rect = this.el.nativeElement.getBoundingClientRect();\n const center = rect.width / 2;\n\n if (this.container) {\n const containerRect = this.container.getBoundingClientRect();\n containerLeft = containerRect.left;\n }\n\n const min = this.el.nativeElement.min ? Number(this.el.nativeElement.min) : 0;\n const max = Number(this.el.nativeElement.max);\n const val = Number(this.el.nativeElement.value);\n\n const percentOfRange = (val - min) / (max - min);\n\n const valuePxPosition = percentOfRange * rect.width;\n const distFromCenter = valuePxPosition - center;\n const percentDistFromCenter = distFromCenter / center;\n\n const offset = percentDistFromCenter * halfThumbWidth;\n const leftFromParent = rect.left - containerLeft;\n if (this.isRtl) {\n this.rangeBubbleComponent.left.set(leftFromParent + rect.width - valuePxPosition - halfLabelWidth + offset);\n } else {\n this.rangeBubbleComponent.left.set(leftFromParent + valuePxPosition - halfLabelWidth - offset);\n }\n }\n}\n","import { EclRangeBubbleComponent } from './ecl-range-bubble.component';\nimport { EclRangeValueComponent } from './ecl-range-value.component';\nimport { EclRangeDirective } from './ecl-range.directive';\n\nexport * from './ecl-range.directive';\nexport * from './ecl-range-value.component';\nexport * from './ecl-range-bubble.component';\nexport * from './events/ecl-range.event';\n\nexport const EUI_ECL_RANGE = [\n EclRangeDirective, EclRangeValueComponent, EclRangeBubbleComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-rating-field.mjs","sources":["../../components/ecl-rating-field/events/ecl-rating-change.event.ts","../../components/ecl-rating-field/ecl-rating-field.component.ts","../../components/ecl-rating-field/ecl-rating-field.component.html","../../components/ecl-rating-field/index.ts","../../components/ecl-rating-field/eui-ecl-components-ecl-rating-field.ts"],"sourcesContent":["import { EclBaseEvent } from '@eui/ecl/core';\n\nexport class EclRatingChangeEvent extends EclBaseEvent {\n constructor(public readonly value: number) {\n super();\n }\n}","import { booleanAttribute, Component, computed, effect, forwardRef, linkedSignal, numberAttribute, Provider, output, input, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclRatingChangeEvent } from './events/ecl-rating-change.event';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\nexport const ECL_RATINGFIELD_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EclRatingFieldComponent),\n multi: true,\n};\n\nconst noop = (): void => {\n /** empty */\n};\n\n/**\n * Component representing rating field, displayed with stars.\n * Typically used when the user needs to evaluate something.\n */\n@Component({\n selector: 'ecl-rating-field',\n templateUrl: './ecl-rating-field.component.html',\n imports: [...EUI_ECL_ICON],\n providers: [ECL_RATINGFIELD_VALUE_ACCESSOR],\n host: {\n '[attr.disabled]': 'isDisabledState() || undefined',\n '[class]': 'cssClasses()',\n },\n})\nexport class EclRatingFieldComponent extends ECLBaseDirective implements ControlValueAccessor {\n /**\n * Name of the radio group. Also used for creating id for each radio button.\n */\n readonly name = input('rating');\n /**\n * How many stars should the rating have.\n */\n readonly numberOfStars = input(5, { transform: numberAttribute });\n /**\n * The initial value, if any.\n */\n readonly rating = input<number, unknown>(undefined, { transform: numberAttribute });\n\n /** Internal mutable rating value, falls back to the input */\n readonly currentRating = signal<number>(undefined);\n\n private readonly _syncRating = effect(() => {\n const inputRating = this.rating();\n if (inputRating !== undefined) {\n this.currentRating.set(inputRating);\n }\n });\n /**\n * Can be used to set disabled status.\n * One-way input; the live disabled state is tracked internally and may also be driven\n * by the forms API via `setDisabledState`.\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Live disabled state. Seeded from the `disabled` input and updated by the Angular\n * forms API through `setDisabledState`, so a reactive form's enable/disable re-syncs\n * while an input-provided value is honoured.\n */\n protected readonly isDisabledState = linkedSignal(() => this.disabled());\n\n /**\n * The event to be emitted when rating is changed.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly ratingChange = output<any>();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private onChange: (_: any) => void = noop;\n private onTouched: () => void = noop;\n\n /**\n * Array of numbers, from 1 to 'numberOfStars'\n */\n get numbers(): number[] {\n return Array(this.numberOfStars())\n .fill(0)\n .map((_, i) => this.numberOfStars() - i);\n }\n\n /**\n * Applies the base class `ecl-rating-field` to the host element. Applies 'ecl-rating-field--disabled' class on condition.\n */\n protected readonly cssClasses = computed<string>(() =>\n [super.getCssClasses('ecl-rating-field'), this.isDisabledState() ? 'ecl-rating-field--disabled' : ''].join(' ').trim());\n\n /**\n * Method that sets the new rating and emit 'ratingChange' event, that includes the new rating number.\n * @param rating - the new rating\n */\n onRadioClick(rating: number): void {\n this.currentRating.set(rating);\n this.onTouched();\n this.onChange(this.currentRating());\n\n const evt = new EclRatingChangeEvent(rating);\n this.ratingChange.emit(evt);\n }\n\n /**\n * Informs the component of any changes in the parent (ControlValueAccessor). Sets the new value for the 'rating' property.\n * @param value\n */\n writeValue(value: number): void {\n this.currentRating.set(value);\n }\n\n /**\n * Disable/enable component.\n * @param isDisabled\n */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledState.set(isDisabled);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","@for(n of numbers;track n) {\n <input\n type=\"radio\"\n id=\"{{ name() }}-{{ n }}\"\n [name]=\"name()\"\n class=\"ecl-rating-field__input\"\n [value]=\"n\"\n required=\"\"\n [attr.checked]=\"currentRating() === n ? true : undefined\"\n [attr.disabled]=\"isDisabledState() ? true : undefined\"\n (click)=\"onRadioClick(n)\" />\n <label class=\"ecl-rating-field__label\" for=\"{{ name() }}-{{ n }}\">\n <span class=\"ecl-rating-field__sr-label\">{{ n }} stars</span>\n <ecl-icon icon=\"star-filled\" class=\"ecl-rating-field__icon-filled\" size=\"l\"> </ecl-icon>\n <ecl-icon icon=\"star-outline\" class=\"ecl-rating-field__icon-outline\" size=\"l\"> </ecl-icon>\n </label>\n}\n","import { EclRatingFieldComponent } from './ecl-rating-field.component';\n\nexport * from './ecl-rating-field.component';\nexport * from './events/ecl-rating-change.event';\n\nexport const EUI_ECL_RATING_FIELD = [\n EclRatingFieldComponent,\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-rating-field.mjs","sources":["../../components/ecl-rating-field/events/ecl-rating-change.event.ts","../../components/ecl-rating-field/ecl-rating-field.component.ts","../../components/ecl-rating-field/ecl-rating-field.component.html","../../components/ecl-rating-field/index.ts","../../components/ecl-rating-field/eui-ecl-components-ecl-rating-field.ts"],"sourcesContent":["import { EclBaseEvent } from '@eui/ecl/core';\n\nexport class EclRatingChangeEvent extends EclBaseEvent {\n constructor(public readonly value: number) {\n super();\n }\n}","import { booleanAttribute, Component, computed, effect, forwardRef, linkedSignal, numberAttribute, Provider, output, input, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclRatingChangeEvent } from './events/ecl-rating-change.event';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\nexport const ECL_RATINGFIELD_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EclRatingFieldComponent),\n multi: true,\n};\n\nconst noop = (): void => {\n /** empty */\n};\n\n/**\n * Component representing rating field, displayed with stars.\n * Typically used when the user needs to evaluate something.\n */\n@Component({\n selector: 'ecl-rating-field',\n templateUrl: './ecl-rating-field.component.html',\n imports: [...EUI_ECL_ICON],\n providers: [ECL_RATINGFIELD_VALUE_ACCESSOR],\n host: {\n '[attr.disabled]': 'isDisabledState() || undefined',\n '[class]': 'cssClasses()',\n },\n})\nexport class EclRatingFieldComponent extends ECLBaseDirective implements ControlValueAccessor {\n /**\n * Name of the radio group. Also used for creating id for each radio button.\n */\n readonly name = input('rating');\n /**\n * How many stars should the rating have.\n */\n readonly numberOfStars = input(5, { transform: numberAttribute });\n /**\n * The initial value, if any.\n */\n readonly rating = input<number, unknown>(undefined, { transform: numberAttribute });\n\n /** Internal mutable rating value, falls back to the input */\n readonly currentRating = signal<number>(undefined);\n\n private readonly _syncRating = effect(() => {\n const inputRating = this.rating();\n if (inputRating !== undefined) {\n this.currentRating.set(inputRating);\n }\n });\n /**\n * Can be used to set disabled status.\n * One-way input; the live disabled state is tracked internally and may also be driven\n * by the forms API via `setDisabledState`.\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /**\n * Live disabled state. Seeded from the `disabled` input and updated by the Angular\n * forms API through `setDisabledState`, so a reactive form's enable/disable re-syncs\n * while an input-provided value is honoured.\n */\n protected readonly isDisabledState = linkedSignal(() => this.disabled());\n\n /**\n * The event to be emitted when rating is changed.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly ratingChange = output<any>();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private onChange: (_: any) => void = noop;\n private onTouched: () => void = noop;\n\n /**\n * Array of numbers, from 1 to 'numberOfStars'\n */\n get numbers(): number[] {\n return Array(this.numberOfStars())\n .fill(0)\n .map((_, i) => this.numberOfStars() - i);\n }\n\n /**\n * Applies the base class `ecl-rating-field` to the host element. Applies 'ecl-rating-field--disabled' class on condition.\n */\n protected readonly cssClasses = computed<string>(() =>\n [super.getCssClasses('ecl-rating-field'), this.isDisabledState() ? 'ecl-rating-field--disabled' : ''].join(' ').trim());\n\n /**\n * Method that sets the new rating and emit 'ratingChange' event, that includes the new rating number.\n * @param rating - the new rating\n */\n onRadioClick(rating: number): void {\n this.currentRating.set(rating);\n this.onTouched();\n this.onChange(this.currentRating());\n\n const evt = new EclRatingChangeEvent(rating);\n this.ratingChange.emit(evt);\n }\n\n /**\n * Informs the component of any changes in the parent (ControlValueAccessor). Sets the new value for the 'rating' property.\n * @param value\n */\n writeValue(value: number): void {\n this.currentRating.set(value);\n }\n\n /**\n * Disable/enable component.\n * @param isDisabled\n */\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledState.set(isDisabled);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","@for(n of numbers;track n) {\n <input\n type=\"radio\"\n id=\"{{ name() }}-{{ n }}\"\n [name]=\"name()\"\n class=\"ecl-rating-field__input\"\n [value]=\"n\"\n required=\"\"\n [attr.checked]=\"currentRating() === n ? true : undefined\"\n [attr.disabled]=\"isDisabledState() ? true : undefined\"\n (click)=\"onRadioClick(n)\" />\n <label class=\"ecl-rating-field__label\" for=\"{{ name() }}-{{ n }}\">\n <span class=\"ecl-rating-field__sr-label\">{{ n }} stars</span>\n <ecl-icon icon=\"star-filled\" class=\"ecl-rating-field__icon-filled\" size=\"l\"> </ecl-icon>\n <ecl-icon icon=\"star-outline\" class=\"ecl-rating-field__icon-outline\" size=\"l\"> </ecl-icon>\n </label>\n}\n","import { EclRatingFieldComponent } from './ecl-rating-field.component';\n\nexport * from './ecl-rating-field.component';\nexport * from './events/ecl-rating-change.event';\n\nexport const EUI_ECL_RATING_FIELD = [\n EclRatingFieldComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-search-form.mjs","sources":["../../components/ecl-search-form/events/ecl-search-form.event.ts","../../components/ecl-search-form/ecl-search-form.component.ts","../../components/ecl-search-form/ecl-search-form.component.html","../../components/ecl-search-form/index.ts","../../components/ecl-search-form/eui-ecl-components-ecl-search-form.ts"],"sourcesContent":["import { EclBaseEvent } from '@eui/ecl/core';\n\nexport class EclSearchFormEvent extends EclBaseEvent {\n\tconstructor(public keyword: string) {\n\t\tsuper();\n\t}\n}\n","import {\n Component,\n computed,\n forwardRef,\n Provider,\n inject,\n output,\n input,\n model,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclThemeService } from '@eui/ecl/core';\nimport { EclSearchFormEvent } from './events/ecl-search-form.event';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_FORM_GROUP } from '@eui/ecl/components/ecl-form-group';\nimport { EUI_ECL_TEXT_INPUT } from '@eui/ecl/components/ecl-text-input';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\nexport const ECL_SEARCH_FORM_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EclSearchFormComponent),\n multi: true,\n};\n\nconst noop = (): void => {\n /** empty*/\n};\n\n/**\n * Component representing search field - input and button, in a responsive, styled layout.\n */\n@Component({\n selector: 'ecl-search-form',\n templateUrl: 'ecl-search-form.component.html',\n imports: [TranslatePipe, FormsModule, ...EUI_ECL_BUTTON, ...EUI_ECL_FORM_GROUP, ...EUI_ECL_TEXT_INPUT, ...EUI_ECL_ICON], // TODO: replace with new names EUI_ECL_...\n providers: [ECL_SEARCH_FORM_VALUE_ACCESSOR],\n host: {\n '[class]': 'cssClasses()',\n '[attr.role]': 'role',\n '(keydown.enter)': 'onEnterKeyDown($event)',\n },\n})\nexport class EclSearchFormComponent extends ECLBaseDirective implements ControlValueAccessor {\n /**\n * The current/default search text.\n */\n readonly searchInputText = model<string>(undefined);\n readonly placeholder = input<string>(undefined);\n readonly searchButtonLabel = input<string>(undefined);\n readonly searchButtonIcon = input('search');\n readonly buttonExtraClassses = input('');\n readonly inputExtraClassses = input('');\n\n /**\n * This event is emited, when user performs the search action. Includes the search text from the input field.\n */\n readonly searchEvent = output<EclSearchFormEvent>();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(value: any): void {\n this.searchInputText.set(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: (_: any) => void): void {\n this.onChange = fn;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn: (_: any) => void): void {\n this.onTouched = fn;\n }\n\n protected eclThemeService = inject(EclThemeService);\n\n protected role = 'search';\n\n /**\n * Applies the base class `ecl-search-form` to the host element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-search-form'));\n\n /**\n * Perform search when user clicks the search button. Emits the search event with the search text.\n */\n protected onSearchClick(evt: Event): void {\n this.searchEvent.emit(new EclSearchFormEvent(this.searchInputText()));\n evt.preventDefault();\n }\n\n /**\n * Perform search when user clicks Enter when on the input field. Emits the search event with the search text.\n */\n protected onEnterKeyDown(evt: Event): void {\n this.searchEvent.emit(new EclSearchFormEvent(this.searchInputText()));\n evt.preventDefault();\n }\n\n /**\n * Assigns the new input text value to the 'searchInputText' property, each time the input is changed.\n * @param newValue\n */\n protected onModelChange(newValue: string): void {\n this.searchInputText.set(newValue);\n this.onChange(newValue);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private onChange: (_: any) => void = noop;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private onTouched: (_: any) => void = noop;\n}\n","<ecl-form-group>\n <input\n eclTextInput\n [(ngModel)]=\"searchInputText\"\n (ngModelChange)=\"onModelChange($event)\"\n type=\"search\"\n name=\"search-input\"\n placeholder=\"{{ placeholder() || 'ecl.common.SEARCH' | translate }}\"\n class=\"ecl-search-form__text-input {{inputExtraClassses()}}\" />\n</ecl-form-group>\n<button eclButton type=\"submit\" [variant]=\"eclThemeService.isECTheme() ? 'tertiary': 'primary'\" (click)=\"onSearchClick($event)\"\n class=\"ecl-button--neutral ecl-search-form__button {{buttonExtraClassses()}}\" isIconOnly>\n <ecl-icon [icon]=\"searchButtonIcon()\" size=\"xs\"></ecl-icon>\n <span eclButtonLabel>\n {{ searchButtonLabel() || 'ecl.common.SEARCH' | translate }}\n </span>\n</button>\n","import { EclSearchFormComponent } from './ecl-search-form.component';\n\nexport * from './ecl-search-form.component';\nexport * from './events/ecl-search-form.event';\n\nexport const EUI_ECL_SEARCH_FORM = [\n EclSearchFormComponent,\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-search-form.mjs","sources":["../../components/ecl-search-form/events/ecl-search-form.event.ts","../../components/ecl-search-form/ecl-search-form.component.ts","../../components/ecl-search-form/ecl-search-form.component.html","../../components/ecl-search-form/index.ts","../../components/ecl-search-form/eui-ecl-components-ecl-search-form.ts"],"sourcesContent":["import { EclBaseEvent } from '@eui/ecl/core';\n\nexport class EclSearchFormEvent extends EclBaseEvent {\n\tconstructor(public keyword: string) {\n\t\tsuper();\n\t}\n}\n","import {\n Component,\n computed,\n forwardRef,\n Provider,\n inject,\n output,\n input,\n model,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclThemeService } from '@eui/ecl/core';\nimport { EclSearchFormEvent } from './events/ecl-search-form.event';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_FORM_GROUP } from '@eui/ecl/components/ecl-form-group';\nimport { EUI_ECL_TEXT_INPUT } from '@eui/ecl/components/ecl-text-input';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\nexport const ECL_SEARCH_FORM_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EclSearchFormComponent),\n multi: true,\n};\n\nconst noop = (): void => {\n /** empty*/\n};\n\n/**\n * Component representing search field - input and button, in a responsive, styled layout.\n */\n@Component({\n selector: 'ecl-search-form',\n templateUrl: 'ecl-search-form.component.html',\n imports: [TranslatePipe, FormsModule, ...EUI_ECL_BUTTON, ...EUI_ECL_FORM_GROUP, ...EUI_ECL_TEXT_INPUT, ...EUI_ECL_ICON], // TODO: replace with new names EUI_ECL_...\n providers: [ECL_SEARCH_FORM_VALUE_ACCESSOR],\n host: {\n '[class]': 'cssClasses()',\n '[attr.role]': 'role',\n '(keydown.enter)': 'onEnterKeyDown($event)',\n },\n})\nexport class EclSearchFormComponent extends ECLBaseDirective implements ControlValueAccessor {\n /**\n * The current/default search text.\n */\n readonly searchInputText = model<string>(undefined);\n readonly placeholder = input<string>(undefined);\n readonly searchButtonLabel = input<string>(undefined);\n readonly searchButtonIcon = input('search');\n readonly buttonExtraClassses = input('');\n readonly inputExtraClassses = input('');\n\n /**\n * This event is emited, when user performs the search action. Includes the search text from the input field.\n */\n readonly searchEvent = output<EclSearchFormEvent>();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(value: any): void {\n this.searchInputText.set(value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: (_: any) => void): void {\n this.onChange = fn;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn: (_: any) => void): void {\n this.onTouched = fn;\n }\n\n protected eclThemeService = inject(EclThemeService);\n\n protected role = 'search';\n\n /**\n * Applies the base class `ecl-search-form` to the host element.\n */\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-search-form'));\n\n /**\n * Perform search when user clicks the search button. Emits the search event with the search text.\n */\n protected onSearchClick(evt: Event): void {\n this.searchEvent.emit(new EclSearchFormEvent(this.searchInputText()));\n evt.preventDefault();\n }\n\n /**\n * Perform search when user clicks Enter when on the input field. Emits the search event with the search text.\n */\n protected onEnterKeyDown(evt: Event): void {\n this.searchEvent.emit(new EclSearchFormEvent(this.searchInputText()));\n evt.preventDefault();\n }\n\n /**\n * Assigns the new input text value to the 'searchInputText' property, each time the input is changed.\n * @param newValue\n */\n protected onModelChange(newValue: string): void {\n this.searchInputText.set(newValue);\n this.onChange(newValue);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private onChange: (_: any) => void = noop;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private onTouched: (_: any) => void = noop;\n}\n","<ecl-form-group>\n <input\n eclTextInput\n [(ngModel)]=\"searchInputText\"\n (ngModelChange)=\"onModelChange($event)\"\n type=\"search\"\n name=\"search-input\"\n placeholder=\"{{ placeholder() || 'ecl.common.SEARCH' | translate }}\"\n class=\"ecl-search-form__text-input {{inputExtraClassses()}}\" />\n</ecl-form-group>\n<button eclButton type=\"submit\" [variant]=\"eclThemeService.isECTheme() ? 'tertiary': 'primary'\" (click)=\"onSearchClick($event)\"\n class=\"ecl-button--neutral ecl-search-form__button {{buttonExtraClassses()}}\" isIconOnly>\n <ecl-icon [icon]=\"searchButtonIcon()\" size=\"xs\"></ecl-icon>\n <span eclButtonLabel>\n {{ searchButtonLabel() || 'ecl.common.SEARCH' | translate }}\n </span>\n</button>\n","import { EclSearchFormComponent } from './ecl-search-form.component';\n\nexport * from './ecl-search-form.component';\nexport * from './events/ecl-search-form.event';\n\nexport const EUI_ECL_SEARCH_FORM = [\n EclSearchFormComponent,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-select.mjs","sources":["../../components/ecl-select/ecl-select-container.component.ts","../../components/ecl-select/ecl-select-container.component.html","../../components/ecl-select/ecl-select.directive.ts","../../components/ecl-select/index.ts","../../components/ecl-select/eui-ecl-components-ecl-select.ts"],"sourcesContent":["import { Component, computed, inject, model } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclThemeService } from '@eui/ecl/core';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n/**\n * Container component, which wraps the <select> component. Ataches custom select button with dropdown arrow.\n */\n@Component({\n selector: 'ecl-select-container',\n templateUrl: './ecl-select-container.component.html',\n imports: [\n ...EUI_ECL_ICON,\n TranslatePipe,\n ...EUI_ECL_BUTTON,\n ],\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclSelectContainerComponent extends ECLBaseDirective {\n /**\n * Size/length of the field and the dropdown, can be 's', 'm' or 'l'. Default is 'm'.\n * Same as the size of the main host element.\n */\n readonly eclSize = model('m');\n readonly disabled = model<boolean>(undefined);\n readonly isInvalid = model<boolean>(undefined);\n /**\n * Custom label for the arrow-down button. Set from the main host element.\n */\n readonly toggleLabel = model<string | undefined>(undefined);\n\n /**\n * Adds specific classes for the container.\n */\n protected readonly cssClasses = computed<string>(() => {\n const eclSize = this.eclSize();\n return [\n super.getCssClasses('ecl-select__container'),\n eclSize ? `ecl-select__container--${eclSize}` : '',\n this.disabled() ? 'ecl-select__container--disabled' : '',\n this.isInvalid() ? 'ecl-select__container--invalid' : '',\n ]\n .join(' ')\n .trim();\n });\n\n private ICON_SIZE_EC = 'xs';\n private ICON_SIZE_EU = 's'\n private eclThemeService = inject(EclThemeService);\n\n /**\n * Returns different icon sizes, depending if it's EU (s) or EC (xs) theme.\n */\n protected get iconSize(): string {\n if (this.eclThemeService.isECTheme()) {\n return this.ICON_SIZE_EC;\n } else {\n return this.ICON_SIZE_EU;\n }\n }\n}\n","<div class=\"ecl-select__icon\">\n <button eclButton variant=\"tertiary\" tabindex=\"-1\" isIconOnly>\n <span eclButtonLabel>{{ toggleLabel() || 'ecl.multiselect.TOGGLE.DROPDOWN' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" [size]=\"iconSize\" transform=\"rotate-180\"></ecl-icon>\n </button>\n</div>\n","import {\n AfterContentInit,\n ComponentRef,\n Directive,\n DoCheck,\n ElementRef,\n Injector,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n Renderer2,\n ViewContainerRef,\n afterNextRender,\n booleanAttribute,\n computed,\n inject,\n runInInjectionContext,\n input,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclSelectContainerComponent } from './ecl-select-container.component';\nimport { NgControl } from '@angular/forms';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Directive that enhances a native <select> element with ECL styling\n * by wrapping it inside an {@link EclSelectContainerComponent}.\n */\n@Directive({\n selector: 'select[eclSelect]',\n host: {\n '[class]': 'cssClasses()',\n '[attr.disabled]': 'isDisabled',\n '[class.ecl-select--invalid]': 'isInvalidState',\n },\n})\nexport class EclSelectDirective extends ECLBaseDirective\n implements OnInit, DoCheck, AfterContentInit, OnDestroy {\n\n /** Disables the select element. */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /** Marks the select element as invalid. */\n readonly isInvalid = input(false, { transform: booleanAttribute });\n\n /** Accessible label for the toggle button. */\n readonly toggleLabel = input<string>(undefined);\n\n /** Size of the select component. */\n readonly eclSize = input<'s' | 'm' | 'l'>('m');\n\n private ngControl = inject(NgControl, { optional: true, self: true });\n private el = inject(ElementRef<HTMLElement>);\n private injector = inject(Injector);\n private vcr = inject(ViewContainerRef);\n private renderer = inject(Renderer2);\n private platformId = inject(PLATFORM_ID);\n private isBrowser = isPlatformBrowser(this.platformId);\n private containerRef!: ComponentRef<EclSelectContainerComponent>;\n private readonly OPTGROUP_TAG_NAME = 'OPTGROUP';\n\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-select'));\n\n get isDisabled(): boolean {\n return this.ngControl ? (this.ngControl.disabled || null) : (this.disabled() || null);\n }\n\n get isInvalidState(): boolean {\n return this.ngControl\n ? (this.ngControl.status === 'INVALID' && this.ngControl.touched)\n : this.isInvalid();\n }\n\n /**\n * Initializes the directive.\n * - Creates the {@link EclSelectContainerComponent} wrapper.\n * - Synchronizes initial input values.\n * - Moves the <select> element inside the wrapper.\n *\n * Skipped on the server to avoid SSR hydration mismatch (NG0500).\n */\n ngOnInit(): void {\n if (!this.isBrowser) return;\n\n this.containerRef = this.vcr.createComponent(EclSelectContainerComponent);\n this.syncContainerInputs();\n\n const containerEl = this.containerRef.location.nativeElement as any;\n const selectEl = this.el.nativeElement as any;\n\n if (selectEl.parentNode !== containerEl) {\n runInInjectionContext(this.injector, () => {\n afterNextRender(() => {\n if (selectEl.parentNode === containerEl) return;\n const firstChild = containerEl.firstChild ?? null;\n this.renderer.insertBefore(containerEl, selectEl, firstChild, true);\n });\n });\n }\n }\n\n /**\n * Processes any <optgroup> elements inside the <select> and\n * enhances them with appropriate accessibility attributes.\n */\n ngAfterContentInit(): void {\n const childrenElements: Element[] =\n Array.from(this.el.nativeElement.children);\n\n this.handleOptgroup(childrenElements);\n }\n\n /**\n * Keeps the wrapper component synchronized with the directive’s\n * current inputs and form control state.\n *\n * This is used to reflect runtime changes such as:\n * - Disabled state\n * - Validation status\n * - Size changes\n */\n ngDoCheck(): void {\n this.syncContainerInputs();\n }\n\n /**\n * Destroys the dynamically created wrapper component to prevent\n * memory leaks when the directive is removed.\n */\n ngOnDestroy(): void {\n this.containerRef?.destroy();\n }\n\n /**\n * Synchronizes directive inputs and control state\n * with the wrapper component instance.\n */\n private syncContainerInputs(): void {\n const c = this.containerRef?.instance;\n if (!c) return;\n\n c.eclSize.set(this.eclSize());\n c.disabled.set(this.isDisabled);\n c.toggleLabel.set(this.toggleLabel());\n c.isInvalid.set(this.isInvalidState);\n }\n\n /**\n * Enhances <optgroup> and <option> elements with\n * accessible aria-label attributes.\n *\n * - Applies the optgroup label to the group container.\n * - Combines option and group labels for child options.\n *\n * This improves screen reader support for grouped options.\n *\n * @param childrenElements List of direct children of the <select> element.\n */\n private handleOptgroup(childrenElements: Element[]): void {\n childrenElements\n .filter(el =>\n el.tagName === this.OPTGROUP_TAG_NAME &&\n el.getAttribute('label') !== null\n )\n .forEach(optGroup => {\n const optGroupLabel = optGroup.getAttribute('label');\n\n this.renderer.setAttribute(\n optGroup,\n 'aria-label',\n optGroupLabel\n );\n\n Array.from(optGroup.children).forEach(option => {\n const optionLabel =\n option.getAttribute('label') || option.textContent;\n\n if (optionLabel) {\n this.renderer.setAttribute(\n option,\n 'aria-label',\n `${optionLabel} - ${optGroupLabel}`\n );\n }\n });\n });\n }\n}\n","import { EclSelectDirective } from './ecl-select.directive';\nimport { EclSelectContainerComponent } from './ecl-select-container.component';\n\nexport * from './ecl-select.directive';\nexport * from './ecl-select-container.component';\n\nexport const EUI_ECL_SELECT = [\n EclSelectDirective,\n EclSelectContainerComponent,\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-select.mjs","sources":["../../components/ecl-select/ecl-select-container.component.ts","../../components/ecl-select/ecl-select-container.component.html","../../components/ecl-select/ecl-select.directive.ts","../../components/ecl-select/index.ts","../../components/ecl-select/eui-ecl-components-ecl-select.ts"],"sourcesContent":["import { Component, computed, inject, model } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclThemeService } from '@eui/ecl/core';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n/**\n * Container component, which wraps the <select> component. Ataches custom select button with dropdown arrow.\n */\n@Component({\n selector: 'ecl-select-container',\n templateUrl: './ecl-select-container.component.html',\n imports: [\n ...EUI_ECL_ICON,\n TranslatePipe,\n ...EUI_ECL_BUTTON,\n ],\n host: {\n '[class]': 'cssClasses()',\n },\n})\nexport class EclSelectContainerComponent extends ECLBaseDirective {\n /**\n * Size/length of the field and the dropdown, can be 's', 'm' or 'l'. Default is 'm'.\n * Same as the size of the main host element.\n */\n readonly eclSize = model('m');\n readonly disabled = model<boolean>(undefined);\n readonly isInvalid = model<boolean>(undefined);\n /**\n * Custom label for the arrow-down button. Set from the main host element.\n */\n readonly toggleLabel = model<string | undefined>(undefined);\n\n /**\n * Adds specific classes for the container.\n */\n protected readonly cssClasses = computed<string>(() => {\n const eclSize = this.eclSize();\n return [\n super.getCssClasses('ecl-select__container'),\n eclSize ? `ecl-select__container--${eclSize}` : '',\n this.disabled() ? 'ecl-select__container--disabled' : '',\n this.isInvalid() ? 'ecl-select__container--invalid' : '',\n ]\n .join(' ')\n .trim();\n });\n\n private ICON_SIZE_EC = 'xs';\n private ICON_SIZE_EU = 's'\n private eclThemeService = inject(EclThemeService);\n\n /**\n * Returns different icon sizes, depending if it's EU (s) or EC (xs) theme.\n */\n protected get iconSize(): string {\n if (this.eclThemeService.isECTheme()) {\n return this.ICON_SIZE_EC;\n } else {\n return this.ICON_SIZE_EU;\n }\n }\n}\n","<div class=\"ecl-select__icon\">\n <button eclButton variant=\"tertiary\" tabindex=\"-1\" isIconOnly>\n <span eclButtonLabel>{{ toggleLabel() || 'ecl.multiselect.TOGGLE.DROPDOWN' | translate }}</span>\n <ecl-icon icon=\"corner-arrow\" [size]=\"iconSize\" transform=\"rotate-180\"></ecl-icon>\n </button>\n</div>\n","import {\n AfterContentInit,\n ComponentRef,\n Directive,\n DoCheck,\n ElementRef,\n Injector,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n Renderer2,\n ViewContainerRef,\n afterNextRender,\n booleanAttribute,\n computed,\n inject,\n runInInjectionContext,\n input,\n} from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclSelectContainerComponent } from './ecl-select-container.component';\nimport { NgControl } from '@angular/forms';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Directive that enhances a native <select> element with ECL styling\n * by wrapping it inside an {@link EclSelectContainerComponent}.\n */\n@Directive({\n selector: 'select[eclSelect]',\n host: {\n '[class]': 'cssClasses()',\n '[attr.disabled]': 'isDisabled',\n '[class.ecl-select--invalid]': 'isInvalidState',\n },\n})\nexport class EclSelectDirective extends ECLBaseDirective\n implements OnInit, DoCheck, AfterContentInit, OnDestroy {\n\n /** Disables the select element. */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n /** Marks the select element as invalid. */\n readonly isInvalid = input(false, { transform: booleanAttribute });\n\n /** Accessible label for the toggle button. */\n readonly toggleLabel = input<string>(undefined);\n\n /** Size of the select component. */\n readonly eclSize = input<'s' | 'm' | 'l'>('m');\n\n private ngControl = inject(NgControl, { optional: true, self: true });\n private el = inject(ElementRef<HTMLElement>);\n private injector = inject(Injector);\n private vcr = inject(ViewContainerRef);\n private renderer = inject(Renderer2);\n private platformId = inject(PLATFORM_ID);\n private isBrowser = isPlatformBrowser(this.platformId);\n private containerRef!: ComponentRef<EclSelectContainerComponent>;\n private readonly OPTGROUP_TAG_NAME = 'OPTGROUP';\n\n protected readonly cssClasses = computed<string>(() =>\n super.getCssClasses('ecl-select'));\n\n get isDisabled(): boolean {\n return this.ngControl ? (this.ngControl.disabled || null) : (this.disabled() || null);\n }\n\n get isInvalidState(): boolean {\n return this.ngControl\n ? (this.ngControl.status === 'INVALID' && this.ngControl.touched)\n : this.isInvalid();\n }\n\n /**\n * Initializes the directive.\n * - Creates the {@link EclSelectContainerComponent} wrapper.\n * - Synchronizes initial input values.\n * - Moves the <select> element inside the wrapper.\n *\n * Skipped on the server to avoid SSR hydration mismatch (NG0500).\n */\n ngOnInit(): void {\n if (!this.isBrowser) return;\n\n this.containerRef = this.vcr.createComponent(EclSelectContainerComponent);\n this.syncContainerInputs();\n\n const containerEl = this.containerRef.location.nativeElement as any;\n const selectEl = this.el.nativeElement as any;\n\n if (selectEl.parentNode !== containerEl) {\n runInInjectionContext(this.injector, () => {\n afterNextRender(() => {\n if (selectEl.parentNode === containerEl) return;\n const firstChild = containerEl.firstChild ?? null;\n this.renderer.insertBefore(containerEl, selectEl, firstChild, true);\n });\n });\n }\n }\n\n /**\n * Processes any <optgroup> elements inside the <select> and\n * enhances them with appropriate accessibility attributes.\n */\n ngAfterContentInit(): void {\n const childrenElements: Element[] =\n Array.from(this.el.nativeElement.children);\n\n this.handleOptgroup(childrenElements);\n }\n\n /**\n * Keeps the wrapper component synchronized with the directive’s\n * current inputs and form control state.\n *\n * This is used to reflect runtime changes such as:\n * - Disabled state\n * - Validation status\n * - Size changes\n */\n ngDoCheck(): void {\n this.syncContainerInputs();\n }\n\n /**\n * Destroys the dynamically created wrapper component to prevent\n * memory leaks when the directive is removed.\n */\n ngOnDestroy(): void {\n this.containerRef?.destroy();\n }\n\n /**\n * Synchronizes directive inputs and control state\n * with the wrapper component instance.\n */\n private syncContainerInputs(): void {\n const c = this.containerRef?.instance;\n if (!c) return;\n\n c.eclSize.set(this.eclSize());\n c.disabled.set(this.isDisabled);\n c.toggleLabel.set(this.toggleLabel());\n c.isInvalid.set(this.isInvalidState);\n }\n\n /**\n * Enhances <optgroup> and <option> elements with\n * accessible aria-label attributes.\n *\n * - Applies the optgroup label to the group container.\n * - Combines option and group labels for child options.\n *\n * This improves screen reader support for grouped options.\n *\n * @param childrenElements List of direct children of the <select> element.\n */\n private handleOptgroup(childrenElements: Element[]): void {\n childrenElements\n .filter(el =>\n el.tagName === this.OPTGROUP_TAG_NAME &&\n el.getAttribute('label') !== null\n )\n .forEach(optGroup => {\n const optGroupLabel = optGroup.getAttribute('label');\n\n this.renderer.setAttribute(\n optGroup,\n 'aria-label',\n optGroupLabel\n );\n\n Array.from(optGroup.children).forEach(option => {\n const optionLabel =\n option.getAttribute('label') || option.textContent;\n\n if (optionLabel) {\n this.renderer.setAttribute(\n option,\n 'aria-label',\n `${optionLabel} - ${optGroupLabel}`\n );\n }\n });\n });\n }\n}\n","import { EclSelectDirective } from './ecl-select.directive';\nimport { EclSelectContainerComponent } from './ecl-select-container.component';\n\nexport * from './ecl-select.directive';\nexport * from './ecl-select-container.component';\n\nexport const EUI_ECL_SELECT = [\n EclSelectDirective,\n EclSelectContainerComponent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|