{"version":3,"file":"shival99-z-ui-components-z-drawer.mjs","sources":["../../../../libs/core-ui/components/z-drawer/directives/z-drawer-content.directive.ts","../../../../libs/core-ui/components/z-drawer/directives/z-drawer-footer.directive.ts","../../../../libs/core-ui/components/z-drawer/directives/z-drawer-header.directive.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.types.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.utils.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.variants.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.component.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.component.html","../../../../libs/core-ui/components/z-drawer/z-drawer.ref.ts","../../../../libs/core-ui/components/z-drawer/z-drawer.service.ts","../../../../libs/core-ui/components/z-drawer/shival99-z-ui-components-z-drawer.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n  selector: '[z-drawer-content], [zDrawerContent]',\n  standalone: true,\n})\nexport class ZDrawerContentDirective {\n  public readonly templateRef = inject(TemplateRef<unknown>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n  selector: '[z-drawer-footer], [zDrawerFooter]',\n  standalone: true,\n})\nexport class ZDrawerFooterDirective {\n  public readonly templateRef = inject(TemplateRef<unknown>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n  selector: '[z-drawer-header], [zDrawerHeader]',\n  standalone: true,\n})\nexport class ZDrawerHeaderDirective {\n  public readonly templateRef = inject(TemplateRef<unknown>);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type ComponentType } from '@angular/cdk/overlay';\nimport {\n  type EventEmitter,\n  InjectionToken,\n  type TemplateRef,\n  type Type,\n  type ViewContainerRef,\n  type WritableSignal,\n} from '@angular/core';\nimport type { ZIcon } from '@shival99/z-ui/components/z-icon';\nimport type { ClassValue } from 'clsx';\nimport type { Observable } from 'rxjs';\n\nexport type ZDrawerContentType<T> = ComponentType<T> | TemplateRef<T> | string;\nexport type ZDrawerPlacement = 'left' | 'right' | 'top' | 'bottom';\n\nexport const Z_DRAWER_DATA = new InjectionToken<any>('Z_DRAWER_DATA');\nexport const Z_DRAWER_ANIMATION_DURATION = 250;\n\nexport enum ZDrawerTriggerAction {\n  CANCEL = 'cancel',\n  OK = 'ok',\n}\n\nexport type ZDrawerOnClickCallBack<T> = (instance: T, drawerRef?: unknown) => false | void | object;\n\nconst noopFun = (): void => {};\n\n/**\n * Configuration options for z-drawer component.\n *\n * @template T - The type of the content component\n * @template U - The type of the data passed to the drawer\n */\nexport class ZDrawerOptions<T, U> {\n  /** Icon for the cancel button */\n  public zCancelIcon?: ZIcon;\n  /** Text for the cancel button. Set to null to hide the button */\n  public zCancelText?: string | null;\n  /** Whether the drawer is closable (shows close button) */\n  public zClosable?: boolean;\n  /** Drawer content - can be a component, template, or string */\n  public zContent?: string | TemplateRef<T> | Type<T>;\n  /** Custom CSS classes for the drawer */\n  public class?: ClassValue;\n  /** Custom CSS classes for the drawer body */\n  public zBodyClass?: ClassValue;\n  /** Data to be passed to the content component via Z_DRAWER_DATA token */\n  public zData?: U;\n  /**\n   * Observable for deferred data loading before showing drawer content.\n   * Drawer will show a loading spinner until the Observable completes.\n   * The resolved data will be available via Z_DRAWER_DATA.\n   */\n  public zDefer?: Observable<U>;\n  /** Description text shown below the title */\n  public zDescription?: string;\n  /** Whether to disable the header and footer shadows */\n  public zDisableShadow?: boolean;\n  /** Whether to show a border below the header */\n  public zHeaderBorder?: boolean;\n  /** Whether to show a border above the footer */\n  public zFooterBorder?: boolean;\n  /** Whether to hide the default footer */\n  public zHideFooter?: boolean;\n  /** Whether to hide the default header */\n  public zHideHeader?: boolean;\n  /**\n   * WritableSignal to control loading state of the OK button.\n   * Use this when submitting forms or calling APIs.\n   */\n  public readonly zLoading?: WritableSignal<boolean>;\n  /** Whether clicking mask closes the drawer */\n  public zMaskClosable?: boolean;\n  /** Whether OK button has destructive (red) style */\n  public zOkDestructive?: boolean;\n  /** Whether OK button is disabled */\n  public zOkDisabled?: boolean;\n  /** Overlay style: 'dark' (black overlay) or 'blur' (backdrop blur) */\n  public zOverlay?: 'dark' | 'blur';\n  /** Icon for the OK button */\n  public zOkIcon?: ZIcon;\n  /** Text for the OK button. Set to null to hide the button */\n  public zOkText?: string | null;\n  /** Callback or EventEmitter when cancel is clicked */\n  public zOnCancel?: EventEmitter<T> | ZDrawerOnClickCallBack<T> = noopFun;\n  /** Callback or EventEmitter when OK is clicked */\n  public zOnOk?: EventEmitter<T> | ZDrawerOnClickCallBack<T> = noopFun;\n  /** Drawer title - supports string, HTML string, or TemplateRef */\n  public zTitle?: string | TemplateRef<T>;\n  /** ViewContainerRef for the drawer portal */\n  public zViewContainerRef?: ViewContainerRef;\n  /** Drawer width for left/right placement (e.g., '400px', '80%') */\n  public zWidth?: string;\n  /** Drawer height for top/bottom placement (e.g., '400px', '50%') */\n  public zHeight?: string;\n  /** Placement of the drawer: 'left', 'right', 'top', 'bottom' */\n  public zPlacement?: ZDrawerPlacement;\n  /** Force shadow on header/footer regardless of scroll state */\n  public zShadow?: boolean;\n  /** Shape of the drawer: 'rounded' (with border-radius) or 'square' (no border-radius) */\n  public zShape?: 'rounded' | 'square';\n  /** WritableSignal to control content loading state (shows skeleton when true) */\n  public readonly zContentLoading?: WritableSignal<boolean>;\n  /** Number of skeleton rows to show when content is loading (default: 5 for left/right, 3 for top/bottom) */\n  public zSkeletonRows?: number;\n}\n","import { zDetectBrowser } from '@shival99/z-ui/utils';\n\nexport type ZDrawerOverlayType = 'dark' | 'blur';\nexport const getOverlayType = (): ZDrawerOverlayType => {\n  const browser = zDetectBrowser();\n  return browser.name === 'Chrome' ? 'dark' : 'blur';\n};\n","import { cva } from 'class-variance-authority';\n\nexport type ZDrawerShape = 'rounded' | 'square';\n\nexport const zDrawerVariants = cva(['fixed z-50 flex flex-col bg-background overflow-hidden'].join(' '), {\n  variants: {\n    placement: {\n      left: 'left-0 top-0 h-full max-w-[90vw] dark:border-r shadow-[3px_0_10px_rgba(0,0,0,0.08)]',\n      right: 'right-0 top-0 h-full max-w-[90vw] dark:border-l shadow-[-3px_0_10px_rgba(0,0,0,0.08)]',\n      top: 'top-0 left-0 w-full max-h-[90vh] dark:border-b shadow-[0_3px_10px_rgba(0,0,0,0.08)]',\n      bottom: 'bottom-0 left-0 w-full max-h-[90vh] dark:border-t shadow-[0_-3px_10px_rgba(0,0,0,0.08)]',\n    },\n    shape: {\n      rounded: '',\n      square: '',\n    },\n  },\n  compoundVariants: [\n    { placement: 'left', shape: 'rounded', class: 'rounded-r-lg' },\n    { placement: 'right', shape: 'rounded', class: 'rounded-l-lg' },\n    { placement: 'top', shape: 'rounded', class: 'rounded-b-lg' },\n    { placement: 'bottom', shape: 'rounded', class: 'rounded-t-lg' },\n  ],\n  defaultVariants: {\n    placement: 'right',\n    shape: 'rounded',\n  },\n});\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport {\n  BasePortalOutlet,\n  CdkPortalOutlet,\n  type ComponentPortal,\n  PortalModule,\n  TemplatePortal,\n} from '@angular/cdk/portal';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport {\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  type ComponentRef,\n  computed,\n  contentChild,\n  DestroyRef,\n  effect,\n  ElementRef,\n  type EmbeddedViewRef,\n  inject,\n  input,\n  model,\n  OnDestroy,\n  output,\n  PLATFORM_ID,\n  signal,\n  type TemplateRef,\n  viewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZButtonComponent } from '@shival99/z-ui/components/z-button';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport { ZSkeletonComponent } from '@shival99/z-ui/components/z-skeleton';\nimport { ZTooltipDirective } from '@shival99/z-ui/components/z-tooltip';\nimport { ZContentTypePipe, ZSafeHtmlPipe } from '@shival99/z-ui/pipes';\nimport { ZOverlayContainerService, ZOverlayZIndexService, ZTranslateService } from '@shival99/z-ui/services';\nimport { zMergeClasses } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { NgScrollbar } from 'ngx-scrollbar';\nimport { Subscription } from 'rxjs';\nimport { ZDrawerContentDirective } from './directives/z-drawer-content.directive';\nimport { ZDrawerFooterDirective } from './directives/z-drawer-footer.directive';\nimport { ZDrawerHeaderDirective } from './directives/z-drawer-header.directive';\nimport { ZDrawerRef } from './z-drawer.ref';\nimport { Z_DRAWER_ANIMATION_DURATION, ZDrawerOptions, ZDrawerPlacement } from './z-drawer.types';\nimport { getOverlayType } from './z-drawer.utils';\nimport { type ZDrawerShape, zDrawerVariants } from './z-drawer.variants';\n\n@Component({\n  selector: 'z-drawer',\n  imports: [\n    PortalModule,\n    NgTemplateOutlet,\n    ZButtonComponent,\n    ZIconComponent,\n    ZContentTypePipe,\n    ZTooltipDirective,\n    ZSkeletonComponent,\n    NgScrollbar,\n    ZSafeHtmlPipe,\n    TranslatePipe,\n    CdkScrollable,\n  ],\n  standalone: true,\n  templateUrl: './z-drawer.component.html',\n  styleUrl: './z-drawer.component.scss',\n  providers: [TranslatePipe],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class]': 'hostClasses()',\n    '[style.width]': 'effectiveWidth()',\n    '[style.height]': 'effectiveHeight()',\n    '[attr.data-placement]': 'effectivePlacement()',\n  },\n  exportAs: 'zDrawer',\n})\nexport class ZDrawerComponent<T, U> extends BasePortalOutlet implements OnDestroy, AfterViewChecked {\n  public readonly zOnOk = output<void>();\n  public readonly zOnCancel = output<void>();\n  public readonly zAfterClose = output<void>();\n  public readonly zScrollbar = output<NgScrollbar>();\n\n  public readonly class = input<ClassValue>('');\n  public readonly zBodyClass = input<ClassValue>('');\n  public readonly zVisible = model<boolean>(false);\n  public readonly zTitle = input<string | TemplateRef<unknown>>();\n  public readonly zDescription = input<string | TemplateRef<unknown>>();\n  public readonly zWidth = input<string>('400px');\n  public readonly zHeight = input<string>('400px');\n  public readonly zPlacement = input<ZDrawerPlacement>('right');\n  public readonly zClosable = input<boolean>(true);\n  public readonly zMaskClosable = input<boolean>(true);\n  public readonly zDisableShadow = input<boolean>(false);\n  public readonly zHeaderBorder = input<boolean>(false);\n  public readonly zFooterBorder = input<boolean>(false);\n  public readonly zHideFooter = input<boolean>(false);\n  public readonly zHideHeader = input<boolean>(false);\n  public readonly zOkText = input<string | null>(null);\n  public readonly zCancelText = input<string | null>(null);\n  public readonly zOkDestructive = input<boolean>(false);\n  public readonly zOkDisabled = input<boolean>(false);\n  public readonly zLoading = input<boolean>(false);\n  public readonly zOverlay = input<'dark' | 'blur'>(getOverlayType());\n  public readonly zShadow = input<boolean>(false);\n  public readonly zShape = input<ZDrawerShape>('rounded');\n  public readonly zContentLoading = input<boolean>(false);\n  public readonly zSkeletonRows = input<number | null>(null);\n\n  protected readonly customHeader = contentChild(ZDrawerHeaderDirective);\n  protected readonly customContent = contentChild(ZDrawerContentDirective);\n  protected readonly customFooter = contentChild(ZDrawerFooterDirective);\n\n  public drawerRef?: ZDrawerRef<T>;\n  public readonly portalOutlet = viewChild(CdkPortalOutlet);\n  protected readonly dummyTemplateRef = viewChild<TemplateRef<unknown>>('dummyTemplate');\n  protected readonly mainContentRef = viewChild<NgScrollbar>('mainContent');\n\n  protected readonly config = inject(ZDrawerOptions<T, U>, { optional: true }) || new ZDrawerOptions<T, U>();\n  private readonly _platformId = inject(PLATFORM_ID);\n  private readonly _host = inject(ElementRef<HTMLElement>);\n  private readonly _overlay = inject(Overlay);\n  private readonly _viewContainerRef = inject(ViewContainerRef);\n  private readonly _cdr = inject(ChangeDetectorRef);\n  private readonly _destroyRef = inject(DestroyRef);\n  private readonly _zTranslate = inject(ZTranslateService);\n  private readonly _overlayContainerService = inject(ZOverlayContainerService);\n  private readonly _zIndexService = inject(ZOverlayZIndexService);\n\n  private _templateOverlayRef: OverlayRef | null = null;\n  private _originalParent: HTMLElement | null = null;\n  private _originalNextSibling: Node | null = null;\n  private _backdropSubscription: Subscription | null = null;\n  private _closeTimeout: ReturnType<typeof setTimeout> | null = null;\n\n  protected readonly isLeaving = signal(false);\n  protected readonly hasScrollableContent = signal(false);\n  protected readonly isScrolledFromTop = signal(false);\n  protected readonly isScrolledToBottom = signal(false);\n  protected readonly isServiceMode = computed(() => !!this.drawerRef);\n  protected readonly isTemplateMode = computed(() => !this.isServiceMode());\n  protected readonly shouldRenderContent = computed(() => this.zVisible() || this.isLeaving());\n  protected readonly isStringContent = computed(() => typeof this.config.zContent === 'string');\n  private _lastScrollHeight = 0;\n\n  public ngAfterViewChecked(): void {\n    this._checkScrollState();\n  }\n\n  private _checkScrollState(): void {\n    const scrollbar = this.mainContentRef();\n    if (!scrollbar) {\n      return;\n    }\n\n    const viewport = scrollbar.nativeElement.querySelector('.ng-scroll-viewport') as HTMLElement;\n    if (!viewport) {\n      return;\n    }\n\n    if (viewport.scrollHeight === this._lastScrollHeight) {\n      return;\n    }\n    this._lastScrollHeight = viewport.scrollHeight;\n\n    const hasVerticalScroll = viewport.scrollHeight > viewport.clientHeight;\n    this.hasScrollableContent.set(hasVerticalScroll);\n  }\n\n  public onContentScroll(event: Event): void {\n    const target = event.target as HTMLElement;\n    if (!target) {\n      return;\n    }\n\n    const { scrollTop } = target;\n    const { scrollHeight } = target;\n    const { clientHeight } = target;\n\n    this.isScrolledFromTop.set(scrollTop > 0);\n    this.isScrolledToBottom.set(scrollTop + clientHeight >= scrollHeight - 1);\n  }\n\n  protected readonly effectiveTitle = computed(() => {\n    this._zTranslate.currentLang();\n    return this.isServiceMode() ? this.config.zTitle : this.zTitle();\n  });\n\n  protected readonly effectiveDescription = computed(() =>\n    this.isServiceMode() ? this.config.zDescription : this.zDescription()\n  );\n\n  protected readonly hasEffectiveDescription = computed(() => !!this.effectiveDescription());\n\n  protected readonly headerContentClasses = computed(() =>\n    zMergeClasses(\n      'flex w-full justify-between overflow-hidden px-4',\n      this.hasEffectiveDescription() ? 'items-start' : 'items-center'\n    )\n  );\n\n  protected readonly effectiveBodyClass = computed(() =>\n    this.isServiceMode() ? this.config.zBodyClass : this.zBodyClass()\n  );\n\n  protected readonly bodyClasses = computed(() =>\n    zMergeClasses('flex min-h-0 flex-col gap-4 px-4 py-4', this.effectiveBodyClass())\n  );\n\n  protected readonly effectiveClosable = computed(() =>\n    this.isServiceMode() ? (this.config.zClosable ?? true) : this.zClosable()\n  );\n\n  protected readonly effectiveDisableShadow = computed(() =>\n    this.isServiceMode() ? (this.config.zDisableShadow ?? false) : this.zDisableShadow()\n  );\n\n  protected readonly shouldShowShadow = computed(() => !this.effectiveDisableShadow());\n\n  protected readonly effectiveHeaderBorder = computed(() =>\n    this.isServiceMode() ? (this.config.zHeaderBorder ?? false) : this.zHeaderBorder()\n  );\n\n  protected readonly effectiveFooterBorder = computed(() =>\n    this.isServiceMode() ? (this.config.zFooterBorder ?? false) : this.zFooterBorder()\n  );\n\n  protected readonly effectiveHideFooter = computed(() =>\n    this.isServiceMode() ? this.config.zHideFooter : this.zHideFooter()\n  );\n\n  protected readonly effectiveHideHeader = computed(() =>\n    this.isServiceMode() ? (this.config.zHideHeader ?? false) : this.zHideHeader()\n  );\n\n  protected readonly effectiveOkText = computed(() => (this.isServiceMode() ? this.config.zOkText : this.zOkText()));\n\n  protected readonly effectiveCancelText = computed(() =>\n    this.isServiceMode() ? this.config.zCancelText : this.zCancelText()\n  );\n\n  protected readonly effectiveOkDestructive = computed(() =>\n    this.isServiceMode() ? this.config.zOkDestructive : this.zOkDestructive()\n  );\n\n  protected readonly effectiveOkDisabled = computed(() =>\n    this.isServiceMode() ? this.config.zOkDisabled : this.zOkDisabled()\n  );\n\n  protected readonly effectiveLoading = computed(() => {\n    if (this.isServiceMode()) {\n      return this.drawerRef?.loading() || (this.config.zLoading?.() ?? false);\n    }\n    return this.zLoading();\n  });\n\n  protected readonly effectiveContentLoading = computed(() => {\n    if (this.isServiceMode()) {\n      return this.config.zContentLoading?.() ?? false;\n    }\n    return this.zContentLoading();\n  });\n\n  protected readonly effectiveSkeletonRows = computed(() => {\n    if (this.isServiceMode() && this.config.zSkeletonRows != null) {\n      return this.config.zSkeletonRows;\n    }\n    if (this.zSkeletonRows() != null) {\n      return this.zSkeletonRows() as number;\n    }\n    const placement = this.effectivePlacement();\n    return placement === 'left' || placement === 'right' ? 6 : 3;\n  });\n\n  protected readonly effectivePlacement = computed<ZDrawerPlacement>(() => {\n    if (this.isServiceMode()) {\n      return this.config.zPlacement ?? 'right';\n    }\n    return this.zPlacement();\n  });\n\n  protected readonly effectiveShadow = computed(() => {\n    if (this.isServiceMode()) {\n      return this.config.zShadow ?? false;\n    }\n    return this.zShadow();\n  });\n\n  protected readonly effectiveShape = computed<ZDrawerShape>(() => {\n    if (this.isServiceMode()) {\n      return this.config.zShape ?? 'rounded';\n    }\n    return this.zShape();\n  });\n\n  protected readonly effectiveWidth = computed(() => {\n    const placement = this.effectivePlacement();\n    if (placement === 'top' || placement === 'bottom') {\n      return null;\n    }\n    if (this.isServiceMode()) {\n      return this.zWidth() || this.config.zWidth || null;\n    }\n    return this.shouldRenderContent() ? this.zWidth() : null;\n  });\n\n  protected readonly effectiveHeight = computed(() => {\n    const placement = this.effectivePlacement();\n    if (placement === 'left' || placement === 'right') {\n      return null;\n    }\n    if (this.isServiceMode()) {\n      return this.zHeight() || this.config.zHeight || null;\n    }\n    return this.shouldRenderContent() ? this.zHeight() : null;\n  });\n\n  protected readonly isDeferLoading = computed(() => {\n    if (!this.isServiceMode()) {\n      return false;\n    }\n    return !!this.config.zDefer && !this.portalOutlet()?.hasAttached();\n  });\n\n  protected readonly classes = computed(() =>\n    zMergeClasses(\n      zDrawerVariants({ placement: this.effectivePlacement(), shape: this.effectiveShape() }),\n      this.isServiceMode() ? this.config.class : this.class()\n    )\n  );\n\n  protected readonly hostClasses = computed(() => {\n    const baseClasses = this.classes();\n    if (this.isServiceMode()) {\n      return `${baseClasses} z-drawer-service-mode`.trim();\n    }\n    if (this.shouldRenderContent()) {\n      return `${baseClasses} z-drawer-template-mode`.trim();\n    }\n    return 'z-drawer-template-host';\n  });\n\n  constructor() {\n    super();\n\n    effect(() => {\n      this._zTranslate.currentLang();\n      this._cdr.markForCheck();\n    });\n\n    effect(() => {\n      const scrollbar = this.mainContentRef();\n      if (scrollbar) {\n        this.zScrollbar.emit(scrollbar);\n      }\n    });\n\n    effect(() => {\n      const visible = this.zVisible();\n      if (visible && this.isTemplateMode() && !this._templateOverlayRef) {\n        this._openTemplateOverlay();\n        return;\n      }\n\n      if (!visible && this.isTemplateMode() && this._templateOverlayRef && !this.isLeaving()) {\n        this._closeWithAnimation();\n      }\n    });\n  }\n\n  public ngOnDestroy(): void {\n    this._clearCloseTimeout();\n    this._disposeTemplateOverlay();\n  }\n\n  public isDestroyed(): boolean {\n    return this._destroyRef.destroyed;\n  }\n\n  public getNativeElement(): HTMLElement {\n    return this._host.nativeElement;\n  }\n\n  public attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n    this._cdr.detectChanges();\n    const outlet = this.portalOutlet();\n    if (outlet?.hasAttached()) {\n      throw new Error('Attempting to attach drawer content after content is already attached');\n    }\n    return outlet?.attachComponentPortal(portal) as ComponentRef<T>;\n  }\n\n  public attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n    const outlet = this.portalOutlet();\n    if (outlet?.hasAttached()) {\n      throw new Error('Attempting to attach drawer content after content is already attached');\n    }\n    return outlet?.attachTemplatePortal(portal) as EmbeddedViewRef<C>;\n  }\n\n  public onOkClick(): void {\n    if (this.effectiveLoading()) {\n      return;\n    }\n    this.zOnOk.emit();\n  }\n\n  public onCloseClick(): void {\n    if (this.effectiveLoading()) {\n      return;\n    }\n    this.zOnCancel.emit();\n    if (this.isTemplateMode()) {\n      this._closeWithAnimation();\n    }\n  }\n\n  public onBackdropClick(): void {\n    if (this.zMaskClosable() && !this.effectiveLoading()) {\n      this.zOnCancel.emit();\n      this._closeWithAnimation();\n    }\n  }\n\n  public open(): void {\n    this.isLeaving.set(false);\n    this.zVisible.set(true);\n  }\n\n  public close(): void {\n    this._closeWithAnimation();\n  }\n\n  private _createOverlay(): OverlayRef | null {\n    if (!isPlatformBrowser(this._platformId)) {\n      return null;\n    }\n\n    const overlayType = this.zOverlay();\n    const backdropClass = overlayType === 'blur' ? 'z-drawer-backdrop-blur' : 'z-drawer-backdrop-dark';\n    const overlayConfig = new OverlayConfig({\n      hasBackdrop: true,\n      backdropClass,\n      panelClass: 'z-drawer-overlay-pane',\n      positionStrategy: this._overlay.position().global(),\n      scrollStrategy: this._overlay.scrollStrategies.block(),\n    });\n\n    return this._overlay.create(overlayConfig);\n  }\n\n  private _openTemplateOverlay(): void {\n    if (this._templateOverlayRef) {\n      return;\n    }\n\n    const dummyRef = this.dummyTemplateRef();\n    if (!dummyRef) {\n      return;\n    }\n\n    this._templateOverlayRef = this._createOverlay();\n    if (!this._templateOverlayRef) {\n      return;\n    }\n\n    this._zIndexService.applyToOverlay(this._templateOverlayRef);\n\n    const hostElement = this._host.nativeElement;\n    this._originalParent = hostElement.parentElement;\n    this._originalNextSibling = hostElement.nextSibling;\n\n    const portal = new TemplatePortal(dummyRef, this._viewContainerRef);\n    this._templateOverlayRef.attach(portal);\n\n    const overlayPane = this._templateOverlayRef.overlayElement;\n    overlayPane.style.position = 'static';\n    overlayPane.appendChild(hostElement);\n\n    this._backdropSubscription = this._templateOverlayRef.backdropClick().subscribe(() => {\n      this.onBackdropClick();\n    });\n  }\n\n  private _closeWithAnimation(): void {\n    if (this.isLeaving()) {\n      return;\n    }\n\n    this._overlayContainerService.notifyClosing();\n    this.isLeaving.set(true);\n    this.zVisible.set(false);\n\n    const hostElement = this._host.nativeElement;\n    const { backdropElement } = this._templateOverlayRef ?? {};\n\n    if (backdropElement) {\n      backdropElement.classList.add('z-backdrop-leaving');\n    }\n\n    hostElement.classList.add('drawer-leave');\n\n    this._clearCloseTimeout();\n    this._closeTimeout = setTimeout(() => {\n      if (this._destroyRef.destroyed) {\n        return;\n      }\n\n      this.isLeaving.set(false);\n      this._disposeTemplateOverlay();\n      this.zAfterClose.emit();\n    }, Z_DRAWER_ANIMATION_DURATION);\n  }\n\n  private _clearCloseTimeout(): void {\n    if (!this._closeTimeout) {\n      return;\n    }\n\n    clearTimeout(this._closeTimeout);\n    this._closeTimeout = null;\n  }\n\n  private _disposeTemplateOverlay(): void {\n    const hostElement = this._host.nativeElement;\n\n    if (this._originalParent && this._originalNextSibling) {\n      this._originalParent.insertBefore(hostElement, this._originalNextSibling);\n    }\n\n    if (this._originalParent && !this._originalNextSibling) {\n      this._originalParent.appendChild(hostElement);\n    }\n\n    hostElement.classList.remove('drawer-leave');\n    if (this._templateOverlayRef) {\n      this._templateOverlayRef.dispose();\n      this._templateOverlayRef = null;\n    }\n\n    this._originalParent = null;\n    this._originalNextSibling = null;\n\n    if (this._backdropSubscription) {\n      this._backdropSubscription.unsubscribe();\n      this._backdropSubscription = null;\n    }\n  }\n}\n","<!-- Dummy template to trigger CDK backdrop creation -->\n<ng-template #dummyTemplate />\n\n<!-- Template mode content (rendered in host element, which is moved to overlay) -->\n@if (isTemplateMode() && shouldRenderContent()) {\n  @defer (when !effectiveContentLoading()) {\n    @if (customHeader(); as headerDir) {\n      <header\n        [class.z-drawer-header-shadow]=\"shouldShowShadow()\"\n        [class.z-drawer-header-border]=\"effectiveHeaderBorder()\">\n        <div class=\"flex items-start justify-between px-4\">\n          <ng-container *ngTemplateOutlet=\"headerDir.templateRef\" />\n        </div>\n      </header>\n    } @else if (!effectiveHideHeader()) {\n      @if (effectiveTitle()) {\n        <header\n          [class.z-drawer-header-shadow]=\"shouldShowShadow()\"\n          [class.z-drawer-header-border]=\"effectiveHeaderBorder()\">\n          <div [class]=\"headerContentClasses()\">\n            <div class=\"min-w-0 flex-1 overflow-hidden pr-2\">\n              @if (effectiveTitle(); as title) {\n                @switch (title | zContentType) {\n                  @case ('template') {\n                    <ng-container *ngTemplateOutlet=\"$any(title)\" />\n                  }\n                  @case ('html') {\n                    <h4\n                      data-testid=\"z-drawer-title\"\n                      class=\"m-0 truncate text-base leading-snug font-semibold\"\n                      z-tooltip\n                      [zContent]=\"title\"\n                      [innerHTML]=\"$any(title) | zSafeHtml\"></h4>\n                  }\n                  @default {\n                    <h4\n                      data-testid=\"z-drawer-title\"\n                      class=\"m-0 truncate text-base leading-snug font-semibold\"\n                      z-tooltip\n                      [zContent]=\"$any(title) | translate\">\n                      {{ $any(title) | translate }}\n                    </h4>\n                  }\n                }\n              }\n              @if (effectiveDescription(); as description) {\n                @switch (description | zContentType) {\n                  @case ('template') {\n                    <ng-container *ngTemplateOutlet=\"$any(description)\" />\n                  }\n                  @case ('html') {\n                    <p\n                      data-testid=\"z-drawer-description\"\n                      class=\"text-muted-foreground m-0 mt-1 text-sm\"\n                      [innerHTML]=\"$any(description) | zSafeHtml\"></p>\n                  }\n                  @default {\n                    <p data-testid=\"z-drawer-description\" class=\"text-muted-foreground m-0 mt-1 text-sm\">\n                      {{ $any(description) | translate }}\n                    </p>\n                  }\n                }\n              }\n            </div>\n            @if (effectiveClosable()) {\n              <button\n                type=\"button\"\n                data-testid=\"z-drawer-close-header-button\"\n                z-button\n                zType=\"subtle\"\n                zSize=\"xs\"\n                [zWave]=\"false\"\n                (click)=\"onCloseClick()\">\n                <z-icon zType=\"lucideX\" />\n              </button>\n            }\n          </div>\n        </header>\n      } @else if (effectiveClosable()) {\n        <header\n          [class.z-drawer-header-shadow]=\"shouldShowShadow()\"\n          [class.z-drawer-header-border]=\"effectiveHeaderBorder()\">\n          <div class=\"flex justify-end px-4\">\n            <button\n              type=\"button\"\n              data-testid=\"z-drawer-close-header-button\"\n              z-button\n              zType=\"subtle\"\n              zSize=\"xs\"\n              class=\"-mt-1 -mr-2 shrink-0\"\n              [zWave]=\"false\"\n              (click)=\"onCloseClick()\">\n              <z-icon zType=\"lucideX\" />\n            </button>\n          </div>\n        </header>\n      }\n    }\n\n    <ng-scrollbar\n      class=\"z-drawer-scrollbar flex-1\"\n      #mainContent\n      track=\"vertical\"\n      cdkScrollable\n      (scroll)=\"onContentScroll($event)\">\n      <main [class]=\"bodyClasses()\">\n        @if (customContent(); as contentDir) {\n          <ng-container *ngTemplateOutlet=\"contentDir.templateRef\" />\n        } @else {\n          <ng-content />\n        }\n      </main>\n    </ng-scrollbar>\n\n    @if (customFooter(); as footerDir) {\n      <footer\n        [class.z-drawer-footer-shadow]=\"shouldShowShadow()\"\n        [class.z-drawer-footer-border]=\"effectiveFooterBorder()\">\n        <div class=\"flex flex-row justify-end gap-2 px-4\">\n          <ng-container *ngTemplateOutlet=\"footerDir.templateRef\" />\n        </div>\n      </footer>\n    } @else if (!effectiveHideFooter()) {\n      <footer\n        [class.z-drawer-footer-shadow]=\"shouldShowShadow()\"\n        [class.z-drawer-footer-border]=\"effectiveFooterBorder()\">\n        <div class=\"flex flex-row justify-end gap-2 px-4\">\n          @if (effectiveCancelText() !== null) {\n            <button\n              type=\"button\"\n              data-testid=\"z-drawer-cancel-button\"\n              z-button\n              zType=\"outline\"\n              (click)=\"onCloseClick()\">\n              {{ effectiveCancelText() ?? 'i18n_z_ui_modal_cancel' | translate }}\n            </button>\n          }\n\n          @if (effectiveOkText() !== null) {\n            <button\n              type=\"button\"\n              data-testid=\"z-drawer-ok-button\"\n              z-button\n              [zType]=\"effectiveOkDestructive() ? 'destructive' : 'default'\"\n              [disabled]=\"effectiveOkDisabled() || effectiveLoading()\"\n              [zLoading]=\"effectiveLoading()\"\n              (click)=\"onOkClick()\">\n              {{ effectiveOkText() ?? 'i18n_z_ui_common_ok' | translate }}\n            </button>\n          }\n        </div>\n      </footer>\n    }\n  } @placeholder {\n    <div class=\"flex flex-1 flex-col gap-4 p-4\">\n      <z-skeleton class=\"h-full\" [zRows]=\"effectiveSkeletonRows()\" />\n    </div>\n  }\n}\n\n<!-- Service mode content -->\n@if (isServiceMode()) {\n  @defer (when !effectiveContentLoading()) {\n    @if (!effectiveHideHeader()) {\n      @if (effectiveTitle()) {\n        <header\n          [class.z-drawer-header-shadow]=\"shouldShowShadow()\"\n          [class.z-drawer-header-border]=\"effectiveHeaderBorder()\">\n          <div [class]=\"headerContentClasses()\">\n            <div class=\"min-w-0 flex-1 overflow-hidden pr-2\">\n              @if (effectiveTitle(); as title) {\n                @switch (title | zContentType) {\n                  @case ('template') {\n                    <ng-container *ngTemplateOutlet=\"$any(title)\" />\n                  }\n                  @case ('html') {\n                    <h4\n                      data-testid=\"z-drawer-title\"\n                      class=\"m-0 truncate text-base leading-snug font-semibold\"\n                      z-tooltip\n                      [zContent]=\"title\"\n                      [innerHTML]=\"$any(title) | zSafeHtml\"></h4>\n                  }\n                  @default {\n                    <h4\n                      data-testid=\"z-drawer-title\"\n                      class=\"m-0 truncate text-base leading-snug font-semibold\"\n                      z-tooltip\n                      [zContent]=\"$any(title) | translate\">\n                      {{ $any(title) | translate }}\n                    </h4>\n                  }\n                }\n              }\n              @if (effectiveDescription(); as description) {\n                @switch (description | zContentType) {\n                  @case ('template') {\n                    <ng-container *ngTemplateOutlet=\"$any(description)\" />\n                  }\n                  @case ('html') {\n                    <p\n                      data-testid=\"z-drawer-description\"\n                      class=\"text-muted-foreground m-0 mt-1 text-sm\"\n                      [innerHTML]=\"$any(description) | zSafeHtml\"></p>\n                  }\n                  @default {\n                    <p data-testid=\"z-drawer-description\" class=\"text-muted-foreground m-0 mt-1 text-sm\">\n                      {{ $any(description) | translate }}\n                    </p>\n                  }\n                }\n              }\n            </div>\n            @if (effectiveClosable()) {\n              <button\n                type=\"button\"\n                data-testid=\"z-drawer-close-header-button\"\n                z-button\n                zType=\"subtle\"\n                zSize=\"xs\"\n                [zWave]=\"false\"\n                (click)=\"onCloseClick()\">\n                <z-icon zType=\"lucideX\" />\n              </button>\n            }\n          </div>\n        </header>\n      } @else if (effectiveClosable()) {\n        <header\n          [class.z-drawer-header-shadow]=\"shouldShowShadow()\"\n          [class.z-drawer-header-border]=\"effectiveHeaderBorder()\">\n          <div class=\"flex justify-end px-4\">\n            <button\n              type=\"button\"\n              data-testid=\"z-drawer-close-header-button\"\n              z-button\n              zType=\"subtle\"\n              zSize=\"xs\"\n              [zWave]=\"false\"\n              (click)=\"onCloseClick()\">\n              <z-icon zType=\"lucideX\" />\n            </button>\n          </div>\n        </header>\n      }\n    }\n\n    <ng-scrollbar\n      class=\"z-drawer-scrollbar flex-1\"\n      #mainContent\n      track=\"vertical\"\n      cdkScrollable\n      (scroll)=\"onContentScroll($event)\">\n      <main [class]=\"bodyClasses()\">\n        <ng-template cdkPortalOutlet />\n\n        @if (isStringContent()) {\n          <div data-testid=\"z-drawer-content\" [innerHTML]=\"$any(config.zContent) | zSafeHtml\"></div>\n        }\n      </main>\n    </ng-scrollbar>\n\n    @if (!effectiveHideFooter()) {\n      <footer\n        [class.z-drawer-footer-shadow]=\"shouldShowShadow()\"\n        [class.z-drawer-footer-border]=\"effectiveFooterBorder()\">\n        <div class=\"flex flex-row justify-end gap-2 px-4\">\n          @if (effectiveCancelText() !== null) {\n            <button\n              type=\"button\"\n              data-testid=\"z-drawer-cancel-button\"\n              z-button\n              zType=\"outline\"\n              (click)=\"onCloseClick()\">\n              @if (config.zCancelIcon) {\n                <z-icon [zType]=\"config.zCancelIcon\" />\n              }\n              {{ effectiveCancelText() ?? 'i18n_z_ui_modal_cancel' | translate }}\n            </button>\n          }\n\n          @if (effectiveOkText() !== null) {\n            <button\n              type=\"button\"\n              data-testid=\"z-drawer-ok-button\"\n              z-button\n              [zType]=\"effectiveOkDestructive() ? 'destructive' : 'default'\"\n              [disabled]=\"effectiveOkDisabled() || effectiveLoading()\"\n              [zLoading]=\"effectiveLoading()\"\n              (click)=\"onOkClick()\">\n              @if (config.zOkIcon && !effectiveLoading()) {\n                <z-icon [zType]=\"config.zOkIcon\" />\n              }\n              {{ effectiveOkText() ?? 'i18n_z_ui_common_ok' | translate }}\n            </button>\n          }\n        </div>\n      </footer>\n    }\n  } @placeholder {\n    <div class=\"flex flex-1 flex-col gap-4 p-4\">\n      <z-skeleton class=\"h-full\" [zRows]=\"effectiveSkeletonRows()\" />\n    </div>\n  }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { isPlatformBrowser } from '@angular/common';\nimport { EventEmitter, Inject, PLATFORM_ID, signal } from '@angular/core';\nimport { filter, fromEvent, Subject, takeUntil } from 'rxjs';\nimport { ZDrawerComponent } from './z-drawer.component';\nimport { Z_DRAWER_ANIMATION_DURATION, ZDrawerOptions, ZDrawerTriggerAction } from './z-drawer.types';\n\nexport class ZDrawerRef<T = any, R = any, U = any> {\n  private readonly _destroy$ = new Subject<void>();\n  private _isClosing = false;\n  private _result?: R;\n\n  public componentInstance: T | null = null;\n  public readonly loading = signal(false);\n  public readonly zAfterClose = new EventEmitter<R | undefined>();\n\n  public constructor(\n    private readonly _overlayRef: OverlayRef,\n    private readonly _config: ZDrawerOptions<T, U>,\n    private readonly _containerInstance: ZDrawerComponent<T, U>,\n    @Inject(PLATFORM_ID) private readonly _platformId: object\n  ) {\n    this._containerInstance.zOnCancel.subscribe(() => this._trigger(ZDrawerTriggerAction.CANCEL));\n    this._containerInstance.zOnOk.subscribe(() => this._trigger(ZDrawerTriggerAction.OK));\n\n    if ((this._config.zMaskClosable ?? true) && isPlatformBrowser(this._platformId)) {\n      this._overlayRef\n        .outsidePointerEvents()\n        .pipe(takeUntil(this._destroy$))\n        .subscribe(() => {\n          if (!this.loading()) {\n            this._trigger(ZDrawerTriggerAction.CANCEL);\n          }\n        });\n    }\n\n    if (isPlatformBrowser(this._platformId)) {\n      fromEvent<KeyboardEvent>(document, 'keydown')\n        .pipe(\n          filter(event => event.key === 'Escape'),\n          takeUntil(this._destroy$)\n        )\n        .subscribe(() => {\n          if (!this.loading()) {\n            this._trigger(ZDrawerTriggerAction.CANCEL);\n          }\n        });\n    }\n  }\n\n  public setLoading(value: boolean): void {\n    this.loading.set(value);\n  }\n\n  public close(result?: R): void {\n    if (this._isClosing) {\n      return;\n    }\n\n    this._isClosing = true;\n    this._result = result;\n\n    if (isPlatformBrowser(this._platformId)) {\n      const hostElement = this._containerInstance.getNativeElement();\n      hostElement.classList.add('drawer-leave');\n      const { backdropElement } = this._overlayRef;\n      if (backdropElement) {\n        backdropElement.classList.add('z-backdrop-leaving');\n      }\n    }\n\n    setTimeout(() => {\n      if (!this._containerInstance.isDestroyed()) {\n        this._containerInstance.zAfterClose.emit();\n      }\n\n      this.zAfterClose.emit(this._result);\n\n      if (this._overlayRef) {\n        if (this._overlayRef.hasAttached()) {\n          this._overlayRef.detachBackdrop();\n        }\n\n        this._overlayRef.dispose();\n      }\n\n      if (!this._destroy$.closed) {\n        this._destroy$.next();\n        this._destroy$.complete();\n      }\n    }, Z_DRAWER_ANIMATION_DURATION);\n  }\n\n  private _trigger(action: ZDrawerTriggerAction): void {\n    if (this.loading()) {\n      return;\n    }\n\n    const trigger = {\n      ok: this._config.zOnOk,\n      cancel: this._config.zOnCancel,\n    }[action];\n\n    if (trigger instanceof EventEmitter) {\n      trigger.emit(this._getContentComponent());\n      return;\n    }\n\n    if (typeof trigger === 'function') {\n      const result = trigger(this._getContentComponent(), this) as R;\n      this._closeWithResult(result);\n      return;\n    }\n\n    this.close();\n  }\n\n  private _getContentComponent(): T {\n    return this.componentInstance as T;\n  }\n\n  private _closeWithResult(result: R): void {\n    if (result !== false) {\n      this.close(result);\n    }\n  }\n}\n","import { type ComponentType, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, Injector, PLATFORM_ID, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { ZOverlayZIndexService } from '@shival99/z-ui/services';\nimport { ZDrawerComponent } from './z-drawer.component';\nimport { ZDrawerRef } from './z-drawer.ref';\nimport { Z_DRAWER_DATA, ZDrawerContentType, ZDrawerOptions } from './z-drawer.types';\nimport { getOverlayType } from './z-drawer.utils';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ZDrawerService {\n  private readonly _overlay = inject(Overlay);\n  private readonly _injector = inject(Injector);\n  private readonly _platformId = inject(PLATFORM_ID);\n  private readonly _zIndexService = inject(ZOverlayZIndexService);\n\n  public create<T, U>(config: ZDrawerOptions<T, U>): ZDrawerRef<T> {\n    return this._open<T, U>(config.zContent as ComponentType<T>, config);\n  }\n\n  private _open<T, U>(componentOrTemplateRef: ZDrawerContentType<T>, config: ZDrawerOptions<T, U>) {\n    const overlayRef = this._createOverlay(config);\n\n    if (!overlayRef) {\n      return new ZDrawerRef(\n        undefined as unknown as OverlayRef,\n        config,\n        undefined as unknown as ZDrawerComponent<T, U>,\n        this._platformId\n      );\n    }\n\n    const drawerContainer = this._attachDrawerContainer<T, U>(overlayRef, config);\n    const drawerRef = this._attachDrawerContent<T, U>(componentOrTemplateRef, drawerContainer, overlayRef, config);\n\n    return drawerRef;\n  }\n\n  private _createOverlay<T, U>(config: ZDrawerOptions<T, U>): OverlayRef | undefined {\n    if (!isPlatformBrowser(this._platformId)) {\n      return undefined;\n    }\n\n    const overlayType = config.zOverlay ?? getOverlayType();\n    const backdropClass = overlayType === 'blur' ? 'z-drawer-backdrop-blur' : 'z-drawer-backdrop-dark';\n    const overlayConfig = new OverlayConfig({\n      hasBackdrop: true,\n      backdropClass,\n      positionStrategy: this._overlay.position().global(),\n    });\n\n    const overlayRef = this._overlay.create(overlayConfig);\n\n    this._zIndexService.applyToOverlay(overlayRef);\n\n    return overlayRef;\n  }\n\n  private _attachDrawerContainer<T, U>(overlayRef: OverlayRef, config: ZDrawerOptions<T, U>) {\n    const injector = Injector.create({\n      parent: this._injector,\n      providers: [\n        { provide: OverlayRef, useValue: overlayRef },\n        { provide: ZDrawerOptions, useValue: config },\n      ],\n    });\n\n    const containerPortal = new ComponentPortal<ZDrawerComponent<T, U>>(\n      ZDrawerComponent,\n      config.zViewContainerRef,\n      injector\n    );\n    const containerRef = overlayRef.attach<ZDrawerComponent<T, U>>(containerPortal);\n\n    return containerRef.instance;\n  }\n\n  private _attachDrawerContent<T, U>(\n    componentOrTemplateRef: ZDrawerContentType<T>,\n    drawerContainer: ZDrawerComponent<T, U>,\n    overlayRef: OverlayRef,\n    config: ZDrawerOptions<T, U>\n  ) {\n    const drawerRef = new ZDrawerRef<T>(overlayRef, config, drawerContainer, this._platformId);\n    drawerContainer.drawerRef = drawerRef;\n\n    if (componentOrTemplateRef instanceof TemplateRef) {\n      drawerContainer.attachTemplatePortal(\n        new TemplatePortal<T>(componentOrTemplateRef, null as unknown as ViewContainerRef, { drawerRef } as T)\n      );\n      return drawerRef;\n    }\n\n    if (typeof componentOrTemplateRef !== 'string') {\n      const injector = this._createInjector<T, U>(drawerRef, config);\n      const contentRef = drawerContainer.attachComponentPortal<T>(\n        new ComponentPortal(componentOrTemplateRef, config.zViewContainerRef, injector)\n      );\n\n      if (contentRef) {\n        drawerRef.componentInstance = contentRef.instance;\n      }\n    }\n\n    return drawerRef;\n  }\n\n  private _createInjector<T, U>(drawerRef: ZDrawerRef<T>, config: ZDrawerOptions<T, U>) {\n    return Injector.create({\n      parent: this._injector,\n      providers: [\n        { provide: ZDrawerRef, useValue: drawerRef },\n        { provide: Z_DRAWER_DATA, useValue: config.zData },\n      ],\n    });\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}