@eui/components 19.0.2 → 19.0.3-snapshot-1737728205029
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/components/EuiAutocompleteComponent.html +1 -1
- package/docs/components/EuiDialogContainerComponent.html +1 -1
- package/docs/components/EuiDropdownComponent.html +1 -1
- package/docs/components/EuiPopoverComponent.html +1 -1
- package/docs/components/EuiUserProfileCardComponent.html +73 -46
- package/docs/components/EuiUserProfileComponent.html +31 -1
- package/docs/dependencies.html +2 -2
- package/docs/js/search/search_index.js +2 -2
- package/eui-user-profile/user-profile-card/user-profile-card.component.d.ts +19 -8
- package/eui-user-profile/user-profile-card/user-profile-card.component.d.ts.map +1 -1
- package/eui-user-profile/user-profile.component.d.ts +5 -1
- package/eui-user-profile/user-profile.component.d.ts.map +1 -1
- package/fesm2022/eui-components-eui-autocomplete.mjs +2 -2
- package/fesm2022/eui-components-eui-autocomplete.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dialog.mjs +2 -2
- package/fesm2022/eui-components-eui-dialog.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dropdown.mjs +2 -2
- package/fesm2022/eui-components-eui-dropdown.mjs.map +1 -1
- package/fesm2022/eui-components-eui-popover.mjs +2 -2
- package/fesm2022/eui-components-eui-popover.mjs.map +1 -1
- package/fesm2022/eui-components-eui-select.mjs +2 -2
- package/fesm2022/eui-components-eui-select.mjs.map +1 -1
- package/fesm2022/eui-components-eui-user-profile.mjs +50 -21
- package/fesm2022/eui-components-eui-user-profile.mjs.map +1 -1
- package/fesm2022/eui-components-layout.mjs +2 -2
- package/fesm2022/eui-components-layout.mjs.map +1 -1
- package/package.json +10 -10
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"eui-components-eui-select.mjs","sources":["../../eui-select/eui-select.component.ts","../../eui-select/utils.ts","../../eui-select/eui-select-control.directive.ts","../../eui-select/eui-select-option.directive.ts","../../eui-select/eui-select-multiple.directive.ts","../../eui-select/eui-select-mutli-option.directive.ts","../../eui-select/eui-select.module.ts","../../eui-select/eui-components-eui-select.ts"],"sourcesContent":["import {\n booleanAttribute,\n Component,\n ComponentRef,\n DoCheck,\n ElementRef,\n HostListener,\n Injector,\n Input,\n OnChanges,\n OnInit,\n Renderer2,\n SimpleChanges,\n ViewContainerRef,\n} from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EuiInputTextComponent } from '@eui/components/eui-input-text';\nimport { NgControl } from '@angular/forms';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'select[euiSelect]',\n styleUrls: ['./eui-select.scss'],\n template: '<ng-content/>',\n standalone: false,\n})\nexport class EuiSelectComponent implements OnChanges, OnInit, DoCheck {\n @Input() placeholder: string;\n\n @Input({ transform: booleanAttribute }) readonly: boolean;\n\n @Input()\n public get isInvalid(): boolean {\n return this._isInvalid || null;\n }\n public set isInvalid(state: BooleanInput) {\n this._isInvalid = coerceBooleanProperty(state);\n if (this._isInvalid) {\n this.renderer.addClass(this.elementRef.nativeElement, 'eui-select--invalid');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'eui-select--invalid');\n }\n }\n\n protected _isInvalid: boolean;\n private control: NgControl;\n private readonlyInput: ComponentRef<EuiInputTextComponent>;\n private placeholderOption: HTMLOptionElement;\n\n constructor(\n private renderer: Renderer2,\n private injector: Injector,\n private elementRef: ElementRef<HTMLSelectElement>,\n private viewContainerRef: ViewContainerRef,\n ) {}\n\n ngOnInit(): void {\n this.renderer.addClass(this.elementRef.nativeElement, 'eui-select');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['readonly']) {\n if (this.readonly) {\n // hide select element\n this.renderer.setAttribute(this.elementRef.nativeElement, 'readonly', 'true');\n this.renderer.setAttribute(this.elementRef.nativeElement, 'hidden', '');\n\n // create an euiInputComponent to hold the value (for accessibility reasons)\n this.readonlyInput = this.createReadonlyElement();\n this.renderer.insertBefore(\n this.elementRef.nativeElement.parentElement,\n this.elementRef.nativeElement,\n this.readonlyInput.location.nativeElement,\n );\n this.setReadonlyValue(this.readonlyInput);\n } else {\n this.readonlyInput?.destroy();\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'readonly');\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'hidden');\n }\n }\n\n if (changes['placeholder']) {\n this.control = this.injector.get(NgControl, undefined, { optional: true });\n if (!this.control) {\n // in case option Element already created update the value\n if (changes['placeholder'].currentValue === undefined) {\n this.renderer.removeClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n // remove option element\n if (this.placeholderOption) {\n this.renderer.removeChild(this.elementRef.nativeElement, this.placeholderOption);\n this.placeholderOption = undefined;\n }\n } else if (this.placeholderOption) {\n this.renderer.setProperty(this.placeholderOption, 'innerText', changes['placeholder'].currentValue);\n } else {\n // create option Element\n this.placeholderOption = this.renderer.createElement('option');\n\n this.renderer.addClass(this.placeholderOption, 'eui-select__placeholder');\n this.renderer.setProperty(this.placeholderOption, 'innerText', changes['placeholder'].currentValue);\n // set attributes to act as a placeholder\n if (!this.elementRef.nativeElement.value) {\n this.renderer.setAttribute(this.placeholderOption, 'selected', '');\n }\n // append option element as the first of the select children\n this.elementRef.nativeElement.insertBefore(this.placeholderOption, this.elementRef.nativeElement.firstChild);\n\n if (this.elementRef.nativeElement.value === changes['placeholder'].currentValue) {\n this.renderer.addClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n }\n }\n }\n }\n }\n\n ngDoCheck(): void {\n if (!this.control) {\n this.control = this.injector.get(NgControl, undefined, { optional: true });\n }\n this.isInvalid = this.control ? this.control.invalid && this.control.touched : this._isInvalid;\n /** while the optionList changes but there's no selected option and there's a placeholder, add the placeholder\n * class. Otherwise, the placeholder will look selected but the color will be black. */\n if (this.placeholder && this.elementRef.nativeElement.selectedIndex === 0) {\n this.renderer.addClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n }\n }\n\n @HostListener('change', ['$event.target.value'])\n onChange(value): void {\n this.control = this.injector.get(NgControl, undefined, { optional: true });\n if (!this.control) {\n this.setPlaceholderClass(this.placeholder === value ? undefined : value);\n }\n this.syncReadOnlyValue();\n }\n\n syncReadOnlyValue(): void {\n this.setReadonlyValue(this.readonlyInput);\n }\n\n /**\n * set readonly value from selected options presented as comma separated string\n *\n * @param readonlyRef the input element to set the value\n * @private\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private setReadonlyValue(readonlyRef: ComponentRef<EuiInputTextComponent>): any {\n if (readonlyRef) {\n // eslint-disable-next-line prefer-spread\n const selectedOptions = Array.apply(null, this.elementRef.nativeElement.selectedOptions)\n .map((i) => i.text)\n .filter((i) => i !== this.placeholder)\n .join(', ');\n this.renderer.setProperty(readonlyRef.location.nativeElement, 'value', selectedOptions);\n this.renderer.setAttribute(readonlyRef.location.nativeElement, 'aria-label', selectedOptions);\n }\n }\n\n /**\n * create readonly element\n *\n * @private\n */\n private createReadonlyElement(): ComponentRef<EuiInputTextComponent> {\n const componentRef = this.viewContainerRef.createComponent(EuiInputTextComponent);\n componentRef.instance.readonly = true;\n return componentRef;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private setPlaceholderClass(value: any): void {\n const placeholderOption = this.elementRef.nativeElement.options[0];\n if (!!this.placeholder && (value === undefined || value === null || value === '')) {\n this.renderer.setAttribute(placeholderOption, 'selected', '');\n this.renderer.addClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n this.renderer.removeAttribute(placeholderOption, 'selected');\n }\n }\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _buildValueString(id: string, value: any): string {\n if (id == null) {\n return `${value}`;\n }\n if (typeof value === 'string') {\n value = `'${value}'`;\n }\n if (value && typeof value === 'object') {\n value = 'Object';\n }\n return `${id}: ${value}`.slice(0, 50);\n}\n\nexport function _extractId(valueString: string): string {\n return valueString.split(':')[0];\n}\n","import { Directive, DoCheck, ElementRef, forwardRef, Injector, Input, OnChanges, Optional, Renderer2, SimpleChanges } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, SelectControlValueAccessor } from '@angular/forms';\nimport { EuiSelectComponent } from './eui-select.component';\nimport { _buildValueString } from './utils';\n\n@Directive({\n selector:\n // eslint-disable-next-line @angular-eslint/directive-selector\n 'select:not([multiple])[formControlName][euiSelect],select:not([multiple])[formControl][euiSelect],select:not([multiple])[ngModel][euiSelect]',\n host: { '(blur)': 'onTouched()' },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EuiSelectControlValueAccessor),\n multi: true,\n },\n ],\n standalone: false,\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class EuiSelectControlValueAccessor extends SelectControlValueAccessor implements ControlValueAccessor, OnChanges, DoCheck {\n @Input() placeholder: string;\n\n private elementRef: ElementRef;\n private renderer: Renderer2;\n private placeholderOption: HTMLOptionElement;\n\n constructor(\n _renderer: Renderer2,\n _elementRef: ElementRef,\n @Optional() private selectComponent: EuiSelectComponent,\n private injector: Injector,\n ) {\n super(_renderer, _elementRef);\n this.elementRef = _elementRef;\n this.renderer = _renderer;\n this.onChange = (valueString: string): void => {\n this.value = this['_getOptionValue'](valueString);\n this.setPlaceholderClass(this.value);\n };\n }\n\n ngDoCheck(): void {\n if (this.placeholder && this.elementRef.nativeElement.selectedIndex === 0) {\n this.renderer.addClass(this.placeholderOption, 'eui-select__placeholder');\n }\n }\n\n /**\n * Sets the \"value\" property on the select element.\n *\n * @nodoc\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n override writeValue(value: any): void {\n super.writeValue(value);\n this.setPlaceholderClass(value);\n this.selectComponent?.syncReadOnlyValue();\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n override registerOnChange(fn: (value: any) => any): void {\n this.onChange = (valueString: string): void => {\n this.value = this['_getOptionValue'](valueString);\n this.setPlaceholderClass(this.value);\n fn(this.value);\n };\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'disabled', '');\n } else {\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'disabled');\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['placeholder']) {\n // in case option Element already created update the value\n if (changes['placeholder'].currentValue === undefined) {\n this.renderer.removeClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n // remove option element\n if (this.placeholderOption) {\n this.renderer.removeChild(this.elementRef.nativeElement, this.placeholderOption);\n this.placeholderOption = undefined;\n }\n } else if (this.placeholderOption) {\n this.renderer.setProperty(this.placeholderOption, 'innerText', changes['placeholder'].currentValue);\n } else {\n // create option Element\n this.placeholderOption = this.renderer.createElement('option');\n // const option = new EuiNgSelectOptionDirective({nativeElement: this.placeholderOption}, this.renderer, this);\n // option.ngValue = null;\n const id = this['_registerOption']();\n this['_optionMap'].set(id, null);\n const selectControlValueAccessor = this.injector.get(SelectControlValueAccessor, undefined);\n selectControlValueAccessor['_idCounter'] = this['_idCounter'];\n selectControlValueAccessor['_optionMap'] = this['_optionMap'];\n this.renderer.setValue(this.placeholderOption, _buildValueString(id, null));\n this.renderer.setProperty(this.placeholderOption, 'value', _buildValueString(id, null));\n\n this.renderer.addClass(this.placeholderOption, 'eui-select__placeholder');\n this.renderer.setProperty(this.placeholderOption, 'innerText', changes['placeholder'].currentValue);\n // set attributes to act as a placeholder\n if (!this.elementRef.nativeElement.value) {\n this.renderer.setAttribute(this.placeholderOption, 'selected', '');\n }\n // append option element as the first of the select children\n this.elementRef.nativeElement.insertBefore(this.placeholderOption, this.elementRef.nativeElement.firstChild);\n\n if (this.elementRef.nativeElement.value === changes['placeholder'].currentValue) {\n this.renderer.addClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n }\n if (!this.value) {\n this.writeValue(undefined);\n }\n }\n }\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private setPlaceholderClass(value: any): void {\n if (!!this.placeholder && (value === undefined || value === null || value === '')) {\n try {\n this.elementRef.nativeElement.options[0].selected = true;\n } catch (e) {\n /* empty */\n }\n this.renderer.addClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n }\n }\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n Directive,\n ElementRef,\n Host,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport { NgSelectOption, SelectControlValueAccessor } from '@angular/forms';\nimport { EuiSelectControlValueAccessor } from './eui-select-control.directive';\nimport { EuiSelectComponent } from './eui-select.component';\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/no-explicit-any\nfunction _buildValueString(id: string, value: any): string {\n if (id == null) {\n return `${value}`;\n }\n if (value && typeof value === 'object') {\n value = 'Object';\n }\n return `${id}: ${value}`.slice(0, 50);\n}\n\n/**\n * @description\n * Marks `<option>` as dynamic, so Angular can be notified when options change.\n *\n * @see `EuiSelectControlValueAccessor`\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\n// TODO: remove that selector in eUI 17.x and replace it with `option[euiOption]` (this will be a breaking change)\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: 'option:not([eclSelectOption]):not([eclMultiselectOption]), option[euiOption]', standalone: false })\nexport class EuiNgSelectOptionDirective extends NgSelectOption implements OnDestroy, OnChanges, AfterViewInit {\n @Input({ transform: booleanAttribute }) selected: boolean;\n\n @Input() label: string;\n\n private readonly select: EuiSelectControlValueAccessor;\n private readonly selectNative: SelectControlValueAccessor;\n private readonly selectComponent: EuiSelectComponent;\n private element: ElementRef<HTMLOptionElement>;\n private renderer: Renderer2;\n\n constructor(\n _element: ElementRef,\n _renderer: Renderer2,\n @Optional() @Host() _select: EuiSelectControlValueAccessor,\n @Optional() @Host() _selectNative: SelectControlValueAccessor,\n @Optional() @Host() _selectComponent: EuiSelectComponent,\n ) {\n super(_element, _renderer, _select);\n this.select = _select;\n this.selectNative = _selectNative;\n this.selectComponent = _selectComponent;\n this.element = _element;\n this.renderer = _renderer;\n }\n\n ngAfterViewInit(): void {\n this.selectComponent?.syncReadOnlyValue();\n if (this.selectNative && this.select && this.selectNative.value !== this.select.value) {\n // TODO: This causes issues when options array change from N to 1 and the option 1 is set through setValue()\n // Investigate what are the regressions from the removal of this line. Issue is that the Native\n // control value accessor holds a mapper not in sync with the EuiSelectControlValueAccessor.\n //\n // this.selectNative.writeValue(this.select.value);\n }\n }\n\n /**\n * @description\n * Tracks the value bound to the option element. Unlike the value binding,\n * ngValue supports binding to objects.\n */\n @Input()\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n override set ngValue(value: any) {\n if (this.select == null) return;\n this.selectNative['_idCounter'] = this.select['_idCounter'];\n this.select['_optionMap'].set(this.id, value);\n this.selectNative['_optionMap'] = this.select['_optionMap']; //.set(this.id, value);\n super['_setElementValue'](_buildValueString(this.id, value));\n this.select.writeValue(this.select.value);\n this.selectNative.writeValue(this.select.value);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.selected) {\n /**\n * in case there's a selected value, readonly attribute is true, sync it to the readonly input. The reason is\n * that the readonly input is not aware of the selected value until the render of the view completes.\n */\n switch (this.selected) {\n case true:\n this.renderer.setAttribute(this.element.nativeElement, 'selected', '');\n break;\n default:\n this.renderer.removeAttribute(this.element.nativeElement, 'selected');\n }\n this.selectComponent?.syncReadOnlyValue();\n }\n\n if (changes.label) {\n this.renderer.setProperty(this.element.nativeElement, 'innerText', changes.label.currentValue);\n this.selectComponent?.syncReadOnlyValue();\n }\n }\n}\n","import { Directive, DoCheck, ElementRef, forwardRef, Injector, Input, Optional, Provider, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl, SelectMultipleControlValueAccessor } from '@angular/forms';\nimport { EuiSelectMultipleOption } from './eui-select-mutli-option.directive';\nimport { _extractId } from './utils';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EuiSelectComponent } from './eui-select.component';\n\nconst SELECT_MULTIPLE_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EuiSelectMultipleControlValueAccessor),\n multi: true,\n};\n\n/** Mock interface for HTML Options */\ninterface HTMLOption {\n value: string;\n selected: boolean;\n}\n\n/** Mock interface for HTMLCollection */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nabstract class HTMLCollection {\n // TODO(issue/24571): remove '!'.\n length!: number;\n abstract item(_: number): HTMLOption;\n}\n\n/**\n * @description\n * The `ControlValueAccessor` for writing multi-select control values and listening to multi-select\n * control changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * @see `EuiSelectControlValueAccessor`\n *\n * @usageNotes\n *\n * ### Using a multi-select control\n *\n * The follow example shows you how to use a multi-select control with a reactive form.\n *\n * ```ts\n * const countryControl = new FormControl();\n * ```\n *\n * ```\n * <select euiSelect multiple name=\"countries\" [formControl]=\"countryControl\">\n * <option euiOption *ngFor=\"let country of countries\" [ngValue]=\"country\">\n * {{ country.name }}\n * </option>\n * </select>\n * ```\n *\n * ### Customizing option selection\n *\n * To customize the default option comparison algorithm, `<select>` supports `compareWith` input.\n * See the `SelectControlValueAccessor` for usage.\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\n@Directive({\n selector:\n // eslint-disable-next-line @angular-eslint/directive-selector,max-len\n 'select[multiple][formControlName][euiSelect],select[multiple][formControl][euiSelect],select[multiple][ngModel][euiSelect]',\n host: { '(change)': 'onChange($event.target)', '(blur)': 'onTouched()' },\n providers: [SELECT_MULTIPLE_VALUE_ACCESSOR],\n standalone: false,\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class EuiSelectMultipleControlValueAccessor extends SelectMultipleControlValueAccessor implements ControlValueAccessor, DoCheck {\n @Input()\n public get isInvalid(): boolean {\n return this._isInvalid || null;\n }\n public set isInvalid(state: BooleanInput) {\n this._isInvalid = coerceBooleanProperty(state);\n }\n\n /**\n * The current value.\n *\n * @nodoc\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any;\n\n /** @internal */\n _optionMap: Map<string, EuiSelectMultipleOption> = new Map<string, EuiSelectMultipleOption>();\n\n /** @internal */\n _idCounter = 0;\n protected _isInvalid: boolean;\n private elementRef: ElementRef;\n private renderer: Renderer2;\n private control: NgControl;\n\n constructor(\n _renderer: Renderer2,\n _elementRef: ElementRef,\n @Optional() private selectComponent: EuiSelectComponent,\n private injector: Injector,\n ) {\n super(_renderer, _elementRef);\n this.elementRef = _elementRef;\n this.renderer = _renderer;\n }\n\n ngDoCheck(): void {\n if (!this.control) {\n this.control = this.injector.get(NgControl, undefined, { optional: true });\n }\n this._isInvalid = this.control ? this.control.invalid && this.control.touched : this._isInvalid;\n }\n\n /**\n * Sets the \"value\" property on one or of more of the select's options.\n *\n * @nodoc\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(value: any): void {\n this.value = value;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let optionSelectedStateSetter: (opt: EuiSelectMultipleOption, o: any) => void;\n if (Array.isArray(value)) {\n // convert values to ids\n const ids = value.map((v) => this._getOptionId(v));\n optionSelectedStateSetter = (opt, o): void => {\n opt._setSelected(ids.indexOf(o.toString()) > -1);\n };\n } else {\n optionSelectedStateSetter = (opt): void => {\n opt._setSelected(false);\n };\n }\n this._optionMap.forEach(optionSelectedStateSetter);\n this.selectComponent?.syncReadOnlyValue();\n }\n\n /**\n * Registers a function called when the control value changes\n * and writes an array of the selected options.\n *\n * @nodoc\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n override registerOnChange(fn: (value: any) => any): void {\n this.onChange = (element: HTMLSelectElement): void => {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const selected: Array<any> = [];\n const selectedOptions = element.selectedOptions;\n if (selectedOptions !== undefined) {\n const options = selectedOptions;\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < options.length; i++) {\n const opt = options[i];\n const val = this._getOptionValue(opt.value);\n selected.push(val);\n }\n } else {\n const options = element.options;\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < options.length; i++) {\n const opt = options[i];\n if (opt.selected) {\n const val = this._getOptionValue(opt.value);\n selected.push(val);\n }\n }\n }\n this.value = selected;\n fn(selected);\n };\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn: any): void {\n this.onTouched = (): void => {\n const control = this.injector.get(NgControl, undefined, { optional: true });\n this.isInvalid = control.invalid;\n if (this.isInvalid) {\n this.renderer.addClass(this.elementRef.nativeElement, 'eui-select--invalid');\n }\n fn();\n };\n }\n\n /** @internal */\n _registerOption(value: EuiSelectMultipleOption): string {\n const id: string = (this._idCounter++).toString();\n this._optionMap.set(id, value);\n return id;\n }\n\n /** @internal */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _getOptionId(value: any): string | null {\n for (const id of Array.from(this._optionMap.keys())) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (this['_compareWith'](this._optionMap.get(id)!._value, value)) {\n return id;\n }\n }\n return null;\n }\n\n /** @internal */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _getOptionValue(valueString: string): any {\n const id: string = _extractId(valueString);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._optionMap.has(id) ? this._optionMap.get(id)!._value : valueString;\n }\n}\n","import { Directive, ElementRef, Host, Input, OnDestroy, Optional, Renderer2 } from '@angular/core';\nimport { ɵNgSelectMultipleOption as NgSelectMultipleOption } from '@angular/forms';\nimport { EuiSelectMultipleControlValueAccessor } from './eui-select-multiple.directive';\nimport { _buildValueString } from './utils';\n\n/**\n * @description\n * Marks `<option>` as dynamic, so Angular can be notified when options change.\n *\n * @see `EuiSelectMultipleControlValueAccessor`\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: 'option, option[euiOption]', standalone: false })\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class EuiSelectMultipleOption extends NgSelectMultipleOption implements OnDestroy {\n // TODO(issue/24571): remove '!'.\n id!: string;\n /** @internal */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _value: any;\n private element: ElementRef;\n private renderer: Renderer2;\n private select: EuiSelectMultipleControlValueAccessor;\n\n constructor(_element: ElementRef, _renderer: Renderer2, @Optional() @Host() _select: EuiSelectMultipleControlValueAccessor) {\n super(_element, _renderer, _select);\n this.element = _element;\n this.renderer = _renderer;\n this.select = _select;\n }\n\n /**\n * @description\n * Tracks the value bound to the option element. Unlike the value binding,\n * ngValue supports binding to objects.\n */\n @Input()\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set ngValue(value: any) {\n if (this.select == null) {\n return;\n }\n this._value = value;\n this._setElementValue(_buildValueString(this.id, value));\n this.select.writeValue(this.select.value);\n }\n\n /**\n * @description\n * Tracks simple string values bound to the option element.\n * For objects, use the `ngValue` input binding.\n */\n @Input()\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set value(value: any) {\n if (this.select) {\n this._value = value;\n this._setElementValue(_buildValueString(this.id, value));\n this.select.writeValue(this.select.value);\n } else {\n this._setElementValue(value);\n }\n }\n\n /** @internal */\n _setElementValue(value: string): void {\n this.renderer.setProperty(this.element.nativeElement, 'value', value);\n }\n\n /** @internal */\n _setSelected(selected: boolean): void {\n this.renderer.setProperty(this.element.nativeElement, 'selected', selected);\n }\n\n /** @nodoc */\n ngOnDestroy(): void {\n if (this.select) {\n this.select._optionMap.delete(this.id);\n this.select.writeValue(this.select.value);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EuiSelectComponent } from './eui-select.component';\nimport { EuiNgSelectOptionDirective } from './eui-select-option.directive';\nimport { EuiSelectControlValueAccessor } from './eui-select-control.directive';\nimport { EuiSelectMultipleControlValueAccessor } from './eui-select-multiple.directive';\nimport { EuiSelectMultipleOption } from './eui-select-mutli-option.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n EuiSelectComponent,\n EuiNgSelectOptionDirective,\n EuiSelectControlValueAccessor,\n EuiSelectMultipleControlValueAccessor,\n EuiSelectMultipleOption,\n ],\n exports: [\n EuiSelectComponent,\n EuiNgSelectOptionDirective,\n EuiSelectControlValueAccessor,\n EuiSelectMultipleControlValueAccessor,\n EuiSelectMultipleOption,\n ],\n})\nexport class EuiSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_buildValueString","i1.EuiSelectComponent","i1.EuiSelectControlValueAccessor","i3.EuiSelectComponent","NgSelectMultipleOption","i1.EuiSelectMultipleControlValueAccessor"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"eui-components-eui-select.mjs","sources":["../../eui-select/eui-select.component.ts","../../eui-select/utils.ts","../../eui-select/eui-select-control.directive.ts","../../eui-select/eui-select-option.directive.ts","../../eui-select/eui-select-multiple.directive.ts","../../eui-select/eui-select-mutli-option.directive.ts","../../eui-select/eui-select.module.ts","../../eui-select/eui-components-eui-select.ts"],"sourcesContent":["import {\n booleanAttribute,\n Component,\n ComponentRef,\n DoCheck,\n ElementRef,\n HostListener,\n Injector,\n Input,\n OnChanges,\n OnInit,\n Renderer2,\n SimpleChanges,\n ViewContainerRef,\n} from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EuiInputTextComponent } from '@eui/components/eui-input-text';\nimport { NgControl } from '@angular/forms';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'select[euiSelect]',\n styleUrls: ['./eui-select.scss'],\n template: '<ng-content/>',\n standalone: false,\n})\nexport class EuiSelectComponent implements OnChanges, OnInit, DoCheck {\n @Input() placeholder: string;\n\n @Input({ transform: booleanAttribute }) readonly: boolean;\n\n @Input()\n public get isInvalid(): boolean {\n return this._isInvalid || null;\n }\n public set isInvalid(state: BooleanInput) {\n this._isInvalid = coerceBooleanProperty(state);\n if (this._isInvalid) {\n this.renderer.addClass(this.elementRef.nativeElement, 'eui-select--invalid');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'eui-select--invalid');\n }\n }\n\n protected _isInvalid: boolean;\n private control: NgControl;\n private readonlyInput: ComponentRef<EuiInputTextComponent>;\n private placeholderOption: HTMLOptionElement;\n\n constructor(\n private renderer: Renderer2,\n private injector: Injector,\n private elementRef: ElementRef<HTMLSelectElement>,\n private viewContainerRef: ViewContainerRef,\n ) {}\n\n ngOnInit(): void {\n this.renderer.addClass(this.elementRef.nativeElement, 'eui-select');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['readonly']) {\n if (this.readonly) {\n // hide select element\n this.renderer.setAttribute(this.elementRef.nativeElement, 'readonly', 'true');\n this.renderer.setAttribute(this.elementRef.nativeElement, 'hidden', '');\n\n // create an euiInputComponent to hold the value (for accessibility reasons)\n this.readonlyInput = this.createReadonlyElement();\n this.renderer.insertBefore(\n this.elementRef.nativeElement.parentElement,\n this.elementRef.nativeElement,\n this.readonlyInput.location.nativeElement,\n );\n this.setReadonlyValue(this.readonlyInput);\n } else {\n this.readonlyInput?.destroy();\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'readonly');\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'hidden');\n }\n }\n\n if (changes['placeholder']) {\n this.control = this.injector.get(NgControl, undefined, { optional: true });\n if (!this.control) {\n // in case option Element already created update the value\n if (changes['placeholder'].currentValue === undefined) {\n this.renderer.removeClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n // remove option element\n if (this.placeholderOption) {\n this.renderer.removeChild(this.elementRef.nativeElement, this.placeholderOption);\n this.placeholderOption = undefined;\n }\n } else if (this.placeholderOption) {\n this.renderer.setProperty(this.placeholderOption, 'innerText', changes['placeholder'].currentValue);\n } else {\n // create option Element\n this.placeholderOption = this.renderer.createElement('option');\n\n this.renderer.addClass(this.placeholderOption, 'eui-select__placeholder');\n this.renderer.setProperty(this.placeholderOption, 'innerText', changes['placeholder'].currentValue);\n // set attributes to act as a placeholder\n if (!this.elementRef.nativeElement.value) {\n this.renderer.setAttribute(this.placeholderOption, 'selected', '');\n }\n // append option element as the first of the select children\n this.elementRef.nativeElement.insertBefore(this.placeholderOption, this.elementRef.nativeElement.firstChild);\n\n if (this.elementRef.nativeElement.value === changes['placeholder'].currentValue) {\n this.renderer.addClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n }\n }\n }\n }\n }\n\n ngDoCheck(): void {\n if (!this.control) {\n this.control = this.injector.get(NgControl, undefined, { optional: true });\n }\n this.isInvalid = this.control ? this.control.invalid && this.control.touched : this._isInvalid;\n /** while the optionList changes but there's no selected option and there's a placeholder, add the placeholder\n * class. Otherwise, the placeholder will look selected but the color will be black. */\n if (this.placeholder && this.elementRef.nativeElement.selectedIndex === 0) {\n this.renderer.addClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n }\n }\n\n @HostListener('change', ['$event.target.value'])\n onChange(value): void {\n this.control = this.injector.get(NgControl, undefined, { optional: true });\n if (!this.control) {\n this.setPlaceholderClass(this.placeholder === value ? undefined : value);\n }\n this.syncReadOnlyValue();\n }\n\n syncReadOnlyValue(): void {\n this.setReadonlyValue(this.readonlyInput);\n }\n\n /**\n * set readonly value from selected options presented as comma separated string\n *\n * @param readonlyRef the input element to set the value\n * @private\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private setReadonlyValue(readonlyRef: ComponentRef<EuiInputTextComponent>): any {\n if (readonlyRef) {\n // eslint-disable-next-line prefer-spread\n const selectedOptions = Array.apply(null, this.elementRef.nativeElement.selectedOptions)\n .map((i) => i.text)\n .filter((i) => i !== this.placeholder)\n .join(', ');\n this.renderer.setProperty(readonlyRef.location.nativeElement, 'value', selectedOptions);\n this.renderer.setAttribute(readonlyRef.location.nativeElement, 'aria-label', selectedOptions);\n }\n }\n\n /**\n * create readonly element\n *\n * @private\n */\n private createReadonlyElement(): ComponentRef<EuiInputTextComponent> {\n const componentRef = this.viewContainerRef.createComponent(EuiInputTextComponent);\n componentRef.instance.readonly = true;\n return componentRef;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private setPlaceholderClass(value: any): void {\n const placeholderOption = this.elementRef.nativeElement.options[0];\n if (!!this.placeholder && (value === undefined || value === null || value === '')) {\n this.renderer.setAttribute(placeholderOption, 'selected', '');\n this.renderer.addClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n this.renderer.removeAttribute(placeholderOption, 'selected');\n }\n }\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _buildValueString(id: string, value: any): string {\n if (id == null) {\n return `${value}`;\n }\n if (typeof value === 'string') {\n value = `'${value}'`;\n }\n if (value && typeof value === 'object') {\n value = 'Object';\n }\n return `${id}: ${value}`.slice(0, 50);\n}\n\nexport function _extractId(valueString: string): string {\n return valueString.split(':')[0];\n}\n","import { Directive, DoCheck, ElementRef, forwardRef, Injector, Input, OnChanges, Optional, Renderer2, SimpleChanges } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, SelectControlValueAccessor } from '@angular/forms';\nimport { EuiSelectComponent } from './eui-select.component';\nimport { _buildValueString } from './utils';\n\n@Directive({\n selector:\n // eslint-disable-next-line @angular-eslint/directive-selector\n 'select:not([multiple])[formControlName][euiSelect],select:not([multiple])[formControl][euiSelect],select:not([multiple])[ngModel][euiSelect]',\n host: { '(blur)': 'onTouched()' },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EuiSelectControlValueAccessor),\n multi: true,\n },\n ],\n standalone: false,\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class EuiSelectControlValueAccessor extends SelectControlValueAccessor implements ControlValueAccessor, OnChanges, DoCheck {\n @Input() placeholder: string;\n\n private elementRef: ElementRef;\n private renderer: Renderer2;\n private placeholderOption: HTMLOptionElement;\n\n constructor(\n _renderer: Renderer2,\n _elementRef: ElementRef,\n @Optional() private selectComponent: EuiSelectComponent,\n private injector: Injector,\n ) {\n super(_renderer, _elementRef);\n this.elementRef = _elementRef;\n this.renderer = _renderer;\n this.onChange = (valueString: string): void => {\n this.value = this['_getOptionValue'](valueString);\n this.setPlaceholderClass(this.value);\n };\n }\n\n ngDoCheck(): void {\n if (this.placeholder && this.elementRef.nativeElement.selectedIndex === 0) {\n this.renderer.addClass(this.placeholderOption, 'eui-select__placeholder');\n }\n }\n\n /**\n * Sets the \"value\" property on the select element.\n *\n * @nodoc\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n override writeValue(value: any): void {\n super.writeValue(value);\n this.setPlaceholderClass(value);\n this.selectComponent?.syncReadOnlyValue();\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n override registerOnChange(fn: (value: any) => any): void {\n this.onChange = (valueString: string): void => {\n this.value = this['_getOptionValue'](valueString);\n this.setPlaceholderClass(this.value);\n fn(this.value);\n };\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'disabled', '');\n } else {\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'disabled');\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['placeholder']) {\n // in case option Element already created update the value\n if (changes['placeholder'].currentValue === undefined) {\n this.renderer.removeClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n // remove option element\n if (this.placeholderOption) {\n this.renderer.removeChild(this.elementRef.nativeElement, this.placeholderOption);\n this.placeholderOption = undefined;\n }\n } else if (this.placeholderOption) {\n this.renderer.setProperty(this.placeholderOption, 'innerText', changes['placeholder'].currentValue);\n } else {\n // create option Element\n this.placeholderOption = this.renderer.createElement('option');\n // const option = new EuiNgSelectOptionDirective({nativeElement: this.placeholderOption}, this.renderer, this);\n // option.ngValue = null;\n const id = this['_registerOption']();\n this['_optionMap'].set(id, null);\n const selectControlValueAccessor = this.injector.get(SelectControlValueAccessor, undefined);\n selectControlValueAccessor['_idCounter'] = this['_idCounter'];\n selectControlValueAccessor['_optionMap'] = this['_optionMap'];\n this.renderer.setValue(this.placeholderOption, _buildValueString(id, null));\n this.renderer.setProperty(this.placeholderOption, 'value', _buildValueString(id, null));\n\n this.renderer.addClass(this.placeholderOption, 'eui-select__placeholder');\n this.renderer.setProperty(this.placeholderOption, 'innerText', changes['placeholder'].currentValue);\n // set attributes to act as a placeholder\n if (!this.elementRef.nativeElement.value) {\n this.renderer.setAttribute(this.placeholderOption, 'selected', '');\n }\n // append option element as the first of the select children\n this.elementRef.nativeElement.insertBefore(this.placeholderOption, this.elementRef.nativeElement.firstChild);\n\n if (this.elementRef.nativeElement.value === changes['placeholder'].currentValue) {\n this.renderer.addClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n }\n if (!this.value) {\n this.writeValue(undefined);\n }\n }\n }\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private setPlaceholderClass(value: any): void {\n if (!!this.placeholder && (value === undefined || value === null || value === '')) {\n try {\n this.elementRef.nativeElement.options[0].selected = true;\n } catch (e) {\n /* empty */\n }\n this.renderer.addClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'eui-select__placeholder');\n }\n }\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n Directive,\n ElementRef,\n Host,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport { NgSelectOption, SelectControlValueAccessor } from '@angular/forms';\nimport { EuiSelectControlValueAccessor } from './eui-select-control.directive';\nimport { EuiSelectComponent } from './eui-select.component';\n\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/no-explicit-any\nfunction _buildValueString(id: string, value: any): string {\n if (id == null) {\n return `${value}`;\n }\n if (value && typeof value === 'object') {\n value = 'Object';\n }\n return `${id}: ${value}`.slice(0, 50);\n}\n\n/**\n * @description\n * Marks `<option>` as dynamic, so Angular can be notified when options change.\n *\n * @see `EuiSelectControlValueAccessor`\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\n// TODO: remove that selector in eUI 17.x and replace it with `option[euiOption]` (this will be a breaking change)\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: 'option:not([eclSelectOption]):not([eclMultiselectOption]), option[euiOption]', standalone: false })\nexport class EuiNgSelectOptionDirective extends NgSelectOption implements OnDestroy, OnChanges, AfterViewInit {\n @Input({ transform: booleanAttribute }) selected: boolean;\n\n @Input() label: string;\n\n private readonly select: EuiSelectControlValueAccessor;\n private readonly selectNative: SelectControlValueAccessor;\n private readonly selectComponent: EuiSelectComponent;\n private element: ElementRef<HTMLOptionElement>;\n private renderer: Renderer2;\n\n constructor(\n _element: ElementRef,\n _renderer: Renderer2,\n @Optional() @Host() _select: EuiSelectControlValueAccessor,\n @Optional() @Host() _selectNative: SelectControlValueAccessor,\n @Optional() @Host() _selectComponent: EuiSelectComponent,\n ) {\n super(_element, _renderer, _select);\n this.select = _select;\n this.selectNative = _selectNative;\n this.selectComponent = _selectComponent;\n this.element = _element;\n this.renderer = _renderer;\n }\n\n ngAfterViewInit(): void {\n this.selectComponent?.syncReadOnlyValue();\n if (this.selectNative && this.select && this.selectNative.value !== this.select.value) {\n // TODO: This causes issues when options array change from N to 1 and the option 1 is set through setValue()\n // Investigate what are the regressions from the removal of this line. Issue is that the Native\n // control value accessor holds a mapper not in sync with the EuiSelectControlValueAccessor.\n //\n // this.selectNative.writeValue(this.select.value);\n }\n }\n\n /**\n * @description\n * Tracks the value bound to the option element. Unlike the value binding,\n * ngValue supports binding to objects.\n */\n @Input()\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n override set ngValue(value: any) {\n if (this.select == null) return;\n this.selectNative['_idCounter'] = this.select['_idCounter'];\n this.select['_optionMap'].set(this.id, value);\n this.selectNative['_optionMap'] = this.select['_optionMap']; //.set(this.id, value);\n super['_setElementValue'](_buildValueString(this.id, value));\n this.select.writeValue(this.select.value);\n this.selectNative.writeValue(this.select.value);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.selected) {\n /**\n * in case there's a selected value, readonly attribute is true, sync it to the readonly input. The reason is\n * that the readonly input is not aware of the selected value until the render of the view completes.\n */\n switch (this.selected) {\n case true:\n this.renderer.setAttribute(this.element.nativeElement, 'selected', '');\n break;\n default:\n this.renderer.removeAttribute(this.element.nativeElement, 'selected');\n }\n this.selectComponent?.syncReadOnlyValue();\n }\n\n if (changes.label) {\n this.renderer.setProperty(this.element.nativeElement, 'innerText', changes.label.currentValue);\n this.selectComponent?.syncReadOnlyValue();\n }\n }\n}\n","import { Directive, DoCheck, ElementRef, forwardRef, Injector, Input, Optional, Provider, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl, SelectMultipleControlValueAccessor } from '@angular/forms';\nimport { EuiSelectMultipleOption } from './eui-select-mutli-option.directive';\nimport { _extractId } from './utils';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EuiSelectComponent } from './eui-select.component';\n\nconst SELECT_MULTIPLE_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => EuiSelectMultipleControlValueAccessor),\n multi: true,\n};\n\n/** Mock interface for HTML Options */\ninterface HTMLOption {\n value: string;\n selected: boolean;\n}\n\n/** Mock interface for HTMLCollection */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nabstract class HTMLCollection {\n // TODO(issue/24571): remove '!'.\n length!: number;\n abstract item(_: number): HTMLOption;\n}\n\n/**\n * @description\n * The `ControlValueAccessor` for writing multi-select control values and listening to multi-select\n * control changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * @see `EuiSelectControlValueAccessor`\n *\n * @usageNotes\n *\n * ### Using a multi-select control\n *\n * The follow example shows you how to use a multi-select control with a reactive form.\n *\n * ```ts\n * const countryControl = new FormControl();\n * ```\n *\n * ```\n * <select euiSelect multiple name=\"countries\" [formControl]=\"countryControl\">\n * <option euiOption *ngFor=\"let country of countries\" [ngValue]=\"country\">\n * {{ country.name }}\n * </option>\n * </select>\n * ```\n *\n * ### Customizing option selection\n *\n * To customize the default option comparison algorithm, `<select>` supports `compareWith` input.\n * See the `SelectControlValueAccessor` for usage.\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\n@Directive({\n selector:\n // eslint-disable-next-line @angular-eslint/directive-selector,max-len\n 'select[multiple][formControlName][euiSelect],select[multiple][formControl][euiSelect],select[multiple][ngModel][euiSelect]',\n host: { '(change)': 'onChange($event.target)', '(blur)': 'onTouched()' },\n providers: [SELECT_MULTIPLE_VALUE_ACCESSOR],\n standalone: false,\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class EuiSelectMultipleControlValueAccessor extends SelectMultipleControlValueAccessor implements ControlValueAccessor, DoCheck {\n @Input()\n public get isInvalid(): boolean {\n return this._isInvalid || null;\n }\n public set isInvalid(state: BooleanInput) {\n this._isInvalid = coerceBooleanProperty(state);\n }\n\n /**\n * The current value.\n *\n * @nodoc\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any;\n\n /** @internal */\n _optionMap: Map<string, EuiSelectMultipleOption> = new Map<string, EuiSelectMultipleOption>();\n\n /** @internal */\n _idCounter = 0;\n protected _isInvalid: boolean;\n private elementRef: ElementRef;\n private renderer: Renderer2;\n private control: NgControl;\n\n constructor(\n _renderer: Renderer2,\n _elementRef: ElementRef,\n @Optional() private selectComponent: EuiSelectComponent,\n private injector: Injector,\n ) {\n super(_renderer, _elementRef);\n this.elementRef = _elementRef;\n this.renderer = _renderer;\n }\n\n ngDoCheck(): void {\n if (!this.control) {\n this.control = this.injector.get(NgControl, undefined, { optional: true });\n }\n this._isInvalid = this.control ? this.control.invalid && this.control.touched : this._isInvalid;\n }\n\n /**\n * Sets the \"value\" property on one or of more of the select's options.\n *\n * @nodoc\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(value: any): void {\n this.value = value;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let optionSelectedStateSetter: (opt: EuiSelectMultipleOption, o: any) => void;\n if (Array.isArray(value)) {\n // convert values to ids\n const ids = value.map((v) => this._getOptionId(v));\n optionSelectedStateSetter = (opt, o): void => {\n opt._setSelected(ids.indexOf(o.toString()) > -1);\n };\n } else {\n optionSelectedStateSetter = (opt): void => {\n opt._setSelected(false);\n };\n }\n this._optionMap.forEach(optionSelectedStateSetter);\n this.selectComponent?.syncReadOnlyValue();\n }\n\n /**\n * Registers a function called when the control value changes\n * and writes an array of the selected options.\n *\n * @nodoc\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n override registerOnChange(fn: (value: any) => any): void {\n this.onChange = (element: HTMLSelectElement): void => {\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const selected: Array<any> = [];\n const selectedOptions = element.selectedOptions;\n if (selectedOptions !== undefined) {\n const options = selectedOptions;\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < options.length; i++) {\n const opt = options[i];\n const val = this._getOptionValue(opt.value);\n selected.push(val);\n }\n } else {\n const options = element.options;\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < options.length; i++) {\n const opt = options[i];\n if (opt.selected) {\n const val = this._getOptionValue(opt.value);\n selected.push(val);\n }\n }\n }\n this.value = selected;\n fn(selected);\n };\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn: any): void {\n this.onTouched = (): void => {\n const control = this.injector.get(NgControl, undefined, { optional: true });\n this.isInvalid = control.invalid;\n if (this.isInvalid) {\n this.renderer.addClass(this.elementRef.nativeElement, 'eui-select--invalid');\n }\n fn();\n };\n }\n\n /** @internal */\n _registerOption(value: EuiSelectMultipleOption): string {\n const id: string = (this._idCounter++).toString();\n this._optionMap.set(id, value);\n return id;\n }\n\n /** @internal */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _getOptionId(value: any): string | null {\n for (const id of Array.from(this._optionMap.keys())) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n if (this['_compareWith'](this._optionMap.get(id)!._value, value)) {\n return id;\n }\n }\n return null;\n }\n\n /** @internal */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _getOptionValue(valueString: string): any {\n const id: string = _extractId(valueString);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this._optionMap.has(id) ? this._optionMap.get(id)!._value : valueString;\n }\n}\n","import { Directive, ElementRef, Host, Input, OnDestroy, Optional, Renderer2 } from '@angular/core';\nimport { ɵNgSelectMultipleOption as NgSelectMultipleOption } from '@angular/forms';\nimport { EuiSelectMultipleControlValueAccessor } from './eui-select-multiple.directive';\nimport { _buildValueString } from './utils';\n\n/**\n * @description\n * Marks `<option>` as dynamic, so Angular can be notified when options change.\n *\n * @see `EuiSelectMultipleControlValueAccessor`\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: 'option, option[euiOption]', standalone: false })\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class EuiSelectMultipleOption extends NgSelectMultipleOption implements OnDestroy {\n // TODO(issue/24571): remove '!'.\n id!: string;\n /** @internal */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _value: any;\n private element: ElementRef;\n private renderer: Renderer2;\n private select: EuiSelectMultipleControlValueAccessor;\n\n constructor(_element: ElementRef, _renderer: Renderer2, @Optional() @Host() _select: EuiSelectMultipleControlValueAccessor) {\n super(_element, _renderer, _select);\n this.element = _element;\n this.renderer = _renderer;\n this.select = _select;\n }\n\n /**\n * @description\n * Tracks the value bound to the option element. Unlike the value binding,\n * ngValue supports binding to objects.\n */\n @Input()\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set ngValue(value: any) {\n if (this.select == null) {\n return;\n }\n this._value = value;\n this._setElementValue(_buildValueString(this.id, value));\n this.select.writeValue(this.select.value);\n }\n\n /**\n * @description\n * Tracks simple string values bound to the option element.\n * For objects, use the `ngValue` input binding.\n */\n @Input()\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set value(value: any) {\n if (this.select) {\n this._value = value;\n this._setElementValue(_buildValueString(this.id, value));\n this.select.writeValue(this.select.value);\n } else {\n this._setElementValue(value);\n }\n }\n\n /** @internal */\n _setElementValue(value: string): void {\n this.renderer.setProperty(this.element.nativeElement, 'value', value);\n }\n\n /** @internal */\n _setSelected(selected: boolean): void {\n this.renderer.setProperty(this.element.nativeElement, 'selected', selected);\n }\n\n /** @nodoc */\n ngOnDestroy(): void {\n if (this.select) {\n this.select._optionMap.delete(this.id);\n this.select.writeValue(this.select.value);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EuiSelectComponent } from './eui-select.component';\nimport { EuiNgSelectOptionDirective } from './eui-select-option.directive';\nimport { EuiSelectControlValueAccessor } from './eui-select-control.directive';\nimport { EuiSelectMultipleControlValueAccessor } from './eui-select-multiple.directive';\nimport { EuiSelectMultipleOption } from './eui-select-mutli-option.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n EuiSelectComponent,\n EuiNgSelectOptionDirective,\n EuiSelectControlValueAccessor,\n EuiSelectMultipleControlValueAccessor,\n EuiSelectMultipleOption,\n ],\n exports: [\n EuiSelectComponent,\n EuiNgSelectOptionDirective,\n EuiSelectControlValueAccessor,\n EuiSelectMultipleControlValueAccessor,\n EuiSelectMultipleOption,\n ],\n})\nexport class EuiSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_buildValueString","i1.EuiSelectComponent","i1.EuiSelectControlValueAccessor","i3.EuiSelectComponent","NgSelectMultipleOption","i1.EuiSelectMultipleControlValueAccessor"],"mappings":";;;;;;;;MA0Ba,kBAAkB,CAAA;AAK3B,IAAA,IACW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI;;IAElC,IAAW,SAAS,CAAC,KAAmB,EAAA;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAC9C,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,qBAAqB,CAAC;;aACzE;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,qBAAqB,CAAC;;;AASvF,IAAA,WAAA,CACY,QAAmB,EACnB,QAAkB,EAClB,UAAyC,EACzC,gBAAkC,EAAA;QAHlC,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAU,CAAA,UAAA,GAAV,UAAU;QACV,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;IAG5B,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,YAAY,CAAC;;AAGvE,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACrB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;;AAEf,gBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC;AAC7E,gBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC;;AAGvE,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,qBAAqB,EAAE;gBACjD,IAAI,CAAC,QAAQ,CAAC,YAAY,CACtB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,EAC3C,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAC5C;AACD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC;;iBACtC;AACH,gBAAA,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE;AAC7B,gBAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC;AACxE,gBAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC;;;AAI9E,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC1E,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;;gBAEf,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,KAAK,SAAS,EAAE;AACnD,oBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,yBAAyB,CAAC;;AAEnF,oBAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,wBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC;AAChF,wBAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;;;AAEnC,qBAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC/B,oBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC;;qBAChG;;oBAEH,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;oBAE9D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;AACzE,oBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC;;oBAEnG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;AACtC,wBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,EAAE,EAAE,CAAC;;;AAGtE,oBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC;AAE5G,oBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,EAAE;AAC7E,wBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,yBAAyB,CAAC;;;;;;IAOpG,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;QAE9E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU;AAC9F;AACwF;AACxF,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,KAAK,CAAC,EAAE;AACvE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,yBAAyB,CAAC;;;AAKxF,IAAA,QAAQ,CAAC,KAAK,EAAA;AACV,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC1E,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,KAAK,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;;QAE5E,IAAI,CAAC,iBAAiB,EAAE;;IAG5B,iBAAiB,GAAA;AACb,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC;;AAG7C;;;;;AAKG;;;AAGK,IAAA,gBAAgB,CAAC,WAAgD,EAAA;QACrE,IAAI,WAAW,EAAE;;AAEb,YAAA,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe;iBAClF,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI;iBACjB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,WAAW;iBACpC,IAAI,CAAC,IAAI,CAAC;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,EAAE,eAAe,CAAC;AACvF,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,EAAE,eAAe,CAAC;;;AAIrG;;;;AAIG;IACK,qBAAqB,GAAA;QACzB,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,qBAAqB,CAAC;AACjF,QAAA,YAAY,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI;AACrC,QAAA,OAAO,YAAY;;;;AAKf,IAAA,mBAAmB,CAAC,KAAU,EAAA;AAClC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,EAAE;YAC/E,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,EAAE,UAAU,EAAE,EAAE,CAAC;AAC7D,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,yBAAyB,CAAC;;aAC7E;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,yBAAyB,CAAC;YACnF,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,EAAE,UAAU,CAAC;;;8GA3J3D,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAGP,gBAAgB,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAN1B,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kwKAAA,CAAA,EAAA,CAAA,CAAA;;2FAGhB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;+BAEI,mBAAmB,EAAA,QAAA,EAEnB,eAAe,EAAA,UAAA,EACb,KAAK,EAAA,MAAA,EAAA,CAAA,kwKAAA,CAAA,EAAA;6JAGR,WAAW,EAAA,CAAA;sBAAnB;gBAEuC,QAAQ,EAAA,CAAA;sBAA/C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAG3B,SAAS,EAAA,CAAA;sBADnB;gBAkGD,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,QAAQ,EAAE,CAAC,qBAAqB,CAAC;;;AChInD;AACgB,SAAAA,mBAAiB,CAAC,EAAU,EAAE,KAAU,EAAA;AACpD,IAAA,IAAI,EAAE,IAAI,IAAI,EAAE;QACZ,OAAO,CAAA,EAAG,KAAK,CAAA,CAAE;;AAErB,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,QAAA,KAAK,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAG;;AAExB,IAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACpC,KAAK,GAAG,QAAQ;;AAEpB,IAAA,OAAO,CAAG,EAAA,EAAE,CAAK,EAAA,EAAA,KAAK,CAAE,CAAA,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACzC;AAEM,SAAU,UAAU,CAAC,WAAmB,EAAA;IAC1C,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpC;;ACGA;AACM,MAAO,6BAA8B,SAAQ,0BAA0B,CAAA;AAOzE,IAAA,WAAA,CACI,SAAoB,EACpB,WAAuB,EACH,eAAmC,EAC/C,QAAkB,EAAA;AAE1B,QAAA,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC;QAHT,IAAe,CAAA,eAAA,GAAf,eAAe;QAC3B,IAAQ,CAAA,QAAA,GAAR,QAAQ;AAGhB,QAAA,IAAI,CAAC,UAAU,GAAG,WAAW;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,WAAmB,KAAU;YAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC;AACjD,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC,SAAC;;IAGL,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,KAAK,CAAC,EAAE;YACvE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;;;AAIjF;;;;AAIG;;;AAGM,IAAA,UAAU,CAAC,KAAU,EAAA;AAC1B,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,EAAE,iBAAiB,EAAE;;;;AAKpC,IAAA,gBAAgB,CAAC,EAAuB,EAAA;AAC7C,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,WAAmB,KAAU;YAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC;AACjD,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;AACpC,YAAA,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AAClB,SAAC;;AAGL,IAAA,gBAAgB,CAAC,UAAmB,EAAA;QAChC,IAAI,UAAU,EAAE;AACZ,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE,EAAE,CAAC;;aACtE;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC;;;AAIhF,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;;YAExB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,KAAK,SAAS,EAAE;AACnD,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,yBAAyB,CAAC;;AAEnF,gBAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,oBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC;AAChF,oBAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;;;AAEnC,iBAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC/B,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC;;iBAChG;;gBAEH,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;;;AAG9D,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE;gBACpC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC;AAChC,gBAAA,MAAM,0BAA0B,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,0BAA0B,EAAE,SAAS,CAAC;gBAC3F,0BAA0B,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;gBAC7D,0BAA0B,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AAC7D,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAEA,mBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC3E,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,EAAEA,mBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBAEvF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;AACzE,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC;;gBAEnG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;AACtC,oBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,EAAE,EAAE,CAAC;;;AAGtE,gBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC;AAE5G,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,EAAE;AAC7E,oBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,yBAAyB,CAAC;;AAEpF,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACb,oBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;;;;;;;AAQlC,IAAA,mBAAmB,CAAC,KAAU,EAAA;QAClC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,EAAE;AAC/E,YAAA,IAAI;AACA,gBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI;;YAC1D,OAAO,CAAC,EAAE;;;AAGZ,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,yBAAyB,CAAC;;aAC7E;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,yBAAyB,CAAC;;;8GAlHlF,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAV3B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,8IAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,6BAA6B,CAAC;AAC5D,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAIQ,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAfzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACP,QAAQ;;oBAEJ,8IAA8I;AAClJ,oBAAA,IAAI,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE;AACjC,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,mCAAmC,CAAC;AAC5D,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA;AACD,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;0BAYQ;gEATI,WAAW,EAAA,CAAA;sBAAnB;;;ACJL;AACA,SAAS,iBAAiB,CAAC,EAAU,EAAE,KAAU,EAAA;AAC7C,IAAA,IAAI,EAAE,IAAI,IAAI,EAAE;QACZ,OAAO,CAAA,EAAG,KAAK,CAAA,CAAE;;AAErB,IAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACpC,KAAK,GAAG,QAAQ;;AAEpB,IAAA,OAAO,CAAG,EAAA,EAAE,CAAK,EAAA,EAAA,KAAK,CAAE,CAAA,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACzC;AAEA;;;;;;;;;AASG;AACH;AACA;AAEM,MAAO,0BAA2B,SAAQ,cAAc,CAAA;IAW1D,WACI,CAAA,QAAoB,EACpB,SAAoB,EACA,OAAsC,EACtC,aAAyC,EACzC,gBAAoC,EAAA;AAExD,QAAA,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;AACnC,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,aAAa;AACjC,QAAA,IAAI,CAAC,eAAe,GAAG,gBAAgB;AACvC,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;;IAG7B,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,eAAe,EAAE,iBAAiB,EAAE;QACzC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;;;;;;;;AAS3F;;;;AAIG;IACH,IAGa,OAAO,CAAC,KAAU,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;YAAE;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AAC3D,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC5D,QAAA,KAAK,CAAC,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;AAGnD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;AAClB;;;AAGG;AACH,YAAA,QAAQ,IAAI,CAAC,QAAQ;AACjB,gBAAA,KAAK,IAAI;AACL,oBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,EAAE,CAAC;oBACtE;AACJ,gBAAA;AACI,oBAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC;;AAE7E,YAAA,IAAI,CAAC,eAAe,EAAE,iBAAiB,EAAE;;AAG7C,QAAA,IAAI,OAAO,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;AAC9F,YAAA,IAAI,CAAC,eAAe,EAAE,iBAAiB,EAAE;;;8GAzExC,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,6BAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,8JACf,gBAAgB,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAD3B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,8EAA8E,EAAE,UAAU,EAAE,KAAK,EAAE;;0BAejH;;0BAAY;;0BACZ;;0BAAY;;0BACZ;;0BAAY;yCAfuB,QAAQ,EAAA,CAAA;sBAA/C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAE7B,KAAK,EAAA,CAAA;sBAAb;gBA0CY,OAAO,EAAA,CAAA;sBAHnB;;;AC5EL,MAAM,8BAA8B,GAAa;AAC7C,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qCAAqC,CAAC;AACpE,IAAA,KAAK,EAAE,IAAI;CACd;AAQD;AACA;AACA,MAAe,cAAc,CAAA;AAI5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCG;AASH;AACM,MAAO,qCAAsC,SAAQ,kCAAkC,CAAA;AACzF,IAAA,IACW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI;;IAElC,IAAW,SAAS,CAAC,KAAmB,EAAA;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC;;AAsBlD,IAAA,WAAA,CACI,SAAoB,EACpB,WAAuB,EACH,eAAmC,EAC/C,QAAkB,EAAA;AAE1B,QAAA,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC;QAHT,IAAe,CAAA,eAAA,GAAf,eAAe;QAC3B,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAbpB,QAAA,IAAA,CAAA,UAAU,GAAyC,IAAI,GAAG,EAAmC;;QAG7F,IAAU,CAAA,UAAA,GAAG,CAAC;AAaV,QAAA,IAAI,CAAC,UAAU,GAAG,WAAW;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;;IAG7B,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;QAE9E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU;;AAGnG;;;;AAIG;;;AAGH,IAAA,UAAU,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;;AAGlB,QAAA,IAAI,yBAAyE;AAC7E,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;AAEtB,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAClD,YAAA,yBAAyB,GAAG,CAAC,GAAG,EAAE,CAAC,KAAU;AACzC,gBAAA,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,aAAC;;aACE;AACH,YAAA,yBAAyB,GAAG,CAAC,GAAG,KAAU;AACtC,gBAAA,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC;AAC3B,aAAC;;AAEL,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,yBAAyB,CAAC;AAClD,QAAA,IAAI,CAAC,eAAe,EAAE,iBAAiB,EAAE;;AAG7C;;;;;AAKG;;;AAGM,IAAA,gBAAgB,CAAC,EAAuB,EAAA;AAC7C,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,OAA0B,KAAU;;;YAGjD,MAAM,QAAQ,GAAe,EAAE;AAC/B,YAAA,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe;AAC/C,YAAA,IAAI,eAAe,KAAK,SAAS,EAAE;gBAC/B,MAAM,OAAO,GAAG,eAAe;;AAE/B,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,oBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;oBACtB,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3C,oBAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;;;iBAEnB;AACH,gBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;;AAE/B,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,oBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;AACtB,oBAAA,IAAI,GAAG,CAAC,QAAQ,EAAE;wBACd,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3C,wBAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;;;;AAI9B,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;YACrB,EAAE,CAAC,QAAQ,CAAC;AAChB,SAAC;;;;AAKL,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,MAAW;AACxB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC3E,YAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO;AAChC,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,qBAAqB,CAAC;;AAEhF,YAAA,EAAE,EAAE;AACR,SAAC;;;AAIL,IAAA,eAAe,CAAC,KAA8B,EAAA;QAC1C,MAAM,EAAE,GAAW,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE;QACjD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC;AAC9B,QAAA,OAAO,EAAE;;;;;AAMb,IAAA,YAAY,CAAC,KAAU,EAAA;AACnB,QAAA,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE;;AAEjD,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;AAC9D,gBAAA,OAAO,EAAE;;;AAGjB,QAAA,OAAO,IAAI;;;;;AAMf,IAAA,eAAe,CAAC,WAAmB,EAAA;AAC/B,QAAA,MAAM,EAAE,GAAW,UAAU,CAAC,WAAW,CAAC;;QAE1C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,MAAM,GAAG,WAAW;;8GAtJzE,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArC,qCAAqC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,4HAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAJnC,CAAC,8BAA8B,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAIlC,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBATjD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACP,QAAQ;;oBAEJ,4HAA4H;oBAChI,IAAI,EAAE,EAAE,UAAU,EAAE,yBAAyB,EAAE,QAAQ,EAAE,aAAa,EAAE;oBACxE,SAAS,EAAE,CAAC,8BAA8B,CAAC;AAC3C,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;0BAiCQ;gEA7BM,SAAS,EAAA,CAAA;sBADnB;;;ACnEL;;;;;;;;;AASG;AACH;AAEA;AACM,MAAO,uBAAwB,SAAQG,uBAAsB,CAAA;AAW/D,IAAA,WAAA,CAAY,QAAoB,EAAE,SAAoB,EAAsB,OAA8C,EAAA;AACtH,QAAA,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;AACnC,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;AACzB,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO;;AAGzB;;;;AAIG;IACH,IAGI,OAAO,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACrB;;AAEJ,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,gBAAgB,CAACJ,mBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;AAG7C;;;;AAIG;IACH,IAGI,KAAK,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,gBAAgB,CAACA,mBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACxD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;aACtC;AACH,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;;;;AAKpC,IAAA,gBAAgB,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC;;;AAIzE,IAAA,YAAY,CAAC,QAAiB,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC;;;IAI/E,WAAW,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;;8GAnExC,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,qCAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAFnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,2BAA2B,EAAE,UAAU,EAAE,KAAK,EAAE;;0BAaV;;0BAAY;yCAejE,OAAO,EAAA,CAAA;sBAHV;gBAoBG,KAAK,EAAA,CAAA;sBAHR;;;MCjCQ,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAdpB,kBAAkB;YAClB,0BAA0B;YAC1B,6BAA6B;YAC7B,qCAAqC;YACrC,uBAAuB,CAAA,EAAA,OAAA,EAAA,CANjB,YAAY,CAAA,EAAA,OAAA,EAAA,CASlB,kBAAkB;YAClB,0BAA0B;YAC1B,6BAA6B;YAC7B,qCAAqC;YACrC,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAGlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAhBd,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAgBb,eAAe,EAAA,UAAA,EAAA,CAAA;kBAjB3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,YAAY,EAAE;wBACV,kBAAkB;wBAClB,0BAA0B;wBAC1B,6BAA6B;wBAC7B,qCAAqC;wBACrC,uBAAuB;AAC1B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,kBAAkB;wBAClB,0BAA0B;wBAC1B,6BAA6B;wBAC7B,qCAAqC;wBACrC,uBAAuB;AAC1B,qBAAA;AACJ,iBAAA;;;ACxBD;;AAEG;;;;"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
|
-
import { Component, ViewEncapsulation, HostBinding, ContentChildren, forwardRef, HostListener, computed, booleanAttribute, Input, ViewChild, EventEmitter, ChangeDetectionStrategy, Output, NgModule } from '@angular/core';
|
2
|
+
import { Component, ViewEncapsulation, HostBinding, ContentChildren, forwardRef, HostListener, computed, booleanAttribute, Input, ViewChild, EventEmitter, inject, ChangeDetectionStrategy, Output, NgModule } from '@angular/core';
|
3
3
|
import { Subject } from 'rxjs';
|
4
4
|
import * as i2 from '@eui/components/shared';
|
5
5
|
import { BaseStatesDirective } from '@eui/components/shared';
|
@@ -8,6 +8,7 @@ import { takeUntil } from 'rxjs/operators';
|
|
8
8
|
import * as i1 from '@eui/components/eui-dropdown';
|
9
9
|
import { EuiDropdownModule } from '@eui/components/eui-dropdown';
|
10
10
|
import * as i1$1 from '@eui/core';
|
11
|
+
import { UserService } from '@eui/core';
|
11
12
|
import * as i3 from '@angular/common';
|
12
13
|
import { CommonModule } from '@angular/common';
|
13
14
|
import * as i4 from '@eui/components/eui-icon';
|
@@ -16,9 +17,9 @@ import * as i6 from '@eui/components/eui-avatar';
|
|
16
17
|
import { EuiAvatarModule } from '@eui/components/eui-avatar';
|
17
18
|
import * as i7 from '@eui/components/eui-badge';
|
18
19
|
import { EuiBadgeModule } from '@eui/components/eui-badge';
|
19
|
-
import * as
|
20
|
+
import * as i3$1 from '@eui/components/eui-button';
|
20
21
|
import { EuiButtonModule } from '@eui/components/eui-button';
|
21
|
-
import * as
|
22
|
+
import * as i5 from '@eui/components/eui-icon-button';
|
22
23
|
import { EuiIconButtonModule } from '@eui/components/eui-icon-button';
|
23
24
|
|
24
25
|
class EuiUserProfileMenuItemComponent {
|
@@ -125,6 +126,10 @@ class EuiUserProfileComponent {
|
|
125
126
|
this.euiStatusSecondary = false;
|
126
127
|
this.euiStatusSuccess = false;
|
127
128
|
this.euiStatusDanger = false;
|
129
|
+
/**
|
130
|
+
* If true, the name will be displayed in reverse order (first name, first)
|
131
|
+
*/
|
132
|
+
this.reverseNameOrder = false;
|
128
133
|
this.isDropdownOpen = false;
|
129
134
|
this.unsubscribeSubject$ = new Subject();
|
130
135
|
}
|
@@ -133,7 +138,9 @@ class EuiUserProfileComponent {
|
|
133
138
|
this.avatarInitials = computed(() => {
|
134
139
|
const firstNameInitial = this.userState().firstName?.substring(0, 1).toUpperCase();
|
135
140
|
const lastNameInitial = this.userState().lastName?.substring(0, 1).toUpperCase();
|
136
|
-
return
|
141
|
+
return this.reverseNameOrder ?
|
142
|
+
`${firstNameInitial}${lastNameInitial}`
|
143
|
+
: `${lastNameInitial}${firstNameInitial}`;
|
137
144
|
});
|
138
145
|
}
|
139
146
|
ngAfterViewInit() {
|
@@ -172,7 +179,7 @@ class EuiUserProfileComponent {
|
|
172
179
|
this.isDropdownOpen = isOpen;
|
173
180
|
}
|
174
181
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: EuiUserProfileComponent, deps: [{ token: i0.ElementRef }, { token: i1$1.UserService }, { token: i2.BaseStatesDirective }], target: i0.ɵɵFactoryTarget.Component }); }
|
175
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: EuiUserProfileComponent, isStandalone: false, selector: "eui-user-profile", inputs: { welcomeLabel: "welcomeLabel", impersonateLabel: "impersonateLabel", avatarUrl: "avatarUrl", subInfos: "subInfos", statusVariant: "statusVariant", hasMenu: ["hasMenu", "hasMenu", booleanAttribute], hasWelcomeLabel: ["hasWelcomeLabel", "hasWelcomeLabel", booleanAttribute], isShowAvatarInitials: ["isShowAvatarInitials", "isShowAvatarInitials", booleanAttribute], hasTabNavigation: ["hasTabNavigation", "hasTabNavigation", booleanAttribute], isReverse: ["isReverse", "isReverse", booleanAttribute], hasToggle: ["hasToggle", "hasToggle", booleanAttribute], isHeaderUserProfile: ["isHeaderUserProfile", "isHeaderUserProfile", booleanAttribute], isShowUserInfos: ["isShowUserInfos", "isShowUserInfos", booleanAttribute], euiStatusSecondary: ["euiStatusSecondary", "euiStatusSecondary", booleanAttribute], euiStatusSuccess: ["euiStatusSuccess", "euiStatusSuccess", booleanAttribute], euiStatusDanger: ["euiStatusDanger", "euiStatusDanger", booleanAttribute] }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "hasMenuContent", predicate: i0.forwardRef(() => EuiUserProfileMenuComponent), descendants: true }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], hostDirectives: [{ directive: i2.BaseStatesDirective, inputs: ["euiSizeS", "euiSizeS", "euiSecondary", "euiSecondary", "euiPrimary", "euiPrimary"] }], ngImport: i0, template: "@if (hasMenu) {\n <eui-dropdown [hasTabNavigation]=\"hasTabNavigation\" width=\"340px\" #dropdown (expand)=\"onDropdownExpand($event)\">\n <ng-container *ngTemplateOutlet=\"userProfileContent\"/>\n <eui-dropdown-content>\n <ng-content/>\n </eui-dropdown-content>\n </eui-dropdown>\n} @else {\n <ng-container *ngTemplateOutlet=\"userProfileContent\"/>\n}\n\n<ng-template #userProfileContent>\n <button class=\"eui-user-profile-content\" [tabindex]=\"hasMenu ? '0' : '-1'\" [class.eui-user-profile-content--no-menu]=\"!hasMenu\">\n\n @if (isShowUserInfos) {\n <div class=\"eui-user-profile__infos\">\n @if (userState()?.impersonatingUser) {\n <div class=\"eui-user-profile__infos-welcome\">\n @if (hasWelcomeLabel) {\n <span>{{ welcomeLabel }}</span>\n }\n {{ userState()?.impersonatingUser?.firstName }} <strong>{{ userState()?.impersonatingUser?.lastName}}</strong>\n <span> {{ impersonateLabel }}</span>\n </div>\n <div class=\"eui-user-profile__infos-name\">\n {{ userState()?.firstName }} <strong>{{ userState()?.lastName }}</strong>\n </div>\n @if (subInfos) {\n <div class=\"eui-user-profile__infos-subinfos\">{{ subInfos }}</div>\n }\n } @else {\n @if (hasWelcomeLabel) {\n <div class=\"eui-user-profile__infos-welcome\">{{ welcomeLabel }}</div>\n }\n <div class=\"eui-user-profile__infos-name\">\n {{ userState()?.firstName }} <strong>{{ userState()?.lastName }}</strong>\n </div>\n @if (subInfos) {\n <div class=\"eui-user-profile__infos-subinfos\">{{ subInfos }}</div>\n }\n }\n </div>\n }\n\n <eui-avatar isFlat [euiSizeS]=\"baseStatesDirective.euiSizeS\" [hasShadow]=\"userState()?.impersonatingUser\">\n\n @if (isShowAvatarInitials) {\n <eui-avatar-text>{{ avatarInitials() }}</eui-avatar-text>\n } @else {\n <eui-avatar-image [imageUrl]=\"avatarUrl\"/>\n }\n\n @if (euiStatusSecondary || euiStatusSuccess || euiStatusDanger) {\n <eui-avatar-badge position=\"bottom\">\n @if (euiStatusSuccess) {\n <eui-badge euiSuccess euiSizeS euiIconBadge>\n <eui-icon-svg icon=\"checkmark:outline\" size=\"xs\"/>\n </eui-badge>\n } @else if (euiStatusDanger) {\n <eui-badge euiDanger euiSizeS euiIconBadge>\n <eui-icon-svg icon=\"remove:outline\" size=\"xs\"/>\n </eui-badge>\n } @else if (euiStatusSecondary) {\n <eui-badge euiSecondary euiSizeS euiIconBadge>\n <eui-icon-svg icon=\"close-circle:outline\" fillColor=\"neutral\" size=\"xs\"/>\n </eui-badge>\n }\n </eui-avatar-badge>\n }\n </eui-avatar>\n\n @if (hasMenu || hasToggle) {\n @if (isDropdownOpen) {\n <eui-icon-svg icon=\"chevron-up:sharp\" size=\"s\" class=\"eui-user-profile__drop-indicator\"/>\n } @else {\n <eui-icon-svg icon=\"chevron-down:sharp\" size=\"s\" class=\"eui-user-profile__drop-indicator\"/>\n }\n }\n </button>\n</ng-template>\n", styles: [".eui-19 .eui-user-profile{display:flex;position:relative}.eui-19 .eui-user-profile-content{align-items:center;background:none;border:var(--eui-bw-none);cursor:pointer;display:flex;padding:var(--eui-s-2xs) 0;gap:var(--eui-s-xs)}.eui-19 .eui-user-profile-content:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-content--no-menu{cursor:default}.eui-19 .eui-user-profile__infos{align-items:flex-end;display:flex;flex-direction:column}.eui-19 .eui-user-profile__infos-container{justify-content:flex-end;align-items:center;display:flex;width:100%}.eui-19 .eui-user-profile__infos-welcome{text-align:right;font:var(--eui-f-xs-compact)}.eui-19 .eui-user-profile__infos-name{color:var(--eui-c-branding);text-align:right;font:var(--eui-f-m-compact)}.eui-19 .eui-user-profile__infos-subinfos{color:var(--eui-c-neutral);text-align:right;font:var(--eui-f-xs-compact)}.eui-19 .eui-user-profile__drop-indicator{margin-left:calc(-1 * var(--eui-s-xs))}.eui-19 .eui--secondary .eui-user-profile__infos-name,.eui-19 .eui--secondary .eui-user-profile__infos-welcome{color:var(--eui-c-neutral)!important}@media screen and (max-width: 767px){.eui-19 .eui-app-shell-header-toolbar-items .eui-user-profile{display:flex}.eui-19 .eui-app .eui-app-toolbar .eui-user-profile__infos{display:none}}@media screen and (min-width: 768px){.eui-19 .eui-app-shell-header-toolbar-items .eui-user-profile{display:none}.eui-19 .is-header-shrink .eui-user-profile{display:flex}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-19 .eui-app .eui-app-toolbar .eui-user-profile__infos{display:none}}.eui-19 .eui-user-profile--primary .eui-user-profile__infos-name{color:var(--eui-c-white)}.eui-19 .eui-user-profile--primary .eui-user-profile__infos-welcome,.eui-19 .eui-user-profile--primary .eui-user-profile__infos-subinfos{color:var(--eui-c-neutral-lightest)}.eui-19 .eui-user-profile--primary .eui-user-profile__drop-indicator svg{fill:var(--eui-c-white);color:var(--eui-c-white)}.eui-19 .eui-user-profile--reverse .eui-user-profile-content{flex-direction:row-reverse}.eui-19 .eui-user-profile--reverse .eui-user-profile__infos{margin-left:var(--eui-s-m)}.eui-19 .eui-user-profile--initials .eui-avatar-content{background-color:var(--eui-c-branding-light)!important}.eui-19 .eui-user-profile--initials .eui-avatar-text{color:var(--eui-c-branding-light-contrast)!important}.eui-19 .eui-user-profile-menu{height:auto;min-width:340px;position:relative}.eui-19 .eui-user-profile-menu-item{align-items:center;border-bottom:1px solid var(--eui-c-neutral-lightest);cursor:pointer;display:flex;padding:var(--eui-s-xs) var(--eui-s-s);gap:var(--eui-s-xs)}.eui-19 .eui-user-profile-menu-item:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-menu-item:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-menu-item [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-menu-item:hover{background-color:var(--eui-c-hover);cursor:pointer}.eui-19 .eui-user-profile-menu-item:last-child{border-bottom:0}.eui-19 .eui-user-profile-menu-item a{color:var(--eui-c-text);text-decoration:none}.eui-19 .eui-user-profile-menu-item.link{cursor:pointer}.eui-19 .eui-user-profile-menu-item-right-content{margin-left:auto}.eui-19 .eui-user-profile-card{width:100%}.eui-19 .eui-user-profile-card__main-wrapper{display:flex;flex-direction:row;padding:var(--eui-s-m) var(--eui-s-m) var(--eui-s-m) 0}.eui-19 .eui-user-profile-card__main-wrapper-right-content{display:flex;flex-direction:column;margin-left:auto}.eui-19 .eui-user-profile-card__avatar-wrapper{display:flex}.eui-19 .eui-user-profile-card__userInfos{display:flex;flex-direction:column;padding-left:var(--eui-s-s)}.eui-19 .eui-user-profile-card__userInfos-item{padding-bottom:var(--eui-s-xs)}.eui-19 .eui-user-profile-card__impersonateInfos{background-color:var(--eui-c-neutral-bg-light);padding:var(--eui-s-s)}\n"], dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "fillColor", "set", "size", "style", "iconUrl", "transform", "euiVariant", "aria-label", "ariaHidden", "focusable", "isLoading", "isInputIcon", "euiStart", "euiEnd"] }, { kind: "component", type: i1.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "subDropdownPosition", "isBlock", "isDropDownRightAligned", "hasClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation", "isRightClickEnabled", "euiDisabled"], outputs: ["expand"] }, { kind: "directive", type: i1.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "component", type: i6.EuiAvatarComponent, selector: "div[euiAvatar], span[euiAvatar], eui-avatar", inputs: ["e2eAttr", "aria-label", "hasShadow", "isShapeSquare", "isFlat", "hasNoBackground"] }, { kind: "component", type: i6.EuiAvatarTextComponent, selector: "eui-avatar-text" }, { kind: "component", type: i6.EuiAvatarImageComponent, selector: "eui-avatar-image", inputs: ["imageUrl"] }, { kind: "component", type: i6.EuiAvatarBadgeComponent, selector: "eui-avatar-badge", inputs: ["position"] }, { kind: "component", type: i7.EuiBadgeComponent, selector: "div[euiBadge], span[euiBadge], eui-badge", inputs: ["e2eAttr", "aria-label", "maxCharCount", "charReplacement", "euiIconBadge", "euiDottedBadge"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
182
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: EuiUserProfileComponent, isStandalone: false, selector: "eui-user-profile", inputs: { welcomeLabel: "welcomeLabel", impersonateLabel: "impersonateLabel", avatarUrl: "avatarUrl", subInfos: "subInfos", statusVariant: "statusVariant", hasMenu: ["hasMenu", "hasMenu", booleanAttribute], hasWelcomeLabel: ["hasWelcomeLabel", "hasWelcomeLabel", booleanAttribute], isShowAvatarInitials: ["isShowAvatarInitials", "isShowAvatarInitials", booleanAttribute], hasTabNavigation: ["hasTabNavigation", "hasTabNavigation", booleanAttribute], isReverse: ["isReverse", "isReverse", booleanAttribute], hasToggle: ["hasToggle", "hasToggle", booleanAttribute], isHeaderUserProfile: ["isHeaderUserProfile", "isHeaderUserProfile", booleanAttribute], isShowUserInfos: ["isShowUserInfos", "isShowUserInfos", booleanAttribute], euiStatusSecondary: ["euiStatusSecondary", "euiStatusSecondary", booleanAttribute], euiStatusSuccess: ["euiStatusSuccess", "euiStatusSuccess", booleanAttribute], euiStatusDanger: ["euiStatusDanger", "euiStatusDanger", booleanAttribute], reverseNameOrder: "reverseNameOrder" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "hasMenuContent", predicate: i0.forwardRef(() => EuiUserProfileMenuComponent), descendants: true }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], hostDirectives: [{ directive: i2.BaseStatesDirective, inputs: ["euiSizeS", "euiSizeS", "euiSecondary", "euiSecondary", "euiPrimary", "euiPrimary"] }], ngImport: i0, template: "@if (hasMenu) {\n <eui-dropdown [hasTabNavigation]=\"hasTabNavigation\" width=\"340px\" #dropdown (expand)=\"onDropdownExpand($event)\">\n <ng-container *ngTemplateOutlet=\"userProfileContent\"/>\n <eui-dropdown-content>\n <ng-content/>\n </eui-dropdown-content>\n </eui-dropdown>\n} @else {\n <ng-container *ngTemplateOutlet=\"userProfileContent\"/>\n}\n\n<ng-template #userProfileContent>\n <button class=\"eui-user-profile-content\" [tabindex]=\"hasMenu ? '0' : '-1'\" [class.eui-user-profile-content--no-menu]=\"!hasMenu\">\n\n @if (isShowUserInfos) {\n <div class=\"eui-user-profile__infos\">\n @if (userState()?.impersonatingUser) {\n <div class=\"eui-user-profile__infos-welcome\">\n @if (hasWelcomeLabel) {\n <span>{{ welcomeLabel }} </span>\n }\n @if(reverseNameOrder) {\n {{ userState()?.impersonatingUser?.firstName }} <strong>{{ userState()?.impersonatingUser?.lastName}} </strong>\n } @else {\n <strong>{{ userState()?.impersonatingUser?.lastName }}</strong> {{ userState()?.impersonatingUser?.firstName }}\n }\n <span>{{ impersonateLabel }}</span>\n </div>\n <div class=\"eui-user-profile__infos-name\">\n @if(reverseNameOrder) {\n {{ userState()?.firstName }} <strong>{{ userState()?.lastName }}</strong>\n } @else {\n <strong>{{ userState()?.lastName }}</strong> {{ userState()?.firstName }}\n }\n </div>\n @if (subInfos) {\n <div class=\"eui-user-profile__infos-subinfos\">{{ subInfos }}</div>\n }\n } @else {\n @if (hasWelcomeLabel) {\n <div class=\"eui-user-profile__infos-welcome\">{{ welcomeLabel }}</div>\n }\n <div class=\"eui-user-profile__infos-name\">\n @if(reverseNameOrder) {\n {{ userState()?.firstName }} <strong>{{ userState()?.lastName }}</strong>\n } @else {\n <strong>{{ userState()?.lastName }}</strong> {{ userState()?.firstName }}\n }\n </div>\n @if (subInfos) {\n <div class=\"eui-user-profile__infos-subinfos\">{{ subInfos }}</div>\n }\n }\n </div>\n }\n\n <eui-avatar isFlat [euiSizeS]=\"baseStatesDirective.euiSizeS\" [hasShadow]=\"userState()?.impersonatingUser\">\n\n @if (isShowAvatarInitials) {\n <eui-avatar-text>{{ avatarInitials() }}</eui-avatar-text>\n } @else {\n <eui-avatar-image [imageUrl]=\"avatarUrl\"/>\n }\n\n @if (euiStatusSecondary || euiStatusSuccess || euiStatusDanger) {\n <eui-avatar-badge position=\"bottom\">\n @if (euiStatusSuccess) {\n <eui-badge euiSuccess euiSizeS euiIconBadge>\n <eui-icon-svg icon=\"checkmark:outline\" size=\"xs\"/>\n </eui-badge>\n } @else if (euiStatusDanger) {\n <eui-badge euiDanger euiSizeS euiIconBadge>\n <eui-icon-svg icon=\"remove:outline\" size=\"xs\"/>\n </eui-badge>\n } @else if (euiStatusSecondary) {\n <eui-badge euiSecondary euiSizeS euiIconBadge>\n <eui-icon-svg icon=\"close-circle:outline\" fillColor=\"neutral\" size=\"xs\"/>\n </eui-badge>\n }\n </eui-avatar-badge>\n }\n </eui-avatar>\n\n @if (hasMenu || hasToggle) {\n @if (isDropdownOpen) {\n <eui-icon-svg icon=\"chevron-up:sharp\" size=\"s\" class=\"eui-user-profile__drop-indicator\"/>\n } @else {\n <eui-icon-svg icon=\"chevron-down:sharp\" size=\"s\" class=\"eui-user-profile__drop-indicator\"/>\n }\n }\n </button>\n</ng-template>\n", styles: [".eui-19 .eui-user-profile{display:flex;position:relative}.eui-19 .eui-user-profile-content{align-items:center;background:none;border:var(--eui-bw-none);cursor:pointer;display:flex;padding:var(--eui-s-2xs) 0;gap:var(--eui-s-xs)}.eui-19 .eui-user-profile-content:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-content--no-menu{cursor:default}.eui-19 .eui-user-profile__infos{align-items:flex-end;display:flex;flex-direction:column}.eui-19 .eui-user-profile__infos-container{justify-content:flex-end;align-items:center;display:flex;width:100%}.eui-19 .eui-user-profile__infos-welcome{text-align:right;font:var(--eui-f-xs-compact)}.eui-19 .eui-user-profile__infos-name{color:var(--eui-c-branding);text-align:right;font:var(--eui-f-m-compact)}.eui-19 .eui-user-profile__infos-subinfos{color:var(--eui-c-neutral);text-align:right;font:var(--eui-f-xs-compact)}.eui-19 .eui-user-profile__drop-indicator{margin-left:calc(-1 * var(--eui-s-xs))}.eui-19 .eui--secondary .eui-user-profile__infos-name,.eui-19 .eui--secondary .eui-user-profile__infos-welcome{color:var(--eui-c-neutral)!important}@media screen and (max-width: 767px){.eui-19 .eui-app-shell-header-toolbar-items .eui-user-profile{display:flex}.eui-19 .eui-app .eui-app-toolbar .eui-user-profile__infos{display:none}}@media screen and (min-width: 768px){.eui-19 .eui-app-shell-header-toolbar-items .eui-user-profile{display:none}.eui-19 .is-header-shrink .eui-user-profile{display:flex}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-19 .eui-app .eui-app-toolbar .eui-user-profile__infos{display:none}}.eui-19 .eui-user-profile--primary .eui-user-profile__infos-name{color:var(--eui-c-white)}.eui-19 .eui-user-profile--primary .eui-user-profile__infos-welcome,.eui-19 .eui-user-profile--primary .eui-user-profile__infos-subinfos{color:var(--eui-c-neutral-lightest)}.eui-19 .eui-user-profile--primary .eui-user-profile__drop-indicator svg{fill:var(--eui-c-white);color:var(--eui-c-white)}.eui-19 .eui-user-profile--reverse .eui-user-profile-content{flex-direction:row-reverse}.eui-19 .eui-user-profile--reverse .eui-user-profile__infos{margin-left:var(--eui-s-m)}.eui-19 .eui-user-profile--initials .eui-avatar-content{background-color:var(--eui-c-branding-light)!important}.eui-19 .eui-user-profile--initials .eui-avatar-text{color:var(--eui-c-branding-light-contrast)!important}.eui-19 .eui-user-profile-menu{height:auto;min-width:340px;position:relative}.eui-19 .eui-user-profile-menu-item{align-items:center;border-bottom:1px solid var(--eui-c-neutral-lightest);cursor:pointer;display:flex;padding:var(--eui-s-xs) var(--eui-s-s);gap:var(--eui-s-xs)}.eui-19 .eui-user-profile-menu-item:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-menu-item:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-menu-item [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-menu-item:hover{background-color:var(--eui-c-hover);cursor:pointer}.eui-19 .eui-user-profile-menu-item:last-child{border-bottom:0}.eui-19 .eui-user-profile-menu-item a{color:var(--eui-c-text);text-decoration:none}.eui-19 .eui-user-profile-menu-item.link{cursor:pointer}.eui-19 .eui-user-profile-menu-item-right-content{margin-left:auto}.eui-19 .eui-user-profile-card{width:100%}.eui-19 .eui-user-profile-card__main-wrapper{display:flex;flex-direction:row;padding:var(--eui-s-m) var(--eui-s-m) var(--eui-s-m) 0}.eui-19 .eui-user-profile-card__main-wrapper-right-content{display:flex;flex-direction:column;margin-left:auto}.eui-19 .eui-user-profile-card__avatar-wrapper{display:flex}.eui-19 .eui-user-profile-card__userInfos{display:flex;flex-direction:column;padding-left:var(--eui-s-s)}.eui-19 .eui-user-profile-card__userInfos-item{padding-bottom:var(--eui-s-xs)}.eui-19 .eui-user-profile-card__impersonateInfos{background-color:var(--eui-c-neutral-bg-light);padding:var(--eui-s-s)}\n"], dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "fillColor", "set", "size", "style", "iconUrl", "transform", "euiVariant", "aria-label", "ariaHidden", "focusable", "isLoading", "isInputIcon", "euiStart", "euiEnd"] }, { kind: "component", type: i1.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "subDropdownPosition", "isBlock", "isDropDownRightAligned", "hasClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation", "isRightClickEnabled", "euiDisabled"], outputs: ["expand"] }, { kind: "directive", type: i1.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "component", type: i6.EuiAvatarComponent, selector: "div[euiAvatar], span[euiAvatar], eui-avatar", inputs: ["e2eAttr", "aria-label", "hasShadow", "isShapeSquare", "isFlat", "hasNoBackground"] }, { kind: "component", type: i6.EuiAvatarTextComponent, selector: "eui-avatar-text" }, { kind: "component", type: i6.EuiAvatarImageComponent, selector: "eui-avatar-image", inputs: ["imageUrl"] }, { kind: "component", type: i6.EuiAvatarBadgeComponent, selector: "eui-avatar-badge", inputs: ["position"] }, { kind: "component", type: i7.EuiBadgeComponent, selector: "div[euiBadge], span[euiBadge], eui-badge", inputs: ["e2eAttr", "aria-label", "maxCharCount", "charReplacement", "euiIconBadge", "euiDottedBadge"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
176
183
|
}
|
177
184
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: EuiUserProfileComponent, decorators: [{
|
178
185
|
type: Component,
|
@@ -185,7 +192,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
185
192
|
'euiPrimary',
|
186
193
|
],
|
187
194
|
},
|
188
|
-
], template: "@if (hasMenu) {\n <eui-dropdown [hasTabNavigation]=\"hasTabNavigation\" width=\"340px\" #dropdown (expand)=\"onDropdownExpand($event)\">\n <ng-container *ngTemplateOutlet=\"userProfileContent\"/>\n <eui-dropdown-content>\n <ng-content/>\n </eui-dropdown-content>\n </eui-dropdown>\n} @else {\n <ng-container *ngTemplateOutlet=\"userProfileContent\"/>\n}\n\n<ng-template #userProfileContent>\n <button class=\"eui-user-profile-content\" [tabindex]=\"hasMenu ? '0' : '-1'\" [class.eui-user-profile-content--no-menu]=\"!hasMenu\">\n\n @if (isShowUserInfos) {\n <div class=\"eui-user-profile__infos\">\n @if (userState()?.impersonatingUser) {\n <div class=\"eui-user-profile__infos-welcome\">\n @if (hasWelcomeLabel) {\n <span>{{ welcomeLabel }}
|
195
|
+
], template: "@if (hasMenu) {\n <eui-dropdown [hasTabNavigation]=\"hasTabNavigation\" width=\"340px\" #dropdown (expand)=\"onDropdownExpand($event)\">\n <ng-container *ngTemplateOutlet=\"userProfileContent\"/>\n <eui-dropdown-content>\n <ng-content/>\n </eui-dropdown-content>\n </eui-dropdown>\n} @else {\n <ng-container *ngTemplateOutlet=\"userProfileContent\"/>\n}\n\n<ng-template #userProfileContent>\n <button class=\"eui-user-profile-content\" [tabindex]=\"hasMenu ? '0' : '-1'\" [class.eui-user-profile-content--no-menu]=\"!hasMenu\">\n\n @if (isShowUserInfos) {\n <div class=\"eui-user-profile__infos\">\n @if (userState()?.impersonatingUser) {\n <div class=\"eui-user-profile__infos-welcome\">\n @if (hasWelcomeLabel) {\n <span>{{ welcomeLabel }} </span>\n }\n @if(reverseNameOrder) {\n {{ userState()?.impersonatingUser?.firstName }} <strong>{{ userState()?.impersonatingUser?.lastName}} </strong>\n } @else {\n <strong>{{ userState()?.impersonatingUser?.lastName }}</strong> {{ userState()?.impersonatingUser?.firstName }}\n }\n <span>{{ impersonateLabel }}</span>\n </div>\n <div class=\"eui-user-profile__infos-name\">\n @if(reverseNameOrder) {\n {{ userState()?.firstName }} <strong>{{ userState()?.lastName }}</strong>\n } @else {\n <strong>{{ userState()?.lastName }}</strong> {{ userState()?.firstName }}\n }\n </div>\n @if (subInfos) {\n <div class=\"eui-user-profile__infos-subinfos\">{{ subInfos }}</div>\n }\n } @else {\n @if (hasWelcomeLabel) {\n <div class=\"eui-user-profile__infos-welcome\">{{ welcomeLabel }}</div>\n }\n <div class=\"eui-user-profile__infos-name\">\n @if(reverseNameOrder) {\n {{ userState()?.firstName }} <strong>{{ userState()?.lastName }}</strong>\n } @else {\n <strong>{{ userState()?.lastName }}</strong> {{ userState()?.firstName }}\n }\n </div>\n @if (subInfos) {\n <div class=\"eui-user-profile__infos-subinfos\">{{ subInfos }}</div>\n }\n }\n </div>\n }\n\n <eui-avatar isFlat [euiSizeS]=\"baseStatesDirective.euiSizeS\" [hasShadow]=\"userState()?.impersonatingUser\">\n\n @if (isShowAvatarInitials) {\n <eui-avatar-text>{{ avatarInitials() }}</eui-avatar-text>\n } @else {\n <eui-avatar-image [imageUrl]=\"avatarUrl\"/>\n }\n\n @if (euiStatusSecondary || euiStatusSuccess || euiStatusDanger) {\n <eui-avatar-badge position=\"bottom\">\n @if (euiStatusSuccess) {\n <eui-badge euiSuccess euiSizeS euiIconBadge>\n <eui-icon-svg icon=\"checkmark:outline\" size=\"xs\"/>\n </eui-badge>\n } @else if (euiStatusDanger) {\n <eui-badge euiDanger euiSizeS euiIconBadge>\n <eui-icon-svg icon=\"remove:outline\" size=\"xs\"/>\n </eui-badge>\n } @else if (euiStatusSecondary) {\n <eui-badge euiSecondary euiSizeS euiIconBadge>\n <eui-icon-svg icon=\"close-circle:outline\" fillColor=\"neutral\" size=\"xs\"/>\n </eui-badge>\n }\n </eui-avatar-badge>\n }\n </eui-avatar>\n\n @if (hasMenu || hasToggle) {\n @if (isDropdownOpen) {\n <eui-icon-svg icon=\"chevron-up:sharp\" size=\"s\" class=\"eui-user-profile__drop-indicator\"/>\n } @else {\n <eui-icon-svg icon=\"chevron-down:sharp\" size=\"s\" class=\"eui-user-profile__drop-indicator\"/>\n }\n }\n </button>\n</ng-template>\n", styles: [".eui-19 .eui-user-profile{display:flex;position:relative}.eui-19 .eui-user-profile-content{align-items:center;background:none;border:var(--eui-bw-none);cursor:pointer;display:flex;padding:var(--eui-s-2xs) 0;gap:var(--eui-s-xs)}.eui-19 .eui-user-profile-content:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-content--no-menu{cursor:default}.eui-19 .eui-user-profile__infos{align-items:flex-end;display:flex;flex-direction:column}.eui-19 .eui-user-profile__infos-container{justify-content:flex-end;align-items:center;display:flex;width:100%}.eui-19 .eui-user-profile__infos-welcome{text-align:right;font:var(--eui-f-xs-compact)}.eui-19 .eui-user-profile__infos-name{color:var(--eui-c-branding);text-align:right;font:var(--eui-f-m-compact)}.eui-19 .eui-user-profile__infos-subinfos{color:var(--eui-c-neutral);text-align:right;font:var(--eui-f-xs-compact)}.eui-19 .eui-user-profile__drop-indicator{margin-left:calc(-1 * var(--eui-s-xs))}.eui-19 .eui--secondary .eui-user-profile__infos-name,.eui-19 .eui--secondary .eui-user-profile__infos-welcome{color:var(--eui-c-neutral)!important}@media screen and (max-width: 767px){.eui-19 .eui-app-shell-header-toolbar-items .eui-user-profile{display:flex}.eui-19 .eui-app .eui-app-toolbar .eui-user-profile__infos{display:none}}@media screen and (min-width: 768px){.eui-19 .eui-app-shell-header-toolbar-items .eui-user-profile{display:none}.eui-19 .is-header-shrink .eui-user-profile{display:flex}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-19 .eui-app .eui-app-toolbar .eui-user-profile__infos{display:none}}.eui-19 .eui-user-profile--primary .eui-user-profile__infos-name{color:var(--eui-c-white)}.eui-19 .eui-user-profile--primary .eui-user-profile__infos-welcome,.eui-19 .eui-user-profile--primary .eui-user-profile__infos-subinfos{color:var(--eui-c-neutral-lightest)}.eui-19 .eui-user-profile--primary .eui-user-profile__drop-indicator svg{fill:var(--eui-c-white);color:var(--eui-c-white)}.eui-19 .eui-user-profile--reverse .eui-user-profile-content{flex-direction:row-reverse}.eui-19 .eui-user-profile--reverse .eui-user-profile__infos{margin-left:var(--eui-s-m)}.eui-19 .eui-user-profile--initials .eui-avatar-content{background-color:var(--eui-c-branding-light)!important}.eui-19 .eui-user-profile--initials .eui-avatar-text{color:var(--eui-c-branding-light-contrast)!important}.eui-19 .eui-user-profile-menu{height:auto;min-width:340px;position:relative}.eui-19 .eui-user-profile-menu-item{align-items:center;border-bottom:1px solid var(--eui-c-neutral-lightest);cursor:pointer;display:flex;padding:var(--eui-s-xs) var(--eui-s-s);gap:var(--eui-s-xs)}.eui-19 .eui-user-profile-menu-item:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-menu-item:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-menu-item [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-19 .eui-user-profile-menu-item:hover{background-color:var(--eui-c-hover);cursor:pointer}.eui-19 .eui-user-profile-menu-item:last-child{border-bottom:0}.eui-19 .eui-user-profile-menu-item a{color:var(--eui-c-text);text-decoration:none}.eui-19 .eui-user-profile-menu-item.link{cursor:pointer}.eui-19 .eui-user-profile-menu-item-right-content{margin-left:auto}.eui-19 .eui-user-profile-card{width:100%}.eui-19 .eui-user-profile-card__main-wrapper{display:flex;flex-direction:row;padding:var(--eui-s-m) var(--eui-s-m) var(--eui-s-m) 0}.eui-19 .eui-user-profile-card__main-wrapper-right-content{display:flex;flex-direction:column;margin-left:auto}.eui-19 .eui-user-profile-card__avatar-wrapper{display:flex}.eui-19 .eui-user-profile-card__userInfos{display:flex;flex-direction:column;padding-left:var(--eui-s-s)}.eui-19 .eui-user-profile-card__userInfos-item{padding-bottom:var(--eui-s-xs)}.eui-19 .eui-user-profile-card__impersonateInfos{background-color:var(--eui-c-neutral-bg-light);padding:var(--eui-s-s)}\n"] }]
|
189
196
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1$1.UserService }, { type: i2.BaseStatesDirective }], propDecorators: { cssClasses: [{
|
190
197
|
type: HostBinding,
|
191
198
|
args: ['class']
|
@@ -232,6 +239,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
232
239
|
}], euiStatusDanger: [{
|
233
240
|
type: Input,
|
234
241
|
args: [{ transform: booleanAttribute }]
|
242
|
+
}], reverseNameOrder: [{
|
243
|
+
type: Input
|
235
244
|
}], dropdown: [{
|
236
245
|
type: ViewChild,
|
237
246
|
args: ['dropdown']
|
@@ -241,30 +250,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
241
250
|
}] } });
|
242
251
|
|
243
252
|
class EuiUserProfileCardComponent {
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
253
|
+
constructor() {
|
254
|
+
/**
|
255
|
+
* If true, the user is online
|
256
|
+
* @deprecated This property is not used anymore
|
257
|
+
*/
|
249
258
|
this.isOnline = true;
|
250
259
|
this.impersonateLabel = 'impersonating';
|
251
260
|
this.showDetailsLabel = 'Show profile details';
|
252
261
|
this.isShowAvatarInitials = false;
|
262
|
+
/**
|
263
|
+
* If true, the name will be displayed in reverse order (first name, first)
|
264
|
+
*/
|
265
|
+
this.reverseNameOrder = false;
|
253
266
|
this.showProfileInfo = new EventEmitter();
|
254
267
|
this.closeProfileMenu = new EventEmitter();
|
255
|
-
this.
|
268
|
+
this.userService = inject(UserService);
|
269
|
+
}
|
270
|
+
get cssClasses() {
|
271
|
+
return 'eui-user-profile-card';
|
256
272
|
}
|
257
273
|
ngOnInit() {
|
258
274
|
this.userState = this.userService.getSignal();
|
259
275
|
this.avatarInitials = computed(() => {
|
260
276
|
const firstNameInitial = this.userState().firstName?.substring(0, 1).toUpperCase();
|
261
277
|
const lastNameInitial = this.userState().lastName?.substring(0, 1).toUpperCase();
|
262
|
-
return
|
278
|
+
return this.reverseNameOrder ?
|
279
|
+
`${firstNameInitial}${lastNameInitial}`
|
280
|
+
: `${lastNameInitial}${firstNameInitial}`;
|
281
|
+
});
|
282
|
+
this.fullName = computed(() => {
|
283
|
+
const user = this.userState();
|
284
|
+
const impersonated = this.userState().impersonatingUser;
|
285
|
+
const fullName = (user) => {
|
286
|
+
return this.reverseNameOrder
|
287
|
+
? `${user.firstName} ${user.lastName}`
|
288
|
+
: `${user.lastName} ${user.firstName}`;
|
289
|
+
};
|
290
|
+
return {
|
291
|
+
user: fullName(user),
|
292
|
+
impersonated: impersonated ? fullName(impersonated) : undefined,
|
293
|
+
};
|
263
294
|
});
|
264
|
-
}
|
265
|
-
ngOnDestroy() {
|
266
|
-
this.unsubscribeSubject$.next();
|
267
|
-
this.unsubscribeSubject$.complete();
|
268
295
|
}
|
269
296
|
onShowInfoClick() {
|
270
297
|
this.showProfileInfo.emit();
|
@@ -272,13 +299,13 @@ class EuiUserProfileCardComponent {
|
|
272
299
|
onClose() {
|
273
300
|
this.closeProfileMenu.emit();
|
274
301
|
}
|
275
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: EuiUserProfileCardComponent, deps: [
|
276
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.0.5", type: EuiUserProfileCardComponent, isStandalone: false, selector: "eui-user-profile-card", inputs: { impersonateLabel: "impersonateLabel", showDetailsLabel: "showDetailsLabel", avatarUrl: "avatarUrl", isShowAvatarInitials: ["isShowAvatarInitials", "isShowAvatarInitials", booleanAttribute] }, outputs: { showProfileInfo: "showProfileInfo", closeProfileMenu: "closeProfileMenu" }, host: { properties: { "class": "this.cssClasses" } }, ngImport: i0, template: "<div class=\"eui-user-profile-card__main-wrapper\">\n <div class=\"eui-user-profile-card__avatar-wrapper\">\n <eui-avatar euiSizeL isFlat>\n <eui-avatar-text *ngIf=\"isShowAvatarInitials; else noAvatarInitials\">\n {{ avatarInitials() }}\n </eui-avatar-text>\n <ng-template #noAvatarInitials>\n <eui-avatar-image *ngIf=\"!avatarUrl\"></eui-avatar-image>\n <eui-avatar-image *ngIf=\"avatarUrl\" [imageUrl]=\"avatarUrl\"></eui-avatar-image>\n </ng-template>\n </eui-avatar>\n </div>\n <div class=\"eui-user-profile-card__userInfos\">\n <div class=\"eui-u-f-xl eui-u-mb-s\">{{
|
302
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: EuiUserProfileCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
303
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.0.5", type: EuiUserProfileCardComponent, isStandalone: false, selector: "eui-user-profile-card", inputs: { impersonateLabel: "impersonateLabel", showDetailsLabel: "showDetailsLabel", avatarUrl: "avatarUrl", isShowAvatarInitials: ["isShowAvatarInitials", "isShowAvatarInitials", booleanAttribute], reverseNameOrder: "reverseNameOrder" }, outputs: { showProfileInfo: "showProfileInfo", closeProfileMenu: "closeProfileMenu" }, host: { properties: { "class": "this.cssClasses" } }, ngImport: i0, template: "<div class=\"eui-user-profile-card__main-wrapper\">\n <div class=\"eui-user-profile-card__avatar-wrapper\">\n <eui-avatar euiSizeL isFlat>\n <eui-avatar-text *ngIf=\"isShowAvatarInitials; else noAvatarInitials\">\n {{ avatarInitials() }}\n </eui-avatar-text>\n <ng-template #noAvatarInitials>\n <eui-avatar-image *ngIf=\"!avatarUrl\"></eui-avatar-image>\n <eui-avatar-image *ngIf=\"avatarUrl\" [imageUrl]=\"avatarUrl\"></eui-avatar-image>\n </ng-template>\n </eui-avatar>\n </div>\n <div class=\"eui-user-profile-card__userInfos\">\n <div class=\"eui-u-f-xl eui-u-mb-s\">{{ fullName().user }}</div>\n <div *ngIf=\"userState().function\" class=\"eui-user-profile-card__userInfos-item\">\n {{ userState().function }}\n </div>\n <div *ngIf=\"userState().organisation && userState().organisation.code\" class=\"eui-user-profile-card__userInfos-item\">\n {{ userState().organisation.code }}\n </div>\n </div>\n <div class=\"eui-user-profile-card__main-wrapper-right-content\">\n <eui-icon-button icon=\"close:outline\" size=\"s\" euiRounded (buttonClick)=\"onClose()\"/>\n <button euiButton euiIconButton euiInfo euiSizeS class=\"eui-u-ml-auto eui-u-mt-m\" tabindex=\"0\" (click)=\"onShowInfoClick()\" title=\"{{ showDetailsLabel }}\">\n <eui-icon-svg icon=\"information:outline\"></eui-icon-svg>\n </button>\n </div>\n</div>\n\n<ng-container *ngIf=\"userState()?.impersonatingUser\">\n <div class=\"eui-user-profile-card__impersonateInfos\">\n <div>{{ fullName()?.impersonated }}</div>\n <div class=\"eui-u-mt-2xs\">{{ impersonateLabel }}</div>\n <div class=\"eui-u-mt-2xs\">\n <strong>{{ fullName().user }}</strong>\n </div>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "fillColor", "set", "size", "style", "iconUrl", "transform", "euiVariant", "aria-label", "ariaHidden", "focusable", "isLoading", "isInputIcon", "euiStart", "euiEnd"] }, { kind: "component", type: i3$1.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "euiIconButton", "euiLineWrap", "isChecked", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "component", type: i6.EuiAvatarComponent, selector: "div[euiAvatar], span[euiAvatar], eui-avatar", inputs: ["e2eAttr", "aria-label", "hasShadow", "isShapeSquare", "isFlat", "hasNoBackground"] }, { kind: "component", type: i6.EuiAvatarTextComponent, selector: "eui-avatar-text" }, { kind: "component", type: i6.EuiAvatarImageComponent, selector: "eui-avatar-image", inputs: ["imageUrl"] }, { kind: "component", type: i5.EuiIconButtonComponent, selector: "eui-icon-button", inputs: ["icon", "fillColor", "size", "ariaLabel", "tabindex", "hasNoPadding", "hasFocusHoverColor", "hasFocusHoverBg", "euiRounded", "euiDisabled"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
277
304
|
}
|
278
305
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: EuiUserProfileCardComponent, decorators: [{
|
279
306
|
type: Component,
|
280
|
-
args: [{ selector: 'eui-user-profile-card', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, standalone: false, template: "<div class=\"eui-user-profile-card__main-wrapper\">\n <div class=\"eui-user-profile-card__avatar-wrapper\">\n <eui-avatar euiSizeL isFlat>\n <eui-avatar-text *ngIf=\"isShowAvatarInitials; else noAvatarInitials\">\n {{ avatarInitials() }}\n </eui-avatar-text>\n <ng-template #noAvatarInitials>\n <eui-avatar-image *ngIf=\"!avatarUrl\"></eui-avatar-image>\n <eui-avatar-image *ngIf=\"avatarUrl\" [imageUrl]=\"avatarUrl\"></eui-avatar-image>\n </ng-template>\n </eui-avatar>\n </div>\n <div class=\"eui-user-profile-card__userInfos\">\n <div class=\"eui-u-f-xl eui-u-mb-s\">{{
|
281
|
-
}],
|
307
|
+
args: [{ selector: 'eui-user-profile-card', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, standalone: false, template: "<div class=\"eui-user-profile-card__main-wrapper\">\n <div class=\"eui-user-profile-card__avatar-wrapper\">\n <eui-avatar euiSizeL isFlat>\n <eui-avatar-text *ngIf=\"isShowAvatarInitials; else noAvatarInitials\">\n {{ avatarInitials() }}\n </eui-avatar-text>\n <ng-template #noAvatarInitials>\n <eui-avatar-image *ngIf=\"!avatarUrl\"></eui-avatar-image>\n <eui-avatar-image *ngIf=\"avatarUrl\" [imageUrl]=\"avatarUrl\"></eui-avatar-image>\n </ng-template>\n </eui-avatar>\n </div>\n <div class=\"eui-user-profile-card__userInfos\">\n <div class=\"eui-u-f-xl eui-u-mb-s\">{{ fullName().user }}</div>\n <div *ngIf=\"userState().function\" class=\"eui-user-profile-card__userInfos-item\">\n {{ userState().function }}\n </div>\n <div *ngIf=\"userState().organisation && userState().organisation.code\" class=\"eui-user-profile-card__userInfos-item\">\n {{ userState().organisation.code }}\n </div>\n </div>\n <div class=\"eui-user-profile-card__main-wrapper-right-content\">\n <eui-icon-button icon=\"close:outline\" size=\"s\" euiRounded (buttonClick)=\"onClose()\"/>\n <button euiButton euiIconButton euiInfo euiSizeS class=\"eui-u-ml-auto eui-u-mt-m\" tabindex=\"0\" (click)=\"onShowInfoClick()\" title=\"{{ showDetailsLabel }}\">\n <eui-icon-svg icon=\"information:outline\"></eui-icon-svg>\n </button>\n </div>\n</div>\n\n<ng-container *ngIf=\"userState()?.impersonatingUser\">\n <div class=\"eui-user-profile-card__impersonateInfos\">\n <div>{{ fullName()?.impersonated }}</div>\n <div class=\"eui-u-mt-2xs\">{{ impersonateLabel }}</div>\n <div class=\"eui-u-mt-2xs\">\n <strong>{{ fullName().user }}</strong>\n </div>\n </div>\n</ng-container>\n" }]
|
308
|
+
}], propDecorators: { cssClasses: [{
|
282
309
|
type: HostBinding,
|
283
310
|
args: ['class']
|
284
311
|
}], impersonateLabel: [{
|
@@ -290,6 +317,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
290
317
|
}], isShowAvatarInitials: [{
|
291
318
|
type: Input,
|
292
319
|
args: [{ transform: booleanAttribute }]
|
320
|
+
}], reverseNameOrder: [{
|
321
|
+
type: Input
|
293
322
|
}], showProfileInfo: [{
|
294
323
|
type: Output
|
295
324
|
}], closeProfileMenu: [{
|