{"version":3,"file":"acorex-components-popover.mjs","sources":["../../../../packages/components/popover/src/lib/popover.component.ts","../../../../packages/components/popover/src/lib/popover.component.html","../../../../packages/components/popover/src/lib/popover.module.ts","../../../../packages/components/popover/src/acorex-components-popover.ts"],"sourcesContent":["import {\n  AXComponent,\n  AXConnectedPosition,\n  AXEvent,\n  AXFocusableComponent,\n  AXPlacementType,\n  MXBaseComponent,\n  convertToPlacement,\n} from '@acorex/cdk/common';\nimport { AXOverlayRef, AXOverlayService, AXOverlayVisualContextScope } from '@acorex/cdk/overlay';\nimport { AXComponentType } from '@acorex/core/components';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n  Component,\n  ComponentRef,\n  DOCUMENT,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  PLATFORM_ID,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n  afterNextRender,\n  inject,\n  input,\n} from '@angular/core';\nimport { Subject, Subscription, fromEvent, switchMap, takeUntil, timer } from 'rxjs';\n\nexport type AXPopoverOpenTrigger = 'manual' | 'click' | 'hover' | 'toggle';\n\nexport type AXPopoverCloseTrigger = 'manual' | 'clickOut' | 'leave';\n\n/**\n * @category Components\n * A popover component with custom encapsulation and change detection settings.\n */\n@Component({\n  selector: 'ax-popover',\n  templateUrl: './popover.component.html',\n  encapsulation: ViewEncapsulation.None,\n\n  providers: [\n    { provide: AXFocusableComponent, useExisting: AXPopoverComponent },\n    { provide: AXComponent, useExisting: AXPopoverComponent },\n  ],\n})\nexport class AXPopoverComponent extends MXBaseComponent implements OnDestroy {\n  private platform = inject(AXPlatform);\n  private document = inject(DOCUMENT);\n  private platformID = inject(PLATFORM_ID);\n  private overlayService = inject(AXOverlayService);\n\n  private onKeyDownHandler: ((e: KeyboardEvent) => void) | null = null;\n\n  /** @ignore */\n  private _overlayRef: AXOverlayRef<unknown> | null = null;\n\n  /** @ignore */\n  private _lastActiveElement: Element | null = null;\n\n  /** @ignore */\n  private _targetEvents: {\n    mouseenter?: Subscription;\n    mouseleave?: Subscription;\n    click?: Subscription;\n  } = {};\n\n  /** @ignore */\n  private _outsideClickHandler: ((e: MouseEvent) => void) | null = null;\n\n  /** @ignore */\n  private _scrollHandler: ((e: Event) => void) | null = null;\n\n  /** @ignore */\n  private _scrollListenerActive = false;\n\n  /** @ignore */\n  private _scrollActivationFrame: number | null = null;\n\n  /** @ignore */\n  private resizeObserver: ResizeObserver | null = null;\n  /** @ignore */\n  private resize$ = new Subject<void>();\n\n  /** @ignore */\n  private _disabled = false;\n\n  readonly width = input('fit-content');\n\n  readonly disablePanelClass = input(false);\n\n  /** Propagate theme/size only — floating dropdown panels opt out of appearance/contrast. */\n  readonly visualContextScope = input<AXOverlayVisualContextScope>('full');\n\n  private translateService = inject(AXTranslationService);\n\n  #init = afterNextRender(() => {\n    const lang = this.translateService.getActiveLang();\n\n    let defaultPlacementDirection: AXPlacementType;\n\n    if (lang === 'en-US') {\n      defaultPlacementDirection = 'bottom-start';\n    } else {\n      defaultPlacementDirection = 'bottom-end';\n    }\n\n    if (!this.placement) this.placement = defaultPlacementDirection;\n\n    const converted = this.placement\n      ? convertToPlacement(this.placement)\n      : convertToPlacement(defaultPlacementDirection);\n\n    this._placements = converted;\n\n    this.resize$.subscribe(() => {\n      if (this.isOpen) {\n        this.updatePosition();\n      }\n    });\n  });\n\n  /**\n   * Gets or sets whether the popover is disabled.\n   * When disabled, the popover will not open and will close if already open.\n   */\n  @Input()\n  public get disabled(): boolean {\n    return this._disabled;\n  }\n  public set disabled(v: boolean) {\n    this._disabled = v;\n    if (this._disabled && this.isOpen) {\n      this.close();\n    }\n  }\n\n  /** @ignore */\n  private _offsetX = 0;\n\n  /**\n   * Gets or sets the horizontal offset and updates it accordingly.\n   */\n  @Input()\n  public get offsetX(): number {\n    return this._offsetX;\n  }\n\n  /**\n   * Sets the horizontal offset and updates it with a callback.\n   */\n  public set offsetX(v: number) {\n    this.setOption({\n      name: 'offsetX',\n      value: v,\n      afterCallback: () => {\n        this.updateOffset();\n      },\n    });\n  }\n\n  /** @ignore */\n  private _offsetY = 0;\n\n  /**\n   * Vertical offset with update callback.\n   */\n  @Input()\n  public get offsetY(): number {\n    return this._offsetY;\n  }\n\n  /**\n   * Sets the vertical offset and updates the component position.\n   */\n  public set offsetY(v: number) {\n    this.setOption({\n      name: 'offsetY',\n      value: v,\n      afterCallback: () => {\n        this.updateOffset();\n      },\n    });\n  }\n\n  /** @ignore */\n  private _target!: Element;\n\n  /**\n   * Gets or sets the target element, supporting Element, ElementRef, or MXBaseComponent.\n   */\n  @Input()\n  public get target(): Element | ElementRef | MXBaseComponent {\n    return this._target;\n  }\n\n  /**\n   * Sets the target element and updates event bindings.\n   */\n  public set target(v: Element | ElementRef | MXBaseComponent) {\n    this.removeTargetEvents();\n    if (v instanceof Element) this._target = v;\n    else if (v instanceof ElementRef) this._target = v.nativeElement;\n    else if (typeof v?.getHostElement == 'function') this._target = v.getHostElement();\n    this.bindTargetEvents();\n  }\n\n  /** @ignore */\n  private _placements: AXConnectedPosition[] = [];\n\n  /** @ignore */\n  private _placement: AXPlacementType = null;\n\n  /**\n   * Gets the current placement of the component.\n   */\n  @Input()\n  public get placement(): AXPlacementType {\n    return this._placement;\n  }\n\n  /**\n   * Sets the component's placement and updates its position settings.\n   */\n  public set placement(v: AXPlacementType) {\n    this.setOption({\n      name: 'placement',\n      value: v,\n      afterCallback: (o, n) => {\n        if (!n) return;\n        const converted = convertToPlacement(n);\n        this._placements = converted;\n        this.updateOffset();\n        if (this._overlayRef) {\n          this._overlayRef.updatePosition();\n        }\n      },\n    });\n  }\n\n  /** @ignore */\n  private _componentRef: ComponentRef<unknown> | null = null;\n\n  /**\n   * Gets the reference to the component.\n   */\n  public get componentRef(): ComponentRef<unknown> | null {\n    return this._componentRef;\n  }\n\n  /**\n   * Holds the context data for the component.\n   */\n  public context: unknown;\n\n  /** @ignore */\n  @ViewChild('baseTemplate', { static: true })\n  _baseTemplate: TemplateRef<unknown>;\n\n  /**\n   * Defines the content to be displayed, which can be a template or a component.\n   */\n  @Input()\n  content: TemplateRef<unknown> | AXComponentType<unknown>;\n\n  /** @ignore */\n  private _openOn: AXPopoverOpenTrigger = 'toggle';\n\n  /**\n   * Gets or sets the trigger for opening the popover and updates target events.\n   */\n  @Input()\n  public get openOn(): AXPopoverOpenTrigger {\n    return this._openOn;\n  }\n\n  /**\n   * Sets the trigger for opening the popover and updates target events.\n   */\n  public set openOn(v: AXPopoverOpenTrigger) {\n    this.setOption({\n      name: 'openOn',\n      value: v,\n      afterCallback: () => {\n        this.bindTargetEvents();\n      },\n    });\n  }\n\n  /** @ignore */\n  private _closeOn: AXPopoverCloseTrigger = 'clickOut';\n\n  /**\n   * Gets or sets the trigger for closing the popover.\n   */\n  @Input()\n  public get closeOn(): AXPopoverCloseTrigger {\n    return this._closeOn;\n  }\n\n  /**\n   * Sets the trigger for closing the popover and rebinds target events.\n   */\n  public set closeOn(v: AXPopoverCloseTrigger) {\n    this.setOption({\n      name: 'closeOn',\n      value: v,\n      afterCallback: () => {\n        this.bindTargetEvents();\n      },\n    });\n  }\n\n  /**\n   * Determines if a backdrop should be displayed behind the popover.\n   */\n  @Input()\n  hasBackdrop = false;\n\n  /**\n   * Delay in milliseconds before the popover opens after a trigger event.\n   */\n  private _openAfter = 200;\n\n  @Input()\n  public get openAfter() {\n    return this._openAfter;\n  }\n\n  public set openAfter(value) {\n    this._openAfter = value;\n    this.bindTargetEvents();\n  }\n\n  /**\n   * Delay in milliseconds before the popover closes after a trigger event.\n   */\n  private _closeAfter = 200;\n\n  @Input()\n  public get closeAfter() {\n    return this._closeAfter;\n  }\n\n  public set closeAfter(value) {\n    this._closeAfter = value;\n    this.bindTargetEvents();\n  }\n\n  /**\n   * Whether to close the popover when scrolling occurs outside of it.\n   * Scrolling within the popover (or any nested overlay) will not close it.\n   */\n  @Input()\n  closeOnScroll = true;\n\n  /**\n   * CSS class to apply to the backdrop element.\n   */\n  @Input()\n  backdropClass: string;\n\n  /**\n   * CSS class to apply to the panel element.\n   */\n  @Input()\n  panelClass: string;\n\n  /**\n   * Enables or disables adaptivity.\n   */\n  @Input()\n  adaptivityEnabled = false;\n\n  /**\n   * Emits when the component is opened.\n   * @event\n   */\n  @Output()\n  onOpened: EventEmitter<AXEvent> = new EventEmitter<AXEvent>();\n\n  /**\n   * Emits when the component is closed.\n   * @event\n   */\n  @Output()\n  onClosed: EventEmitter<AXEvent> = new EventEmitter<AXEvent>();\n\n  /** @ignore */\n  private _emitOnOpenedEvent() {\n    this.onOpened.emit({\n      component: this,\n      htmlElement: this.getHostElement(),\n    });\n  }\n\n  /** @ignore */\n  private _emitOnClosedEvent() {\n    this.onClosed.emit({\n      component: this,\n      htmlElement: this.getHostElement(),\n    });\n  }\n\n  /** @ignore */\n  private removeTargetEvents(): void {\n    Object.entries(this._targetEvents).forEach((e) => {\n      e[1]?.unsubscribe();\n    });\n    this._targetEvents = {};\n  }\n\n  /** @ignore */\n  private bindTargetEvents() {\n    this.removeTargetEvents();\n    if (!this._target) return;\n    const targetMouseEnter$ = fromEvent(this._target, 'mouseenter');\n    const targetMouseLeave$ = fromEvent(this._target, 'mouseleave');\n\n    if (this.openOn === 'hover') {\n      this._targetEvents.mouseenter = targetMouseEnter$\n        .pipe(switchMap(() => timer(this.openAfter).pipe(takeUntil(targetMouseLeave$))))\n        .subscribe(() => {\n          this.open();\n        });\n    }\n\n    if (this.closeOn === 'leave') {\n      this._targetEvents.mouseleave = targetMouseLeave$\n        .pipe(switchMap(() => timer(this.closeAfter).pipe(takeUntil(targetMouseEnter$))))\n        .subscribe(() => {\n          this.close();\n        });\n    }\n\n    if (this.openOn === 'click' || this.openOn === 'toggle') {\n      const click$ = fromEvent<MouseEvent>(this._target, 'click');\n      this._targetEvents.click = click$.subscribe(() => {\n        this.openOn === 'toggle' ? this.toggle() : this.open();\n      });\n    }\n  }\n\n  /** @ignore */\n  private bindOverlayEvents() {\n    const overlayElement = this._overlayRef?.overlayElement;\n    if (!overlayElement) return;\n    overlayElement.style.pointerEvents = 'none';\n\n    // Outside click handler\n    if (this.closeOn === 'clickOut') {\n      this._outsideClickHandler = (e: MouseEvent) => {\n        const el = e.target as Element;\n        if (this.isOpen && !this._target?.contains(el) && !overlayElement?.contains(el)) {\n          // Check if the click is inside a child overlay (e.g., selectbox dropdown)\n          // Child overlays have a higher z-index than this popover\n          if (this.isInsideChildOverlay(el)) {\n            return;\n          }\n          this.close();\n        }\n      };\n      this.document.addEventListener('mousedown', this._outsideClickHandler);\n    }\n\n    // Scroll listener to close popover when scrolling outside\n    this.setupScrollListener(overlayElement);\n\n    // Resize observer\n    this.initializeResizeObserver();\n\n    setTimeout(() => {\n      overlayElement.style.pointerEvents = 'auto';\n    }, this.openAfter);\n  }\n\n  /** @ignore */\n  private removeOverlayEvents() {\n    if (this._outsideClickHandler) {\n      this.document.removeEventListener('mousedown', this._outsideClickHandler);\n      this._outsideClickHandler = null;\n    }\n    this.removeScrollListener();\n  }\n\n  /** @ignore */\n  private setupScrollListener(overlayElement: HTMLElement) {\n    if (!this.closeOnScroll || !isPlatformBrowser(this.platformID)) {\n      return;\n    }\n\n    this._scrollHandler = (e: Event) => {\n      // Ignore scroll events fired during the initial open frame\n      if (!this._scrollListenerActive || !this.isOpen) {\n        return;\n      }\n\n      // Resolve the scroll target. For document/window scrolls, e.target is the document.\n      const target = e.target as Node | null;\n\n      // Don't close when scrolling occurs inside the popover itself\n      if (target && overlayElement.contains(target)) {\n        return;\n      }\n\n      // Don't close when scrolling occurs inside a nested/child overlay\n      // (e.g., a selectbox dropdown opened from within this popover).\n      if (target instanceof Element && this.isInsideChildOverlay(target)) {\n        return;\n      }\n\n      // iOS (and some mobile browsers) scroll the document when the soft keyboard\n      // opens after focusing an input inside the overlay. That must not close it.\n      if (this.isKeyboardInducedDocumentScroll(target, overlayElement)) {\n        return;\n      }\n\n      this.close();\n    };\n\n    // Capture phase so we receive scroll events from any scrollable ancestor\n    this.document.addEventListener('scroll', this._scrollHandler, true);\n\n    // Delay activation to ignore layout/scroll events fired right after opening\n    this._scrollActivationFrame = requestAnimationFrame(() => {\n      this._scrollListenerActive = true;\n      this._scrollActivationFrame = null;\n    });\n  }\n\n  /** @ignore */\n  private removeScrollListener() {\n    if (this._scrollActivationFrame !== null) {\n      cancelAnimationFrame(this._scrollActivationFrame);\n      this._scrollActivationFrame = null;\n    }\n    if (this._scrollHandler) {\n      this.document.removeEventListener('scroll', this._scrollHandler, true);\n      this._scrollHandler = null;\n    }\n    this._scrollListenerActive = false;\n  }\n\n  /**\n   * True when document-level scroll is a side-effect of focusing an editable control\n   * inside the overlay (soft keyboard / visual viewport adjustment), mainly on iOS Safari.\n   * @ignore\n   */\n  private isKeyboardInducedDocumentScroll(scrollTarget: Node | null, overlayElement: HTMLElement): boolean {\n    if (!this.isDocumentScrollTarget(scrollTarget)) {\n      return false;\n    }\n\n    const active = this.document.activeElement;\n    if (!(active instanceof HTMLElement) || !overlayElement.contains(active)) {\n      return false;\n    }\n\n    const tag = active.tagName;\n    return (\n      tag === 'INPUT' ||\n      tag === 'TEXTAREA' ||\n      tag === 'SELECT' ||\n      active.isContentEditable ||\n      !!active.closest('input, textarea, select, [contenteditable=\"true\"]')\n    );\n  }\n\n  /** @ignore */\n  private isDocumentScrollTarget(target: Node | null): boolean {\n    if (!target) {\n      return false;\n    }\n\n    const doc = this.document;\n    return target === doc || target === doc.documentElement || target === doc.body;\n  }\n\n  /**\n   * Checks whether the given element lives inside a child overlay\n   * (an overlay stacked on top of this popover, e.g. a selectbox dropdown).\n   * Child overlays are identified by having a higher z-index than this popover's overlay.\n   * @ignore\n   */\n  private isInsideChildOverlay(element: Element): boolean {\n    const overlayElement = this._overlayRef?.overlayElement;\n    if (!overlayElement) return false;\n\n    const otherOverlay = element.closest('.ax-overlay-container');\n    if (!otherOverlay || otherOverlay === overlayElement) return false;\n\n    const popoverZIndex = parseInt(overlayElement.style.zIndex || '0', 10);\n    const otherZIndex = parseInt((otherOverlay as HTMLElement).style.zIndex || '0', 10);\n\n    return otherZIndex > popoverZIndex;\n  }\n\n  /** @ignore */\n  private handleOverlayDisposed() {\n    // Called when overlay is disposed externally (e.g., by scroll)\n    this.disconnectResizeObserver();\n    this.removeOverlayEvents();\n    this.removeKeyDownListener();\n    this._overlayRef = null;\n    this._componentRef = null;\n    this.restoreFocus();\n    this._emitOnClosedEvent();\n  }\n\n  /**\n   * Toggles the component's open state.\n   */\n  toggle() {\n    this.isOpen ? this.close() : this.open();\n  }\n\n  /**\n   * Closes the component if it's open, detaches the overlay, restores focus, and emits the closed event.\n   */\n  close() {\n    if (!this.isOpen) {\n      return;\n    }\n    this.disconnectResizeObserver();\n    this.removeOverlayEvents();\n    this.removeKeyDownListener();\n\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._overlayRef = null;\n    }\n\n    this._componentRef = null;\n    this.restoreFocus();\n    this._emitOnClosedEvent();\n  }\n\n  /**\n   * Opens the component if it's not already open, saves focus, opens the overlay, and emits the opened event.\n   */\n  async open() {\n    if (this.isOpen || this.disabled) {\n      return;\n    }\n    this.addKeyDownListener();\n    this.saveFocus();\n    await this.openOverlayInternal();\n    this._emitOnOpenedEvent();\n  }\n\n  /** @ignore */\n  private addKeyDownListener() {\n    if (isPlatformBrowser(this.platformID)) {\n      this.onKeyDownHandler = (e: KeyboardEvent) => {\n        if (e.key === 'Escape') {\n          this.close();\n        }\n      };\n      this.document.addEventListener('keydown', this.onKeyDownHandler);\n    }\n  }\n\n  /** @ignore */\n  private removeKeyDownListener() {\n    if (this.onKeyDownHandler) {\n      this.document.removeEventListener('keydown', this.onKeyDownHandler);\n      this.onKeyDownHandler = null;\n    }\n  }\n\n  /** @ignore */\n  private saveFocus() {\n    if (isPlatformBrowser(this.platformID)) {\n      this._lastActiveElement = this.document.activeElement as Element;\n    }\n  }\n\n  /** @ignore */\n  private restoreFocus() {\n    if (this._lastActiveElement instanceof HTMLElement) {\n      this._lastActiveElement?.focus?.();\n    }\n  }\n\n  /** @ignore */\n  private async openOverlayInternal() {\n    const targetRef = this._target;\n    if (!targetRef) return;\n\n    // Build panel classes — theme/appearance propagate via AXOverlayService visual context\n    const panelClasses = ['animate-fadeIn', 'animate-faster'];\n    if (this.panelClass) {\n      panelClasses.push(this.panelClass);\n    }\n\n    // Determine content to display\n    let contentToRender: TemplateRef<unknown> | AXComponentType<unknown>;\n    let inputs: Record<string, unknown> | undefined;\n\n    if (this.content instanceof TemplateRef) {\n      contentToRender = this.content;\n    } else if (typeof this.content === 'function') {\n      contentToRender = this.content;\n      inputs = this.context as Record<string, unknown>;\n    } else {\n      contentToRender = this._baseTemplate;\n    }\n\n    // Create the overlay\n    this._overlayRef = await this.overlayService.create(contentToRender, {\n      inputs,\n      visualContextScope: this.visualContextScope(),\n      anchorOptions: {\n        anchor: targetRef as HTMLElement,\n        placement: this._placement,\n        offsetX: this._offsetX,\n        offsetY: this._offsetY,\n        autoFlip: true,\n      },\n      panelClass: !this.disablePanelClass() ? panelClasses : '',\n      width: this.width(),\n      onDispose: () => this.handleOverlayDisposed(),\n      actionSheetStyle: this.adaptivityEnabled,\n    });\n\n    // Store component ref if it's a component\n    if (this._overlayRef.instance) {\n      this._componentRef = this._overlayRef.instance as unknown as ComponentRef<unknown>;\n      if (this.context && this._componentRef.instance) {\n        Object.assign(this._componentRef.instance, this.context);\n      }\n    }\n\n    // Bind overlay events\n    this.bindOverlayEvents();\n  }\n\n  /**\n   * Checks if the overlay is currently open.\n   * @returns {boolean}\n   */\n  get isOpen(): boolean {\n    return this._overlayRef !== null;\n  }\n\n  /** @ignore */\n  private updateOffset() {\n    this._placements?.forEach((p) => {\n      if (this._offsetY != null) p.offsetY = this._offsetY;\n      if (this._offsetX != null) p.offsetX = this._offsetX;\n    });\n  }\n\n  /**\n   * Updates the position of the overlay and focuses on it.\n   */\n  public updatePosition(): void {\n    this._overlayRef?.updatePosition();\n    this.focus();\n  }\n\n  /**\n   * Focuses the overlay element.\n   */\n  public focus(): void {\n    // Optional focus behavior\n  }\n\n  /**\n   * Brings this popover to the front of all other overlays.\n   */\n  public bringToFront(): void {\n    this._overlayRef?.bringToFront();\n  }\n\n  /** @ignore */\n  private initializeResizeObserver(): void {\n    if (!isPlatformBrowser(this.platformID) || !this._overlayRef?.overlayElement) {\n      return;\n    }\n    this.disconnectResizeObserver();\n    this.resizeObserver = new ResizeObserver(() => {\n      this.resize$.next();\n    });\n    this.resizeObserver.observe(this._overlayRef.overlayElement);\n  }\n\n  /** @ignore */\n  private disconnectResizeObserver(): void {\n    if (this.resizeObserver) {\n      this.resizeObserver.disconnect();\n      this.resizeObserver = null;\n    }\n  }\n\n  /** @ignore */\n  ngOnDestroy(): void {\n    this.disconnectResizeObserver();\n    this.resize$.complete();\n    this.removeTargetEvents();\n    this.removeOverlayEvents();\n    this.removeKeyDownListener();\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._overlayRef = null;\n    }\n  }\n}\n","<ng-template #baseTemplate>\n  <ng-content></ng-content>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXPopoverComponent } from './popover.component';\n\n@NgModule({\n  imports: [CommonModule, AXPopoverComponent],\n  exports: [AXPopoverComponent],\n  providers: [],\n})\nexport class AXPopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}