{"version":3,"file":"edsis-component-dialog.mjs","sources":["../../../library/component/dialog/dialog.component.ts","../../../library/component/dialog/dialog-close.directive.ts","../../../library/component/dialog/dialog-parts.component.ts","../../../library/component/dialog/edsis-component-dialog.ts"],"sourcesContent":["import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\nimport {\n  Component,\n  DestroyRef,\n  ElementRef,\n  TemplateRef,\n  ViewContainerRef,\n  computed,\n  effect,\n  inject,\n  input,\n  model,\n  output,\n  signal,\n  viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DOCUMENT } from '@angular/common';\nimport { filter } from 'rxjs/operators';\nimport { ButtonComponent } from '@edsis/component/button';\nimport { cn } from '@edsis/component/class';\nimport type { DialogBackdrop } from './dialog.types';\n\n/**\n * Declarative modal dialog. Renders into the body via CDK overlay when\n * `open` becomes `true`. Focus is trapped inside; restored to trigger on close.\n *\n * @example\n * <button Button (click)=\"open.set(true)\">Open</button>\n * <Dialog [(open)]=\"open\">\n *   <DialogHeader>\n *     <DialogTitle>Are you sure?</DialogTitle>\n *     <DialogDescription>This action cannot be undone.</DialogDescription>\n *   </DialogHeader>\n *   <DialogFooter>\n *     <button Button variant=\"outline\" (click)=\"open.set(false)\">Cancel</button>\n *     <button Button variant=\"destructive\" (click)=\"confirm()\">Delete</button>\n *   </DialogFooter>\n * </Dialog>\n */\n@Component({\n  selector: 'Dialog',\n  imports: [ButtonComponent],\n  template: `\n    <ng-template #tpl>\n      <div\n        class=\"dialog-surface\"\n        role=\"dialog\"\n        aria-modal=\"true\"\n        [attr.aria-labelledby]=\"resolvedLabelledBy()\"\n        [attr.aria-describedby]=\"resolvedDescribedBy()\"\n        [class]=\"surfaceClasses()\"\n      >\n        @if (showCloseButton()) {\n          <button\n            type=\"button\"\n            Button\n            variant=\"ghost\"\n            size=\"icon-sm\"\n            class=\"dialog-close-button absolute right-4 top-4 h-8 w-8 rounded-md p-0 text-muted-foreground opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-2 focus-visible:ring-ring\"\n            [attr.aria-label]=\"closeButtonLabel()\"\n            (click)=\"close()\"\n          >\n            <span aria-hidden=\"true\" class=\"desktop-close-glyph\">X</span>\n            <span class=\"sr-only\">{{ closeButtonLabel() }}</span>\n          </button>\n        }\n        <ng-content />\n      </div>\n    </ng-template>\n  `,\n})\nexport class DialogComponent {\n  private readonly overlay = inject(Overlay);\n  private readonly vcr = inject(ViewContainerRef);\n  private readonly trapFactory = inject(FocusTrapFactory);\n  private readonly doc = inject(DOCUMENT);\n  private readonly destroyRef = inject(DestroyRef);\n\n  readonly open = model<boolean>(false);\n  readonly backdrop = input<DialogBackdrop>('dim');\n  readonly closeOnEscape = input<boolean>(true);\n  readonly closeOnBackdropClick = input<boolean>(true);\n  readonly showCloseButton = input<boolean>(true);\n  readonly closeButtonLabel = input<string>('Close');\n  readonly labelledBy = input<string | null>(null, { alias: 'aria-labelledby' });\n  readonly describedBy = input<string | null>(null, { alias: 'aria-describedby' });\n  readonly class = input<string>('');\n\n  readonly openedChange = output<boolean>();\n  private readonly registeredLabelledBy = signal<string | null>(null);\n  private readonly registeredDescribedBy = signal<string | null>(null);\n\n  private readonly tpl = viewChild.required<TemplateRef<unknown>>('tpl');\n  private overlayRef: OverlayRef | null = null;\n  private focusTrap: FocusTrap | null = null;\n  private previousFocus: HTMLElement | null = null;\n\n  protected readonly surfaceClasses = computed(() =>\n    cn(\n      'relative grid w-full max-w-lg gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200',\n      this.class(),\n    ),\n  );\n  protected readonly resolvedLabelledBy = computed(\n    () => this.labelledBy() ?? this.registeredLabelledBy(),\n  );\n  protected readonly resolvedDescribedBy = computed(\n    () => this.describedBy() ?? this.registeredDescribedBy(),\n  );\n\n  constructor() {\n    this.destroyRef.onDestroy(() => this.detach(false));\n\n    effect(() => {\n      this.open() ? this.attach() : this.detach();\n    });\n  }\n\n  private attach(): void {\n    if (this.overlayRef) return;\n    this.previousFocus = this.doc.activeElement as HTMLElement | null;\n\n    this.overlayRef = this.overlay.create({\n      hasBackdrop: true,\n      backdropClass: ['dialog-backdrop', `dialog-backdrop--${this.backdrop()}`],\n      panelClass: 'dialog-panel',\n      scrollStrategy: this.overlay.scrollStrategies.block(),\n      positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n    });\n\n    const portal = new TemplatePortal(this.tpl(), this.vcr);\n    this.overlayRef.attach(portal);\n\n    this.focusTrap = this.trapFactory.create(this.overlayRef.hostElement);\n    this.focusTrap.focusInitialElementWhenReady();\n\n    if (this.closeOnBackdropClick()) {\n      this.overlayRef\n        .backdropClick()\n        .pipe(takeUntilDestroyed(this.destroyRef))\n        .subscribe(() => this.requestClose());\n    }\n\n    this.overlayRef\n      .keydownEvents()\n      .pipe(\n        takeUntilDestroyed(this.destroyRef),\n        filter((e) => e.key === 'Escape' && this.closeOnEscape()),\n      )\n      .subscribe((e) => {\n        e.preventDefault();\n        this.requestClose();\n      });\n\n    this.openedChange.emit(true);\n  }\n\n  private detach(emitOpenedChange = true): void {\n    if (!this.overlayRef) return;\n    this.focusTrap?.destroy();\n    this.focusTrap = null;\n    this.overlayRef.dispose();\n    this.overlayRef = null;\n    this.previousFocus?.focus?.();\n    this.previousFocus = null;\n    if (emitOpenedChange) {\n      this.openedChange.emit(false);\n    }\n  }\n\n  private requestClose(): void {\n    this.open.set(false);\n  }\n\n  close(): void {\n    this.requestClose();\n  }\n\n  registerLabelledBy(id: string): void {\n    this.registeredLabelledBy.set(id);\n  }\n\n  unregisterLabelledBy(id: string): void {\n    if (this.registeredLabelledBy() === id) {\n      this.registeredLabelledBy.set(null);\n    }\n  }\n\n  registerDescribedBy(id: string): void {\n    this.registeredDescribedBy.set(id);\n  }\n\n  unregisterDescribedBy(id: string): void {\n    if (this.registeredDescribedBy() === id) {\n      this.registeredDescribedBy.set(null);\n    }\n  }\n}\n","import { Directive, inject } from '@angular/core';\n\nimport { DialogComponent } from './dialog.component';\n\n@Directive({\n  selector: 'button[DialogClose], a[DialogClose]',\n  host: {\n    '(click)': 'closeDialog()',\n  },\n})\nexport class DialogCloseDirective {\n  private readonly dialog = inject(DialogComponent);\n\n  closeDialog(): void {\n    this.dialog.close();\n  }\n}\n","import { Component, HostAttributeToken, computed, effect, inject, input } from '@angular/core';\nimport { cn } from '@edsis/component/class';\nimport { uniqueId } from '@edsis/component/id';\nimport { DialogComponent } from './dialog.component';\n\n@Component({\n  selector: 'DialogHeader',\n  host: { '[class]': 'classes()' },\n  template: `<ng-content />`,\n})\nexport class DialogHeaderComponent {\n  readonly class = input<string>('');\n  protected readonly classes = computed(() =>\n    cn('flex flex-col gap-1.5 text-center sm:text-left', this.class()),\n  );\n}\n\n@Component({\n  selector: 'DialogTitle, h2[DialogTitle]',\n  host: {\n    '[attr.id]': 'resolvedId()',\n    '[class]': 'classes()',\n  },\n  template: `<ng-content />`,\n})\nexport class DialogTitleComponent {\n  private readonly dialog = inject(DialogComponent, { optional: true });\n  private readonly staticId = inject(new HostAttributeToken('id'), { optional: true });\n  private readonly generatedId = uniqueId('DialogTitle');\n\n  readonly id = input<string | null>(null);\n  readonly class = input<string>('');\n  protected readonly resolvedId = computed(() => this.id() ?? this.staticId ?? this.generatedId);\n  protected readonly classes = computed(() =>\n    cn('text-lg font-semibold leading-none tracking-tight', this.class()),\n  );\n\n  constructor() {\n    effect((onCleanup) => {\n      const id = this.resolvedId();\n      this.dialog?.registerLabelledBy(id);\n      onCleanup(() => this.dialog?.unregisterLabelledBy(id));\n    });\n  }\n}\n\n@Component({\n  selector: 'DialogDescription, p[DialogDescription]',\n  host: {\n    '[attr.id]': 'resolvedId()',\n    '[class]': 'classes()',\n  },\n  template: `<ng-content />`,\n})\nexport class DialogDescriptionComponent {\n  private readonly dialog = inject(DialogComponent, { optional: true });\n  private readonly staticId = inject(new HostAttributeToken('id'), { optional: true });\n  private readonly generatedId = uniqueId('DialogDescription');\n\n  readonly id = input<string | null>(null);\n  readonly class = input<string>('');\n  protected readonly resolvedId = computed(() => this.id() ?? this.staticId ?? this.generatedId);\n  protected readonly classes = computed(() => cn('text-sm text-muted-foreground', this.class()));\n\n  constructor() {\n    effect((onCleanup) => {\n      const id = this.resolvedId();\n      this.dialog?.registerDescribedBy(id);\n      onCleanup(() => this.dialog?.unregisterDescribedBy(id));\n    });\n  }\n}\n\n@Component({\n  selector: 'DialogContent',\n  host: { '[class]': 'classes()' },\n  template: `<ng-content />`,\n})\nexport class DialogContentComponent {\n  readonly class = input<string>('');\n  protected readonly classes = computed(() => cn('grid gap-4', this.class()));\n}\n\n@Component({\n  selector: 'DialogFooter',\n  host: { '[class]': 'classes()' },\n  template: `<ng-content />`,\n})\nexport class DialogFooterComponent {\n  readonly class = input<string>('');\n  protected readonly classes = computed(() =>\n    cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end sm:gap-2', this.class()),\n  );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}