@eui/components 19.1.2-snapshot-1741266669094 → 19.1.2-snapshot-1741681025211
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/EuiDropdownComponent.html +1 -1
- package/docs/dependencies.html +2 -2
- package/docs/js/search/search_index.js +2 -2
- package/eui-autocomplete/eui-autocomplete.component.d.ts.map +1 -1
- package/eui-dropdown/eui-dropdown.component.d.ts +3 -1
- package/eui-dropdown/eui-dropdown.component.d.ts.map +1 -1
- package/eui-popover/eui-popover.component.d.ts.map +1 -1
- package/externals/eui-editor/eui-editor.component.d.ts +1 -0
- package/externals/eui-editor/eui-editor.component.d.ts.map +1 -1
- package/fesm2022/eui-components-eui-autocomplete.mjs +5 -1
- package/fesm2022/eui-components-eui-autocomplete.mjs.map +1 -1
- package/fesm2022/eui-components-eui-button.mjs +2 -2
- package/fesm2022/eui-components-eui-button.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dropdown.mjs +16 -14
- package/fesm2022/eui-components-eui-dropdown.mjs.map +1 -1
- package/fesm2022/eui-components-eui-popover.mjs +5 -1
- package/fesm2022/eui-components-eui-popover.mjs.map +1 -1
- package/fesm2022/eui-components-externals-eui-editor.mjs +32 -16
- package/fesm2022/eui-components-externals-eui-editor.mjs.map +1 -1
- package/package.json +7 -7
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"eui-components-eui-dropdown.mjs","sources":["../../eui-dropdown/dropdown-item/eui-dropdown-item.component.ts","../../eui-dropdown/dropdown-item/eui-dropdown-item.component.html","../../eui-dropdown/directives/eui-dropdown-content.directive.ts","../../eui-dropdown/animations/open-close.ts","../../eui-dropdown/eui-dropdown.service.ts","../../eui-dropdown/eui-dropdown.component.ts","../../eui-dropdown/eui-dropdown.component.html","../../eui-dropdown/eui-dropdown.module.ts","../../eui-dropdown/eui-components-eui-dropdown.ts"],"sourcesContent":["import {\n Component,\n HostBinding,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n Input,\n ElementRef,\n booleanAttribute,\n} from '@angular/core';\nimport { FocusableOption, Highlightable } from '@angular/cdk/a11y';\n\nimport { EuiDropdownComponent } from '../eui-dropdown.component';\n\n@Component({\n selector: 'eui-dropdown-item, [euiDropdownItem]',\n templateUrl: './eui-dropdown-item.component.html',\n styleUrls: ['../styles/_index.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class EuiDropdownItemComponent implements Highlightable, FocusableOption {\n @Input() subDropdown: EuiDropdownComponent;\n\n @HostBinding('attr.role') role = 'menuitem';\n @HostBinding('class')\n get cssClasses(): string {\n return [\n 'eui-dropdown-item',\n this.isActive ? 'eui-dropdown-item--active' : '',\n this.isFocus ? 'eui-dropdown-item--focused' : '',\n this.subDropdown ? 'eui-dropdown-item--has-subdropdown' : '',\n ]\n .join(' ')\n .trim();\n }\n\n @Input({ transform: booleanAttribute }) isActive: boolean;\n @Input({ transform: booleanAttribute }) isFocus: boolean;\n\n constructor(public elementRef: ElementRef) {}\n\n public setActiveStyles(): void {\n this.isFocus = true;\n }\n\n public setInactiveStyles(): void {\n this.isFocus = false;\n }\n\n public focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n public click(): void {\n this.elementRef.nativeElement.click();\n }\n\n public mouseenter(): void {\n const mouseenterEvent = new Event('mouseenter');\n this.elementRef.nativeElement.dispatchEvent(mouseenterEvent);\n }\n}\n","<div class=\"eui-dropdown-item__container\">\n <div class=\"eui-dropdown-item__content\">\n <div *ngIf=\"subDropdown\" class=\"eui-dropdown-item__content-icon eui-dropdown-item__content-icon--left\">\n <eui-icon-svg icon=\"chevron-back:sharp\" size=\"s\" fillColor=\"neutral\"></eui-icon-svg>\n </div>\n <div class=\"eui-dropdown-item__content-text\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"subDropdown\" class=\"eui-dropdown-item__content-icon eui-dropdown-item__content-icon--right\">\n <eui-icon-svg icon=\"chevron-forward:sharp\" size=\"s\" fillColor=\"neutral\"></eui-icon-svg>\n </div>\n </div>\n</div>\n","import { Directive, HostBinding } from '@angular/core';\n\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: 'eui-dropdown-content', standalone: false })\nexport class EuiDropdownContentDirective {\n @HostBinding('attr.role') role = 'menu';\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport const openClose = trigger('openClose', [\n state(\n 'open',\n style({\n opacity: 1,\n transform: 'scale(1)',\n }),\n ),\n state(\n 'closed',\n style({\n opacity: 0,\n transform: 'scale(0.9)',\n }),\n ),\n transition('closed => open', [animate('50ms 25ms linear')]),\n]);\n","import { EventEmitter, Injectable } from '@angular/core';\n\n@Injectable()\nexport class EuiDropdownService {\n isDropdownOpen = new EventEmitter<boolean>();\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n HostBinding,\n ViewEncapsulation,\n Input,\n OnInit,\n OnDestroy,\n AfterViewInit,\n ViewContainerRef,\n ViewChild,\n TemplateRef,\n ContentChildren,\n QueryList,\n ElementRef,\n Renderer2,\n booleanAttribute,\n EventEmitter,\n Inject,\n PLATFORM_ID,\n Output,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport {\n CdkScrollable,\n ConnectionPositionPair,\n FlexibleConnectedPositionStrategy,\n FlexibleConnectedPositionStrategyOrigin,\n GlobalPositionStrategy,\n Overlay,\n OverlayRef,\n ScrollDispatcher,\n} from '@angular/cdk/overlay';\nimport { BehaviorSubject, fromEvent, Subject, Subscription, takeUntil } from 'rxjs';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { ActiveDescendantKeyManager, Highlightable } from '@angular/cdk/a11y';\n\nimport { openClose } from './animations/open-close';\nimport { EuiDropdownItemComponent } from './dropdown-item/eui-dropdown-item.component';\nimport { EuiDropdownService } from './eui-dropdown.service';\n\n@Component({\n selector: 'eui-dropdown',\n templateUrl: './eui-dropdown.component.html',\n styleUrls: ['./styles/_index.scss'],\n animations: [openClose],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class EuiDropdownComponent implements OnInit, OnDestroy, AfterViewInit {\n @Input() e2eAttr = 'eui-dropdown';\n @Input() tabIndex = -1;\n @Input() width = 'auto';\n @Input() position: 'top' | 'right' | 'bottom' | 'left' = 'bottom';\n @Input() subDropdownPosition: 'right' | 'left' = 'right';\n @Input({ transform: booleanAttribute }) isBlock = false;\n @Input({ transform: booleanAttribute }) isDropDownRightAligned = false;\n @Input({ transform: booleanAttribute }) hasClosedOnClickInside = true;\n @Input({ transform: booleanAttribute }) isLabelUpdatedFromSelectedItem = false;\n @Input({ transform: booleanAttribute }) isExpandOnHover = false;\n @Input({ transform: booleanAttribute }) hasTabNavigation = false;\n @Input({ transform: booleanAttribute }) isRightClickEnabled = false;\n @Input({ transform: booleanAttribute }) euiDisabled = false;\n\n @Output() expand: EventEmitter<boolean> = new EventEmitter();\n\n @ViewChild('templatePortalContent') templatePortalContent: TemplateRef<unknown>;\n @ViewChild('triggerRef') triggerRef: ElementRef<HTMLElement>;\n @ContentChildren(EuiDropdownItemComponent, { descendants: true }) euiDropdownItems: QueryList<Highlightable & EuiDropdownItemComponent>;\n\n public trapFocusAutoCapture = true;\n public parentDropdown: EuiDropdownComponent;\n\n private mousePositionX = 0;\n private mousePositionY = 0;\n private initialScrollX = 0;\n private initialScrollY = 0;\n private originX: 'start' | 'end' | 'center' = 'start';\n private originY: 'top' | 'bottom' | 'center' = 'bottom';\n private overlayX: 'start' | 'end' | 'center' = 'start';\n private overlayY: 'top' | 'bottom' | 'center' = 'top';\n private templatePortal: TemplatePortal;\n private overlayRef: OverlayRef;\n private destroy$ = new Subject<boolean>();\n private isOpen$ = new BehaviorSubject<boolean>(false);\n private scrollDispatcherSubscription = new Subscription();\n private keydownListenerSubscription = new Subscription();\n private euiDropdownItemsEventSubscriptions: Subscription[] = [];\n private activeDescendantKeyManagerChangeSubscription = new Subscription();\n private activeDescendantKeyManager: ActiveDescendantKeyManager<EuiDropdownItemComponent>;\n private origin: HTMLElement;\n private positionStrategy: FlexibleConnectedPositionStrategy;\n private scrollSubscription = new Subscription();\n\n @HostBinding('class')\n get cssClasses(): string {\n return [\n 'eui-dropdown',\n this.isBlock ? 'eui-dropdown--block' : '',\n this.isRightClickEnabled ? 'eui-dropdown--contextual-menu' : '',\n ].join(' ').trim();\n }\n\n constructor(\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private scrollDispatcher: ScrollDispatcher,\n private dropdownService: EuiDropdownService,\n private cd: ChangeDetectorRef,\n protected _renderer: Renderer2,\n @Inject(PLATFORM_ID) protected platformId: unknown,\n @Inject(DOCUMENT) private document: Document,\n ) {\n }\n\n ngOnInit(): void {\n // Currently the `cdkTrapFocusAutoCapture` is only checked once on init.\n if (this.hasDropdownItems) {\n this.trapFocusAutoCapture = false;\n } else {\n this.trapFocusAutoCapture = true;\n }\n\n if (this.hasTabNavigation) {\n this.trapFocusAutoCapture = true;\n this.hasClosedOnClickInside = false;\n }\n\n if (this.isRightClickEnabled) {\n this.hasTabNavigation = false; // UX wise, contextual menu contains only menu items accessible through arrow keys nav\n }\n\n this.setPosition();\n }\n\n ngAfterViewInit(): void {\n this.templatePortal = new TemplatePortal(this.templatePortalContent, this.viewContainerRef);\n\n if(this.triggerRef && this.triggerRef.nativeElement.firstElementChild) {\n this._renderer?.setAttribute(this.triggerRef.nativeElement.firstElementChild, 'aria-haspopup', 'true');\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n this.euiDropdownItemsEventSubscriptions.forEach((euiDropdownItemsEventSubscription) => {\n euiDropdownItemsEventSubscription.unsubscribe();\n });\n this.keydownListenerSubscription.unsubscribe();\n this.scrollDispatcherSubscription.unsubscribe();\n this.activeDescendantKeyManagerChangeSubscription.unsubscribe();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.activeDescendantKeyManager = null;\n this.scrollSubscription.unsubscribe();\n }\n\n /**\n * Whether the eui-dropdown is open.\n *\n * @usageNotes\n * ```html\n * <eui-dropdown #dropdown>\n * <my-component *ngIf=\"dropdown.isOpen\"></my-component>\n * </eui-dropdown>\n * ```\n * @returns A boolean with value `true` when open, otherwise `false`.\n */\n get isOpen(): boolean {\n return this.isOpen$.value;\n }\n\n public onTriggerClicked(e: Event): void {\n if (\n !(e.target as HTMLElement).querySelector('.disabled') &&\n !(e.target as HTMLElement).querySelector(':disabled') &&\n !this.isOpen\n ) {\n if (this.isBlock) {\n this.width = this.triggerRef.nativeElement.offsetWidth + 'px';\n }\n\n this.openDropdown(e.target as HTMLElement);\n this.expand.emit(true);\n e.stopPropagation();\n }\n }\n\n public onTriggerRightClicked(e: Event): void {\n if (\n !(e.target as HTMLElement).querySelector('.disabled') &&\n !(e.target as HTMLElement).querySelector(':disabled') &&\n !this.isOpen\n ) {\n if (this.isBlock) {\n this.width = this.triggerRef.nativeElement.offsetWidth + 'px';\n }\n\n this.mousePositionX = (e as PointerEvent).clientX;\n this.mousePositionY = (e as PointerEvent).clientY;\n if(isPlatformBrowser(this.platformId)) {\n this.initialScrollX = window.pageXOffset;\n this.initialScrollY = window.pageYOffset;\n }\n\n this.openDropdown(e.target as HTMLElement);\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n public onClick(): void {\n if (\n this.hasClosedOnClickInside &&\n !this.activeDescendantKeyManager?.activeItem.subDropdown &&\n !this.activeDescendantKeyManager?.activeItem.elementRef?.nativeElement?.disabled\n ) {\n this.closeDropdown(true);\n }\n }\n\n /**\n * Open a dropdown\n *\n * @param origin Origin of the dropdown position\n */\n public openDropdown(origin: HTMLElement, position?: { x: number, y: number }): void {\n this.origin = origin;\n\n if (position) {\n this.mousePositionX = position.x;\n this.mousePositionY = position.y;\n if(isPlatformBrowser(this.platformId)) {\n this.initialScrollX = window.pageXOffset;\n this.initialScrollY = window.pageYOffset;\n }\n }\n\n if (this.isRightClickEnabled) {\n this.scrollSubscription = fromEvent(window, 'scroll').subscribe((event: Event) => {\n this.overlayRef?.updatePositionStrategy(this.getContextualMenuPositionStrategy());\n });\n }\n\n if (!this.isTriggerFocusableOnClose(origin)) {\n this.origin = origin.closest('button:not([disabled])') || (this.triggerRef.nativeElement.firstChild as HTMLElement);\n\n if (!this.origin) {\n this.origin = origin.closest('a');\n }\n\n if (!this.origin) {\n this.origin = origin;\n }\n }\n\n if (!this.isOpen) {\n this.scrollDispatcherSubscription = this.scrollDispatcher\n .ancestorScrolled(this.origin)\n .pipe(takeUntil(this.destroy$))\n .subscribe((event: CdkScrollable) => {\n if (!this.isVisible(this.origin, event ? event.getElementRef().nativeElement : this.document.querySelector('body'))) {\n this.closeDropdown();\n }\n });\n\n const positionStrategy = this.isRightClickEnabled ? this.getContextualMenuPositionStrategy() : this.getPositionStrategy();\n const scrollStrategy = this.overlay.scrollStrategies.reposition({ scrollThrottle: 10 });\n\n this.overlayRef = this.overlay.create({\n hasBackdrop: false,\n backdropClass: 'eui-dropdown__backdrop',\n panelClass: ['eui-dropdown__panel', this.subDropdownPosition === 'right' ? 'eui-dropdown--subdropdown-position-right' : 'eui-dropdown--subdropdown-position-left'],\n positionStrategy,\n scrollStrategy,\n disposeOnNavigation: true,\n });\n this.overlayRef.attach(this.templatePortal);\n\n if (this.isRightClickEnabled) {\n this.overlayRef?.updatePositionStrategy(this.getContextualMenuPositionStrategy());\n }\n\n this.overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.closeDropdown();\n });\n this.overlayRef\n .backdropClick()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.closeDropdown();\n });\n this.overlayRef\n .keydownEvents()\n .pipe(takeUntil(this.destroy$))\n .subscribe((keyboardEvent) => {\n if (keyboardEvent.key?.toLowerCase() === 'escape') {\n this.closeDropdown();\n }\n });\n\n if (this.hasDropdownItems) {\n this.euiDropdownItems.toArray().forEach((euiDropdownItem, i) => {\n if (this.isExpandOnHover) {\n this.euiDropdownItemsEventSubscriptions[i] = fromEvent(\n euiDropdownItem.elementRef.nativeElement,\n 'mouseenter',\n ).pipe(takeUntil(this.destroy$)).subscribe((e: MouseEvent) => {\n this.activeDescendantKeyManager.setActiveItem(euiDropdownItem);\n if (this.activeDescendantKeyManager.activeItem?.subDropdown) {\n this.activeDescendantKeyManager.activeItem?.subDropdown.setParentDropdown(this);\n this.activeDescendantKeyManager.activeItem?.subDropdown.overlayRef.detachBackdrop();\n this.keydownListenerSubscription.unsubscribe();\n }\n\n const triggerOutsidePointerEvents = (subDropdown: EuiDropdownComponent): void => {\n subDropdown?.overlayRef?._outsidePointerEvents.next(e);\n\n if (subDropdown?.hasDropdownItems) {\n subDropdown.euiDropdownItems.toArray().forEach((s) => {\n triggerOutsidePointerEvents(s.subDropdown);\n });\n }\n };\n\n this.euiDropdownItems\n .filter((item) => !item.isFocus)\n .forEach((euiDropdownItemHavingSubDropdown) => {\n triggerOutsidePointerEvents(euiDropdownItemHavingSubDropdown.subDropdown);\n });\n });\n } else {\n this.euiDropdownItemsEventSubscriptions[i] = fromEvent(\n euiDropdownItem.elementRef.nativeElement,\n 'click',\n ).pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.activeDescendantKeyManager.setActiveItem(euiDropdownItem);\n if (this.activeDescendantKeyManager.activeItem?.subDropdown) {\n this.activeDescendantKeyManager.activeItem?.subDropdown.setParentDropdown(this);\n this.activeDescendantKeyManager.activeItem?.subDropdown.overlayRef.detachBackdrop();\n this.keydownListenerSubscription.unsubscribe();\n }\n\n const labelElement = this.triggerRef.nativeElement.querySelector('button .eui-label');\n if (this.isLabelUpdatedFromSelectedItem && labelElement) {\n (labelElement as HTMLElement).innerText = euiDropdownItem.elementRef.nativeElement.innerText;\n }\n });\n }\n });\n\n this.activeDescendantKeyManager = new ActiveDescendantKeyManager(this.euiDropdownItems)\n .withHomeAndEnd(true)\n .withVerticalOrientation(true)\n .withWrap();\n this.activeDescendantKeyManager.setFirstItemActive();\n }\n\n this.createKeyboardHandlerSubscription();\n this.isOpen$.next(true);\n this.dropdownService.isDropdownOpen.emit(true);\n }\n }\n\n /**\n * Close a dropdown\n */\n public closeDropdown(recursively = false): void {\n this.isOpen$.next(false);\n this.expand.emit(false);\n this.euiDropdownItemsEventSubscriptions.forEach((euiDropdownItemsEventSubscription) => {\n euiDropdownItemsEventSubscription.unsubscribe();\n });\n this.keydownListenerSubscription.unsubscribe();\n if (this.hasDropdownItems) {\n this.activeDescendantKeyManager?.setFirstItemActive();\n }\n this.scrollDispatcherSubscription.unsubscribe();\n this.activeDescendantKeyManagerChangeSubscription.unsubscribe();\n this.scrollSubscription.unsubscribe();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.activeDescendantKeyManager = null;\n if (this.trapFocusAutoCapture) {\n this.origin.focus();\n }\n if (recursively && this.parentDropdown) {\n this.parentDropdown.closeDropdown(true);\n }\n\n this.dropdownService.isDropdownOpen.emit(false);\n }\n\n public projectContentChanged(): void {\n if (!this.isRightClickEnabled) {\n this.positionStrategy = this.getPositionStrategy();\n this.overlayRef.updatePositionStrategy(this.positionStrategy);\n }\n }\n\n public createKeyboardHandlerSubscription(): void {\n this.keydownListenerSubscription = fromEvent(document, 'keydown').subscribe((event: KeyboardEvent) => {\n if (this.isOpen) {\n if (\n event.code === 'Enter' &&\n !this.hasTabNavigation &&\n !this.activeDescendantKeyManager?.activeItem.elementRef?.nativeElement?.disabled\n ) {\n this.activeDescendantKeyManager?.activeItem.focus();\n // eslint-disable-next-line\n this.isExpandOnHover\n ? this.activeDescendantKeyManager?.activeItem.mouseenter()\n : this.activeDescendantKeyManager?.activeItem.click();\n\n if (this.activeDescendantKeyManager?.activeItem.subDropdown) {\n this.activeDescendantKeyManager.activeItem.subDropdown.setParentDropdown(this);\n this.keydownListenerSubscription.unsubscribe();\n } else {\n this.closeDropdown();\n }\n event.preventDefault();\n } else if ((this.subDropdownPosition === 'right' && event.code === 'ArrowLeft') || this.subDropdownPosition === 'left' && event.code === 'ArrowRight') {\n if (this.parentDropdown) {\n this.parentDropdown.createKeyboardHandlerSubscription();\n this.closeDropdown();\n }\n event.preventDefault();\n } else if ((this.subDropdownPosition === 'right' && event.code === 'ArrowRight') || (this.subDropdownPosition === 'left' && event.code === 'ArrowLeft')) {\n if (this.activeDescendantKeyManager?.activeItem.subDropdown) {\n this.activeDescendantKeyManager.activeItem.focus();\n // eslint-disable-next-line\n this.isExpandOnHover\n ? this.activeDescendantKeyManager.activeItem.mouseenter()\n : this.activeDescendantKeyManager.activeItem.click();\n this.activeDescendantKeyManager.activeItem.subDropdown.setParentDropdown(this);\n this.keydownListenerSubscription.unsubscribe();\n }\n event.preventDefault();\n } else if (event.code === 'Tab' && !this.hasTabNavigation) {\n this.closeDropdown(true);\n } else {\n this.activeDescendantKeyManager?.onKeydown(event);\n }\n\n this.cd.markForCheck();\n }\n });\n }\n\n public setParentDropdown(parentDropdown: EuiDropdownComponent): void {\n this.parentDropdown = parentDropdown;\n this.position = this.subDropdownPosition;\n\n this.setPosition();\n\n const positionStrategy = this.getPositionStrategy();\n this.overlayRef.updatePositionStrategy(positionStrategy);\n }\n\n private get hasDropdownItems(): boolean {\n return this.euiDropdownItems?.length > 0;\n }\n\n private getPositionStrategy(): FlexibleConnectedPositionStrategy {\n return this.overlay\n .position()\n .flexibleConnectedTo(this.origin as FlexibleConnectedPositionStrategyOrigin)\n .withPositions([\n new ConnectionPositionPair(\n { originX: this.originX, originY: this.originY },\n { overlayX: this.overlayX, overlayY: this.overlayY },\n ),\n ])\n .withFlexibleDimensions(false)\n .withLockedPosition(true);\n }\n\n private getContextualMenuPositionStrategy(): GlobalPositionStrategy {\n if(isPlatformServer(this.platformId)) {\n throw new Error('getContextualMenuPositionStrategy is not supported on the server');\n }\n const panelHeight = this.overlayRef?.overlayElement.clientHeight || 0;\n const scrollX = window.scrollX || window.pageXOffset;\n const scrollY = window.scrollY || window.pageYOffset;\n const newX = this.mousePositionX + (this.initialScrollX - scrollX);\n const newY = this.mousePositionY + (this.initialScrollY - scrollY);\n const menuBottomPosition = newY + panelHeight;\n const isMenuBelowWindowBottom = menuBottomPosition > window.innerHeight;\n\n const positionStrategy = this.overlay\n .position()\n .global()\n .left(newX + 'px');\n\n if (isMenuBelowWindowBottom) {\n positionStrategy.bottom(window.innerHeight - newY + 'px');\n } else {\n positionStrategy.top(newY + 'px');\n }\n\n return positionStrategy;\n }\n\n private isVisible(origin: HTMLElement, scrollableParent: HTMLElement): boolean {\n const originY = origin.getBoundingClientRect().y;\n const scrollableParentY = Math.abs(scrollableParent.getBoundingClientRect().y);\n const scrollableParentHeight = scrollableParent.getBoundingClientRect().height - 50;\n\n return (\n (originY > 0 && originY < scrollableParentHeight) ||\n (originY - scrollableParentY > 0 && originY < scrollableParentY + scrollableParentHeight)\n );\n }\n\n private isTriggerFocusableOnClose(origin: HTMLElement): boolean {\n return origin.matches('button:not([disabled])') || origin.matches('a');\n }\n\n private setPosition(): void {\n if (this.position === 'top') {\n this.originY = 'top';\n this.overlayY = 'bottom';\n\n if (this.isDropDownRightAligned) {\n this.originX = 'end';\n this.overlayX = 'end';\n }\n }\n if (this.position === 'right') {\n this.originX = 'end';\n this.overlayX = 'start';\n this.overlayY = 'center';\n }\n if (this.position === 'bottom') {\n this.originY = 'bottom';\n this.overlayY = 'top';\n\n if (this.isDropDownRightAligned) {\n this.originX = 'end';\n this.overlayX = 'end';\n }\n }\n if (this.position === 'left') {\n this.originX = 'start';\n this.overlayX = 'end';\n this.overlayY = 'center';\n }\n }\n}\n","<div #triggerRef class=\"eui-dropdown__trigger-container\"\n (click)=\"!isRightClickEnabled ? onTriggerClicked($event) : null\"\n (contextmenu)=\"isRightClickEnabled ? onTriggerRightClicked($event) : null\">\n <ng-content></ng-content>\n</div>\n\n<ng-template #templatePortalContent>\n <div\n attr.data-e2e=\"{{ e2eAttr }}\"\n [@openClose]=\"isOpen ? 'open' : 'closed'\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"trapFocusAutoCapture\"\n role=\"dialog\"\n aria-label=\"eUI dropdown panel\"\n class=\"eui-dropdown__panel-container eui-19\"\n [style.width]=\"width\"\n [tabindex]=\"tabIndex\"\n (click)=\"onClick()\"\n (cdkObserveContent)=\"projectContentChanged()\">\n <ng-content select=\"eui-dropdown-content\"></ng-content>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { EuiIconModule } from '@eui/components/eui-icon';\nimport { ObserversModule } from '@angular/cdk/observers';\n\nimport { EuiDropdownComponent } from './eui-dropdown.component';\nimport { EuiDropdownItemComponent } from './dropdown-item/eui-dropdown-item.component';\nimport { EuiDropdownContentDirective } from './directives/eui-dropdown-content.directive';\nimport { EuiDropdownService } from './eui-dropdown.service';\n\n@NgModule({\n imports: [CommonModule, OverlayModule, ScrollingModule, A11yModule, EuiIconModule, ObserversModule],\n declarations: [EuiDropdownComponent, EuiDropdownItemComponent, EuiDropdownContentDirective],\n exports: [EuiDropdownComponent, EuiDropdownItemComponent, EuiDropdownContentDirective],\n providers: [EuiDropdownService],\n})\nexport class EuiDropdownModule {}\n\n@NgModule({})\nexport class EuiDropdownContentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.EuiDropdownService"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"eui-components-eui-dropdown.mjs","sources":["../../eui-dropdown/dropdown-item/eui-dropdown-item.component.ts","../../eui-dropdown/dropdown-item/eui-dropdown-item.component.html","../../eui-dropdown/directives/eui-dropdown-content.directive.ts","../../eui-dropdown/animations/open-close.ts","../../eui-dropdown/eui-dropdown.service.ts","../../eui-dropdown/eui-dropdown.component.ts","../../eui-dropdown/eui-dropdown.component.html","../../eui-dropdown/eui-dropdown.module.ts","../../eui-dropdown/eui-components-eui-dropdown.ts"],"sourcesContent":["import {\n Component,\n HostBinding,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n Input,\n ElementRef,\n booleanAttribute,\n} from '@angular/core';\nimport { FocusableOption, Highlightable } from '@angular/cdk/a11y';\n\nimport { EuiDropdownComponent } from '../eui-dropdown.component';\n\n@Component({\n selector: 'eui-dropdown-item, [euiDropdownItem]',\n templateUrl: './eui-dropdown-item.component.html',\n styleUrls: ['../styles/_index.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class EuiDropdownItemComponent implements Highlightable, FocusableOption {\n @Input() subDropdown: EuiDropdownComponent;\n\n @HostBinding('attr.role') role = 'menuitem';\n @HostBinding('class')\n get cssClasses(): string {\n return [\n 'eui-dropdown-item',\n this.isActive ? 'eui-dropdown-item--active' : '',\n this.isFocus ? 'eui-dropdown-item--focused' : '',\n this.subDropdown ? 'eui-dropdown-item--has-subdropdown' : '',\n ]\n .join(' ')\n .trim();\n }\n\n @Input({ transform: booleanAttribute }) isActive: boolean;\n @Input({ transform: booleanAttribute }) isFocus: boolean;\n\n constructor(public elementRef: ElementRef) {}\n\n public setActiveStyles(): void {\n this.isFocus = true;\n }\n\n public setInactiveStyles(): void {\n this.isFocus = false;\n }\n\n public focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n public click(): void {\n this.elementRef.nativeElement.click();\n }\n\n public mouseenter(): void {\n const mouseenterEvent = new Event('mouseenter');\n this.elementRef.nativeElement.dispatchEvent(mouseenterEvent);\n }\n}\n","<div class=\"eui-dropdown-item__container\">\n <div class=\"eui-dropdown-item__content\">\n <div *ngIf=\"subDropdown\" class=\"eui-dropdown-item__content-icon eui-dropdown-item__content-icon--left\">\n <eui-icon-svg icon=\"chevron-back:sharp\" size=\"s\" fillColor=\"neutral\"></eui-icon-svg>\n </div>\n <div class=\"eui-dropdown-item__content-text\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"subDropdown\" class=\"eui-dropdown-item__content-icon eui-dropdown-item__content-icon--right\">\n <eui-icon-svg icon=\"chevron-forward:sharp\" size=\"s\" fillColor=\"neutral\"></eui-icon-svg>\n </div>\n </div>\n</div>\n","import { Directive, HostBinding } from '@angular/core';\n\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: 'eui-dropdown-content', standalone: false })\nexport class EuiDropdownContentDirective {\n @HostBinding('attr.role') role = 'menu';\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport const openClose = trigger('openClose', [\n state(\n 'open',\n style({\n opacity: 1,\n transform: 'scale(1)',\n }),\n ),\n state(\n 'closed',\n style({\n opacity: 0,\n transform: 'scale(0.9)',\n }),\n ),\n transition('closed => open', [animate('50ms 25ms linear')]),\n]);\n","import { EventEmitter, Injectable } from '@angular/core';\n\n@Injectable()\nexport class EuiDropdownService {\n isDropdownOpen = new EventEmitter<boolean>();\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n HostBinding,\n ViewEncapsulation,\n Input,\n OnInit,\n OnDestroy,\n AfterViewInit,\n ViewContainerRef,\n ViewChild,\n TemplateRef,\n ContentChildren,\n QueryList,\n ElementRef,\n Renderer2,\n booleanAttribute,\n EventEmitter,\n Inject,\n PLATFORM_ID,\n Output,\n ChangeDetectorRef,\n signal,\n} from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport {\n CdkScrollable,\n ConnectionPositionPair,\n FlexibleConnectedPositionStrategy,\n FlexibleConnectedPositionStrategyOrigin,\n GlobalPositionStrategy,\n Overlay,\n OverlayRef,\n ScrollDispatcher,\n} from '@angular/cdk/overlay';\nimport { fromEvent, Subject, Subscription, takeUntil } from 'rxjs';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { ActiveDescendantKeyManager, Highlightable } from '@angular/cdk/a11y';\n\nimport { openClose } from './animations/open-close';\nimport { EuiDropdownItemComponent } from './dropdown-item/eui-dropdown-item.component';\nimport { EuiDropdownService } from './eui-dropdown.service';\n\n@Component({\n selector: 'eui-dropdown',\n templateUrl: './eui-dropdown.component.html',\n styleUrls: ['./styles/_index.scss'],\n animations: [openClose],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class EuiDropdownComponent implements OnInit, OnDestroy, AfterViewInit {\n @Input() e2eAttr = 'eui-dropdown';\n @Input() tabIndex = -1;\n @Input() width = 'auto';\n @Input() position: 'top' | 'right' | 'bottom' | 'left' = 'bottom';\n @Input() subDropdownPosition: 'right' | 'left' = 'right';\n @Input({ transform: booleanAttribute }) isBlock = false;\n @Input({ transform: booleanAttribute }) isDropDownRightAligned = false;\n @Input({ transform: booleanAttribute }) hasClosedOnClickInside = true;\n @Input({ transform: booleanAttribute }) isLabelUpdatedFromSelectedItem = false;\n @Input({ transform: booleanAttribute }) isExpandOnHover = false;\n @Input({ transform: booleanAttribute }) hasTabNavigation = false;\n @Input({ transform: booleanAttribute }) isRightClickEnabled = false;\n @Input({ transform: booleanAttribute }) euiDisabled = false;\n\n @Output() expand: EventEmitter<boolean> = new EventEmitter();\n\n @ViewChild('templatePortalContent') templatePortalContent: TemplateRef<unknown>;\n @ViewChild('triggerRef') triggerRef: ElementRef<HTMLElement>;\n @ContentChildren(EuiDropdownItemComponent, { descendants: true }) euiDropdownItems: QueryList<Highlightable & EuiDropdownItemComponent>;\n\n public trapFocusAutoCapture = true;\n public parentDropdown: EuiDropdownComponent;\n\n protected isOpened = signal(false);\n private mousePositionX = 0;\n private mousePositionY = 0;\n private initialScrollX = 0;\n private initialScrollY = 0;\n private originX: 'start' | 'end' | 'center' = 'start';\n private originY: 'top' | 'bottom' | 'center' = 'bottom';\n private overlayX: 'start' | 'end' | 'center' = 'start';\n private overlayY: 'top' | 'bottom' | 'center' = 'top';\n private templatePortal: TemplatePortal;\n private overlayRef: OverlayRef;\n private destroy$ = new Subject<boolean>();\n private scrollDispatcherSubscription = new Subscription();\n private keydownListenerSubscription = new Subscription();\n private euiDropdownItemsEventSubscriptions: Subscription[] = [];\n private activeDescendantKeyManagerChangeSubscription = new Subscription();\n private activeDescendantKeyManager: ActiveDescendantKeyManager<EuiDropdownItemComponent>;\n private origin: HTMLElement;\n private positionStrategy: FlexibleConnectedPositionStrategy;\n private scrollSubscription = new Subscription();\n\n @HostBinding('class')\n get cssClasses(): string {\n return [\n 'eui-dropdown',\n this.isBlock ? 'eui-dropdown--block' : '',\n this.isRightClickEnabled ? 'eui-dropdown--contextual-menu' : '',\n ].join(' ').trim();\n }\n\n constructor(\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private scrollDispatcher: ScrollDispatcher,\n private dropdownService: EuiDropdownService,\n private cd: ChangeDetectorRef,\n protected _renderer: Renderer2,\n @Inject(PLATFORM_ID) protected platformId: unknown,\n @Inject(DOCUMENT) private document: Document,\n ) {\n }\n\n ngOnInit(): void {\n // Currently the `cdkTrapFocusAutoCapture` is only checked once on init.\n if (this.hasDropdownItems) {\n this.trapFocusAutoCapture = false;\n } else {\n this.trapFocusAutoCapture = true;\n }\n\n if (this.hasTabNavigation) {\n this.trapFocusAutoCapture = true;\n this.hasClosedOnClickInside = false;\n }\n\n if (this.isRightClickEnabled) {\n this.hasTabNavigation = false; // UX wise, contextual menu contains only menu items accessible through arrow keys nav\n }\n\n this.setPosition();\n }\n\n ngAfterViewInit(): void {\n this.templatePortal = new TemplatePortal(this.templatePortalContent, this.viewContainerRef);\n\n if(this.triggerRef && this.triggerRef.nativeElement.firstElementChild) {\n this._renderer?.setAttribute(this.triggerRef.nativeElement.firstElementChild, 'aria-haspopup', 'true');\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n this.euiDropdownItemsEventSubscriptions.forEach((euiDropdownItemsEventSubscription) => {\n euiDropdownItemsEventSubscription.unsubscribe();\n });\n this.keydownListenerSubscription.unsubscribe();\n this.scrollDispatcherSubscription.unsubscribe();\n this.activeDescendantKeyManagerChangeSubscription.unsubscribe();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.activeDescendantKeyManager = null;\n this.scrollSubscription.unsubscribe();\n }\n\n /**\n * Whether the eui-dropdown is open.\n *\n * @deprecated This property will be removed in the future. Use `isOpened` signal instead.\n *\n * @usageNotes\n * ```html\n * <eui-dropdown #dropdown>\n * <my-component *ngIf=\"dropdown.isOpen\"></my-component>\n * </eui-dropdown>\n * ```\n * @returns A boolean with value `true` when open, otherwise `false`.\n */\n get isOpen(): boolean {\n return this.isOpened();\n }\n\n public onTriggerClicked(e: Event): void {\n if (\n !(e.target as HTMLElement).querySelector('.disabled') &&\n !(e.target as HTMLElement).querySelector(':disabled') &&\n !this.isOpened()\n ) {\n if (this.isBlock) {\n this.width = this.triggerRef.nativeElement.offsetWidth + 'px';\n }\n\n this.openDropdown(e.target as HTMLElement);\n this.expand.emit(true);\n e.stopPropagation();\n }\n }\n\n public onTriggerRightClicked(e: Event): void {\n if (\n !(e.target as HTMLElement).querySelector('.disabled') &&\n !(e.target as HTMLElement).querySelector(':disabled') &&\n !this.isOpened()\n ) {\n if (this.isBlock) {\n this.width = this.triggerRef.nativeElement.offsetWidth + 'px';\n }\n\n this.mousePositionX = (e as PointerEvent).clientX;\n this.mousePositionY = (e as PointerEvent).clientY;\n if(isPlatformBrowser(this.platformId)) {\n this.initialScrollX = window.pageXOffset;\n this.initialScrollY = window.pageYOffset;\n }\n\n this.openDropdown(e.target as HTMLElement);\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n public onClick(): void {\n if (\n this.hasClosedOnClickInside &&\n !this.activeDescendantKeyManager?.activeItem.subDropdown &&\n !this.activeDescendantKeyManager?.activeItem.elementRef?.nativeElement?.disabled\n ) {\n this.closeDropdown(true);\n }\n }\n\n /**\n * Open a dropdown\n *\n * @param origin Origin of the dropdown position\n */\n public openDropdown(origin: HTMLElement, position?: { x: number, y: number }): void {\n this.origin = origin;\n\n if (position) {\n this.mousePositionX = position.x;\n this.mousePositionY = position.y;\n if(isPlatformBrowser(this.platformId)) {\n this.initialScrollX = window.pageXOffset;\n this.initialScrollY = window.pageYOffset;\n }\n }\n\n if (this.isRightClickEnabled) {\n this.scrollSubscription = fromEvent(window, 'scroll').subscribe((event: Event) => {\n this.overlayRef?.updatePositionStrategy(this.getContextualMenuPositionStrategy());\n });\n }\n\n if (!this.isTriggerFocusableOnClose(origin)) {\n this.origin = origin.closest('button:not([disabled])') || (this.triggerRef.nativeElement.firstChild as HTMLElement);\n\n if (!this.origin) {\n this.origin = origin.closest('a');\n }\n\n if (!this.origin) {\n this.origin = origin;\n }\n }\n\n if (!this.isOpened()) {\n this.scrollDispatcherSubscription = this.scrollDispatcher\n .ancestorScrolled(this.origin)\n .pipe(takeUntil(this.destroy$))\n .subscribe((event: CdkScrollable) => {\n if (!this.isVisible(this.origin, event ? event.getElementRef().nativeElement : this.document.querySelector('body'))) {\n this.closeDropdown();\n }\n });\n\n const positionStrategy = this.isRightClickEnabled ? this.getContextualMenuPositionStrategy() : this.getPositionStrategy();\n const scrollStrategy = this.overlay.scrollStrategies.reposition({ scrollThrottle: 10 });\n\n this.overlayRef = this.overlay.create({\n hasBackdrop: false,\n backdropClass: 'eui-dropdown__backdrop',\n panelClass: ['eui-dropdown__panel', this.subDropdownPosition === 'right' ? 'eui-dropdown--subdropdown-position-right' : 'eui-dropdown--subdropdown-position-left'],\n positionStrategy,\n scrollStrategy,\n disposeOnNavigation: true,\n });\n this.overlayRef.attach(this.templatePortal);\n\n if (this.isRightClickEnabled) {\n this.overlayRef?.updatePositionStrategy(this.getContextualMenuPositionStrategy());\n }\n\n this.overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.closeDropdown();\n });\n this.overlayRef\n .backdropClick()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.closeDropdown();\n });\n this.overlayRef\n .keydownEvents()\n .pipe(takeUntil(this.destroy$))\n .subscribe((keyboardEvent) => {\n if (keyboardEvent.key?.toLowerCase() === 'escape') {\n this.closeDropdown();\n }\n });\n\n if (this.hasDropdownItems) {\n this.euiDropdownItems.toArray().forEach((euiDropdownItem, i) => {\n if (this.isExpandOnHover) {\n this.euiDropdownItemsEventSubscriptions[i] = fromEvent(\n euiDropdownItem.elementRef.nativeElement,\n 'mouseenter',\n ).pipe(takeUntil(this.destroy$)).subscribe((e: MouseEvent) => {\n this.activeDescendantKeyManager.setActiveItem(euiDropdownItem);\n if (this.activeDescendantKeyManager.activeItem?.subDropdown) {\n this.activeDescendantKeyManager.activeItem?.subDropdown.setParentDropdown(this);\n this.activeDescendantKeyManager.activeItem?.subDropdown.overlayRef.detachBackdrop();\n this.keydownListenerSubscription.unsubscribe();\n }\n\n const triggerOutsidePointerEvents = (subDropdown: EuiDropdownComponent): void => {\n subDropdown?.overlayRef?._outsidePointerEvents.next(e);\n\n if (subDropdown?.hasDropdownItems) {\n subDropdown.euiDropdownItems.toArray().forEach((s) => {\n triggerOutsidePointerEvents(s.subDropdown);\n });\n }\n };\n\n this.euiDropdownItems\n .filter((item) => !item.isFocus)\n .forEach((euiDropdownItemHavingSubDropdown) => {\n triggerOutsidePointerEvents(euiDropdownItemHavingSubDropdown.subDropdown);\n });\n });\n } else {\n this.euiDropdownItemsEventSubscriptions[i] = fromEvent(\n euiDropdownItem.elementRef.nativeElement,\n 'click',\n ).pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.activeDescendantKeyManager.setActiveItem(euiDropdownItem);\n if (this.activeDescendantKeyManager.activeItem?.subDropdown) {\n this.activeDescendantKeyManager.activeItem?.subDropdown.setParentDropdown(this);\n this.activeDescendantKeyManager.activeItem?.subDropdown.overlayRef.detachBackdrop();\n this.keydownListenerSubscription.unsubscribe();\n }\n\n const labelElement = this.triggerRef.nativeElement.querySelector('button .eui-label');\n if (this.isLabelUpdatedFromSelectedItem && labelElement) {\n (labelElement as HTMLElement).innerText = euiDropdownItem.elementRef.nativeElement.innerText;\n }\n });\n }\n });\n\n this.activeDescendantKeyManager = new ActiveDescendantKeyManager(this.euiDropdownItems)\n .withHomeAndEnd(true)\n .withVerticalOrientation(true)\n .withWrap();\n this.activeDescendantKeyManager.setFirstItemActive();\n }\n\n this.createKeyboardHandlerSubscription();\n this.isOpened.set(true);\n this.dropdownService.isDropdownOpen.emit(true);\n }\n }\n\n /**\n * Close a dropdown\n */\n public closeDropdown(recursively = false): void {\n this.isOpened.set(false);\n this.expand.emit(false);\n this.euiDropdownItemsEventSubscriptions.forEach((euiDropdownItemsEventSubscription) => {\n euiDropdownItemsEventSubscription.unsubscribe();\n });\n this.keydownListenerSubscription.unsubscribe();\n if (this.hasDropdownItems) {\n this.activeDescendantKeyManager?.setFirstItemActive();\n }\n this.scrollDispatcherSubscription.unsubscribe();\n this.activeDescendantKeyManagerChangeSubscription.unsubscribe();\n this.scrollSubscription.unsubscribe();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.activeDescendantKeyManager = null;\n if (this.trapFocusAutoCapture) {\n this.origin.focus();\n }\n if (recursively && this.parentDropdown) {\n this.parentDropdown.closeDropdown(true);\n }\n\n this.dropdownService.isDropdownOpen.emit(false);\n }\n\n public projectContentChanged(): void {\n if (!this.isRightClickEnabled) {\n this.positionStrategy = this.getPositionStrategy();\n this.overlayRef.updatePositionStrategy(this.positionStrategy);\n }\n }\n\n public createKeyboardHandlerSubscription(): void {\n this.keydownListenerSubscription = fromEvent(document, 'keydown').subscribe((event: KeyboardEvent) => {\n if (this.isOpened()) {\n if (\n event.code === 'Enter' &&\n !this.hasTabNavigation &&\n !this.activeDescendantKeyManager?.activeItem.elementRef?.nativeElement?.disabled\n ) {\n this.activeDescendantKeyManager?.activeItem.focus();\n // eslint-disable-next-line\n this.isExpandOnHover\n ? this.activeDescendantKeyManager?.activeItem.mouseenter()\n : this.activeDescendantKeyManager?.activeItem.click();\n\n if (this.activeDescendantKeyManager?.activeItem.subDropdown) {\n this.activeDescendantKeyManager.activeItem.subDropdown.setParentDropdown(this);\n this.keydownListenerSubscription.unsubscribe();\n } else {\n this.closeDropdown();\n }\n event.preventDefault();\n } else if ((this.subDropdownPosition === 'right' && event.code === 'ArrowLeft') || this.subDropdownPosition === 'left' && event.code === 'ArrowRight') {\n if (this.parentDropdown) {\n this.parentDropdown.createKeyboardHandlerSubscription();\n this.closeDropdown();\n }\n event.preventDefault();\n } else if ((this.subDropdownPosition === 'right' && event.code === 'ArrowRight') || (this.subDropdownPosition === 'left' && event.code === 'ArrowLeft')) {\n if (this.activeDescendantKeyManager?.activeItem.subDropdown) {\n this.activeDescendantKeyManager.activeItem.focus();\n // eslint-disable-next-line\n this.isExpandOnHover\n ? this.activeDescendantKeyManager.activeItem.mouseenter()\n : this.activeDescendantKeyManager.activeItem.click();\n this.activeDescendantKeyManager.activeItem.subDropdown.setParentDropdown(this);\n this.keydownListenerSubscription.unsubscribe();\n }\n event.preventDefault();\n } else if (event.code === 'Tab' && !this.hasTabNavigation) {\n this.closeDropdown(true);\n } else {\n this.activeDescendantKeyManager?.onKeydown(event);\n }\n\n this.cd.markForCheck();\n }\n });\n }\n\n public setParentDropdown(parentDropdown: EuiDropdownComponent): void {\n this.parentDropdown = parentDropdown;\n this.position = this.subDropdownPosition;\n\n this.setPosition();\n\n const positionStrategy = this.getPositionStrategy();\n this.overlayRef.updatePositionStrategy(positionStrategy);\n }\n\n private get hasDropdownItems(): boolean {\n return this.euiDropdownItems?.length > 0;\n }\n\n private getPositionStrategy(): FlexibleConnectedPositionStrategy {\n return this.overlay\n .position()\n .flexibleConnectedTo(this.origin as FlexibleConnectedPositionStrategyOrigin)\n .withPositions([\n new ConnectionPositionPair(\n { originX: this.originX, originY: this.originY },\n { overlayX: this.overlayX, overlayY: this.overlayY },\n ),\n ])\n .withFlexibleDimensions(false)\n .withLockedPosition(true);\n }\n\n private getContextualMenuPositionStrategy(): GlobalPositionStrategy {\n if(isPlatformServer(this.platformId)) {\n throw new Error('getContextualMenuPositionStrategy is not supported on the server');\n }\n const panelHeight = this.overlayRef?.overlayElement.clientHeight || 0;\n const scrollX = window.scrollX || window.pageXOffset;\n const scrollY = window.scrollY || window.pageYOffset;\n const newX = this.mousePositionX + (this.initialScrollX - scrollX);\n const newY = this.mousePositionY + (this.initialScrollY - scrollY);\n const menuBottomPosition = newY + panelHeight;\n const isMenuBelowWindowBottom = menuBottomPosition > window.innerHeight;\n\n const positionStrategy = this.overlay\n .position()\n .global()\n .left(newX + 'px');\n\n if (isMenuBelowWindowBottom) {\n positionStrategy.bottom(window.innerHeight - newY + 'px');\n } else {\n positionStrategy.top(newY + 'px');\n }\n\n return positionStrategy;\n }\n\n private isVisible(origin: HTMLElement, scrollableParent: HTMLElement): boolean {\n const originY = origin.getBoundingClientRect().y;\n const scrollableParentY = Math.abs(scrollableParent.getBoundingClientRect().y);\n const scrollableParentHeight = scrollableParent.getBoundingClientRect().height - 50;\n\n return (\n (originY > 0 && originY < scrollableParentHeight) ||\n (originY - scrollableParentY > 0 && originY < scrollableParentY + scrollableParentHeight)\n );\n }\n\n private isTriggerFocusableOnClose(origin: HTMLElement): boolean {\n return origin.matches('button:not([disabled])') || origin.matches('a');\n }\n\n private setPosition(): void {\n if (this.position === 'top') {\n this.originY = 'top';\n this.overlayY = 'bottom';\n\n if (this.isDropDownRightAligned) {\n this.originX = 'end';\n this.overlayX = 'end';\n }\n }\n if (this.position === 'right') {\n this.originX = 'end';\n this.overlayX = 'start';\n this.overlayY = 'center';\n }\n if (this.position === 'bottom') {\n this.originY = 'bottom';\n this.overlayY = 'top';\n\n if (this.isDropDownRightAligned) {\n this.originX = 'end';\n this.overlayX = 'end';\n }\n }\n if (this.position === 'left') {\n this.originX = 'start';\n this.overlayX = 'end';\n this.overlayY = 'center';\n }\n }\n}\n","<div #triggerRef class=\"eui-dropdown__trigger-container\"\n (click)=\"!isRightClickEnabled ? onTriggerClicked($event) : null\"\n (contextmenu)=\"isRightClickEnabled ? onTriggerRightClicked($event) : null\">\n <ng-content></ng-content>\n</div>\n\n<ng-template #templatePortalContent>\n <div\n attr.data-e2e=\"{{ e2eAttr }}\"\n [@openClose]=\"isOpened() ? 'open' : 'closed'\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"trapFocusAutoCapture\"\n role=\"dialog\"\n aria-label=\"eUI dropdown panel\"\n class=\"eui-dropdown__panel-container eui-19\"\n [style.width]=\"width\"\n [tabindex]=\"tabIndex\"\n (click)=\"onClick()\"\n (cdkObserveContent)=\"projectContentChanged()\">\n <ng-content select=\"eui-dropdown-content\"></ng-content>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { EuiIconModule } from '@eui/components/eui-icon';\nimport { ObserversModule } from '@angular/cdk/observers';\n\nimport { EuiDropdownComponent } from './eui-dropdown.component';\nimport { EuiDropdownItemComponent } from './dropdown-item/eui-dropdown-item.component';\nimport { EuiDropdownContentDirective } from './directives/eui-dropdown-content.directive';\nimport { EuiDropdownService } from './eui-dropdown.service';\n\n@NgModule({\n imports: [CommonModule, OverlayModule, ScrollingModule, A11yModule, EuiIconModule, ObserversModule],\n declarations: [EuiDropdownComponent, EuiDropdownItemComponent, EuiDropdownContentDirective],\n exports: [EuiDropdownComponent, EuiDropdownItemComponent, EuiDropdownContentDirective],\n providers: [EuiDropdownService],\n})\nexport class EuiDropdownModule {}\n\n@NgModule({})\nexport class EuiDropdownContentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.EuiDropdownService"],"mappings":"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"}
|
@@ -319,7 +319,11 @@ class EuiPopoverComponent {
|
|
319
319
|
panelClass: this.baseStatesDirective.getCssClasses('eui-popover').split(' '),
|
320
320
|
});
|
321
321
|
this.overlayRef.attach(this.templatePortal);
|
322
|
-
document.
|
322
|
+
document.querySelectorAll('.cdk-overlay-container')?.forEach(el => {
|
323
|
+
if (!el.classList.contains('eui-19')) {
|
324
|
+
el.classList.add('eui-19');
|
325
|
+
}
|
326
|
+
});
|
323
327
|
this.positionStrategy = positionStrategy;
|
324
328
|
this.positionStrategyUpdate$.next();
|
325
329
|
this.overlayRef
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"eui-components-eui-popover.mjs","sources":["../../eui-popover/models/eui-popover-position.model.ts","../../eui-popover/directives/eui-popover-arrow-position.directive.ts","../../eui-popover/eui-popover.component.ts","../../eui-popover/eui-popover.component.html","../../eui-popover/eui-popover.module.ts","../../eui-popover/eui-components-eui-popover.ts"],"sourcesContent":["import { ConnectedOverlayPositionChange, ConnectionPositionPair } from '@angular/cdk/overlay';\n\n/**\n * Represents the four possible positions for a popover element.\n */\nexport type EuiPopoverPosition = 'top' | 'right' | 'bottom' | 'left';\n\n/**\n * Position configuration for a popover appearing above its origin element.\n * Centers the popover horizontally relative to the origin.\n */\nexport const TOP = new ConnectionPositionPair(\n { originX: 'center', originY: 'top' },\n { overlayX: 'center', overlayY: 'bottom' },\n 0, 0,\n ['eui-popover-position', 'eui-popover-position--top'],\n);\n\n/**\n * Position configuration for a popover appearing below its origin element.\n * Centers the popover horizontally relative to the origin.\n */\nexport const BOTTOM = new ConnectionPositionPair(\n { originX: 'center', originY: 'bottom' },\n { overlayX: 'center', overlayY: 'top' },\n 0, 0,\n ['eui-popover-position', 'eui-popover-position--bottom'],\n);\n\n/**\n * Position configuration for a popover appearing to the left of its origin element.\n * Centers the popover vertically relative to the origin.\n */\nexport const LEFT = new ConnectionPositionPair(\n { originX: 'start', originY: 'center' },\n { overlayX: 'end', overlayY: 'center' },\n 0, 0,\n ['eui-popover-position', 'eui-popover-position--left'],\n);\n\n/**\n * Position configuration for a popover appearing to the right of its origin element.\n * Centers the popover vertically relative to the origin.\n */\nexport const RIGHT = new ConnectionPositionPair(\n { originX: 'end', originY: 'center' },\n { overlayX: 'start', overlayY: 'center' },\n 0, 0,\n ['eui-popover-position', 'eui-popover-position--right'],\n);\n\n/**\n * Converts a ConnectedOverlayPositionChange object to an EuiPopoverPosition string.\n * Used to determine which predefined position the overlay has settled on.\n *\n * @param connectionPair - The position change event from the CDK overlay\n * @returns The string representation of the popover position ('top', 'right', 'bottom', 'left')\n */\nexport const getPosition = ({ connectionPair }: ConnectedOverlayPositionChange): EuiPopoverPosition => {\n switch (connectionPair) {\n case TOP:\n return 'top';\n case BOTTOM:\n return 'bottom';\n case LEFT:\n return 'left';\n case RIGHT:\n return 'right';\n }\n};\n","import { DOCUMENT } from '@angular/common';\nimport { Directive, ElementRef, Inject, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { Observable, Subject, takeUntil } from 'rxjs';\n\nimport { EuiPopoverPosition } from '../models/eui-popover-position.model';\n\n/**\n * @description\n * Directive that positions an arrow element for a popover relative to its origin element.\n *\n * This directive calculates and applies the appropriate positioning style to ensure\n * the arrow correctly points to the origin element regardless of the popover's position.\n * It adjusts arrow placement dynamically based on the position strategy ('top', 'bottom',\n * 'left', or 'right') and the dimensions and position of the origin element.\n *\n * @example\n * // Basic usage in an arrow element inside a popover:\n * <div class=\"popover-arrow\"\n * [euiPopoverArrowPosition]=\"positionAndRect$\">\n * </div>\n *\n * @example\n * // In the component class:\n * // Position and rect as an Observable\n * positionAndRect$ = new BehaviorSubject<[EuiPopoverPosition, DOMRect]>(['bottom', originRect]);\n *\n * // Update when position changes\n * updatePosition(position: EuiPopoverPosition, rect: DOMRect) {\n * this.positionAndRect$.next([position, rect]);\n * }\n */\n@Directive({\n selector: '[euiPopoverArrowPosition]',\n standalone: false,\n})\nexport class EuiPopoverArrowPositionDirective implements OnInit, OnDestroy {\n /**\n * Observable that emits a tuple containing the popover position strategy\n * and the DOMRect of the origin element.\n *\n * The directive uses this information to calculate the appropriate\n * position for the arrow element.\n */\n @Input('euiPopoverArrowPosition')\n public position$: Observable<[EuiPopoverPosition, DOMRect]>;\n\n private destroy$: Subject<void> = new Subject();\n\n constructor(\n private renderer: Renderer2,\n private elementRef: ElementRef,\n @Inject(DOCUMENT) private document: Document,\n ) {}\n\n ngOnInit(): void {\n this.position$.pipe(takeUntil(this.destroy$)).subscribe(([position, originRect]) => {\n this.renderer.setProperty(this.elementRef.nativeElement, 'style', this.getStyle(position, originRect));\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private getStyle(position: EuiPopoverPosition, originRect: DOMRect): string {\n const arrowRect: DOMRect = this.elementRef.nativeElement.getBoundingClientRect();\n\n if (position === 'left' || position === 'right') {\n const verticalDiff: number =\n Math.floor(arrowRect.top + arrowRect.height / 2) - Math.floor(originRect.top + originRect.height / 2);\n\n if (verticalDiff > 0) {\n return `top: ${originRect.top + originRect.height / 2}px`;\n } else if (verticalDiff < 0) {\n return `top: unset; bottom: ${\n this.document.body.clientHeight - originRect.bottom + originRect.height / 2 - arrowRect.height\n }px`;\n }\n }\n if (position === 'top' || position === 'bottom') {\n const horizontalDiff: number =\n Math.floor(arrowRect.left + arrowRect.width / 2) - Math.floor(originRect.left + originRect.width / 2);\n\n if (horizontalDiff > 0) {\n return `left: ${originRect.left + originRect.width / 2}px`;\n } else if (horizontalDiff < 0) {\n return `left: unset; right: ${\n this.document.body.clientWidth - originRect.right + originRect.width / 2 - arrowRect.width\n }px`;\n }\n }\n return '';\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n Input,\n ViewChild,\n TemplateRef,\n ViewContainerRef,\n AfterViewInit,\n OnDestroy,\n OnInit,\n Output,\n EventEmitter,\n ElementRef,\n OnChanges,\n SimpleChanges,\n booleanAttribute,\n} from '@angular/core';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n Overlay,\n OverlayRef,\n ConnectionPositionPair,\n FlexibleConnectedPositionStrategyOrigin,\n ScrollDispatcher,\n CdkScrollable,\n FlexibleConnectedPositionStrategy,\n} from '@angular/cdk/overlay';\nimport { BehaviorSubject, Observable, Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { BaseStatesDirective } from '@eui/components/shared';\n\nimport { EuiPopoverPosition, BOTTOM, LEFT, RIGHT, TOP, getPosition } from './models/eui-popover-position.model';\n\n/**\n * @description\n * A flexible popover component that displays content in an overlay positioned relative to an origin element.\n *\n * The popover can be positioned at four different positions (top, right, bottom, left) relative to the\n * origin element, with automatic fallback positions if the preferred position doesn't fit in the viewport.\n * It supports various visual styles, dismissal behaviors, and size variants.\n *\n * @example\n * // Basic usage with a trigger element:\n * <button #triggerButton (click)=\"popover.openPopover(triggerButton)\">Open Popover</button>\n * <eui-popover #popover>\n * <div>Popover content</div>\n * </eui-popover>\n *\n * @example\n * // With custom configuration:\n * <eui-popover\n * position=\"right\"\n * type=\"colored-header\"\n * [hasBackDrop]=\"true\"\n * [hasCloseButton]=\"false\"\n * (popoverOpen)=\"onPopoverOpen()\"\n * title=\"Popover Title\">\n * <div>Popover content</div>\n * </eui-popover>\n */\n@Component({\n selector: 'eui-popover',\n templateUrl: './eui-popover.component.html',\n styleUrls: ['./styles/_index.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n hostDirectives: [\n {\n directive: BaseStatesDirective,\n inputs: [\n 'euiSizeS',\n 'euiSizeM',\n 'euiSizeL',\n 'euiSizeXL',\n 'euiSize2XL',\n 'euiSizeAuto',\n 'euiSizeVariant',\n ],\n },\n ],\n})\nexport class EuiPopoverComponent implements AfterViewInit, OnDestroy, OnInit, OnChanges {\n /**\n * Optional title text to display in the popover header.\n * When provided, adds a title element at the top of the popover content.\n */\n @Input() title: string;\n\n /**\n * Determines the preferred placement of the popover relative to its origin element.\n * The component will attempt to use this position first, falling back to alternatives\n * if there's not enough space in the viewport.\n *\n * @default 'bottom'\n */\n @Input() position: EuiPopoverPosition = 'bottom';\n\n /**\n * Visual styling variant for the popover.\n * - 'default': Standard popover with subtle border and drop shadow\n * - 'flat': Popover without shadows, using only border for definition\n * - 'colored-header': Popover with an accent-colored header area\n * - 'colored-solid': Popover with accent color applied to the entire component\n *\n * @default 'default'\n */\n @Input() type: 'default' | 'flat' | 'colored-header' | 'colored-solid' = 'default';\n\n /**\n * Custom width for the popover.\n * Can be specified in any valid CSS unit (px, %, em, etc).\n * When null, the popover width is determined by its content.\n *\n * @default null\n */\n @Input() width: string = null;\n\n /**\n * Whether to show a semi-transparent backdrop behind the popover.\n * When true, creates a visual overlay that dims the rest of the UI.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) hasBackDrop = false;\n\n /**\n * Whether to show a close button in the top-right corner of the popover.\n * When clicked, the close button will dismiss the popover.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) hasCloseButton = true;\n\n /**\n * Whether the popover can be dismissed by clicking outside its boundaries.\n * When false, the popover will remain open until explicitly closed via code\n * or by clicking the close button (if available).\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) isDismissable = true;\n\n /**\n * Event emitted when a click occurs outside the popover boundaries.\n * Only emitted when isDismissable is true.\n */\n @Output() outsideClick = new EventEmitter();\n\n /**\n * Event emitted when the popover is opened.\n * Fires after the popover content has been attached to the DOM and positioned.\n */\n @Output() popoverOpen = new EventEmitter();\n\n /**\n * Event emitted when the popover is closed.\n * Fires after the popover content has been removed from the DOM.\n */\n @Output() popoverClose = new EventEmitter();\n\n public position$: Observable<[EuiPopoverPosition, DOMRect]>;\n\n @ViewChild('templatePortalContent') templatePortalContent: TemplateRef<unknown>;\n\n private templatePortal: TemplatePortal;\n private overlayRef: OverlayRef;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private isOpen$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n private scrollDispatcherSubscription = new Subscription();\n private origin: ElementRef;\n private preferredPositons: ConnectionPositionPair[] = [BOTTOM, TOP, LEFT, RIGHT];\n private positionStrategy: FlexibleConnectedPositionStrategy;\n private positionStrategyUpdate$: Subject<void> = new Subject();\n\n constructor(private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private scrollDispatcher: ScrollDispatcher,\n private baseStatesDirective: BaseStatesDirective){\n }\n\n ngOnChanges(c: SimpleChanges): void {\n if (this.position === 'top') {\n this.preferredPositons = [TOP, BOTTOM, LEFT, RIGHT];\n } else if (this.position === 'right') {\n this.preferredPositons = [RIGHT, LEFT, TOP, BOTTOM];\n } else if (this.position === 'left') {\n this.preferredPositons = [LEFT, RIGHT, TOP, BOTTOM];\n } else {\n this.preferredPositons = [BOTTOM, TOP, LEFT, RIGHT];\n }\n }\n\n ngOnInit(): void {\n this.setPositionStream();\n }\n\n ngAfterViewInit(): void {\n this.templatePortal = new TemplatePortal(this.templatePortalContent, this.viewContainerRef);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n this.scrollDispatcherSubscription.unsubscribe();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n\n /**\n * Whether the eui-popover is open.\n *\n * @usageNotes\n * ```html\n * <eui-popover #popover>\n * @if (popover.isOpen) {\n * <my-component></my-component>\n * }\n * </eui-popover>\n * ```\n * @returns A boolean with value `true` when open, otherwise `false`.\n */\n get isOpen(): boolean {\n return this.isOpen$.value;\n }\n\n /**\n * Updates the position strategy when content changes.\n * Recalculates and updates the overlay position to handle content size changes.\n */\n public onContentChange(): void {\n this.positionStrategy = this.getPositionStrategy();\n this.positionStrategyUpdate$.next();\n this.overlayRef.updatePositionStrategy(this.positionStrategy);\n }\n\n /**\n * Opens the popover relative to the provided origin element.\n * Sets up scroll monitoring, position strategy, and attaches the popover content to the overlay.\n * Emits the popoverOpen event when complete.\n *\n * @param origin - Reference to the element that triggers the popover\n */\n public openPopover(origin: ElementRef): void {\n if (!this.isOpen) {\n this.scrollDispatcherSubscription = this.scrollDispatcher.ancestorScrolled(origin).subscribe((event: CdkScrollable) => {\n const scrollableParent = event ? event.getElementRef().nativeElement : document.querySelector('body');\n if (!this.isVisible(origin as unknown as HTMLElement, scrollableParent)) {\n this.closePopover();\n }\n });\n\n this.origin = origin;\n const positionStrategy = this.getPositionStrategy();\n\n const scrollStrategy = this.overlay.scrollStrategies.reposition({ scrollThrottle: 10 });\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy,\n disposeOnNavigation: true,\n width: this.width,\n panelClass: this.baseStatesDirective.getCssClasses('eui-popover').split(' '),\n });\n this.overlayRef.attach(this.templatePortal);\n\n document.querySelector('.cdk-overlay-container')?.classList.add('eui-19');\n\n this.positionStrategy = positionStrategy;\n this.positionStrategyUpdate$.next();\n\n this.overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n if (this.isDismissable) {\n this.outsideClick.emit();\n this.closePopover();\n }\n });\n\n this.isOpen$.next(true);\n this.popoverOpen.emit();\n }\n }\n\n /**\n * Closes the popover.\n * Cleans up subscriptions, disposes the overlay, and emits the popoverClose event.\n */\n public closePopover(): void {\n this.scrollDispatcherSubscription.unsubscribe();\n this.overlayRef.dispose();\n this.overlayRef = null;\n this.isOpen$.next(false);\n this.popoverClose.emit();\n }\n\n /**\n * Handles keyboard events to allow closing the popover with the Escape key.\n * Can be used as an alternative to the close button or when hasCloseButton is false.\n *\n * @param event - The keyboard event\n */\n public onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n this.closePopover();\n }\n }\n\n /**\n * Checks whether the origin element is currently visible within the scrollable parent's viewport.\n * Used to determine if the popover should remain open during scroll events.\n *\n * @param origin - The HTML element that triggers the popover\n * @param scrollableParent - The scrollable container element\n * @returns True if the origin element is visible in the viewport, otherwise false\n */\n private isVisible(origin: HTMLElement, scrollableParent: HTMLElement): boolean {\n const originY = origin.getBoundingClientRect().y;\n const scrollableParentY = Math.abs(scrollableParent.getBoundingClientRect().y);\n const scrollableParentHeight = scrollableParent.getBoundingClientRect().height - 50;\n\n return (\n (originY > 0 && originY < scrollableParentHeight) ||\n (originY - scrollableParentY > 0 && originY < scrollableParentY + scrollableParentHeight)\n );\n }\n\n /**\n * Creates and returns a position strategy for the overlay.\n * Configures the overlay to be positioned relative to the origin element\n * with fallback positions if the preferred one doesn't fit.\n *\n * @returns A flexible connected position strategy configured for the popover\n */\n private getPositionStrategy(): FlexibleConnectedPositionStrategy {\n return this.overlay\n .position()\n .flexibleConnectedTo(this.origin as FlexibleConnectedPositionStrategyOrigin)\n .withPositions(this.preferredPositons)\n .withFlexibleDimensions(false)\n .withLockedPosition(true);\n }\n\n /**\n * Sets up the position stream for the arrow positioning directive.\n * Creates an observable that emits the current popover position and the origin element's bounding rectangle\n * whenever the popover's position changes.\n */\n private setPositionStream(): void {\n this.position$ = this.positionStrategyUpdate$.pipe(\n switchMap(() => this.positionStrategy.positionChanges),\n map(getPosition),\n distinctUntilChanged(),\n map((position) => {\n const rect = this.origin.nativeElement ?\n this.origin.nativeElement.getBoundingClientRect() :\n (this.origin as unknown as HTMLElement).getBoundingClientRect();\n return [position, rect];\n }),\n );\n }\n}\n","<ng-template #templatePortalContent>\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</ng-template>\n\n<ng-template #template>\n <div class=\"eui-popover__container eui-popover__container--{{ type }}\" cdkTrapFocus cdkTrapFocusAutoCapture (keydown)=\"onKeyDown($event)\">\n <div class=\"eui-popover__arrow\" [euiPopoverArrowPosition]=\"position$\">\n <div class=\"eui-popover__arrow-inner\"></div>\n </div>\n @if (title) {\n <div class=\"eui-popover__header\">\n <div class=\"eui-popover__header-title\">{{ title }}</div>\n @if (hasCloseButton) {\n <button\n class=\"eui-popover__header-close\"\n (click)=\"closePopover()\"\n euiButton\n euiSizeS\n euiIconButton\n euiRounded\n euiBasicButton\n aria-label=\"Dialog close icon\">\n <eui-icon-svg icon=\"close:outline\"></eui-icon-svg>\n </button>\n }\n </div>\n }\n <div (cdkObserveContent)=\"onContentChange()\" class=\"eui-popover__content\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { ObserversModule } from '@angular/cdk/observers';\n\nimport { EuiButtonComponent } from '@eui/components/eui-button';\nimport { EuiIconModule } from '@eui/components/eui-icon';\n\nimport { EuiPopoverComponent } from './eui-popover.component';\nimport { EuiPopoverArrowPositionDirective } from './directives/eui-popover-arrow-position.directive';\nimport { EuiIconButtonModule } from '@eui/components/eui-icon-button';\n\n/**\n * Module that provides the EUI Popover component and related directives.\n *\n * This module exports the EuiPopoverComponent which allows for creating popover overlays\n * positioned relative to trigger elements. Popovers can be configured with various\n * positioning options, visual styles, and dismissal behaviors.\n *\n * @example\n * import { EuiPopoverModule } from '@eui/components/eui-popover';\n *\n * @NgModule({\n * imports: [\n * EuiPopoverModule\n * ]\n * })\n * export class MyModule {}\n */\n@NgModule({\n imports: [CommonModule, OverlayModule, EuiButtonComponent, EuiIconModule, EuiIconButtonModule, A11yModule, ObserversModule],\n declarations: [EuiPopoverComponent, EuiPopoverArrowPositionDirective],\n exports: [EuiPopoverComponent],\n})\nexport class EuiPopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil","i8.EuiPopoverArrowPositionDirective"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"eui-components-eui-popover.mjs","sources":["../../eui-popover/models/eui-popover-position.model.ts","../../eui-popover/directives/eui-popover-arrow-position.directive.ts","../../eui-popover/eui-popover.component.ts","../../eui-popover/eui-popover.component.html","../../eui-popover/eui-popover.module.ts","../../eui-popover/eui-components-eui-popover.ts"],"sourcesContent":["import { ConnectedOverlayPositionChange, ConnectionPositionPair } from '@angular/cdk/overlay';\n\n/**\n * Represents the four possible positions for a popover element.\n */\nexport type EuiPopoverPosition = 'top' | 'right' | 'bottom' | 'left';\n\n/**\n * Position configuration for a popover appearing above its origin element.\n * Centers the popover horizontally relative to the origin.\n */\nexport const TOP = new ConnectionPositionPair(\n { originX: 'center', originY: 'top' },\n { overlayX: 'center', overlayY: 'bottom' },\n 0, 0,\n ['eui-popover-position', 'eui-popover-position--top'],\n);\n\n/**\n * Position configuration for a popover appearing below its origin element.\n * Centers the popover horizontally relative to the origin.\n */\nexport const BOTTOM = new ConnectionPositionPair(\n { originX: 'center', originY: 'bottom' },\n { overlayX: 'center', overlayY: 'top' },\n 0, 0,\n ['eui-popover-position', 'eui-popover-position--bottom'],\n);\n\n/**\n * Position configuration for a popover appearing to the left of its origin element.\n * Centers the popover vertically relative to the origin.\n */\nexport const LEFT = new ConnectionPositionPair(\n { originX: 'start', originY: 'center' },\n { overlayX: 'end', overlayY: 'center' },\n 0, 0,\n ['eui-popover-position', 'eui-popover-position--left'],\n);\n\n/**\n * Position configuration for a popover appearing to the right of its origin element.\n * Centers the popover vertically relative to the origin.\n */\nexport const RIGHT = new ConnectionPositionPair(\n { originX: 'end', originY: 'center' },\n { overlayX: 'start', overlayY: 'center' },\n 0, 0,\n ['eui-popover-position', 'eui-popover-position--right'],\n);\n\n/**\n * Converts a ConnectedOverlayPositionChange object to an EuiPopoverPosition string.\n * Used to determine which predefined position the overlay has settled on.\n *\n * @param connectionPair - The position change event from the CDK overlay\n * @returns The string representation of the popover position ('top', 'right', 'bottom', 'left')\n */\nexport const getPosition = ({ connectionPair }: ConnectedOverlayPositionChange): EuiPopoverPosition => {\n switch (connectionPair) {\n case TOP:\n return 'top';\n case BOTTOM:\n return 'bottom';\n case LEFT:\n return 'left';\n case RIGHT:\n return 'right';\n }\n};\n","import { DOCUMENT } from '@angular/common';\nimport { Directive, ElementRef, Inject, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { Observable, Subject, takeUntil } from 'rxjs';\n\nimport { EuiPopoverPosition } from '../models/eui-popover-position.model';\n\n/**\n * @description\n * Directive that positions an arrow element for a popover relative to its origin element.\n *\n * This directive calculates and applies the appropriate positioning style to ensure\n * the arrow correctly points to the origin element regardless of the popover's position.\n * It adjusts arrow placement dynamically based on the position strategy ('top', 'bottom',\n * 'left', or 'right') and the dimensions and position of the origin element.\n *\n * @example\n * // Basic usage in an arrow element inside a popover:\n * <div class=\"popover-arrow\"\n * [euiPopoverArrowPosition]=\"positionAndRect$\">\n * </div>\n *\n * @example\n * // In the component class:\n * // Position and rect as an Observable\n * positionAndRect$ = new BehaviorSubject<[EuiPopoverPosition, DOMRect]>(['bottom', originRect]);\n *\n * // Update when position changes\n * updatePosition(position: EuiPopoverPosition, rect: DOMRect) {\n * this.positionAndRect$.next([position, rect]);\n * }\n */\n@Directive({\n selector: '[euiPopoverArrowPosition]',\n standalone: false,\n})\nexport class EuiPopoverArrowPositionDirective implements OnInit, OnDestroy {\n /**\n * Observable that emits a tuple containing the popover position strategy\n * and the DOMRect of the origin element.\n *\n * The directive uses this information to calculate the appropriate\n * position for the arrow element.\n */\n @Input('euiPopoverArrowPosition')\n public position$: Observable<[EuiPopoverPosition, DOMRect]>;\n\n private destroy$: Subject<void> = new Subject();\n\n constructor(\n private renderer: Renderer2,\n private elementRef: ElementRef,\n @Inject(DOCUMENT) private document: Document,\n ) {}\n\n ngOnInit(): void {\n this.position$.pipe(takeUntil(this.destroy$)).subscribe(([position, originRect]) => {\n this.renderer.setProperty(this.elementRef.nativeElement, 'style', this.getStyle(position, originRect));\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private getStyle(position: EuiPopoverPosition, originRect: DOMRect): string {\n const arrowRect: DOMRect = this.elementRef.nativeElement.getBoundingClientRect();\n\n if (position === 'left' || position === 'right') {\n const verticalDiff: number =\n Math.floor(arrowRect.top + arrowRect.height / 2) - Math.floor(originRect.top + originRect.height / 2);\n\n if (verticalDiff > 0) {\n return `top: ${originRect.top + originRect.height / 2}px`;\n } else if (verticalDiff < 0) {\n return `top: unset; bottom: ${\n this.document.body.clientHeight - originRect.bottom + originRect.height / 2 - arrowRect.height\n }px`;\n }\n }\n if (position === 'top' || position === 'bottom') {\n const horizontalDiff: number =\n Math.floor(arrowRect.left + arrowRect.width / 2) - Math.floor(originRect.left + originRect.width / 2);\n\n if (horizontalDiff > 0) {\n return `left: ${originRect.left + originRect.width / 2}px`;\n } else if (horizontalDiff < 0) {\n return `left: unset; right: ${\n this.document.body.clientWidth - originRect.right + originRect.width / 2 - arrowRect.width\n }px`;\n }\n }\n return '';\n }\n}\n","import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n Input,\n ViewChild,\n TemplateRef,\n ViewContainerRef,\n AfterViewInit,\n OnDestroy,\n OnInit,\n Output,\n EventEmitter,\n ElementRef,\n OnChanges,\n SimpleChanges,\n booleanAttribute,\n} from '@angular/core';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n Overlay,\n OverlayRef,\n ConnectionPositionPair,\n FlexibleConnectedPositionStrategyOrigin,\n ScrollDispatcher,\n CdkScrollable,\n FlexibleConnectedPositionStrategy,\n} from '@angular/cdk/overlay';\nimport { BehaviorSubject, Observable, Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { BaseStatesDirective } from '@eui/components/shared';\n\nimport { EuiPopoverPosition, BOTTOM, LEFT, RIGHT, TOP, getPosition } from './models/eui-popover-position.model';\n\n/**\n * @description\n * A flexible popover component that displays content in an overlay positioned relative to an origin element.\n *\n * The popover can be positioned at four different positions (top, right, bottom, left) relative to the\n * origin element, with automatic fallback positions if the preferred position doesn't fit in the viewport.\n * It supports various visual styles, dismissal behaviors, and size variants.\n *\n * @example\n * // Basic usage with a trigger element:\n * <button #triggerButton (click)=\"popover.openPopover(triggerButton)\">Open Popover</button>\n * <eui-popover #popover>\n * <div>Popover content</div>\n * </eui-popover>\n *\n * @example\n * // With custom configuration:\n * <eui-popover\n * position=\"right\"\n * type=\"colored-header\"\n * [hasBackDrop]=\"true\"\n * [hasCloseButton]=\"false\"\n * (popoverOpen)=\"onPopoverOpen()\"\n * title=\"Popover Title\">\n * <div>Popover content</div>\n * </eui-popover>\n */\n@Component({\n selector: 'eui-popover',\n templateUrl: './eui-popover.component.html',\n styleUrls: ['./styles/_index.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n hostDirectives: [\n {\n directive: BaseStatesDirective,\n inputs: [\n 'euiSizeS',\n 'euiSizeM',\n 'euiSizeL',\n 'euiSizeXL',\n 'euiSize2XL',\n 'euiSizeAuto',\n 'euiSizeVariant',\n ],\n },\n ],\n})\nexport class EuiPopoverComponent implements AfterViewInit, OnDestroy, OnInit, OnChanges {\n /**\n * Optional title text to display in the popover header.\n * When provided, adds a title element at the top of the popover content.\n */\n @Input() title: string;\n\n /**\n * Determines the preferred placement of the popover relative to its origin element.\n * The component will attempt to use this position first, falling back to alternatives\n * if there's not enough space in the viewport.\n *\n * @default 'bottom'\n */\n @Input() position: EuiPopoverPosition = 'bottom';\n\n /**\n * Visual styling variant for the popover.\n * - 'default': Standard popover with subtle border and drop shadow\n * - 'flat': Popover without shadows, using only border for definition\n * - 'colored-header': Popover with an accent-colored header area\n * - 'colored-solid': Popover with accent color applied to the entire component\n *\n * @default 'default'\n */\n @Input() type: 'default' | 'flat' | 'colored-header' | 'colored-solid' = 'default';\n\n /**\n * Custom width for the popover.\n * Can be specified in any valid CSS unit (px, %, em, etc).\n * When null, the popover width is determined by its content.\n *\n * @default null\n */\n @Input() width: string = null;\n\n /**\n * Whether to show a semi-transparent backdrop behind the popover.\n * When true, creates a visual overlay that dims the rest of the UI.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) hasBackDrop = false;\n\n /**\n * Whether to show a close button in the top-right corner of the popover.\n * When clicked, the close button will dismiss the popover.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) hasCloseButton = true;\n\n /**\n * Whether the popover can be dismissed by clicking outside its boundaries.\n * When false, the popover will remain open until explicitly closed via code\n * or by clicking the close button (if available).\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) isDismissable = true;\n\n /**\n * Event emitted when a click occurs outside the popover boundaries.\n * Only emitted when isDismissable is true.\n */\n @Output() outsideClick = new EventEmitter();\n\n /**\n * Event emitted when the popover is opened.\n * Fires after the popover content has been attached to the DOM and positioned.\n */\n @Output() popoverOpen = new EventEmitter();\n\n /**\n * Event emitted when the popover is closed.\n * Fires after the popover content has been removed from the DOM.\n */\n @Output() popoverClose = new EventEmitter();\n\n public position$: Observable<[EuiPopoverPosition, DOMRect]>;\n\n @ViewChild('templatePortalContent') templatePortalContent: TemplateRef<unknown>;\n\n private templatePortal: TemplatePortal;\n private overlayRef: OverlayRef;\n private destroy$: Subject<boolean> = new Subject<boolean>();\n private isOpen$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n private scrollDispatcherSubscription = new Subscription();\n private origin: ElementRef;\n private preferredPositons: ConnectionPositionPair[] = [BOTTOM, TOP, LEFT, RIGHT];\n private positionStrategy: FlexibleConnectedPositionStrategy;\n private positionStrategyUpdate$: Subject<void> = new Subject();\n\n constructor(private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private scrollDispatcher: ScrollDispatcher,\n private baseStatesDirective: BaseStatesDirective){\n }\n\n ngOnChanges(c: SimpleChanges): void {\n if (this.position === 'top') {\n this.preferredPositons = [TOP, BOTTOM, LEFT, RIGHT];\n } else if (this.position === 'right') {\n this.preferredPositons = [RIGHT, LEFT, TOP, BOTTOM];\n } else if (this.position === 'left') {\n this.preferredPositons = [LEFT, RIGHT, TOP, BOTTOM];\n } else {\n this.preferredPositons = [BOTTOM, TOP, LEFT, RIGHT];\n }\n }\n\n ngOnInit(): void {\n this.setPositionStream();\n }\n\n ngAfterViewInit(): void {\n this.templatePortal = new TemplatePortal(this.templatePortalContent, this.viewContainerRef);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.unsubscribe();\n this.scrollDispatcherSubscription.unsubscribe();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n\n /**\n * Whether the eui-popover is open.\n *\n * @usageNotes\n * ```html\n * <eui-popover #popover>\n * @if (popover.isOpen) {\n * <my-component></my-component>\n * }\n * </eui-popover>\n * ```\n * @returns A boolean with value `true` when open, otherwise `false`.\n */\n get isOpen(): boolean {\n return this.isOpen$.value;\n }\n\n /**\n * Updates the position strategy when content changes.\n * Recalculates and updates the overlay position to handle content size changes.\n */\n public onContentChange(): void {\n this.positionStrategy = this.getPositionStrategy();\n this.positionStrategyUpdate$.next();\n this.overlayRef.updatePositionStrategy(this.positionStrategy);\n }\n\n /**\n * Opens the popover relative to the provided origin element.\n * Sets up scroll monitoring, position strategy, and attaches the popover content to the overlay.\n * Emits the popoverOpen event when complete.\n *\n * @param origin - Reference to the element that triggers the popover\n */\n public openPopover(origin: ElementRef): void {\n if (!this.isOpen) {\n this.scrollDispatcherSubscription = this.scrollDispatcher.ancestorScrolled(origin).subscribe((event: CdkScrollable) => {\n const scrollableParent = event ? event.getElementRef().nativeElement : document.querySelector('body');\n if (!this.isVisible(origin as unknown as HTMLElement, scrollableParent)) {\n this.closePopover();\n }\n });\n\n this.origin = origin;\n const positionStrategy = this.getPositionStrategy();\n\n const scrollStrategy = this.overlay.scrollStrategies.reposition({ scrollThrottle: 10 });\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy,\n disposeOnNavigation: true,\n width: this.width,\n panelClass: this.baseStatesDirective.getCssClasses('eui-popover').split(' '),\n });\n this.overlayRef.attach(this.templatePortal);\n\n document.querySelectorAll('.cdk-overlay-container')?.forEach(el => {\n if (!el.classList.contains('eui-19')) {\n el.classList.add('eui-19');\n }\n });\n\n this.positionStrategy = positionStrategy;\n this.positionStrategyUpdate$.next();\n\n this.overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n if (this.isDismissable) {\n this.outsideClick.emit();\n this.closePopover();\n }\n });\n\n this.isOpen$.next(true);\n this.popoverOpen.emit();\n }\n }\n\n /**\n * Closes the popover.\n * Cleans up subscriptions, disposes the overlay, and emits the popoverClose event.\n */\n public closePopover(): void {\n this.scrollDispatcherSubscription.unsubscribe();\n this.overlayRef.dispose();\n this.overlayRef = null;\n this.isOpen$.next(false);\n this.popoverClose.emit();\n }\n\n /**\n * Handles keyboard events to allow closing the popover with the Escape key.\n * Can be used as an alternative to the close button or when hasCloseButton is false.\n *\n * @param event - The keyboard event\n */\n public onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n this.closePopover();\n }\n }\n\n /**\n * Checks whether the origin element is currently visible within the scrollable parent's viewport.\n * Used to determine if the popover should remain open during scroll events.\n *\n * @param origin - The HTML element that triggers the popover\n * @param scrollableParent - The scrollable container element\n * @returns True if the origin element is visible in the viewport, otherwise false\n */\n private isVisible(origin: HTMLElement, scrollableParent: HTMLElement): boolean {\n const originY = origin.getBoundingClientRect().y;\n const scrollableParentY = Math.abs(scrollableParent.getBoundingClientRect().y);\n const scrollableParentHeight = scrollableParent.getBoundingClientRect().height - 50;\n\n return (\n (originY > 0 && originY < scrollableParentHeight) ||\n (originY - scrollableParentY > 0 && originY < scrollableParentY + scrollableParentHeight)\n );\n }\n\n /**\n * Creates and returns a position strategy for the overlay.\n * Configures the overlay to be positioned relative to the origin element\n * with fallback positions if the preferred one doesn't fit.\n *\n * @returns A flexible connected position strategy configured for the popover\n */\n private getPositionStrategy(): FlexibleConnectedPositionStrategy {\n return this.overlay\n .position()\n .flexibleConnectedTo(this.origin as FlexibleConnectedPositionStrategyOrigin)\n .withPositions(this.preferredPositons)\n .withFlexibleDimensions(false)\n .withLockedPosition(true);\n }\n\n /**\n * Sets up the position stream for the arrow positioning directive.\n * Creates an observable that emits the current popover position and the origin element's bounding rectangle\n * whenever the popover's position changes.\n */\n private setPositionStream(): void {\n this.position$ = this.positionStrategyUpdate$.pipe(\n switchMap(() => this.positionStrategy.positionChanges),\n map(getPosition),\n distinctUntilChanged(),\n map((position) => {\n const rect = this.origin.nativeElement ?\n this.origin.nativeElement.getBoundingClientRect() :\n (this.origin as unknown as HTMLElement).getBoundingClientRect();\n return [position, rect];\n }),\n );\n }\n}\n","<ng-template #templatePortalContent>\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</ng-template>\n\n<ng-template #template>\n <div class=\"eui-popover__container eui-popover__container--{{ type }}\" cdkTrapFocus cdkTrapFocusAutoCapture (keydown)=\"onKeyDown($event)\">\n <div class=\"eui-popover__arrow\" [euiPopoverArrowPosition]=\"position$\">\n <div class=\"eui-popover__arrow-inner\"></div>\n </div>\n @if (title) {\n <div class=\"eui-popover__header\">\n <div class=\"eui-popover__header-title\">{{ title }}</div>\n @if (hasCloseButton) {\n <button\n class=\"eui-popover__header-close\"\n (click)=\"closePopover()\"\n euiButton\n euiSizeS\n euiIconButton\n euiRounded\n euiBasicButton\n aria-label=\"Dialog close icon\">\n <eui-icon-svg icon=\"close:outline\"></eui-icon-svg>\n </button>\n }\n </div>\n }\n <div (cdkObserveContent)=\"onContentChange()\" class=\"eui-popover__content\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { ObserversModule } from '@angular/cdk/observers';\n\nimport { EuiButtonComponent } from '@eui/components/eui-button';\nimport { EuiIconModule } from '@eui/components/eui-icon';\n\nimport { EuiPopoverComponent } from './eui-popover.component';\nimport { EuiPopoverArrowPositionDirective } from './directives/eui-popover-arrow-position.directive';\nimport { EuiIconButtonModule } from '@eui/components/eui-icon-button';\n\n/**\n * Module that provides the EUI Popover component and related directives.\n *\n * This module exports the EuiPopoverComponent which allows for creating popover overlays\n * positioned relative to trigger elements. Popovers can be configured with various\n * positioning options, visual styles, and dismissal behaviors.\n *\n * @example\n * import { EuiPopoverModule } from '@eui/components/eui-popover';\n *\n * @NgModule({\n * imports: [\n * EuiPopoverModule\n * ]\n * })\n * export class MyModule {}\n */\n@NgModule({\n imports: [CommonModule, OverlayModule, EuiButtonComponent, EuiIconModule, EuiIconButtonModule, A11yModule, ObserversModule],\n declarations: [EuiPopoverComponent, EuiPopoverArrowPositionDirective],\n exports: [EuiPopoverComponent],\n})\nexport class EuiPopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil","i8.EuiPopoverArrowPositionDirective"],"mappings":"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"}
|
@@ -310,6 +310,7 @@ class EuiEditorComponent {
|
|
310
310
|
},
|
311
311
|
];
|
312
312
|
this.destroy$ = new Subject();
|
313
|
+
this._internalChange = false; // Add this property to the class
|
313
314
|
this.onChange = () => { };
|
314
315
|
this.onTouch = () => { };
|
315
316
|
this.ngControl.valueAccessor = this;
|
@@ -461,20 +462,29 @@ class EuiEditorComponent {
|
|
461
462
|
if (this.format === 'html') {
|
462
463
|
this.value = event.html;
|
463
464
|
this.calculateCounters(this.value);
|
464
|
-
|
465
|
+
// Only call onChange if it's not an internal change
|
466
|
+
if (!this._internalChange) {
|
467
|
+
this.onChange(this.htmlEntitiesDecode(this.value));
|
468
|
+
}
|
465
469
|
}
|
466
470
|
if (this.format === 'json') {
|
467
471
|
if (event.text !== '\n') {
|
468
472
|
this.value = event.content;
|
469
473
|
this.calculateCounters(event.text);
|
470
474
|
this.jsonToHtmlContent = this.htmlEntitiesDecode(JSON.stringify(this.value));
|
471
|
-
|
475
|
+
// Only call onChange if it's not an internal change
|
476
|
+
if (!this._internalChange) {
|
477
|
+
this.onChange(this.jsonToHtmlContent);
|
478
|
+
}
|
472
479
|
}
|
473
480
|
else {
|
474
481
|
this.value = null;
|
475
482
|
this.calculateCounters('');
|
476
483
|
this.jsonToHtmlContent = '';
|
477
|
-
|
484
|
+
// Only call onChange if it's not an internal change
|
485
|
+
if (!this._internalChange) {
|
486
|
+
this.onChange(null);
|
487
|
+
}
|
478
488
|
}
|
479
489
|
}
|
480
490
|
this.contentChange.emit(event); // New emitter
|
@@ -499,22 +509,28 @@ class EuiEditorComponent {
|
|
499
509
|
this.onTouch = fn;
|
500
510
|
}
|
501
511
|
writeValue(value) {
|
512
|
+
// Store the value
|
502
513
|
this.value = value || null;
|
503
514
|
this.jsonToHtmlContent = this.value;
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
}
|
511
|
-
|
512
|
-
this.formControl.patchValue(this.value);
|
513
|
-
// this.quill.setContents(JSON.parse(this.value));
|
514
|
-
}
|
515
|
-
this.calculateCounters(this.value);
|
515
|
+
// Skip triggering onChange during writeValue operations
|
516
|
+
if (this.quill) {
|
517
|
+
// Use a flag to prevent triggering onChange in _onContentChanged
|
518
|
+
this._internalChange = true;
|
519
|
+
if (this.format === 'html') {
|
520
|
+
const delta = this.quill.clipboard.convert({ html: this.value });
|
521
|
+
this.formControl.patchValue(delta, { emitEvent: false });
|
522
|
+
this.quill.setContents(delta);
|
516
523
|
}
|
517
|
-
|
524
|
+
if (this.format === 'json' && this.value) {
|
525
|
+
this.formControl.patchValue(this.value, { emitEvent: false });
|
526
|
+
// this.quill.setContents(JSON.parse(this.value));
|
527
|
+
}
|
528
|
+
this.calculateCounters(this.value);
|
529
|
+
// Reset the flag after a short delay to allow Quill to complete its operations
|
530
|
+
setTimeout(() => {
|
531
|
+
this._internalChange = false;
|
532
|
+
});
|
533
|
+
}
|
518
534
|
}
|
519
535
|
get tableModule() {
|
520
536
|
return this.quill.getModule('better-table');
|