{"version":3,"file":"edsis-component-menubar.mjs","sources":["../../../library/component/menubar/menubar.component.ts","../../../library/component/menubar/edsis-component-menubar.ts"],"sourcesContent":["import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  booleanAttribute,\n  Component,\n  DestroyRef,\n  Directive,\n  ElementRef,\n  TemplateRef,\n  ViewContainerRef,\n  computed,\n  forwardRef,\n  inject,\n  input,\n  output,\n  signal,\n  contentChildren,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { cn } from '@edsis/component/class';\nimport { connectedPositionFor } from '@edsis/component/overlay';\nimport { merge } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nexport type MenubarAlign = 'start' | 'center' | 'end';\n\nfunction position(align: MenubarAlign, side: 'bottom' | 'top'): ConnectedPosition {\n  return connectedPositionFor(side, align, 4);\n}\n\n@Component({\n  selector: 'Menubar',\n  host: {\n    '[class]': 'classes()',\n    '[attr.role]': '\"menubar\"',\n    '(keydown)': 'onKeydown($any($event))',\n  },\n  template: `<ng-content />`,\n})\nexport class MenubarComponent {\n  readonly class = input<string>('');\n  readonly loop = input<boolean>(true);\n\n  private readonly triggers = contentChildren(\n    forwardRef(() => MenubarTriggerDirective),\n    { descendants: true },\n  );\n\n  private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly activeTrigger = signal<MenubarTriggerDirective | null>(null);\n  private readonly openTrigger = signal<MenubarTriggerDirective | null>(null);\n\n  protected readonly classes = computed(() =>\n    cn(\n      'inline-flex min-h-10 items-center gap-1 rounded-md border border-border bg-background p-1 text-foreground shadow-sm',\n      this.class(),\n    ),\n  );\n\n  setActiveTrigger(trigger: MenubarTriggerDirective): void {\n    if (trigger.disabled()) {\n      return;\n    }\n\n    this.activeTrigger.set(trigger);\n  }\n\n  tabIndexFor(trigger: MenubarTriggerDirective): number {\n    if (trigger.disabled()) {\n      return -1;\n    }\n\n    const enabledTriggers = this.enabledTriggers();\n\n    if (enabledTriggers.length === 0) {\n      return -1;\n    }\n\n    const activeTrigger = this.activeTrigger();\n    const resolvedActiveTrigger =\n      activeTrigger && enabledTriggers.includes(activeTrigger) ? activeTrigger : enabledTriggers[0];\n\n    return resolvedActiveTrigger === trigger ? 0 : -1;\n  }\n\n  hasOpenTrigger(except?: MenubarTriggerDirective): boolean {\n    const currentOpenTrigger = this.openTrigger();\n    return !!currentOpenTrigger && currentOpenTrigger !== except;\n  }\n\n  notifyOpen(trigger: MenubarTriggerDirective): void {\n    const currentOpenTrigger = this.openTrigger();\n\n    if (currentOpenTrigger && currentOpenTrigger !== trigger) {\n      currentOpenTrigger.close({ restoreFocus: false });\n    }\n\n    this.openTrigger.set(trigger);\n    this.setActiveTrigger(trigger);\n  }\n\n  notifyClosed(trigger: MenubarTriggerDirective): void {\n    if (this.openTrigger() === trigger) {\n      this.openTrigger.set(null);\n    }\n  }\n\n  protected onKeydown(event: KeyboardEvent): void {\n    const currentTrigger = this.resolveTrigger(event.target);\n\n    if (!currentTrigger) {\n      return;\n    }\n\n    if (event.key === 'ArrowDown') {\n      event.preventDefault();\n      currentTrigger.open({ focusFirstItem: true });\n      return;\n    }\n\n    if (event.key === 'Home' || event.key === 'End') {\n      event.preventDefault();\n      this.moveFocus(currentTrigger, event.key === 'Home' ? 'start' : 'end');\n      return;\n    }\n\n    if (event.key === 'ArrowRight' || event.key === 'ArrowLeft') {\n      event.preventDefault();\n      this.moveFocus(currentTrigger, event.key === 'ArrowRight' ? 'next' : 'previous');\n    }\n  }\n\n  private enabledTriggers(): MenubarTriggerDirective[] {\n    const triggers = this.triggers();\n    return triggers ? triggers.filter((trigger) => !trigger.disabled()) : [];\n  }\n\n  private resolveTrigger(target: EventTarget | null): MenubarTriggerDirective | null {\n    return this.triggers().find((trigger) => trigger.containsTarget(target)) ?? null;\n  }\n\n  private moveFocus(\n    currentTrigger: MenubarTriggerDirective,\n    direction: 'previous' | 'next' | 'start' | 'end',\n  ): void {\n    const enabledTriggers = this.enabledTriggers();\n\n    if (enabledTriggers.length === 0) {\n      return;\n    }\n\n    const currentIndex = enabledTriggers.indexOf(currentTrigger);\n\n    if (currentIndex === -1) {\n      enabledTriggers[0]?.focus();\n      return;\n    }\n\n    const nextTrigger =\n      direction === 'start'\n        ? enabledTriggers[0]\n        : direction === 'end'\n          ? enabledTriggers[enabledTriggers.length - 1]\n          : enabledTriggers[\n              this.nextIndex(\n                currentIndex,\n                direction === 'next' ? this.horizontalStep() : -this.horizontalStep(),\n                enabledTriggers.length,\n              )\n            ];\n\n    if (!nextTrigger || nextTrigger === currentTrigger) {\n      return;\n    }\n\n    nextTrigger.focus();\n    this.setActiveTrigger(nextTrigger);\n\n    if (this.hasOpenTrigger(nextTrigger)) {\n      nextTrigger.open();\n    }\n  }\n\n  private nextIndex(currentIndex: number, delta: number, length: number): number {\n    const rawIndex = currentIndex + delta;\n\n    if (this.loop()) {\n      return (rawIndex + length) % length;\n    }\n\n    return Math.max(0, Math.min(length - 1, rawIndex));\n  }\n\n  private horizontalStep(): number {\n    return getComputedStyle(this.host.nativeElement).direction === 'rtl' ? -1 : 1;\n  }\n}\n\n@Component({\n  selector: 'MenubarMenu',\n  host: {\n    class: 'contents',\n  },\n  template: `<ng-content />`,\n})\nexport class MenubarMenuComponent {}\n\n@Directive({\n  selector: 'ng-template[MenubarContent]',\n  exportAs: 'MenubarContent',\n})\nexport class MenubarContentDirective {\n  readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n\n@Directive({\n  selector: '[MenubarTrigger]',\n  exportAs: 'MenubarTrigger',\n  host: {\n    class:\n      'inline-flex min-w-0 select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n    '[attr.role]': '\"menuitem\"',\n    '[attr.aria-haspopup]': '\"menu\"',\n    '[attr.aria-expanded]': 'isOpen()',\n    '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n    '[attr.tabindex]': 'tabIndex()',\n    '[attr.disabled]': 'disabled() ? \"\" : null',\n    '(click)': 'toggle()',\n    '(keydown.enter)': 'openFromKeyboard($any($event), false)',\n    '(keydown.space)': 'openFromKeyboard($any($event), false)',\n    '(keydown.arrowDown)': 'openFromKeyboard($any($event), true)',\n    '(focus)': 'syncActiveState()',\n    '(mouseenter)': 'openFromHover()',\n  },\n})\nexport class MenubarTriggerDirective {\n  readonly MenubarTrigger = input.required<MenubarContentDirective>();\n  readonly align = input<MenubarAlign>('start');\n  readonly disabled = input(false, { transform: booleanAttribute });\n\n  readonly openedChange = output<boolean>();\n  readonly isOpen = signal(false);\n\n  private readonly overlay = inject(Overlay);\n  private readonly vcr = inject(ViewContainerRef);\n  private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly menubar = inject(MenubarComponent, { optional: true });\n  private readonly destroyRef = inject(DestroyRef);\n\n  private overlayRef: OverlayRef | null = null;\n\n  constructor() {\n    this.destroyRef.onDestroy(() => this.close({ restoreFocus: false, emitOpenedChange: false }));\n  }\n\n  toggle(): void {\n    if (this.disabled()) {\n      return;\n    }\n\n    this.isOpen() ? this.close() : this.open();\n  }\n\n  open(options: { focusFirstItem?: boolean } = {}): void {\n    if (this.isOpen() || this.disabled()) {\n      return;\n    }\n\n    this.menubar?.notifyOpen(this);\n\n    const overlayRef = this.overlay.create({\n      positionStrategy: this.overlay\n        .position()\n        .flexibleConnectedTo(this.el)\n        .withFlexibleDimensions(false)\n        .withPush(false)\n        .withPositions([position(this.align(), 'bottom'), position(this.align(), 'top')]),\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n      hasBackdrop: false,\n      panelClass: 'menubar-panel',\n    });\n\n    const portal = new TemplatePortal(this.MenubarTrigger().template, this.vcr);\n\n    overlayRef.attach(portal);\n    this.overlayRef = overlayRef;\n\n    merge(\n      overlayRef\n        .outsidePointerEvents()\n        .pipe(filter((event) => !this.el.nativeElement.contains(event.target as Node))),\n      overlayRef.keydownEvents().pipe(filter((event) => event.key === 'Escape')),\n      overlayRef.detachments(),\n    )\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => this.close());\n\n    this.isOpen.set(true);\n    this.openedChange.emit(true);\n\n    if (options.focusFirstItem) {\n      queueMicrotask(() => this.focusFirstItem());\n    }\n  }\n\n  close(options: { restoreFocus?: boolean; emitOpenedChange?: boolean } = {}): void {\n    const { restoreFocus = true, emitOpenedChange = true } = options;\n\n    if (!this.isOpen()) {\n      return;\n    }\n\n    const overlayRef = this.overlayRef;\n    this.overlayRef = null;\n    this.isOpen.set(false);\n    overlayRef?.dispose();\n\n    if (emitOpenedChange) {\n      this.openedChange.emit(false);\n    }\n\n    this.menubar?.notifyClosed(this);\n\n    if (restoreFocus) {\n      this.el.nativeElement.focus();\n    }\n  }\n\n  focus(): void {\n    this.el.nativeElement.focus();\n  }\n\n  containsTarget(target: EventTarget | null): boolean {\n    return target instanceof Node && this.el.nativeElement.contains(target);\n  }\n\n  protected tabIndex(): number {\n    return this.menubar?.tabIndexFor(this) ?? (this.disabled() ? -1 : 0);\n  }\n\n  protected openFromKeyboard(event: KeyboardEvent, focusFirstItem: boolean): void {\n    if (this.disabled()) {\n      return;\n    }\n\n    event.preventDefault();\n    this.open({ focusFirstItem });\n  }\n\n  protected syncActiveState(): void {\n    this.menubar?.setActiveTrigger(this);\n  }\n\n  protected openFromHover(): void {\n    if (this.disabled() || !this.menubar?.hasOpenTrigger(this)) {\n      return;\n    }\n\n    this.open();\n  }\n\n  private focusFirstItem(): void {\n    const overlayElement = this.overlayRef?.overlayElement;\n\n    if (!overlayElement) {\n      return;\n    }\n\n    const firstItem = overlayElement.querySelector<HTMLElement>(\n      '[role=\"menuitem\"]:not([aria-disabled=\"true\"]), [role=\"menuitemcheckbox\"]:not([aria-disabled=\"true\"]), [role=\"menuitemradio\"]:not([aria-disabled=\"true\"])',\n    );\n\n    if (firstItem) {\n      firstItem.focus();\n      return;\n    }\n\n    // No enabled item (all disabled or content not rendered yet): move focus\n    // into the menu surface so keyboard focus still enters the popup.\n    const surface = overlayElement.querySelector<HTMLElement>('[role=\"menu\"]');\n    if (surface) {\n      surface.tabIndex = -1;\n      surface.focus();\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}