{"version":3,"file":"ng-nest-ui-popover.mjs","sources":["../../../../lib/ng-nest/ui/popover/popover.property.ts","../../../../lib/ng-nest/ui/popover/popover-portal.component.ts","../../../../lib/ng-nest/ui/popover/popover-portal.component.html","../../../../lib/ng-nest/ui/popover/popover.directive.ts","../../../../lib/ng-nest/ui/popover/popover.module.ts","../../../../lib/ng-nest/ui/popover/ng-nest-ui-popover.ts"],"sourcesContent":["import { XPropertyFunction, XToCssPixelValue, XToBoolean, XToNumber } from '@ng-nest/ui/core';\r\nimport { Directive, ElementRef, input, model } from '@angular/core';\r\nimport type { XPlacement, XTemplate, XBoolean, XNumber } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Popover\r\n * @selector x-popover\r\n * @decorator directive\r\n */\r\nexport const XPopoverPrefix = 'x-popover';\r\nconst X_POPOVER_CONFIG_NAME = 'popover';\r\n\r\n/**\r\n * Popover Property\r\n */\r\n@Directive({ selector: `[${XPopoverPrefix}], ${XPopoverPrefix}` })\r\nexport class XPopoverProperty extends XPropertyFunction(X_POPOVER_CONFIG_NAME) {\r\n  /**\r\n   * @zh_CN 标题，支持自定义模板\r\n   * @en_US Title, support custom template\r\n   */\r\n  readonly title = input<XTemplate>('');\r\n  /**\r\n   * @zh_CN 内容，支持自定义模板\r\n   * @en_US Content, support custom templates\r\n   */\r\n  readonly content = input<XTemplate>('');\r\n  /**\r\n   * @zh_CN 底部，支持自定义模板\r\n   * @en_US At the bottom, support custom templates\r\n   */\r\n  readonly footer = input<XTemplate>('');\r\n  /**\r\n   * @zh_CN 内部样式\r\n   * @en_US panel class\r\n   */\r\n  readonly panelClass = input<string | string[]>('');\r\n  /**\r\n   * @zh_CN 指定参考对象\r\n   * @en_US specify reference object\r\n   */\r\n  readonly connectTo = input<ElementRef<HTMLElement> | HTMLElement>();\r\n  /**\r\n   * @zh_CN 弹出的位置\r\n   * @en_US Pop-up position\r\n   */\r\n  readonly placement = input<XPlacement>(this.config?.placement ?? 'top');\r\n  /**\r\n   * @zh_CN 激活方式\r\n   * @en_US Activation method\r\n   */\r\n  readonly trigger = input<XPopoverTrigger>(this.config?.trigger ?? 'hover');\r\n  /**\r\n   * @zh_CN 宽度\r\n   * @en_US width\r\n   */\r\n  readonly width = input<string, XNumber>(this.config?.width ?? '', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 最大宽度\r\n   * @en_US Max width\r\n   */\r\n  readonly maxWidth = input<string, XNumber>(this.config?.maxWidth ?? '10rem', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 最小宽度\r\n   * @en_US Min width\r\n   */\r\n  readonly minWidth = input<string, XNumber>(this.config?.minWidth ?? '10rem', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 显示/隐藏控制\r\n   * @en_US Show/hide control\r\n   */\r\n  readonly visible = model<boolean>(false);\r\n  /**\r\n   * @zh_CN 条件触发\r\n   * @en_US condition trigger\r\n   */\r\n  readonly condition = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 鼠标移入后延时多少才显示\r\n   * @en_US How much is the mouse transfer after transfer\r\n   */\r\n  readonly mouseEnterDelay = input<number, XNumber>(150, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 鼠标移出后延时多少才隐藏\r\n   * @en_US How much hidden is hidden after the mouse is removed\r\n   */\r\n  readonly mouseLeaveDelay = input<number, XNumber>(100, { transform: XToNumber });\r\n}\r\n\r\n/**\r\n * @zh_CN 激活方式\r\n * @en_US Activation method\r\n * @value \"hover\"\r\n * @value \"click\"\r\n */\r\nexport type XPopoverTrigger = 'hover' | 'click' | 'focus';\r\n\r\n/**\r\n * Popover Portal\r\n * @selector x-popover-portal\r\n * @decorator component\r\n */\r\nexport const XPopoverPortalPrefix = 'x-popover-portal';\r\n","import {\r\n  Component,\r\n  ViewEncapsulation,\r\n  ChangeDetectionStrategy,\r\n  HostListener,\r\n  HostBinding,\r\n  input,\r\n  computed,\r\n  output\r\n} from '@angular/core';\r\nimport { XPopoverPortalPrefix, XPopoverTrigger } from './popover.property';\r\nimport { XTemplate, XPlacement, XIsEmpty } from '@ng-nest/ui/core';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n  selector: `${XPopoverPortalPrefix}`,\r\n  imports: [NgClass, XOutletDirective],\r\n  templateUrl: './popover-portal.component.html',\r\n  styleUrls: ['./popover-portal.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XPopoverPortalComponent {\r\n  title = input<XTemplate>();\r\n  content = input<XTemplate>();\r\n  footer = input<XTemplate>();\r\n  width = input<string>();\r\n  minWidth = input<string>();\r\n  maxWidth = input<string>();\r\n  trigger = input<XPopoverTrigger>();\r\n  placement = input<XPlacement>();\r\n  portalHover = output<boolean>();\r\n\r\n  @HostListener('mouseenter') mouseenter() {\r\n    if (this.trigger() === 'hover') {\r\n      this.portalHover.emit(true);\r\n    }\r\n  }\r\n\r\n  @HostListener('mouseleave') mouseleave() {\r\n    if (this.trigger() === 'hover') {\r\n      this.portalHover.emit(false);\r\n    }\r\n  }\r\n\r\n  @HostBinding('animate.enter') animateEnter = 'x-fade-enter';\r\n  @HostBinding('animate.leave') animateLeave = 'x-fade-leave';\r\n\r\n  classMap = computed(() => ({\r\n    [`${XPopoverPortalPrefix}-${this.placement()}`]: !XIsEmpty(this.placement())\r\n  }));\r\n\r\n  stopPropagation(event: Event): void {\r\n    event.stopPropagation();\r\n  }\r\n}\r\n","<div #popoverPortal class=\"x-popover-portal\" [ngClass]=\"classMap()\" (click)=\"stopPropagation($event)\">\r\n  <div\r\n    class=\"x-popover-portal-inner\"\r\n    [style.width]=\"width()\"\r\n    [style.minWidth]=\"minWidth()\"\r\n    [style.maxWidth]=\"maxWidth()\"\r\n  >\r\n    @if (title()) {\r\n      <div class=\"x-popover-portal-title\">\r\n        <ng-container *xOutlet=\"title()\">\r\n          {{ title() }}\r\n        </ng-container>\r\n      </div>\r\n    }\r\n    @if (content()) {\r\n      <div class=\"x-popover-portal-content\">\r\n        <ng-container *xOutlet=\"content()\">\r\n          {{ content() }}\r\n        </ng-container>\r\n      </div>\r\n    }\r\n    @if (footer()) {\r\n      <div class=\"x-popover-portal-footer\">\r\n        <ng-container *xOutlet=\"footer()\">\r\n          {{ footer() }}\r\n        </ng-container>\r\n      </div>\r\n    }\r\n  </div>\r\n  <div #popoverArrow class=\"x-popover-portal-arrow\"></div>\r\n</div>\r\n","import {\r\n  ElementRef,\r\n  ViewContainerRef,\r\n  Directive,\r\n  HostListener,\r\n  HostBinding,\r\n  inject,\r\n  OnDestroy,\r\n  effect,\r\n  ComponentRef,\r\n  signal,\r\n  SimpleChanges,\r\n  OnChanges\r\n} from '@angular/core';\r\nimport { XPortalService, XPortalOverlayRef, XPortalConnectedPosition } from '@ng-nest/ui/portal';\r\nimport { XPopoverPortalComponent } from './popover-portal.component';\r\nimport { XPopoverPrefix, XPopoverProperty } from './popover.property';\r\nimport { Subject } from 'rxjs';\r\nimport {\r\n  OverlayConfig,\r\n  FlexibleConnectedPositionStrategy,\r\n  ConnectedOverlayPositionChange,\r\n  Overlay\r\n} from '@angular/cdk/overlay';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { XIsChange, type XPlacement } from '@ng-nest/ui/core';\r\n\r\n@Directive({ selector: `[${XPopoverPrefix}], ${XPopoverPrefix}` })\r\nexport class XPopoverDirective extends XPopoverProperty implements OnDestroy, OnChanges {\r\n  portal!: XPortalOverlayRef<XPopoverPortalComponent>;\r\n  timeoutHide: any;\r\n  timeoutShow: any;\r\n  private unSubject = new Subject<void>();\r\n  private realPlacement = signal<XPlacement | null>(null);\r\n  private elementRef = inject(ElementRef);\r\n  private portalService = inject(XPortalService);\r\n  private viewContainerRef = inject(ViewContainerRef);\r\n  private overlay = inject(Overlay);\r\n\r\n  @HostBinding('class.x-popover-show') get _show() {\r\n    return this.visible();\r\n  }\r\n\r\n  @HostListener('click') click() {\r\n    if (this.condition()) return;\r\n    if (this.trigger() === 'click') {\r\n      this.visible.update((x) => !x);\r\n      if (this.visible()) this.show();\r\n      else this.hide();\r\n    }\r\n  }\r\n\r\n  @HostListener('mouseenter') mouseenter() {\r\n    if (this.condition()) return;\r\n    if (this.trigger() === 'hover') this.show();\r\n  }\r\n\r\n  @HostListener('mouseleave') mouseleave() {\r\n    if (this.condition()) return;\r\n    if (this.trigger() === 'hover') this.hide();\r\n  }\r\n\r\n  @HostListener('focus') focus() {\r\n    if (this.condition()) return;\r\n    if (this.trigger() === 'focus') this.show();\r\n  }\r\n\r\n  @HostListener('blur') blur() {\r\n    if (this.condition()) return;\r\n    if (this.trigger() === 'focus') this.hide();\r\n  }\r\n\r\n  portalComponent = signal<ComponentRef<XPopoverPortalComponent> | null>(null);\r\n\r\n  constructor() {\r\n    super();\r\n    effect(() => this.portalComponent()?.setInput('title', this.title()));\r\n    effect(() => this.portalComponent()?.setInput('content', this.content()));\r\n    effect(() => this.portalComponent()?.setInput('footer', this.footer()));\r\n    effect(() => this.portalComponent()?.setInput('width', this.width()));\r\n    effect(() => this.portalComponent()?.setInput('minWidth', this.minWidth()));\r\n    effect(() => this.portalComponent()?.setInput('maxWidth', this.maxWidth()));\r\n    effect(() => this.portalComponent()?.setInput('trigger', this.trigger()));\r\n    effect(() => this.portalComponent()?.setInput('placement', this.realPlacement()));\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    const { visible } = changes;\r\n    if (XIsChange(visible) && !this.condition()) {\r\n      if (this.visible()) this.show();\r\n      else this.hide();\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.unSubject.next();\r\n    this.unSubject.complete();\r\n  }\r\n\r\n  show() {\r\n    if (this.timeoutHide) clearTimeout(this.timeoutHide);\r\n    if (this.timeoutShow) clearTimeout(this.timeoutShow);\r\n    if (!this.portal || (this.portal && !this.portal.overlayRef?.hasAttached())) {\r\n      this.timeoutShow = setTimeout(() => {\r\n        this.createPortal();\r\n        this.visible.set(true);\r\n      }, this.mouseEnterDelay());\r\n    }\r\n  }\r\n\r\n  hide() {\r\n    if (this.timeoutHide) clearTimeout(this.timeoutHide);\r\n    if (this.timeoutShow) clearTimeout(this.timeoutShow);\r\n    if (this.portal?.overlayRef?.hasAttached()) {\r\n      this.timeoutHide = setTimeout(() => {\r\n        this.portal.overlayRef?.detach();\r\n        this.visible.set(false);\r\n      }, this.mouseLeaveDelay());\r\n    }\r\n  }\r\n\r\n  createPortal() {\r\n    const connectTo = this.connectTo();\r\n    const config: OverlayConfig = {\r\n      panelClass: this.panelClass(),\r\n      backdropClass: '',\r\n      positionStrategy: this.portalService.setPlacement({\r\n        elementRef: connectTo\r\n          ? connectTo instanceof ElementRef\r\n            ? connectTo\r\n            : new ElementRef(connectTo)\r\n          : this.elementRef,\r\n        placement: [this.placement(), 'top', 'bottom', 'left', 'right']\r\n      }),\r\n      scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n    };\r\n    this.setPosition(config);\r\n    this.portal = this.portalService.attach({\r\n      content: XPopoverPortalComponent,\r\n      viewContainerRef: this.viewContainerRef,\r\n      overlayConfig: config\r\n    });\r\n    if (this.trigger() === 'click') {\r\n      this.portal.overlayRef\r\n        ?.outsidePointerEvents()\r\n        .pipe(takeUntil(this.unSubject))\r\n        .subscribe(() => {\r\n          this.hide();\r\n        });\r\n    }\r\n    this.setInstance();\r\n  }\r\n\r\n  setPosition(config: OverlayConfig) {\r\n    let position = config.positionStrategy as FlexibleConnectedPositionStrategy;\r\n    position.positionChanges.pipe(takeUntil(this.unSubject)).subscribe((pos: ConnectedOverlayPositionChange) => {\r\n      const place = XPortalConnectedPosition.get(pos.connectionPair) as XPlacement;\r\n      if (place !== this.realPlacement()) {\r\n        this.realPlacement.set(place);\r\n        this.portal.overlayRef?.updatePosition();\r\n      }\r\n    });\r\n  }\r\n\r\n  setInstance() {\r\n    let componentRef = this.portal?.componentRef;\r\n    if (!componentRef) return;\r\n    this.portalComponent.set(componentRef);\r\n    this.realPlacement.set(this.placement());\r\n\r\n    const { portalHover } = componentRef.instance;\r\n    portalHover.subscribe((hover: boolean) => {\r\n      if (this.timeoutHide && hover) {\r\n        clearTimeout(this.timeoutHide);\r\n      } else {\r\n        this.hide();\r\n      }\r\n    });\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XPopoverDirective } from './popover.directive';\r\n\r\n@NgModule({\r\n  exports: [XPopoverDirective],\r\n  imports: [XPopoverDirective]\r\n})\r\nexport class XPopoverModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}