@eui/ecl 21.0.0-next.45 → 21.0.0-next.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 +25 -0
- package/docs/components/EclTabsComponent.html +0 -66
- package/docs/js/search/search_index.js +2 -2
- package/docs/properties.html +1 -1
- package/fesm2022/eui-ecl-components-ecl-multiselect.mjs +2 -0
- package/fesm2022/eui-ecl-components-ecl-multiselect.mjs.map +1 -1
- package/fesm2022/eui-ecl-components-ecl-tabs.mjs +0 -35
- package/fesm2022/eui-ecl-components-ecl-tabs.mjs.map +1 -1
- package/package.json +1 -1
- package/types/eui-ecl-components-ecl-multiselect.d.ts.map +1 -1
- package/types/eui-ecl-components-ecl-tabs.d.ts +0 -4
- package/types/eui-ecl-components-ecl-tabs.d.ts.map +1 -1
package/docs/properties.html
CHANGED
|
@@ -1215,6 +1215,8 @@ class EclMultiselectComponent extends ECLBaseDirective {
|
|
|
1215
1215
|
this.hostParentEl.replaceChild(this.hostWrapperEl, this.hostEl);
|
|
1216
1216
|
this.hostWrapperEl.appendChild(this.hostEl);
|
|
1217
1217
|
this.renderer.addClass(this.hostWrapperEl, this.SELECT_CONTAINER_HIDDEN_CLASS);
|
|
1218
|
+
this.renderer.setAttribute(this.hostWrapperEl, 'tabindex', '-1');
|
|
1219
|
+
this.renderer.setAttribute(this.hostEl, 'tabindex', '-1');
|
|
1218
1220
|
}
|
|
1219
1221
|
createHostWrapperContainer() {
|
|
1220
1222
|
const wrapperContainer = this.renderer.createElement('div');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-ecl-components-ecl-multiselect.mjs","sources":["../../components/ecl-multiselect/boldText.pipe.ts","../../components/ecl-multiselect/events/ecl-multiselect-main-input-click.event.ts","../../components/ecl-multiselect/events/ecl-multiselect-option.event.ts","../../components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.ts","../../components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.html","../../components/ecl-multiselect/ecl-multiselect-option/ecl-multiselect-option.component.ts","../../components/ecl-multiselect/ecl-multiselect-option/ecl-multiselect-option.component.html","../../components/ecl-multiselect/ecl-multiselect-optgroup/ecl-multiselect-optgroup.component.ts","../../components/ecl-multiselect/ecl-multiselect-optgroup/ecl-multiselect-optgroup.component.html","../../components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.ts","../../components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.html","../../components/ecl-multiselect/ecl-multiselect-option.directive.ts","../../components/ecl-multiselect/ecl-multiselect.component.ts","../../components/ecl-multiselect/ecl-multiselect.component.html","../../components/ecl-multiselect/index.ts","../../components/ecl-multiselect/eui-ecl-components-ecl-multiselect.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'boldText',\n})\nexport class BoldTextPipe implements PipeTransform {\n private BOLD_TAG_OPEN = '<b>';\n\n transform(value: string, keyword: string): string {\n if (keyword !== '') {\n return this.replace(value, keyword);\n } else {\n if (value.indexOf(this.BOLD_TAG_OPEN) > -1) {\n return this.clearBoldText(value);\n } else {\n return value;\n }\n }\n }\n\n replace(str: string, keyword: string): string {\n const re = new RegExp(keyword, 'gi');\n return str.replace(re, '<b>$&</b>');\n }\n\n clearBoldText(str: string): string {\n return str.replace(/<[/]?b>/g, '');\n }\n}\n","export class EclMultiselectMainInputClickEvent {\n constructor(public event: Event) {}\n}","import { EclMultiselectOption } from '../models/ecl-multiselect-option.model';\n\nexport class EclMultiselectOptionClickEvent {\n constructor(public multiselectOption: EclMultiselectOption) {}\n}\n\nexport class EclMultiselectOptionKeydownEvent {\n constructor(\n public multiselectOption: EclMultiselectOption,\n public keyboardEvent: KeyboardEvent,\n ) {}\n}","import { Component, ElementRef, EventEmitter, HostBinding, Input, Output, Renderer2, ViewChild, booleanAttribute, inject } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclThemeService } from '@eui/ecl/core';\nimport { EclMultiselectMainInputClickEvent } from '../events';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * Component representing the main input of a multiselect component.\n * Handles displaying selected items, opening the dropdown, and managing accessibility.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclMultiselectInput]',\n templateUrl: './ecl-multiselect-input.component.html',\n imports: [TranslateModule, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON],\n})\nexport class EclMultiselectInputComponent extends ECLBaseDirective {\n\n /**\n * Size modifier for the multiselect input (e.g., 's', 'm', 'l').\n */\n @Input() eclSize = 'm';\n\n /**\n * ID of the toggle button element (used for accessibility).\n */\n @Input() toggleId: string;\n\n /**\n * Label for the toggle button (optional).\n */\n @Input() toggleLabel: string | undefined = undefined;\n\n /**\n * Marks the component as disabled.\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.ecl-select__container--disabled')\n isDisabled: boolean | undefined = false;\n\n /**\n * Marks the component as being in an invalid state.\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.ecl-select__container--invalid')\n isInvalid: boolean | undefined = false;\n\n /**\n * CSS classes for the component, including size and inherited classes.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-select__container'),\n `ecl-select__container--${this.eclSize}`,\n ].join(' ').trim();\n }\n\n /**\n * Placeholder text for the input when no items are selected.\n */\n @Input() inputPlaceholder: string;\n\n /**\n * Array of currently selected item labels.\n */\n @Input() selectedItems = [];\n\n /**\n * Indicates that the dropdown is currently expanded.\n */\n @Input() isDropdownExpanded = false;\n\n /**\n * ARIA controls attribute for accessibility.\n */\n @Input() ariaControls: string | undefined = undefined;\n\n /**\n * ARIA describedby attribute for accessibility.\n */\n @Input() ariaDescribedby: string | undefined = undefined;\n\n /**\n * ARIA labelledby attribute for accessibility.\n */\n @Input() ariaLabeledby: string | undefined = undefined;\n\n /**\n * Reference to the internal input element.\n */\n @ViewChild('inputMultiselect') inputMultiselect: ElementRef;\n\n /**\n * Event emitted when the input is clicked.\n */\n @Output() mainInputClick = new EventEmitter<EclMultiselectMainInputClickEvent>();\n\n /**\n * Event emitted when a key is pressed on the input.\n */\n @Output() mainInputKeydown = new EventEmitter<Event>();\n\n private readonly ICON_SIZE_FOR_EC_THEME_ON = 'xs';\n private readonly ICON_SIZE_FOR_EU_THEME_ON = 's';\n private eclThemeService = inject(EclThemeService);\n private renderer = inject(Renderer2);\n\n /**\n * Returns the label text shown inside the button.\n */\n get buttonText(): string {\n return this.selectedItems.length === 0 ? this.inputPlaceholder : this.selectedItems.join(',');\n }\n\n /**\n * Returns the count of selected items.\n */\n get selectedItemsCount(): number {\n return this.selectedItems.length;\n }\n\n /**\n * Displays a count badge when items are selected.\n */\n get isShowCounter(): boolean {\n return this.selectedItems && this.selectedItems.length > 0;\n }\n\n /**\n * Indicates that the dropdown is expanded (active).\n */\n get isActive(): boolean {\n return this.isDropdownExpanded;\n }\n\n /**\n * Returns icon size depending on the theme.\n */\n get sizeIcon(): string {\n if (this.eclThemeService.isECTheme()) {\n return this.ICON_SIZE_FOR_EC_THEME_ON;\n } else {\n return this.ICON_SIZE_FOR_EU_THEME_ON;\n }\n }\n\n /**\n * Handles click on the input container. Emits custom event with original DOM event.\n */\n onClick(evt: Event): void {\n this.mainInputClick.emit(new EclMultiselectMainInputClickEvent(evt));\n }\n\n /**\n * Handles keydown events on the input.\n * Only emits event on ArrowDown, Enter, or Space keys.\n */\n onKeydown(evt: KeyboardEvent): void {\n switch (evt.key) {\n case KeyCode.ARROW_DOWN:\n case KeyCode.ENTER:\n case KeyCode.SPACE:\n {\n this.mainInputKeydown.emit(evt);\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * Focuses the multiselect input element.\n */\n onFocus(): void {\n this.renderer.selectRootElement(this.inputMultiselect.nativeElement, true).focus();\n }\n}\n","<div [class.ecl-select-multiple-selections-counter--visible]=\"isShowCounter\" class=\"ecl-select-multiple-selections-counter\">\n <span>{{ selectedItemsCount }}</span>\n</div>\n<button\n class=\"ecl-select ecl-select__multiple-toggle\"\n [class.ecl-select--active]=\"isActive\"\n #inputMultiselect\n type=\"button\"\n [id]=\"toggleId\"\n [attr.aria-expanded]=\"isDropdownExpanded\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.disabled]=\"isDisabled ? true : undefined\"\n [attr.aria-labelledby]=\"ariaLabeledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"onClick($event)\"> {{ buttonText }}\n</button>\n<div class=\"ecl-select__icon\">\n <button eclButton isIconOnly variant=\"tertiary\" tabindex=\"-1\">\n <span eclButtonLabel>\n {{ toggleLabel || 'ecl.multiselect.TOGGLE.DROPDOWN' | translate }}\n </span>\n <ecl-icon icon=\"corner-arrow\" [size]=\"sizeIcon\" transform=\"rotate-180\"></ecl-icon>\n </button>\n</div>\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n ViewChild,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport { EclCheckboxDirective, EUI_ECL_CHECKBOX } from '@eui/ecl/components/ecl-checkbox';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { Subject } from 'rxjs';\nimport { BoldTextPipe } from '../boldText.pipe';\nimport {\n EclMultiselectOptionClickEvent,\n EclMultiselectOptionKeydownEvent,\n} from '../events/ecl-multiselect-option.event';\nimport { EclMultiselectOption } from '../models/ecl-multiselect-option.model';\n\n/**\n * Component representing a single selectable option in the multiselect dropdown.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclMultiselectOption]',\n templateUrl: './ecl-multiselect-option.component.html',\n imports: [BoldTextPipe, ...EUI_ECL_CHECKBOX],\n hostDirectives: [EclCheckboxDirective],\n})\nexport class EclMultiselectOptionComponent extends ECLBaseDirective implements EclMultiselectOption, OnChanges, OnDestroy, OnInit {\n\n @ViewChild('checkboxInput') eclCheckboxInput: ElementRef;\n\n keyword = '';\n\n @Input()\n set value(value: string) {\n this._value = value;\n }\n\n get value(): string {\n return this._value;\n }\n\n /**\n * Display label for the option.\n */\n @Input() label: string;\n\n changes = new Subject();\n\n /**\n * Disables the option when true.\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.ecl-checkbox--disabled')\n @HostBinding('attr.disabled')\n disabled = false;\n\n /**\n * Emits when the option is clicked.\n */\n @Output() optionClick = new EventEmitter<EclMultiselectOptionClickEvent>();\n\n /**\n * Emits when a key is pressed while focused on the option.\n */\n @Output() optionKeydown = new EventEmitter<EclMultiselectOptionKeydownEvent>();\n\n @HostBinding('style.display') protected display = 'flex';\n\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-checkbox')].join(' ').trim();\n }\n\n /**\n * Indicates whether the option is selected.\n */\n @Input()\n get isChecked(): boolean {\n return this._checked;\n }\n\n set isChecked(value: boolean) {\n this._checked = value;\n }\n\n private _id = '';\n private _checked = false;\n private _value = '';\n private renderer = inject(Renderer2);\n\n /**\n * Returns the unique identifier for the option.\n */\n get id(): string {\n return this._id;\n }\n\n /**\n * Indicates whether the option is active (visible and not disabled).\n */\n get isActive(): boolean {\n return this.display === 'flex' && !this.disabled;\n }\n\n ngOnChanges(): void {\n this.changes.next(this.label);\n }\n\n ngOnInit(): void {\n this._id = this.createId();\n }\n\n ngOnDestroy(): void {\n this.changes.complete();\n }\n\n /**\n * Toggles the selected state and emits the optionClick event.\n */\n onOptionClick(): void {\n this.isChecked = !this.isChecked;\n this.optionClick.emit(new EclMultiselectOptionClickEvent(this));\n }\n\n /**\n * Emits the optionKeydown event when a key is pressed.\n */\n onOptionKeydown(evt: KeyboardEvent): void {\n this.optionKeydown.emit(new EclMultiselectOptionKeydownEvent(this, evt));\n }\n\n /**\n * Focuses the checkbox input.\n */\n onFocus(): void {\n this.renderer.selectRootElement(this.eclCheckboxInput.nativeElement, true).focus();\n }\n\n /**\n * Makes the option visible.\n */\n show(): void {\n this.display = 'flex';\n }\n\n /**\n * Hides the option from view.\n */\n hide(): void {\n this.display = 'none';\n }\n\n /**\n * Sets the keyword for search highlighting.\n */\n highlightSearchText(keyword: string): void {\n this.keyword = keyword;\n const re = new RegExp(keyword, 'gi');\n const res = this.label.replace(re, '<b>$&</b>');\n }\n\n private createId(): string {\n return crypto.randomUUID();\n }\n}\n","<input\n eclCheckboxInput\n type=\"checkbox\"\n [id]=\"id\"\n [value]=\"value\"\n (click)=\"onOptionClick()\"\n (keydown)=\"onOptionKeydown($event)\"\n [checked]=\"isChecked\"\n [disabled]=\"disabled\"\n #checkboxInput />\n<label [for]=\"id\" eclCheckboxLabel><span [innerHTML]=\"label | boldText: keyword\"></span></label>\n","import { Component, HostBinding, Input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Component representing an option group (fieldset) in a multiselect component.\n * Used to group related options under a common label.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'fieldset[eclMultiselectOptgroup]',\n templateUrl: './ecl-multiselect-optgroup.component.html',\n})\nexport class EclMultiselectOptgroupComponent extends ECLBaseDirective {\n\n /**\n * The visible label for the option group.\n */\n @Input() label: string;\n\n /**\n * Returns the computed CSS classes for the optgroup container.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-select__multiple-group')].join(' ').trim();\n }\n}\n","<legend class=\"ecl-select__multiple-group__title\">{{ label }}</legend>\n<ng-content></ng-content>\n","import { booleanAttribute, Component, DoCheck, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Input, IterableDiffer, IterableDiffers, OnDestroy, OnInit, Output, QueryList, Renderer2, ViewChild, ViewChildren, inject } from '@angular/core';\nimport { ControlValueAccessor, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclMultiselectInputComponent } from '../ecl-multiselect-input/ecl-multiselect-input.component';\nimport { EclMultiselectOptionDirective } from '../ecl-multiselect-option.directive';\nimport { EclMultiselectOptionComponent } from '../ecl-multiselect-option/ecl-multiselect-option.component';\nimport { EclMultiselectOption } from '../models/ecl-multiselect-option.model';\nimport { EclMultiselectMainInputClickEvent, EclMultiselectOptionClickEvent, EclMultiselectOptionKeydownEvent } from '../events';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EclMultiselectOptgroupComponent } from '../ecl-multiselect-optgroup/ecl-multiselect-optgroup.component';\nimport { EUI_ECL_CHECKBOX } from '@eui/ecl/components/ecl-checkbox';\n\n/**\n * Component that renders a dropdown-style multiselect UI element.\n * Used internally by the `EclMultiselectComponent`.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclMultiselectDropdown]',\n templateUrl: 'ecl-multiselect-dropdown.component.html',\n imports: [\n ...EUI_ECL_BUTTON, EclMultiselectOptionComponent, EclMultiselectOptgroupComponent,\n EclMultiselectInputComponent, ...EUI_ECL_CHECKBOX, TranslateModule,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EclMultiselectDropdownComponent),\n multi: true,\n },\n ],\n})\nexport class EclMultiselectDropdownComponent extends ECLBaseDirective implements OnInit, ControlValueAccessor, DoCheck, OnDestroy {\n\n @ViewChild('searchInput') searchInput: ElementRef;\n @ViewChild('eclMultiselectInput') eclMultiselectInput: EclMultiselectInputComponent;\n @ViewChild('selectAllCheckbox') selectAllCheckbox: ElementRef;\n @ViewChild('closeBtn', { read: ElementRef }) closeBtn: ElementRef;\n @ViewChild('clearAllBtn', { read: ElementRef }) clearAllBtn: ElementRef;\n @ViewChildren(EclMultiselectOptionComponent) multiOptionComponents: QueryList<EclMultiselectOptionComponent>;\n\n /**\n * Emits the list of selected values whenever the selection changes.\n */\n @Output() eclChange = new EventEmitter<string[]>();\n\n /**\n * Marks the component as visually invalid.\n */\n @Input({ transform: booleanAttribute })\n get isInvalid(): boolean | undefined {\n return this._isInvalid;\n }\n set isInvalid(value: boolean | undefined) {\n this._isInvalid = value;\n }\n\n /**\n * Adds the ECL base CSS class for multiselect dropdowns.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-select__multiple')].join(' ').trim();\n }\n\n /**\n * Placeholder for the main multiselect input.\n */\n @Input() mainInputPlaceholder = 'Select an item';\n\n /**\n * Placeholder for the search field input.\n */\n @Input() searchFieldPlaceholder = 'Enter filter keyword';\n\n /**\n * Size of the multiselect dropdown (e.g., 'm', 'l').\n */\n @Input() eclSize = 'm';\n\n /**\n * Disables the component when true.\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('attr.disabled')\n get disabled(): boolean | undefined {\n return this._disabled || undefined;\n }\n set disabled(value: boolean | undefined) {\n this._disabled = value;\n }\n\n /**\n * Optional ARIA description used for accessibility purposes.\n */\n ariaDescribedby: string | undefined = undefined;\n\n /**\n * Optional ARIA label reference for screen readers.\n */\n ariaLabeledby: string | undefined = undefined;\n\n /**\n * Label displayed for the toggle button to assist screen readers.\n */\n toggleLabel: string | undefined = undefined;\n\n /**\n * Enables the search box in the dropdown interface.\n */\n hasSearchBox = true;\n\n /**\n * Displays the \"Select all\" checkbox above the list of options.\n */\n hasSelectAll = true;\n\n /**\n * Optional identifier used for the dropdown element.\n */\n id = '';\n\n /**\n * Indicates that the \"no results found\" message should be displayed.\n */\n isShowNoResultsFound = false;\n\n /**\n * Controls the visibility of the multiselect dropdown.\n */\n isShowMultiselectDropdown = false;\n\n /**\n * List of option directives currently rendered in the dropdown.\n */\n multiOptionDirectives: EclMultiselectOptionDirective[] = [];\n\n /**\n * Reactive form group managing internal form state.\n */\n form: FormGroup;\n\n /**\n * Total number of options available in the dropdown list.\n */\n optionsCount = 0;\n\n protected dropdownId = '';\n protected isSelectAllDisabled: boolean | null = null;\n protected selectAllId = '';\n protected toggleId = '';\n private _disabled = false;\n private _isInvalid = false;\n private _selectedItems: EclMultiselectOption[] = [];\n private differ: IterableDiffer<EclMultiselectOptionComponent>;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private isWriteValueCalled = false;\n private values = [];\n private elRef = inject(ElementRef);\n private differs = inject(IterableDiffers);\n private renderer = inject(Renderer2);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n }\n\n ngDoCheck(): void {\n const diff = this.differ.diff(this.multiOptionComponents);\n\n if (diff) {\n if (this.isWriteValueCalled) {\n this.resetComponent();\n this.writeValues(this.values);\n this.isWriteValueCalled = false;\n } else {\n this.initSelectedOptions();\n }\n }\n\n this.optionsCount = this.getAvailableOptions() ? this.getAvailableOptions().length : 0;\n }\n\n ngOnInit(): void {\n this.selectAllId = this.getSelectAllId();\n this.dropdownId = this.getDropdownId();\n this.toggleId = this.getToggleId();\n setTimeout(() => {\n this.modifyParentLabelForAttribute();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Writes a new value to the component from the outside (e.g., form model).\n * Required by ControlValueAccessor.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public writeValue(values: any): void {\n if (this.multiOptionComponents && this.multiOptionComponents.length > 0) {\n this.resetComponent();\n this.writeValues(values);\n } else {\n this.values = values;\n this.isWriteValueCalled = true;\n }\n }\n\n /**\n * Registers a callback function to be called when the value changes.\n * Required by ControlValueAccessor.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n /**\n * Registers a callback function to be called when the component is touched.\n * Required by ControlValueAccessor.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public registerOnTouched(fn: any): void {\n this.propagateTouched = fn;\n }\n\n /**\n * Enables or disables the component.\n * Required by ControlValueAccessor.\n */\n public setDisabledState(isDisabled: boolean): void {\n this._disabled = isDisabled;\n }\n\n @HostListener('document:keyup.escape')\n onEscapeKey(): void {\n this.hideMultiselectDropdown();\n }\n\n @HostListener('document:click', ['$event'])\n onKeyUp(event: MouseEvent): void {\n if (!this.elRef.nativeElement.contains(event.target)) {\n this.hideMultiselectDropdown();\n }\n }\n\n /**\n * Gets labels of currently selected options.\n */\n get selectedItems(): string[] {\n return this._selectedItems.map((item) => item.label);\n }\n\n /**\n * Indicates if any options are currently selected.\n */\n get isItemsSelected(): boolean {\n return this._selectedItems.length > 0;\n }\n\n /**\n * Controls the visibility of the multiselect toolbar.\n */\n get isShowToolbar(): boolean {\n return this._selectedItems.length > 0;\n }\n\n initSelectedOptions(): void {\n this._selectedItems = [];\n this.multiOptionComponents\n .filter((elem) => elem.isChecked)\n .forEach((item) => {\n this._selectedItems.push(item);\n });\n }\n\n onClickClearAll(evt: Event): void {\n evt.stopPropagation();\n this.unselectAllActiveOptions();\n this.eclChange.emit([]);\n this.propagateChange([]);\n }\n\n onEnterClear(evt: Event): void {\n this.onClickClearAll(evt);\n this.eclMultiselectInput.onFocus();\n }\n\n onClickClose(evt: Event): void {\n evt.preventDefault();\n this.hideMultiselectDropdown();\n }\n\n onArrowUpClose(evt: Event): void {\n evt.preventDefault();\n const currentOptions = this.getActiveOptions();\n currentOptions[currentOptions.length - 1].onFocus();\n }\n\n onArrowDownClose(evt: Event): void {\n evt.preventDefault();\n this.renderer.selectRootElement(this.clearAllBtn.nativeElement, true).focus();\n }\n\n onTabClose(evt: Event): void {\n if (!(evt as KeyboardEvent).shiftKey) {\n evt.preventDefault();\n this.renderer.selectRootElement(this.clearAllBtn.nativeElement, true).focus();\n }\n }\n\n onArrowUpClear(evt: Event): void {\n evt.preventDefault();\n this.renderer.selectRootElement(this.closeBtn.nativeElement, true).focus();\n }\n\n onArrowDownClear(evt: Event): void {\n evt.preventDefault();\n this.eclMultiselectInput.onFocus();\n }\n\n onTabClear(evt: Event): void {\n if (!(evt as KeyboardEvent).shiftKey) {\n evt.preventDefault();\n this.hideMultiselectDropdown();\n this.eclMultiselectInput.onFocus();\n }\n }\n\n onEnterSearch(evt: Event): void {\n evt.preventDefault();\n }\n\n onArrowDownSearch(evt: Event): void {\n evt.preventDefault();\n const currentOptions = this.getActiveOptions();\n if (this.hasSelectAll) {\n this.renderer.selectRootElement(this.selectAllCheckbox.nativeElement, true).focus();\n } else {\n currentOptions[0].onFocus();\n }\n }\n\n onArrowUpSearch(evt: Event): void {\n evt.preventDefault();\n this.hideMultiselectDropdown();\n this.eclMultiselectInput.onFocus();\n }\n\n onKeydownMainInput(evt: Event): void {\n evt.preventDefault();\n this.showMultiselectDropdown();\n if (this.hasSearchBox) {\n setTimeout(() => this.renderer.selectRootElement(this.searchInput.nativeElement, true).focus());\n } else {\n this.onArrowDownSearch(evt);\n }\n }\n\n onClickMainInput(evt: EclMultiselectMainInputClickEvent): void {\n evt.event.preventDefault();\n this.toggleDropdown();\n }\n\n onArrowDownSelectAll(evt: Event): void {\n evt.preventDefault();\n const currentOptions = this.getActiveOptions();\n if (currentOptions.length > 0) {\n currentOptions[0].onFocus();\n }\n }\n\n onArrowUpSelectAll(evt: Event): void {\n evt.preventDefault();\n if (this.hasSearchBox) {\n this.renderer.selectRootElement(this.searchInput.nativeElement, true).focus();\n } else {\n this.onArrowUpSearch(evt);\n }\n }\n\n onEnterSelectAll(evt: Event): void {\n evt.preventDefault();\n (evt.target as HTMLInputElement).click();\n }\n\n /**\n * Handles search input, filters options, and updates their visibility.\n */\n onSearch(input: EventTarget): void {\n const keyword = (input as HTMLInputElement).value;\n let isMatchFound = false;\n if (keyword === '') {\n this.enableSelectAll();\n isMatchFound = true;\n this.multiOptionComponents.forEach((item) => {\n item.highlightSearchText('');\n item.show();\n });\n } else {\n this.multiOptionComponents.forEach((item) => {\n if (item.label.toLowerCase().indexOf(keyword.toLowerCase()) < 0) {\n item.hide();\n } else {\n isMatchFound = true;\n item.highlightSearchText(keyword.toLowerCase());\n item.show();\n }\n });\n this.disableSelectAll();\n }\n if (!isMatchFound) {\n this.showNoResultsFound();\n } else {\n this.hideNoResultsFound();\n }\n }\n\n /**\n * Toggles all visible options based on the \"Select All\" checkbox.\n */\n onSelectAll(): void {\n if (this.selectAllCheckbox.nativeElement.checked) {\n this.selectAllActiveOptions();\n } else {\n this.unselectAllActiveOptions();\n }\n this.propagateTouched();\n this.eclChange.emit(this._selectedItems.map((item) => item.value));\n this.propagateChange(this._selectedItems.map((item) => item.value));\n }\n\n /**\n * Handles keyboard interaction on option items.\n * Supports arrow keys, tab, escape, and enter.\n */\n onKeydownOption(evt: EclMultiselectOptionKeydownEvent): void {\n switch (evt.keyboardEvent.key) {\n case KeyCode.ARROW_DOWN: {\n this.onArrowDownAndTabOption(evt.keyboardEvent, evt.multiselectOption);\n break;\n }\n case KeyCode.ARROW_UP: {\n this.onArrowUpOption(evt.keyboardEvent, evt.multiselectOption);\n break;\n }\n case KeyCode.ESCAPE: {\n this.hideMultiselectDropdown();\n break;\n }\n case KeyCode.ENTER: {\n (evt.keyboardEvent.target as HTMLInputElement).click();\n break;\n }\n case KeyCode.TAB: {\n if (!evt.keyboardEvent.shiftKey) {\n this.onArrowDownAndTabOption(evt.keyboardEvent, evt.multiselectOption);\n }\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * Triggered when a single option is clicked/selected.\n * Updates selected items, emits changes.\n */\n onOptionSelected(evt: EclMultiselectOptionClickEvent): void {\n if (this.selectAllCheckbox && this.selectAllCheckbox.nativeElement.checked) {\n this.renderer.setProperty(this.selectAllCheckbox.nativeElement, 'checked', false);\n }\n const currOption = evt.multiselectOption;\n if (currOption.isChecked) {\n this._selectedItems.push(currOption);\n } else {\n const index = this._selectedItems.indexOf(currOption);\n this._selectedItems.splice(index, 1);\n }\n this.propagateChange(this._selectedItems.map((item) => item.value));\n this.propagateTouched();\n this.eclChange.emit(this._selectedItems.map((item) => item.value));\n }\n\n private selectAllActiveOptions(): void {\n this.getActiveOptions().forEach((item) => {\n if (!item.isChecked) {\n item.isChecked = true;\n this._selectedItems.push(item);\n }\n });\n }\n\n private unselectAllActiveOptions(): void {\n if (this.selectAllCheckbox) {\n this.renderer.setProperty(this.selectAllCheckbox.nativeElement, 'checked', false);\n }\n this._selectedItems = [];\n this.getAvailableOptions().forEach((item) => {\n item.isChecked = false;\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private propagateChange = (_: any): void => {\n /* empty */\n };\n\n private propagateTouched = (): void => {\n /* empty */\n };\n\n private showMultiselectDropdown(): void {\n this.isShowMultiselectDropdown = true;\n }\n\n private hideMultiselectDropdown(): void {\n this.isShowMultiselectDropdown = false;\n }\n\n private disableSelectAll(): void {\n this.isSelectAllDisabled = true;\n }\n\n private enableSelectAll(): void {\n this.isSelectAllDisabled = null;\n }\n\n private showNoResultsFound(): void {\n this.isShowNoResultsFound = true;\n }\n\n private hideNoResultsFound(): void {\n this.isShowNoResultsFound = false;\n }\n\n private resetComponent(): void {\n this.multiOptionComponents.forEach((item) => {\n item.isChecked = false;\n });\n if (this.selectAllCheckbox) {\n this.renderer.setProperty(this.selectAllCheckbox.nativeElement, 'checked', false);\n }\n this._selectedItems = [];\n }\n\n private writeValues(values: Array<string>): void {\n if (values) {\n const selectedElementsArray = [];\n if (this.multiOptionComponents && this.multiOptionComponents.length > 0) {\n this.multiOptionComponents\n .filter((item) => values.includes(item.value) && !item.disabled)\n .forEach((el) => {\n el.isChecked = true;\n selectedElementsArray.push(el.label);\n this._selectedItems.push(el);\n });\n }\n }\n }\n\n private toggleDropdown(): void {\n this.isShowMultiselectDropdown = !this.isShowMultiselectDropdown;\n }\n\n private onArrowDownAndTabOption(evt: KeyboardEvent, option: EclMultiselectOption): void {\n (evt as KeyboardEvent).preventDefault();\n const index = this.getOptionIndexByIdFromActiveOptions(option.id);\n const currentOptions = this.getActiveOptions();\n if (index !== currentOptions.length - 1) {\n const nextSiblingCheckbox = currentOptions[index + 1];\n nextSiblingCheckbox.onFocus();\n } else if (this.closeBtn) {\n this.renderer.selectRootElement(this.closeBtn.nativeElement, true).focus();\n }\n }\n\n private onArrowUpOption(evt: KeyboardEvent, option: EclMultiselectOption): void {\n (evt as KeyboardEvent).preventDefault();\n const index = this.getOptionIndexByIdFromActiveOptions(option.id);\n if (index !== 0) {\n const prevSiblingCheckbox = this.getActiveOptions()[index - 1];\n prevSiblingCheckbox.onFocus();\n } else if (!this.hasSelectAll || this.selectAllCheckbox.nativeElement.disabled) {\n if (this.hasSearchBox) {\n this.renderer.selectRootElement(this.searchInput.nativeElement, true).focus();\n } else {\n this.onArrowUpSearch(evt);\n }\n } else {\n this.renderer.selectRootElement(this.selectAllCheckbox.nativeElement, true).focus();\n }\n }\n\n private getActiveOptions(): EclMultiselectOptionComponent[] {\n return this.multiOptionComponents ? this.multiOptionComponents.filter((item) => item.isActive) : [];\n }\n\n private getAvailableOptions(): EclMultiselectOptionComponent[] {\n return this.multiOptionComponents ? this.multiOptionComponents.filter((item) => !item.disabled) : [];\n }\n\n private getOptionIndexByIdFromActiveOptions(id: string): number {\n return this.getActiveOptions().findIndex((option) => option.id === id);\n }\n\n private getSelectAllId(): string {\n return crypto.randomUUID();\n }\n\n private getDropdownId(): string {\n return this.id !== '' ? `${this.id}-dropdown` : crypto.randomUUID();\n }\n\n private getToggleId(): string {\n return this.id !== '' ? `${this.id}-toggle` : crypto.randomUUID();\n }\n\n private modifyParentLabelForAttribute(): void {\n const form = this.renderer.parentNode(this.elRef.nativeElement);\n const label = form?.querySelector('.ecl-form-label');\n if (label) {\n this.renderer.setAttribute(label, 'for', this.toggleId);\n }\n }\n}\n","<div eclMultiselectInput #eclMultiselectInput [inputPlaceholder]=\"mainInputPlaceholder\" [selectedItems]=\"selectedItems\"\n (mainInputClick)=\"onClickMainInput($event)\" (mainInputKeydown)=\"onKeydownMainInput($event)\" [isDisabled]=\"disabled\"\n [ariaLabeledby]=\"ariaLabeledby\" [ariaDescribedby]=\"ariaDescribedby\" [toggleLabel]=\"toggleLabel\" [ariaControls]=\"dropdownId\" [isInvalid]=\"isInvalid\"\n [isDropdownExpanded]=\"isShowMultiselectDropdown\" [eclSize]=\"eclSize\" [toggleId]=\"toggleId\"></div>\n<div\n [style.display]=\"isShowMultiselectDropdown ? 'block' : 'none'\"\n class=\"ecl-select__multiple-dropdown ecl-select__container ecl-select__container--{{eclSize}}\"\n [id]=\"dropdownId\">\n @if(hasSearchBox) {\n <input class=\"ecl-text-input\" type=\"search\" #searchInput [placeholder]=\"searchFieldPlaceholder\"\n (input)=\"onSearch($event.target)\" (keydown.enter)=\"onEnterSearch($event)\"\n (keydown.arrowup)=\"onArrowUpSearch($event)\" (keydown.arrowdown)=\"onArrowDownSearch($event)\" />\n }\n @if(hasSelectAll) {\n <div eclCheckbox [isDisabled]=\"isSelectAllDisabled\" class=\"ecl-select__multiple-all\">\n <input eclCheckboxInput #selectAllCheckbox [id]=\"selectAllId\" type=\"checkbox\" [attr.disabled]=\"isSelectAllDisabled\"\n (click)=\"onSelectAll()\" (keydown.arrowup)=\"onArrowUpSelectAll($event)\"\n (keydown.arrowdown)=\"onArrowDownSelectAll($event)\" (keydown.enter)=\"onEnterSelectAll($event)\" />\n <label [for]=\"selectAllId\" eclCheckboxLabel> {{ 'ecl.multiselect.SELECT-ALL' | translate }} ({{ optionsCount }})\n </label>\n </div>\n }\n <div class=\"ecl-select__multiple-options\" aria-live=\"polite\">\n @for (item of multiOptionDirectives; track item.label) {\n @if (item.isOptGroup()) {\n <fieldset eclMultiselectOptgroup [label]=\"item.label\">\n @for (elem of item.eclOptionItems; track elem.label) {\n <div\n eclMultiselectOption\n [value]=\"elem.value\"\n [label]=\"elem.label\"\n [disabled]=\"elem.disabled\"\n [isChecked]=\"elem.selected\"\n [class]=\"elem.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n }\n </fieldset>\n } @else if (!item.isOptGroup()) {\n <div\n eclMultiselectOption\n [value]=\"item.value\"\n [label]=\"item.label\"\n [disabled]=\"item.disabled\"\n [isChecked]=\"item.selected\"\n [class]=\"item.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n }\n }\n\n\n @if (isShowNoResultsFound) {\n <div class=\"ecl-select__multiple-no-results\">\n <span>{{ 'ecl.multiselect.NO-RESULTS-FOUND' | translate }}</span>\n </div>\n }\n\n </div>\n @if (isShowToolbar) {\n <div class=\"ecl-select-multiple-toolbar\">\n <button\n eclButton\n variant=\"primary\"\n #closeBtn\n (keydown.arrowup)=\"onArrowUpClose($event)\"\n (keydown.arrowDown)=\"onArrowDownClose($event)\"\n (keydown.tab)=\"onTabClose($event)\"\n (click)=\"onClickClose($event)\">\n {{ 'ecl.common.APPLY' | translate }}\n </button>\n <button\n eclButton\n variant=\"tertiary\"\n #clearAllBtn\n (keydown.arrowup)=\"onArrowUpClear($event)\"\n (keydown.arrowDown)=\"onArrowDownClear($event)\"\n (keydown.tab)=\"onTabClear($event)\"\n (keydown.enter)=\"onEnterClear($event)\"\n (click)=\"onClickClearAll($event)\">\n {{ 'ecl.multiselect.CLEAR-ALL' | translate }}\n </button>\n </div>\n }\n</div>\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ContentChildren, Directive, ElementRef, HostBinding, Input, QueryList, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive used to decorate <option> and <optgroup> elements within a multiselect.\n * Adds support for value, label, disabled, selected states and styling.\n */\n@Directive({\n selector: 'optgroup[eclMultiselectOptgroup], option[eclMultiselectOption]',\n})\nexport class EclMultiselectOptionDirective extends ECLBaseDirective {\n\n /**\n * Nested option directives (used for optgroups).\n */\n @ContentChildren(EclMultiselectOptionDirective) eclOptionItems: QueryList<EclMultiselectOptionDirective>;\n\n /**\n * Value assigned to the option.\n */\n @Input() value: string;\n\n /**\n * Label displayed for the option.\n */\n @Input() label: string;\n\n /**\n * Emits whenever the option's state changes (used internally).\n */\n changes = new Subject();\n\n /**\n * Indicates that the option is disabled.\n */\n @Input()\n @HostBinding('attr.disabled')\n get disabled(): boolean {\n return this._disabled || null;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n /**\n * Indicates that the option is selected.\n */\n @Input()\n @HostBinding('attr.selected')\n get selected(): boolean {\n return this._selected || null;\n }\n set selected(value) {\n this._selected = coerceBooleanProperty(value);\n }\n private _selected = false;\n private elRef = inject(ElementRef);\n\n /**\n * Applies ECL checkbox styling class to the option.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-checkbox')].join(' ').trim();\n }\n\n /**\n * Returns true if this directive is applied to an <optgroup> element.\n */\n isOptGroup(): boolean {\n return this.elRef.nativeElement.nodeName === 'OPTGROUP';\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Component, ContentChildren, DoCheck, ElementRef, EventEmitter, HostBinding, Injector, Input, IterableDiffer, IterableDiffers, OnDestroy, OnInit, Output, PLATFORM_ID, QueryList, Renderer2, ViewContainerRef, ViewEncapsulation, afterNextRender, booleanAttribute, forwardRef, inject } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { Subject, takeUntil } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclMultiselectDropdownComponent } from './ecl-multiselect-dropdown/ecl-multiselect-dropdown.component';\nimport { EclMultiselectOptionDirective } from './ecl-multiselect-option.directive';\n\n/**\n * Component representing a custom multiselect input using the ECL design system.\n *\n * Should be used on a native <select> element to enhance it with ECL multiselect behavior.\n * Replaces the original element with a custom dropdown rendered dynamically.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'select[eclMultiselect]',\n templateUrl: 'ecl-multiselect.component.html',\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EclMultiselectComponent),\n multi: true,\n },\n ],\n})\nexport class EclMultiselectComponent extends ECLBaseDirective implements DoCheck, OnInit, OnDestroy {\n injector = inject(Injector);\n\n /**\n * List of option directives projected into the component.\n */\n @ContentChildren(forwardRef(() => EclMultiselectOptionDirective)) eclOptionItems: QueryList<EclMultiselectOptionDirective>;\n\n /**\n * Defines the `aria-describedby` attribute for accessibility.\n */\n @Input() ariaDescribedby: string | undefined = undefined;\n\n /**\n * Defines the `aria-labelledby` attribute for accessibility.\n */\n @Input() ariaLabeledby: string | undefined = undefined;\n\n /**\n * Sets the `id` attribute of the multiselect component.\n */\n @Input() id: string | undefined = undefined;\n\n /**\n * Label used for the toggle button that expands or collapses the dropdown.\n */\n @Input() toggleLabel: string | undefined = undefined;\n\n /**\n * Marks the multiselect as invalid.\n */\n @Input({ transform: booleanAttribute })\n get isInvalid(): boolean | undefined {\n return this._isInvalid;\n }\n set isInvalid(value: boolean | undefined) {\n this._isInvalid = value;\n if (this.multiselectComponent) {\n this.multiselectComponent.isInvalid = value;\n }\n }\n\n /**\n * Disables the multiselect component when set to true.\n */\n @Input()\n @HostBinding('attr.disabled')\n set disabled(value: BooleanInput) {\n if (this.multiselectComponent) {\n this.multiselectComponent.disabled = coerceBooleanProperty(value);\n }\n this._disabled = coerceBooleanProperty(value);\n }\n get disabled(): boolean | undefined {\n return this._disabled || undefined;\n }\n\n /**\n * CSS classes applied to the host element.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-select')].join(' ').trim();\n }\n\n /**\n * Emits an array of selected option values when the selection changes.\n */\n @Output() eclChange = new EventEmitter<string[]>();\n\n /**\n * Enables the search box within the dropdown.\n */\n @Input({ transform: booleanAttribute })\n set hasSearchBox(value: string) {\n if (this.multiselectComponent) {\n this.multiselectComponent.hasSearchBox = coerceBooleanProperty(value);\n }\n this._hasSearchBox = coerceBooleanProperty(value);\n }\n\n /**\n * Displays the \"Select all\" option in the dropdown.\n */\n @Input({ transform: booleanAttribute })\n set hasSelectAll(value: string) {\n if (this.multiselectComponent) {\n this.multiselectComponent.hasSelectAll = coerceBooleanProperty(value);\n }\n this._hasSelectAll = coerceBooleanProperty(value);\n }\n\n /**\n * Placeholder text to show in the multiselect input field when no options are selected.\n */\n @Input()\n set eclPlaceholder(value: string) {\n this._eclPlaceholder = value;\n if (this.multiselectComponent) {\n this.multiselectComponent.mainInputPlaceholder = value;\n }\n }\n get eclPlaceholder(): string {\n return this._eclPlaceholder;\n }\n\n /**\n * Multiselect size: 's' | 'm' | 'l'. Default is 'm'.\n */\n @Input() eclSize = 'm';\n\n private readonly SELECT_CONTAINER_CLASS = 'ecl-select__container';\n private readonly SELECT_CONTAINER_HIDDEN_CLASS = 'ecl-select__container--hidden';\n private _disabled = false;\n private _hasSelectAll = true;\n private _hasSearchBox = true;\n private _isInvalid = false;\n private _eclPlaceholder = 'Select item';\n private differ: IterableDiffer<EclMultiselectOptionDirective>;\n private multiselectComponent: EclMultiselectDropdownComponent;\n private hostEl: HTMLSelectElement;\n private hostParentEl: HTMLElement;\n private hostWrapperEl: HTMLElement;\n private multiselectComponentHtml: HTMLDivElement;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private el = inject(ElementRef);\n private viewContainerRef = inject(ViewContainerRef);\n private differs = inject(IterableDiffers);\n private renderer = inject(Renderer2);\n private platformId = inject(PLATFORM_ID);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n afterNextRender(() => {\n this.attachOptions();\n if (this.hostParentEl != null) {\n this.hideOriginalSelectComponent();\n this.renderer.insertBefore(this.hostParentEl, this.multiselectComponentHtml, this.hostWrapperEl);\n this.setAriaLabelledBy();\n }\n });\n }\n\n ngDoCheck(): void {\n const diff = this.differ.diff(this.eclOptionItems);\n\n if (diff) {\n if (this.multiselectComponent) {\n this.multiselectComponent.multiOptionDirectives = this.eclOptionItems.toArray();\n }\n }\n }\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.hostEl = this.getHostElement();\n this.hostParentEl = this.getHostParentElement(this.hostEl);\n this.hostWrapperEl = this.createHostWrapperContainer();\n this.multiselectComponentHtml = this.createMultiselectComponent();\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n private hideOriginalSelectComponent(): void {\n this.hostParentEl.replaceChild(this.hostWrapperEl, this.hostEl);\n this.hostWrapperEl.appendChild(this.hostEl);\n this.renderer.addClass(this.hostWrapperEl, this.SELECT_CONTAINER_HIDDEN_CLASS);\n }\n\n private createHostWrapperContainer(): HTMLElement {\n const wrapperContainer = this.renderer.createElement('div');\n this.renderer.addClass(wrapperContainer, this.SELECT_CONTAINER_CLASS);\n this.renderer.addClass(wrapperContainer, `${this.SELECT_CONTAINER_CLASS}--${this.eclSize}`);\n return wrapperContainer;\n }\n\n private getHostElement(): HTMLSelectElement {\n return this.el.nativeElement;\n }\n\n private getHostParentElement(hostEl: HTMLSelectElement): HTMLElement {\n return hostEl.parentElement;\n }\n\n private createMultiselectComponent(): HTMLDivElement {\n const ngControl = this.injector.get(NgControl, undefined, { optional: true });\n const multiselect = this.viewContainerRef.createComponent(EclMultiselectDropdownComponent);\n this.multiselectComponent = multiselect.instance;\n this.multiselectComponent.eclChange.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.eclChange.emit(evt);\n });\n this.multiselectComponent.mainInputPlaceholder = this.eclPlaceholder;\n\n if (this.ariaLabeledby !== undefined) {\n this.multiselectComponent.ariaLabeledby = this.ariaLabeledby;\n }\n if (this.ariaDescribedby !== undefined) {\n this.multiselectComponent.ariaDescribedby = this.ariaDescribedby;\n }\n if (this.toggleLabel !== undefined) {\n this.multiselectComponent.toggleLabel = this.toggleLabel;\n }\n if (this.id !== undefined) {\n this.multiselectComponent.id = this.id;\n }\n this.multiselectComponent.eclSize = this.eclSize;\n if (ngControl) {\n ngControl.valueAccessor = this.multiselectComponent;\n }\n multiselect.instance.disabled = this.disabled;\n multiselect.instance.isInvalid = this.isInvalid;\n multiselect.instance.hasSearchBox = this._hasSearchBox;\n multiselect.instance.hasSelectAll = this._hasSelectAll;\n return (multiselect.location as ElementRef<HTMLDivElement>).nativeElement;\n }\n\n private setAriaLabelledBy(): void {\n const hostSelect: HTMLElement = this.el.nativeElement;\n const formGroup = hostSelect.closest('.ecl-form-group') as HTMLElement | null;\n if (!formGroup) return;\n\n const label = formGroup.querySelector('.ecl-form-label') as HTMLElement | null;\n if (!label) return;\n\n if (!label.id) {\n const newLabelId = `ecl-select-label-${crypto.randomUUID()}`;\n this.renderer.setAttribute(label, 'id', newLabelId);\n }\n\n if (!hostSelect.id) {\n const newSelectId = `ecl-select-input-${crypto.randomUUID()}`;\n this.renderer.setAttribute(hostSelect, 'id', newSelectId);\n }\n\n const labelledBy = `${label.id} ${hostSelect.id}`.trim();\n this.renderer.setAttribute(hostSelect, 'aria-labelledby', labelledBy);\n }\n\n private attachOptions(): void {\n setTimeout(() => {\n this.multiselectComponent.multiOptionDirectives = this.eclOptionItems.toArray();\n });\n }\n}\n","<ng-content></ng-content>\n","import { BoldTextPipe } from './boldText.pipe';\nimport { EclMultiselectDropdownComponent } from './ecl-multiselect-dropdown/ecl-multiselect-dropdown.component';\nimport { EclMultiselectInputComponent } from './ecl-multiselect-input/ecl-multiselect-input.component';\nimport { EclMultiselectOptgroupComponent } from './ecl-multiselect-optgroup/ecl-multiselect-optgroup.component';\nimport { EclMultiselectOptionDirective } from './ecl-multiselect-option.directive';\nimport { EclMultiselectOptionComponent } from './ecl-multiselect-option/ecl-multiselect-option.component';\nimport { EclMultiselectComponent } from './ecl-multiselect.component';\n\nexport * from './ecl-multiselect.component';\nexport * from './ecl-multiselect-dropdown/ecl-multiselect-dropdown.component';\nexport * from './ecl-multiselect-input/ecl-multiselect-input.component';\nexport * from './ecl-multiselect-optgroup/ecl-multiselect-optgroup.component';\nexport * from './ecl-multiselect-option/ecl-multiselect-option.component';\nexport * from './ecl-multiselect-option.directive';\nexport * from './models/ecl-multiselect-option.model';\nexport * from './events/index';\nexport * from './boldText.pipe';\n\nexport const EUI_ECL_MULTISELECT = [\n EclMultiselectComponent,\n EclMultiselectOptionDirective,\n EclMultiselectOptionComponent,\n EclMultiselectInputComponent,\n EclMultiselectDropdownComponent,\n EclMultiselectOptgroupComponent,\n BoldTextPipe,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eui-ecl-components-ecl-multiselect.mjs","sources":["../../components/ecl-multiselect/boldText.pipe.ts","../../components/ecl-multiselect/events/ecl-multiselect-main-input-click.event.ts","../../components/ecl-multiselect/events/ecl-multiselect-option.event.ts","../../components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.ts","../../components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.html","../../components/ecl-multiselect/ecl-multiselect-option/ecl-multiselect-option.component.ts","../../components/ecl-multiselect/ecl-multiselect-option/ecl-multiselect-option.component.html","../../components/ecl-multiselect/ecl-multiselect-optgroup/ecl-multiselect-optgroup.component.ts","../../components/ecl-multiselect/ecl-multiselect-optgroup/ecl-multiselect-optgroup.component.html","../../components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.ts","../../components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.html","../../components/ecl-multiselect/ecl-multiselect-option.directive.ts","../../components/ecl-multiselect/ecl-multiselect.component.ts","../../components/ecl-multiselect/ecl-multiselect.component.html","../../components/ecl-multiselect/index.ts","../../components/ecl-multiselect/eui-ecl-components-ecl-multiselect.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'boldText',\n})\nexport class BoldTextPipe implements PipeTransform {\n private BOLD_TAG_OPEN = '<b>';\n\n transform(value: string, keyword: string): string {\n if (keyword !== '') {\n return this.replace(value, keyword);\n } else {\n if (value.indexOf(this.BOLD_TAG_OPEN) > -1) {\n return this.clearBoldText(value);\n } else {\n return value;\n }\n }\n }\n\n replace(str: string, keyword: string): string {\n const re = new RegExp(keyword, 'gi');\n return str.replace(re, '<b>$&</b>');\n }\n\n clearBoldText(str: string): string {\n return str.replace(/<[/]?b>/g, '');\n }\n}\n","export class EclMultiselectMainInputClickEvent {\n constructor(public event: Event) {}\n}","import { EclMultiselectOption } from '../models/ecl-multiselect-option.model';\n\nexport class EclMultiselectOptionClickEvent {\n constructor(public multiselectOption: EclMultiselectOption) {}\n}\n\nexport class EclMultiselectOptionKeydownEvent {\n constructor(\n public multiselectOption: EclMultiselectOption,\n public keyboardEvent: KeyboardEvent,\n ) {}\n}","import { Component, ElementRef, EventEmitter, HostBinding, Input, Output, Renderer2, ViewChild, booleanAttribute, inject } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclThemeService } from '@eui/ecl/core';\nimport { EclMultiselectMainInputClickEvent } from '../events';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';\n\n/**\n * Component representing the main input of a multiselect component.\n * Handles displaying selected items, opening the dropdown, and managing accessibility.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclMultiselectInput]',\n templateUrl: './ecl-multiselect-input.component.html',\n imports: [TranslateModule, ...EUI_ECL_BUTTON, ...EUI_ECL_ICON],\n})\nexport class EclMultiselectInputComponent extends ECLBaseDirective {\n\n /**\n * Size modifier for the multiselect input (e.g., 's', 'm', 'l').\n */\n @Input() eclSize = 'm';\n\n /**\n * ID of the toggle button element (used for accessibility).\n */\n @Input() toggleId: string;\n\n /**\n * Label for the toggle button (optional).\n */\n @Input() toggleLabel: string | undefined = undefined;\n\n /**\n * Marks the component as disabled.\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.ecl-select__container--disabled')\n isDisabled: boolean | undefined = false;\n\n /**\n * Marks the component as being in an invalid state.\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.ecl-select__container--invalid')\n isInvalid: boolean | undefined = false;\n\n /**\n * CSS classes for the component, including size and inherited classes.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [\n super.getCssClasses('ecl-select__container'),\n `ecl-select__container--${this.eclSize}`,\n ].join(' ').trim();\n }\n\n /**\n * Placeholder text for the input when no items are selected.\n */\n @Input() inputPlaceholder: string;\n\n /**\n * Array of currently selected item labels.\n */\n @Input() selectedItems = [];\n\n /**\n * Indicates that the dropdown is currently expanded.\n */\n @Input() isDropdownExpanded = false;\n\n /**\n * ARIA controls attribute for accessibility.\n */\n @Input() ariaControls: string | undefined = undefined;\n\n /**\n * ARIA describedby attribute for accessibility.\n */\n @Input() ariaDescribedby: string | undefined = undefined;\n\n /**\n * ARIA labelledby attribute for accessibility.\n */\n @Input() ariaLabeledby: string | undefined = undefined;\n\n /**\n * Reference to the internal input element.\n */\n @ViewChild('inputMultiselect') inputMultiselect: ElementRef;\n\n /**\n * Event emitted when the input is clicked.\n */\n @Output() mainInputClick = new EventEmitter<EclMultiselectMainInputClickEvent>();\n\n /**\n * Event emitted when a key is pressed on the input.\n */\n @Output() mainInputKeydown = new EventEmitter<Event>();\n\n private readonly ICON_SIZE_FOR_EC_THEME_ON = 'xs';\n private readonly ICON_SIZE_FOR_EU_THEME_ON = 's';\n private eclThemeService = inject(EclThemeService);\n private renderer = inject(Renderer2);\n\n /**\n * Returns the label text shown inside the button.\n */\n get buttonText(): string {\n return this.selectedItems.length === 0 ? this.inputPlaceholder : this.selectedItems.join(',');\n }\n\n /**\n * Returns the count of selected items.\n */\n get selectedItemsCount(): number {\n return this.selectedItems.length;\n }\n\n /**\n * Displays a count badge when items are selected.\n */\n get isShowCounter(): boolean {\n return this.selectedItems && this.selectedItems.length > 0;\n }\n\n /**\n * Indicates that the dropdown is expanded (active).\n */\n get isActive(): boolean {\n return this.isDropdownExpanded;\n }\n\n /**\n * Returns icon size depending on the theme.\n */\n get sizeIcon(): string {\n if (this.eclThemeService.isECTheme()) {\n return this.ICON_SIZE_FOR_EC_THEME_ON;\n } else {\n return this.ICON_SIZE_FOR_EU_THEME_ON;\n }\n }\n\n /**\n * Handles click on the input container. Emits custom event with original DOM event.\n */\n onClick(evt: Event): void {\n this.mainInputClick.emit(new EclMultiselectMainInputClickEvent(evt));\n }\n\n /**\n * Handles keydown events on the input.\n * Only emits event on ArrowDown, Enter, or Space keys.\n */\n onKeydown(evt: KeyboardEvent): void {\n switch (evt.key) {\n case KeyCode.ARROW_DOWN:\n case KeyCode.ENTER:\n case KeyCode.SPACE:\n {\n this.mainInputKeydown.emit(evt);\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * Focuses the multiselect input element.\n */\n onFocus(): void {\n this.renderer.selectRootElement(this.inputMultiselect.nativeElement, true).focus();\n }\n}\n","<div [class.ecl-select-multiple-selections-counter--visible]=\"isShowCounter\" class=\"ecl-select-multiple-selections-counter\">\n <span>{{ selectedItemsCount }}</span>\n</div>\n<button\n class=\"ecl-select ecl-select__multiple-toggle\"\n [class.ecl-select--active]=\"isActive\"\n #inputMultiselect\n type=\"button\"\n [id]=\"toggleId\"\n [attr.aria-expanded]=\"isDropdownExpanded\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.disabled]=\"isDisabled ? true : undefined\"\n [attr.aria-labelledby]=\"ariaLabeledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n (keydown)=\"onKeydown($event)\"\n (click)=\"onClick($event)\"> {{ buttonText }}\n</button>\n<div class=\"ecl-select__icon\">\n <button eclButton isIconOnly variant=\"tertiary\" tabindex=\"-1\">\n <span eclButtonLabel>\n {{ toggleLabel || 'ecl.multiselect.TOGGLE.DROPDOWN' | translate }}\n </span>\n <ecl-icon icon=\"corner-arrow\" [size]=\"sizeIcon\" transform=\"rotate-180\"></ecl-icon>\n </button>\n</div>\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n ViewChild,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport { EclCheckboxDirective, EUI_ECL_CHECKBOX } from '@eui/ecl/components/ecl-checkbox';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { Subject } from 'rxjs';\nimport { BoldTextPipe } from '../boldText.pipe';\nimport {\n EclMultiselectOptionClickEvent,\n EclMultiselectOptionKeydownEvent,\n} from '../events/ecl-multiselect-option.event';\nimport { EclMultiselectOption } from '../models/ecl-multiselect-option.model';\n\n/**\n * Component representing a single selectable option in the multiselect dropdown.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclMultiselectOption]',\n templateUrl: './ecl-multiselect-option.component.html',\n imports: [BoldTextPipe, ...EUI_ECL_CHECKBOX],\n hostDirectives: [EclCheckboxDirective],\n})\nexport class EclMultiselectOptionComponent extends ECLBaseDirective implements EclMultiselectOption, OnChanges, OnDestroy, OnInit {\n\n @ViewChild('checkboxInput') eclCheckboxInput: ElementRef;\n\n keyword = '';\n\n @Input()\n set value(value: string) {\n this._value = value;\n }\n\n get value(): string {\n return this._value;\n }\n\n /**\n * Display label for the option.\n */\n @Input() label: string;\n\n changes = new Subject();\n\n /**\n * Disables the option when true.\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('class.ecl-checkbox--disabled')\n @HostBinding('attr.disabled')\n disabled = false;\n\n /**\n * Emits when the option is clicked.\n */\n @Output() optionClick = new EventEmitter<EclMultiselectOptionClickEvent>();\n\n /**\n * Emits when a key is pressed while focused on the option.\n */\n @Output() optionKeydown = new EventEmitter<EclMultiselectOptionKeydownEvent>();\n\n @HostBinding('style.display') protected display = 'flex';\n\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-checkbox')].join(' ').trim();\n }\n\n /**\n * Indicates whether the option is selected.\n */\n @Input()\n get isChecked(): boolean {\n return this._checked;\n }\n\n set isChecked(value: boolean) {\n this._checked = value;\n }\n\n private _id = '';\n private _checked = false;\n private _value = '';\n private renderer = inject(Renderer2);\n\n /**\n * Returns the unique identifier for the option.\n */\n get id(): string {\n return this._id;\n }\n\n /**\n * Indicates whether the option is active (visible and not disabled).\n */\n get isActive(): boolean {\n return this.display === 'flex' && !this.disabled;\n }\n\n ngOnChanges(): void {\n this.changes.next(this.label);\n }\n\n ngOnInit(): void {\n this._id = this.createId();\n }\n\n ngOnDestroy(): void {\n this.changes.complete();\n }\n\n /**\n * Toggles the selected state and emits the optionClick event.\n */\n onOptionClick(): void {\n this.isChecked = !this.isChecked;\n this.optionClick.emit(new EclMultiselectOptionClickEvent(this));\n }\n\n /**\n * Emits the optionKeydown event when a key is pressed.\n */\n onOptionKeydown(evt: KeyboardEvent): void {\n this.optionKeydown.emit(new EclMultiselectOptionKeydownEvent(this, evt));\n }\n\n /**\n * Focuses the checkbox input.\n */\n onFocus(): void {\n this.renderer.selectRootElement(this.eclCheckboxInput.nativeElement, true).focus();\n }\n\n /**\n * Makes the option visible.\n */\n show(): void {\n this.display = 'flex';\n }\n\n /**\n * Hides the option from view.\n */\n hide(): void {\n this.display = 'none';\n }\n\n /**\n * Sets the keyword for search highlighting.\n */\n highlightSearchText(keyword: string): void {\n this.keyword = keyword;\n const re = new RegExp(keyword, 'gi');\n const res = this.label.replace(re, '<b>$&</b>');\n }\n\n private createId(): string {\n return crypto.randomUUID();\n }\n}\n","<input\n eclCheckboxInput\n type=\"checkbox\"\n [id]=\"id\"\n [value]=\"value\"\n (click)=\"onOptionClick()\"\n (keydown)=\"onOptionKeydown($event)\"\n [checked]=\"isChecked\"\n [disabled]=\"disabled\"\n #checkboxInput />\n<label [for]=\"id\" eclCheckboxLabel><span [innerHTML]=\"label | boldText: keyword\"></span></label>\n","import { Component, HostBinding, Input } from '@angular/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Component representing an option group (fieldset) in a multiselect component.\n * Used to group related options under a common label.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'fieldset[eclMultiselectOptgroup]',\n templateUrl: './ecl-multiselect-optgroup.component.html',\n})\nexport class EclMultiselectOptgroupComponent extends ECLBaseDirective {\n\n /**\n * The visible label for the option group.\n */\n @Input() label: string;\n\n /**\n * Returns the computed CSS classes for the optgroup container.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-select__multiple-group')].join(' ').trim();\n }\n}\n","<legend class=\"ecl-select__multiple-group__title\">{{ label }}</legend>\n<ng-content></ng-content>\n","import { booleanAttribute, Component, DoCheck, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Input, IterableDiffer, IterableDiffers, OnDestroy, OnInit, Output, QueryList, Renderer2, ViewChild, ViewChildren, inject } from '@angular/core';\nimport { ControlValueAccessor, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { KeyCode } from '@eui/ecl/core';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclMultiselectInputComponent } from '../ecl-multiselect-input/ecl-multiselect-input.component';\nimport { EclMultiselectOptionDirective } from '../ecl-multiselect-option.directive';\nimport { EclMultiselectOptionComponent } from '../ecl-multiselect-option/ecl-multiselect-option.component';\nimport { EclMultiselectOption } from '../models/ecl-multiselect-option.model';\nimport { EclMultiselectMainInputClickEvent, EclMultiselectOptionClickEvent, EclMultiselectOptionKeydownEvent } from '../events';\nimport { EUI_ECL_BUTTON } from '@eui/ecl/components/ecl-button';\nimport { EclMultiselectOptgroupComponent } from '../ecl-multiselect-optgroup/ecl-multiselect-optgroup.component';\nimport { EUI_ECL_CHECKBOX } from '@eui/ecl/components/ecl-checkbox';\n\n/**\n * Component that renders a dropdown-style multiselect UI element.\n * Used internally by the `EclMultiselectComponent`.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[eclMultiselectDropdown]',\n templateUrl: 'ecl-multiselect-dropdown.component.html',\n imports: [\n ...EUI_ECL_BUTTON, EclMultiselectOptionComponent, EclMultiselectOptgroupComponent,\n EclMultiselectInputComponent, ...EUI_ECL_CHECKBOX, TranslateModule,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EclMultiselectDropdownComponent),\n multi: true,\n },\n ],\n})\nexport class EclMultiselectDropdownComponent extends ECLBaseDirective implements OnInit, ControlValueAccessor, DoCheck, OnDestroy {\n\n @ViewChild('searchInput') searchInput: ElementRef;\n @ViewChild('eclMultiselectInput') eclMultiselectInput: EclMultiselectInputComponent;\n @ViewChild('selectAllCheckbox') selectAllCheckbox: ElementRef;\n @ViewChild('closeBtn', { read: ElementRef }) closeBtn: ElementRef;\n @ViewChild('clearAllBtn', { read: ElementRef }) clearAllBtn: ElementRef;\n @ViewChildren(EclMultiselectOptionComponent) multiOptionComponents: QueryList<EclMultiselectOptionComponent>;\n\n /**\n * Emits the list of selected values whenever the selection changes.\n */\n @Output() eclChange = new EventEmitter<string[]>();\n\n /**\n * Marks the component as visually invalid.\n */\n @Input({ transform: booleanAttribute })\n get isInvalid(): boolean | undefined {\n return this._isInvalid;\n }\n set isInvalid(value: boolean | undefined) {\n this._isInvalid = value;\n }\n\n /**\n * Adds the ECL base CSS class for multiselect dropdowns.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-select__multiple')].join(' ').trim();\n }\n\n /**\n * Placeholder for the main multiselect input.\n */\n @Input() mainInputPlaceholder = 'Select an item';\n\n /**\n * Placeholder for the search field input.\n */\n @Input() searchFieldPlaceholder = 'Enter filter keyword';\n\n /**\n * Size of the multiselect dropdown (e.g., 'm', 'l').\n */\n @Input() eclSize = 'm';\n\n /**\n * Disables the component when true.\n */\n @Input({ transform: booleanAttribute })\n @HostBinding('attr.disabled')\n get disabled(): boolean | undefined {\n return this._disabled || undefined;\n }\n set disabled(value: boolean | undefined) {\n this._disabled = value;\n }\n\n /**\n * Optional ARIA description used for accessibility purposes.\n */\n ariaDescribedby: string | undefined = undefined;\n\n /**\n * Optional ARIA label reference for screen readers.\n */\n ariaLabeledby: string | undefined = undefined;\n\n /**\n * Label displayed for the toggle button to assist screen readers.\n */\n toggleLabel: string | undefined = undefined;\n\n /**\n * Enables the search box in the dropdown interface.\n */\n hasSearchBox = true;\n\n /**\n * Displays the \"Select all\" checkbox above the list of options.\n */\n hasSelectAll = true;\n\n /**\n * Optional identifier used for the dropdown element.\n */\n id = '';\n\n /**\n * Indicates that the \"no results found\" message should be displayed.\n */\n isShowNoResultsFound = false;\n\n /**\n * Controls the visibility of the multiselect dropdown.\n */\n isShowMultiselectDropdown = false;\n\n /**\n * List of option directives currently rendered in the dropdown.\n */\n multiOptionDirectives: EclMultiselectOptionDirective[] = [];\n\n /**\n * Reactive form group managing internal form state.\n */\n form: FormGroup;\n\n /**\n * Total number of options available in the dropdown list.\n */\n optionsCount = 0;\n\n protected dropdownId = '';\n protected isSelectAllDisabled: boolean | null = null;\n protected selectAllId = '';\n protected toggleId = '';\n private _disabled = false;\n private _isInvalid = false;\n private _selectedItems: EclMultiselectOption[] = [];\n private differ: IterableDiffer<EclMultiselectOptionComponent>;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private isWriteValueCalled = false;\n private values = [];\n private elRef = inject(ElementRef);\n private differs = inject(IterableDiffers);\n private renderer = inject(Renderer2);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n }\n\n ngDoCheck(): void {\n const diff = this.differ.diff(this.multiOptionComponents);\n\n if (diff) {\n if (this.isWriteValueCalled) {\n this.resetComponent();\n this.writeValues(this.values);\n this.isWriteValueCalled = false;\n } else {\n this.initSelectedOptions();\n }\n }\n\n this.optionsCount = this.getAvailableOptions() ? this.getAvailableOptions().length : 0;\n }\n\n ngOnInit(): void {\n this.selectAllId = this.getSelectAllId();\n this.dropdownId = this.getDropdownId();\n this.toggleId = this.getToggleId();\n setTimeout(() => {\n this.modifyParentLabelForAttribute();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n /**\n * Writes a new value to the component from the outside (e.g., form model).\n * Required by ControlValueAccessor.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public writeValue(values: any): void {\n if (this.multiOptionComponents && this.multiOptionComponents.length > 0) {\n this.resetComponent();\n this.writeValues(values);\n } else {\n this.values = values;\n this.isWriteValueCalled = true;\n }\n }\n\n /**\n * Registers a callback function to be called when the value changes.\n * Required by ControlValueAccessor.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n /**\n * Registers a callback function to be called when the component is touched.\n * Required by ControlValueAccessor.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public registerOnTouched(fn: any): void {\n this.propagateTouched = fn;\n }\n\n /**\n * Enables or disables the component.\n * Required by ControlValueAccessor.\n */\n public setDisabledState(isDisabled: boolean): void {\n this._disabled = isDisabled;\n }\n\n @HostListener('document:keyup.escape')\n onEscapeKey(): void {\n this.hideMultiselectDropdown();\n }\n\n @HostListener('document:click', ['$event'])\n onKeyUp(event: MouseEvent): void {\n if (!this.elRef.nativeElement.contains(event.target)) {\n this.hideMultiselectDropdown();\n }\n }\n\n /**\n * Gets labels of currently selected options.\n */\n get selectedItems(): string[] {\n return this._selectedItems.map((item) => item.label);\n }\n\n /**\n * Indicates if any options are currently selected.\n */\n get isItemsSelected(): boolean {\n return this._selectedItems.length > 0;\n }\n\n /**\n * Controls the visibility of the multiselect toolbar.\n */\n get isShowToolbar(): boolean {\n return this._selectedItems.length > 0;\n }\n\n initSelectedOptions(): void {\n this._selectedItems = [];\n this.multiOptionComponents\n .filter((elem) => elem.isChecked)\n .forEach((item) => {\n this._selectedItems.push(item);\n });\n }\n\n onClickClearAll(evt: Event): void {\n evt.stopPropagation();\n this.unselectAllActiveOptions();\n this.eclChange.emit([]);\n this.propagateChange([]);\n }\n\n onEnterClear(evt: Event): void {\n this.onClickClearAll(evt);\n this.eclMultiselectInput.onFocus();\n }\n\n onClickClose(evt: Event): void {\n evt.preventDefault();\n this.hideMultiselectDropdown();\n }\n\n onArrowUpClose(evt: Event): void {\n evt.preventDefault();\n const currentOptions = this.getActiveOptions();\n currentOptions[currentOptions.length - 1].onFocus();\n }\n\n onArrowDownClose(evt: Event): void {\n evt.preventDefault();\n this.renderer.selectRootElement(this.clearAllBtn.nativeElement, true).focus();\n }\n\n onTabClose(evt: Event): void {\n if (!(evt as KeyboardEvent).shiftKey) {\n evt.preventDefault();\n this.renderer.selectRootElement(this.clearAllBtn.nativeElement, true).focus();\n }\n }\n\n onArrowUpClear(evt: Event): void {\n evt.preventDefault();\n this.renderer.selectRootElement(this.closeBtn.nativeElement, true).focus();\n }\n\n onArrowDownClear(evt: Event): void {\n evt.preventDefault();\n this.eclMultiselectInput.onFocus();\n }\n\n onTabClear(evt: Event): void {\n if (!(evt as KeyboardEvent).shiftKey) {\n evt.preventDefault();\n this.hideMultiselectDropdown();\n this.eclMultiselectInput.onFocus();\n }\n }\n\n onEnterSearch(evt: Event): void {\n evt.preventDefault();\n }\n\n onArrowDownSearch(evt: Event): void {\n evt.preventDefault();\n const currentOptions = this.getActiveOptions();\n if (this.hasSelectAll) {\n this.renderer.selectRootElement(this.selectAllCheckbox.nativeElement, true).focus();\n } else {\n currentOptions[0].onFocus();\n }\n }\n\n onArrowUpSearch(evt: Event): void {\n evt.preventDefault();\n this.hideMultiselectDropdown();\n this.eclMultiselectInput.onFocus();\n }\n\n onKeydownMainInput(evt: Event): void {\n evt.preventDefault();\n this.showMultiselectDropdown();\n if (this.hasSearchBox) {\n setTimeout(() => this.renderer.selectRootElement(this.searchInput.nativeElement, true).focus());\n } else {\n this.onArrowDownSearch(evt);\n }\n }\n\n onClickMainInput(evt: EclMultiselectMainInputClickEvent): void {\n evt.event.preventDefault();\n this.toggleDropdown();\n }\n\n onArrowDownSelectAll(evt: Event): void {\n evt.preventDefault();\n const currentOptions = this.getActiveOptions();\n if (currentOptions.length > 0) {\n currentOptions[0].onFocus();\n }\n }\n\n onArrowUpSelectAll(evt: Event): void {\n evt.preventDefault();\n if (this.hasSearchBox) {\n this.renderer.selectRootElement(this.searchInput.nativeElement, true).focus();\n } else {\n this.onArrowUpSearch(evt);\n }\n }\n\n onEnterSelectAll(evt: Event): void {\n evt.preventDefault();\n (evt.target as HTMLInputElement).click();\n }\n\n /**\n * Handles search input, filters options, and updates their visibility.\n */\n onSearch(input: EventTarget): void {\n const keyword = (input as HTMLInputElement).value;\n let isMatchFound = false;\n if (keyword === '') {\n this.enableSelectAll();\n isMatchFound = true;\n this.multiOptionComponents.forEach((item) => {\n item.highlightSearchText('');\n item.show();\n });\n } else {\n this.multiOptionComponents.forEach((item) => {\n if (item.label.toLowerCase().indexOf(keyword.toLowerCase()) < 0) {\n item.hide();\n } else {\n isMatchFound = true;\n item.highlightSearchText(keyword.toLowerCase());\n item.show();\n }\n });\n this.disableSelectAll();\n }\n if (!isMatchFound) {\n this.showNoResultsFound();\n } else {\n this.hideNoResultsFound();\n }\n }\n\n /**\n * Toggles all visible options based on the \"Select All\" checkbox.\n */\n onSelectAll(): void {\n if (this.selectAllCheckbox.nativeElement.checked) {\n this.selectAllActiveOptions();\n } else {\n this.unselectAllActiveOptions();\n }\n this.propagateTouched();\n this.eclChange.emit(this._selectedItems.map((item) => item.value));\n this.propagateChange(this._selectedItems.map((item) => item.value));\n }\n\n /**\n * Handles keyboard interaction on option items.\n * Supports arrow keys, tab, escape, and enter.\n */\n onKeydownOption(evt: EclMultiselectOptionKeydownEvent): void {\n switch (evt.keyboardEvent.key) {\n case KeyCode.ARROW_DOWN: {\n this.onArrowDownAndTabOption(evt.keyboardEvent, evt.multiselectOption);\n break;\n }\n case KeyCode.ARROW_UP: {\n this.onArrowUpOption(evt.keyboardEvent, evt.multiselectOption);\n break;\n }\n case KeyCode.ESCAPE: {\n this.hideMultiselectDropdown();\n break;\n }\n case KeyCode.ENTER: {\n (evt.keyboardEvent.target as HTMLInputElement).click();\n break;\n }\n case KeyCode.TAB: {\n if (!evt.keyboardEvent.shiftKey) {\n this.onArrowDownAndTabOption(evt.keyboardEvent, evt.multiselectOption);\n }\n break;\n }\n default: {\n break;\n }\n }\n }\n\n /**\n * Triggered when a single option is clicked/selected.\n * Updates selected items, emits changes.\n */\n onOptionSelected(evt: EclMultiselectOptionClickEvent): void {\n if (this.selectAllCheckbox && this.selectAllCheckbox.nativeElement.checked) {\n this.renderer.setProperty(this.selectAllCheckbox.nativeElement, 'checked', false);\n }\n const currOption = evt.multiselectOption;\n if (currOption.isChecked) {\n this._selectedItems.push(currOption);\n } else {\n const index = this._selectedItems.indexOf(currOption);\n this._selectedItems.splice(index, 1);\n }\n this.propagateChange(this._selectedItems.map((item) => item.value));\n this.propagateTouched();\n this.eclChange.emit(this._selectedItems.map((item) => item.value));\n }\n\n private selectAllActiveOptions(): void {\n this.getActiveOptions().forEach((item) => {\n if (!item.isChecked) {\n item.isChecked = true;\n this._selectedItems.push(item);\n }\n });\n }\n\n private unselectAllActiveOptions(): void {\n if (this.selectAllCheckbox) {\n this.renderer.setProperty(this.selectAllCheckbox.nativeElement, 'checked', false);\n }\n this._selectedItems = [];\n this.getAvailableOptions().forEach((item) => {\n item.isChecked = false;\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private propagateChange = (_: any): void => {\n /* empty */\n };\n\n private propagateTouched = (): void => {\n /* empty */\n };\n\n private showMultiselectDropdown(): void {\n this.isShowMultiselectDropdown = true;\n }\n\n private hideMultiselectDropdown(): void {\n this.isShowMultiselectDropdown = false;\n }\n\n private disableSelectAll(): void {\n this.isSelectAllDisabled = true;\n }\n\n private enableSelectAll(): void {\n this.isSelectAllDisabled = null;\n }\n\n private showNoResultsFound(): void {\n this.isShowNoResultsFound = true;\n }\n\n private hideNoResultsFound(): void {\n this.isShowNoResultsFound = false;\n }\n\n private resetComponent(): void {\n this.multiOptionComponents.forEach((item) => {\n item.isChecked = false;\n });\n if (this.selectAllCheckbox) {\n this.renderer.setProperty(this.selectAllCheckbox.nativeElement, 'checked', false);\n }\n this._selectedItems = [];\n }\n\n private writeValues(values: Array<string>): void {\n if (values) {\n const selectedElementsArray = [];\n if (this.multiOptionComponents && this.multiOptionComponents.length > 0) {\n this.multiOptionComponents\n .filter((item) => values.includes(item.value) && !item.disabled)\n .forEach((el) => {\n el.isChecked = true;\n selectedElementsArray.push(el.label);\n this._selectedItems.push(el);\n });\n }\n }\n }\n\n private toggleDropdown(): void {\n this.isShowMultiselectDropdown = !this.isShowMultiselectDropdown;\n }\n\n private onArrowDownAndTabOption(evt: KeyboardEvent, option: EclMultiselectOption): void {\n (evt as KeyboardEvent).preventDefault();\n const index = this.getOptionIndexByIdFromActiveOptions(option.id);\n const currentOptions = this.getActiveOptions();\n if (index !== currentOptions.length - 1) {\n const nextSiblingCheckbox = currentOptions[index + 1];\n nextSiblingCheckbox.onFocus();\n } else if (this.closeBtn) {\n this.renderer.selectRootElement(this.closeBtn.nativeElement, true).focus();\n }\n }\n\n private onArrowUpOption(evt: KeyboardEvent, option: EclMultiselectOption): void {\n (evt as KeyboardEvent).preventDefault();\n const index = this.getOptionIndexByIdFromActiveOptions(option.id);\n if (index !== 0) {\n const prevSiblingCheckbox = this.getActiveOptions()[index - 1];\n prevSiblingCheckbox.onFocus();\n } else if (!this.hasSelectAll || this.selectAllCheckbox.nativeElement.disabled) {\n if (this.hasSearchBox) {\n this.renderer.selectRootElement(this.searchInput.nativeElement, true).focus();\n } else {\n this.onArrowUpSearch(evt);\n }\n } else {\n this.renderer.selectRootElement(this.selectAllCheckbox.nativeElement, true).focus();\n }\n }\n\n private getActiveOptions(): EclMultiselectOptionComponent[] {\n return this.multiOptionComponents ? this.multiOptionComponents.filter((item) => item.isActive) : [];\n }\n\n private getAvailableOptions(): EclMultiselectOptionComponent[] {\n return this.multiOptionComponents ? this.multiOptionComponents.filter((item) => !item.disabled) : [];\n }\n\n private getOptionIndexByIdFromActiveOptions(id: string): number {\n return this.getActiveOptions().findIndex((option) => option.id === id);\n }\n\n private getSelectAllId(): string {\n return crypto.randomUUID();\n }\n\n private getDropdownId(): string {\n return this.id !== '' ? `${this.id}-dropdown` : crypto.randomUUID();\n }\n\n private getToggleId(): string {\n return this.id !== '' ? `${this.id}-toggle` : crypto.randomUUID();\n }\n\n private modifyParentLabelForAttribute(): void {\n const form = this.renderer.parentNode(this.elRef.nativeElement);\n const label = form?.querySelector('.ecl-form-label');\n if (label) {\n this.renderer.setAttribute(label, 'for', this.toggleId);\n }\n }\n}\n","<div eclMultiselectInput #eclMultiselectInput [inputPlaceholder]=\"mainInputPlaceholder\" [selectedItems]=\"selectedItems\"\n (mainInputClick)=\"onClickMainInput($event)\" (mainInputKeydown)=\"onKeydownMainInput($event)\" [isDisabled]=\"disabled\"\n [ariaLabeledby]=\"ariaLabeledby\" [ariaDescribedby]=\"ariaDescribedby\" [toggleLabel]=\"toggleLabel\" [ariaControls]=\"dropdownId\" [isInvalid]=\"isInvalid\"\n [isDropdownExpanded]=\"isShowMultiselectDropdown\" [eclSize]=\"eclSize\" [toggleId]=\"toggleId\"></div>\n<div\n [style.display]=\"isShowMultiselectDropdown ? 'block' : 'none'\"\n class=\"ecl-select__multiple-dropdown ecl-select__container ecl-select__container--{{eclSize}}\"\n [id]=\"dropdownId\">\n @if(hasSearchBox) {\n <input class=\"ecl-text-input\" type=\"search\" #searchInput [placeholder]=\"searchFieldPlaceholder\"\n (input)=\"onSearch($event.target)\" (keydown.enter)=\"onEnterSearch($event)\"\n (keydown.arrowup)=\"onArrowUpSearch($event)\" (keydown.arrowdown)=\"onArrowDownSearch($event)\" />\n }\n @if(hasSelectAll) {\n <div eclCheckbox [isDisabled]=\"isSelectAllDisabled\" class=\"ecl-select__multiple-all\">\n <input eclCheckboxInput #selectAllCheckbox [id]=\"selectAllId\" type=\"checkbox\" [attr.disabled]=\"isSelectAllDisabled\"\n (click)=\"onSelectAll()\" (keydown.arrowup)=\"onArrowUpSelectAll($event)\"\n (keydown.arrowdown)=\"onArrowDownSelectAll($event)\" (keydown.enter)=\"onEnterSelectAll($event)\" />\n <label [for]=\"selectAllId\" eclCheckboxLabel> {{ 'ecl.multiselect.SELECT-ALL' | translate }} ({{ optionsCount }})\n </label>\n </div>\n }\n <div class=\"ecl-select__multiple-options\" aria-live=\"polite\">\n @for (item of multiOptionDirectives; track item.label) {\n @if (item.isOptGroup()) {\n <fieldset eclMultiselectOptgroup [label]=\"item.label\">\n @for (elem of item.eclOptionItems; track elem.label) {\n <div\n eclMultiselectOption\n [value]=\"elem.value\"\n [label]=\"elem.label\"\n [disabled]=\"elem.disabled\"\n [isChecked]=\"elem.selected\"\n [class]=\"elem.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n }\n </fieldset>\n } @else if (!item.isOptGroup()) {\n <div\n eclMultiselectOption\n [value]=\"item.value\"\n [label]=\"item.label\"\n [disabled]=\"item.disabled\"\n [isChecked]=\"item.selected\"\n [class]=\"item.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\"></div>\n }\n }\n\n\n @if (isShowNoResultsFound) {\n <div class=\"ecl-select__multiple-no-results\">\n <span>{{ 'ecl.multiselect.NO-RESULTS-FOUND' | translate }}</span>\n </div>\n }\n\n </div>\n @if (isShowToolbar) {\n <div class=\"ecl-select-multiple-toolbar\">\n <button\n eclButton\n variant=\"primary\"\n #closeBtn\n (keydown.arrowup)=\"onArrowUpClose($event)\"\n (keydown.arrowDown)=\"onArrowDownClose($event)\"\n (keydown.tab)=\"onTabClose($event)\"\n (click)=\"onClickClose($event)\">\n {{ 'ecl.common.APPLY' | translate }}\n </button>\n <button\n eclButton\n variant=\"tertiary\"\n #clearAllBtn\n (keydown.arrowup)=\"onArrowUpClear($event)\"\n (keydown.arrowDown)=\"onArrowDownClear($event)\"\n (keydown.tab)=\"onTabClear($event)\"\n (keydown.enter)=\"onEnterClear($event)\"\n (click)=\"onClickClearAll($event)\">\n {{ 'ecl.multiselect.CLEAR-ALL' | translate }}\n </button>\n </div>\n }\n</div>\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ContentChildren, Directive, ElementRef, HostBinding, Input, QueryList, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\n\n/**\n * Directive used to decorate <option> and <optgroup> elements within a multiselect.\n * Adds support for value, label, disabled, selected states and styling.\n */\n@Directive({\n selector: 'optgroup[eclMultiselectOptgroup], option[eclMultiselectOption]',\n})\nexport class EclMultiselectOptionDirective extends ECLBaseDirective {\n\n /**\n * Nested option directives (used for optgroups).\n */\n @ContentChildren(EclMultiselectOptionDirective) eclOptionItems: QueryList<EclMultiselectOptionDirective>;\n\n /**\n * Value assigned to the option.\n */\n @Input() value: string;\n\n /**\n * Label displayed for the option.\n */\n @Input() label: string;\n\n /**\n * Emits whenever the option's state changes (used internally).\n */\n changes = new Subject();\n\n /**\n * Indicates that the option is disabled.\n */\n @Input()\n @HostBinding('attr.disabled')\n get disabled(): boolean {\n return this._disabled || null;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n /**\n * Indicates that the option is selected.\n */\n @Input()\n @HostBinding('attr.selected')\n get selected(): boolean {\n return this._selected || null;\n }\n set selected(value) {\n this._selected = coerceBooleanProperty(value);\n }\n private _selected = false;\n private elRef = inject(ElementRef);\n\n /**\n * Applies ECL checkbox styling class to the option.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-checkbox')].join(' ').trim();\n }\n\n /**\n * Returns true if this directive is applied to an <optgroup> element.\n */\n isOptGroup(): boolean {\n return this.elRef.nativeElement.nodeName === 'OPTGROUP';\n }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Component, ContentChildren, DoCheck, ElementRef, EventEmitter, HostBinding, Injector, Input, IterableDiffer, IterableDiffers, OnDestroy, OnInit, Output, PLATFORM_ID, QueryList, Renderer2, ViewContainerRef, ViewEncapsulation, afterNextRender, booleanAttribute, forwardRef, inject } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { Subject, takeUntil } from 'rxjs';\nimport { ECLBaseDirective } from '@eui/ecl/core';\nimport { EclMultiselectDropdownComponent } from './ecl-multiselect-dropdown/ecl-multiselect-dropdown.component';\nimport { EclMultiselectOptionDirective } from './ecl-multiselect-option.directive';\n\n/**\n * Component representing a custom multiselect input using the ECL design system.\n *\n * Should be used on a native <select> element to enhance it with ECL multiselect behavior.\n * Replaces the original element with a custom dropdown rendered dynamically.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'select[eclMultiselect]',\n templateUrl: 'ecl-multiselect.component.html',\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EclMultiselectComponent),\n multi: true,\n },\n ],\n})\nexport class EclMultiselectComponent extends ECLBaseDirective implements DoCheck, OnInit, OnDestroy {\n injector = inject(Injector);\n\n /**\n * List of option directives projected into the component.\n */\n @ContentChildren(forwardRef(() => EclMultiselectOptionDirective)) eclOptionItems: QueryList<EclMultiselectOptionDirective>;\n\n /**\n * Defines the `aria-describedby` attribute for accessibility.\n */\n @Input() ariaDescribedby: string | undefined = undefined;\n\n /**\n * Defines the `aria-labelledby` attribute for accessibility.\n */\n @Input() ariaLabeledby: string | undefined = undefined;\n\n /**\n * Sets the `id` attribute of the multiselect component.\n */\n @Input() id: string | undefined = undefined;\n\n /**\n * Label used for the toggle button that expands or collapses the dropdown.\n */\n @Input() toggleLabel: string | undefined = undefined;\n\n /**\n * Marks the multiselect as invalid.\n */\n @Input({ transform: booleanAttribute })\n get isInvalid(): boolean | undefined {\n return this._isInvalid;\n }\n set isInvalid(value: boolean | undefined) {\n this._isInvalid = value;\n if (this.multiselectComponent) {\n this.multiselectComponent.isInvalid = value;\n }\n }\n\n /**\n * Disables the multiselect component when set to true.\n */\n @Input()\n @HostBinding('attr.disabled')\n set disabled(value: BooleanInput) {\n if (this.multiselectComponent) {\n this.multiselectComponent.disabled = coerceBooleanProperty(value);\n }\n this._disabled = coerceBooleanProperty(value);\n }\n get disabled(): boolean | undefined {\n return this._disabled || undefined;\n }\n\n /**\n * CSS classes applied to the host element.\n */\n @HostBinding('class')\n get cssClasses(): string {\n return [super.getCssClasses('ecl-select')].join(' ').trim();\n }\n\n /**\n * Emits an array of selected option values when the selection changes.\n */\n @Output() eclChange = new EventEmitter<string[]>();\n\n /**\n * Enables the search box within the dropdown.\n */\n @Input({ transform: booleanAttribute })\n set hasSearchBox(value: string) {\n if (this.multiselectComponent) {\n this.multiselectComponent.hasSearchBox = coerceBooleanProperty(value);\n }\n this._hasSearchBox = coerceBooleanProperty(value);\n }\n\n /**\n * Displays the \"Select all\" option in the dropdown.\n */\n @Input({ transform: booleanAttribute })\n set hasSelectAll(value: string) {\n if (this.multiselectComponent) {\n this.multiselectComponent.hasSelectAll = coerceBooleanProperty(value);\n }\n this._hasSelectAll = coerceBooleanProperty(value);\n }\n\n /**\n * Placeholder text to show in the multiselect input field when no options are selected.\n */\n @Input()\n set eclPlaceholder(value: string) {\n this._eclPlaceholder = value;\n if (this.multiselectComponent) {\n this.multiselectComponent.mainInputPlaceholder = value;\n }\n }\n get eclPlaceholder(): string {\n return this._eclPlaceholder;\n }\n\n /**\n * Multiselect size: 's' | 'm' | 'l'. Default is 'm'.\n */\n @Input() eclSize = 'm';\n\n private readonly SELECT_CONTAINER_CLASS = 'ecl-select__container';\n private readonly SELECT_CONTAINER_HIDDEN_CLASS = 'ecl-select__container--hidden';\n private _disabled = false;\n private _hasSelectAll = true;\n private _hasSearchBox = true;\n private _isInvalid = false;\n private _eclPlaceholder = 'Select item';\n private differ: IterableDiffer<EclMultiselectOptionDirective>;\n private multiselectComponent: EclMultiselectDropdownComponent;\n private hostEl: HTMLSelectElement;\n private hostParentEl: HTMLElement;\n private hostWrapperEl: HTMLElement;\n private multiselectComponentHtml: HTMLDivElement;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private el = inject(ElementRef);\n private viewContainerRef = inject(ViewContainerRef);\n private differs = inject(IterableDiffers);\n private renderer = inject(Renderer2);\n private platformId = inject(PLATFORM_ID);\n\n constructor() {\n super();\n this.differ = this.differs.find([]).create();\n afterNextRender(() => {\n this.attachOptions();\n if (this.hostParentEl != null) {\n this.hideOriginalSelectComponent();\n this.renderer.insertBefore(this.hostParentEl, this.multiselectComponentHtml, this.hostWrapperEl);\n this.setAriaLabelledBy();\n }\n });\n }\n\n ngDoCheck(): void {\n const diff = this.differ.diff(this.eclOptionItems);\n\n if (diff) {\n if (this.multiselectComponent) {\n this.multiselectComponent.multiOptionDirectives = this.eclOptionItems.toArray();\n }\n }\n }\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.hostEl = this.getHostElement();\n this.hostParentEl = this.getHostParentElement(this.hostEl);\n this.hostWrapperEl = this.createHostWrapperContainer();\n this.multiselectComponentHtml = this.createMultiselectComponent();\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n }\n\n private hideOriginalSelectComponent(): void {\n this.hostParentEl.replaceChild(this.hostWrapperEl, this.hostEl);\n this.hostWrapperEl.appendChild(this.hostEl);\n this.renderer.addClass(this.hostWrapperEl, this.SELECT_CONTAINER_HIDDEN_CLASS);\n this.renderer.setAttribute(this.hostWrapperEl, 'tabindex', '-1');\n this.renderer.setAttribute(this.hostEl, 'tabindex', '-1');\n }\n\n private createHostWrapperContainer(): HTMLElement {\n const wrapperContainer = this.renderer.createElement('div');\n this.renderer.addClass(wrapperContainer, this.SELECT_CONTAINER_CLASS);\n this.renderer.addClass(wrapperContainer, `${this.SELECT_CONTAINER_CLASS}--${this.eclSize}`);\n return wrapperContainer;\n }\n\n private getHostElement(): HTMLSelectElement {\n return this.el.nativeElement;\n }\n\n private getHostParentElement(hostEl: HTMLSelectElement): HTMLElement {\n return hostEl.parentElement;\n }\n\n private createMultiselectComponent(): HTMLDivElement {\n const ngControl = this.injector.get(NgControl, undefined, { optional: true });\n const multiselect = this.viewContainerRef.createComponent(EclMultiselectDropdownComponent);\n this.multiselectComponent = multiselect.instance;\n this.multiselectComponent.eclChange.pipe(takeUntil(this.destroy$)).subscribe((evt) => {\n this.eclChange.emit(evt);\n });\n this.multiselectComponent.mainInputPlaceholder = this.eclPlaceholder;\n\n if (this.ariaLabeledby !== undefined) {\n this.multiselectComponent.ariaLabeledby = this.ariaLabeledby;\n }\n if (this.ariaDescribedby !== undefined) {\n this.multiselectComponent.ariaDescribedby = this.ariaDescribedby;\n }\n if (this.toggleLabel !== undefined) {\n this.multiselectComponent.toggleLabel = this.toggleLabel;\n }\n if (this.id !== undefined) {\n this.multiselectComponent.id = this.id;\n }\n this.multiselectComponent.eclSize = this.eclSize;\n if (ngControl) {\n ngControl.valueAccessor = this.multiselectComponent;\n }\n multiselect.instance.disabled = this.disabled;\n multiselect.instance.isInvalid = this.isInvalid;\n multiselect.instance.hasSearchBox = this._hasSearchBox;\n multiselect.instance.hasSelectAll = this._hasSelectAll;\n return (multiselect.location as ElementRef<HTMLDivElement>).nativeElement;\n }\n\n private setAriaLabelledBy(): void {\n const hostSelect: HTMLElement = this.el.nativeElement;\n const formGroup = hostSelect.closest('.ecl-form-group') as HTMLElement | null;\n if (!formGroup) return;\n\n const label = formGroup.querySelector('.ecl-form-label') as HTMLElement | null;\n if (!label) return;\n\n if (!label.id) {\n const newLabelId = `ecl-select-label-${crypto.randomUUID()}`;\n this.renderer.setAttribute(label, 'id', newLabelId);\n }\n\n if (!hostSelect.id) {\n const newSelectId = `ecl-select-input-${crypto.randomUUID()}`;\n this.renderer.setAttribute(hostSelect, 'id', newSelectId);\n }\n\n const labelledBy = `${label.id} ${hostSelect.id}`.trim();\n this.renderer.setAttribute(hostSelect, 'aria-labelledby', labelledBy);\n }\n\n private attachOptions(): void {\n setTimeout(() => {\n this.multiselectComponent.multiOptionDirectives = this.eclOptionItems.toArray();\n });\n }\n}\n","<ng-content></ng-content>\n","import { BoldTextPipe } from './boldText.pipe';\nimport { EclMultiselectDropdownComponent } from './ecl-multiselect-dropdown/ecl-multiselect-dropdown.component';\nimport { EclMultiselectInputComponent } from './ecl-multiselect-input/ecl-multiselect-input.component';\nimport { EclMultiselectOptgroupComponent } from './ecl-multiselect-optgroup/ecl-multiselect-optgroup.component';\nimport { EclMultiselectOptionDirective } from './ecl-multiselect-option.directive';\nimport { EclMultiselectOptionComponent } from './ecl-multiselect-option/ecl-multiselect-option.component';\nimport { EclMultiselectComponent } from './ecl-multiselect.component';\n\nexport * from './ecl-multiselect.component';\nexport * from './ecl-multiselect-dropdown/ecl-multiselect-dropdown.component';\nexport * from './ecl-multiselect-input/ecl-multiselect-input.component';\nexport * from './ecl-multiselect-optgroup/ecl-multiselect-optgroup.component';\nexport * from './ecl-multiselect-option/ecl-multiselect-option.component';\nexport * from './ecl-multiselect-option.directive';\nexport * from './models/ecl-multiselect-option.model';\nexport * from './events/index';\nexport * from './boldText.pipe';\n\nexport const EUI_ECL_MULTISELECT = [\n EclMultiselectComponent,\n EclMultiselectOptionDirective,\n EclMultiselectOptionComponent,\n EclMultiselectInputComponent,\n EclMultiselectDropdownComponent,\n EclMultiselectOptgroupComponent,\n BoldTextPipe,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -346,19 +346,6 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
346
346
|
}
|
|
347
347
|
return '0';
|
|
348
348
|
}
|
|
349
|
-
/**
|
|
350
|
-
* Handles blur event when navigating tabs via keyboard.
|
|
351
|
-
*/
|
|
352
|
-
onTabBlur(evt) {
|
|
353
|
-
this.closeDropdown();
|
|
354
|
-
if (evt.shiftKey) {
|
|
355
|
-
this.getFirstTabFromArray().onBlur();
|
|
356
|
-
}
|
|
357
|
-
else {
|
|
358
|
-
this.getLastVisibleTab().onFocus();
|
|
359
|
-
this.getLastVisibleTab().onBlur();
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
349
|
/**
|
|
363
350
|
* Handles tab selection.
|
|
364
351
|
* @param tab Tab to activate.
|
|
@@ -462,28 +449,6 @@ class EclTabsComponent extends ECLBaseDirective {
|
|
|
462
449
|
this.onTabSelect(tab);
|
|
463
450
|
break;
|
|
464
451
|
}
|
|
465
|
-
case KeyCode.TAB: {
|
|
466
|
-
const lastIndex = this.getTabsCount() - 1;
|
|
467
|
-
if (event.shiftKey) {
|
|
468
|
-
if (index === 0) {
|
|
469
|
-
this.closeDropdown();
|
|
470
|
-
}
|
|
471
|
-
else {
|
|
472
|
-
event.preventDefault();
|
|
473
|
-
this.onTabKeydownArrowLeft(index);
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
else {
|
|
477
|
-
if (index === lastIndex) {
|
|
478
|
-
this.closeDropdown();
|
|
479
|
-
}
|
|
480
|
-
else {
|
|
481
|
-
event.preventDefault();
|
|
482
|
-
this.onTabKeydownArrowRight(index);
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
break;
|
|
486
|
-
}
|
|
487
452
|
default: {
|
|
488
453
|
break;
|
|
489
454
|
}
|