{"version":3,"file":"daffodil-design-menu.mjs","sources":["../../../libs/design/menu/src/config/menu-config.ts","../../../libs/design/menu/src/helpers/create-overlay.ts","../../../libs/design/menu/src/services/menu.service.ts","../../../libs/design/menu/src/config/menu-id.ts","../../../libs/design/menu/src/menu-activator/menu-activator.component.ts","../../../libs/design/menu/src/menu-item/menu-item.token.ts","../../../libs/design/menu/src/menu-item/menu-item.component.ts","../../../libs/design/menu/src/menu-item/menu-item.component.html","../../../libs/design/menu/src/menu/menu.component.ts","../../../libs/design/menu/src/menu/menu.component.html","../../../libs/design/menu/src/menu.module.ts","../../../libs/design/menu/src/menu.ts","../../../libs/design/menu/src/daffodil-design-menu.ts"],"sourcesContent":["import { createConfigInjectionToken } from '@daffodil/core';\n\n/**\n * Configuration for a menu instance.\n */\nexport interface DaffMenuConfig {\n  /**\n   * A unique identifier for the menu instance.\n   */\n  menuId?: string;\n}\n\nconst daffMenuConfigDefault: DaffMenuConfig = {\n  menuId: '',\n};\n\nexport const {\n  /**\n   * An injection token for the menu configuration.\n   */\n  token: DAFF_MENU_CONFIG,\n  /**\n   * Provider function for {@link DAFF_MENU_CONFIG}.\n   */\n  provider: provideDaffMenuConfig,\n} = createConfigInjectionToken<DaffMenuConfig>(daffMenuConfigDefault, 'DAFF_MENU_CONFIG');\n","import {\n  Overlay,\n  OverlayConfig,\n} from '@angular/cdk/overlay';\nimport { ElementRef } from '@angular/core';\n\nexport function daffMenuCreateOverlay(overlay: Overlay, element: ElementRef, config: OverlayConfig = {}) {\n  return overlay.create({\n    hasBackdrop: true,\n    backdropClass: 'cdk-overlay-transparent-backdrop',\n    scrollStrategy: overlay.scrollStrategies.block(),\n    disposeOnNavigation: true,\n    positionStrategy: overlay\n      .position()\n      .flexibleConnectedTo(element)\n      .withPositions([\n        {\n          originX: 'start',\n          originY: 'bottom',\n          overlayX: 'start',\n          overlayY: 'top',\n          offsetY: 0,\n        },\n        {\n          originX: 'start',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'bottom',\n        },\n      ]),\n    ...config,\n  });\n};\n","import {\n  Overlay,\n  OverlayRef,\n} from '@angular/cdk/overlay';\nimport {\n  ComponentPortal,\n  TemplatePortal,\n} from '@angular/cdk/portal';\nimport {\n  Injectable,\n  Injector,\n  TemplateRef,\n  Type,\n  ViewContainerRef,\n} from '@angular/core';\nimport {\n  BehaviorSubject,\n  map,\n  Observable,\n} from 'rxjs';\n\nimport { DaffLazyComponent } from '@daffodil/design';\n\nimport {\n  DAFF_MENU_CONFIG,\n  DaffMenuConfig,\n} from '../config/menu-config';\nimport { daffMenuCreateOverlay } from '../helpers/create-overlay';\n\nexport type DaffMenuSlot = TemplateRef<unknown> | DaffLazyComponent | Type<unknown>;\n\n@Injectable()\nexport class DaffMenuService {\n  protected _overlay: OverlayRef | null;\n  private _activator: ViewContainerRef;\n\n  private $_open: BehaviorSubject<boolean> = new BehaviorSubject(false);\n  public open$: Observable<boolean> = this.$_open.asObservable();\n\n  constructor(\n    protected overlay: Overlay,\n    private injector: Injector,\n  ) {}\n\n  /**\n   * @docs-private\n   */\n  protected async _createOverlay(activatorElement: ViewContainerRef, component: DaffMenuSlot, config?: DaffMenuConfig) {\n    if (!this._overlay) {\n      this._overlay = daffMenuCreateOverlay(this.overlay, activatorElement.element);\n      if(typeof component === 'object' && (<DaffLazyComponent>component)?.import) {\n        component = await (<DaffLazyComponent>component).import();\n      }\n\n      const injector = Injector.create({\n        providers: [{ provide: DAFF_MENU_CONFIG, useValue: config }],\n        parent: this.injector,\n      });\n\n      if(component instanceof Type) {\n        this._overlay.attach(new ComponentPortal(<Type<unknown>>component, null, injector));\n      } else if (component instanceof TemplateRef) {\n        this._overlay.attach(new TemplatePortal(component, activatorElement, null, injector));\n      }\n\n      this._overlay.backdropClick().pipe(\n        map(() => this.close()),\n      ).subscribe();\n    }\n  }\n\n  /**\n   * @docs-private\n   */\n  protected _destroyOverlay() {\n    if (this._overlay) {\n      this._overlay.detach();\n      this._overlay.dispose();\n      this._overlay = null;\n    }\n  }\n\n  close() {\n    this._destroyOverlay();\n    this.$_open.next(false);\n    this._activator.element.nativeElement.focus();\n  }\n\n  open(activator: ViewContainerRef, component: DaffMenuSlot, config?: DaffMenuConfig) {\n    if (this._overlay) {\n      this._destroyOverlay();\n    }\n    this._createOverlay(activator, component, config);\n    this._activator = activator;\n    this.$_open.next(true);\n  }\n}\n","let daffMenuUniqueId = 0;\n\n/**\n * Generates a unique menu ID for each menu instance.\n */\nexport const daffNextMenuId = (): string =>\n  `daff-menu-${daffMenuUniqueId++}`;\n","import {\n  ChangeDetectorRef,\n  computed,\n  Directive,\n  input,\n  Input,\n  OnDestroy,\n  signal,\n  TemplateRef,\n  Type,\n  ViewContainerRef,\n} from '@angular/core';\nimport {\n  Subject,\n  takeUntil,\n} from 'rxjs';\n\nimport { daffNextMenuId } from '../config/menu-id';\nimport { DaffMenuService } from '../services/menu.service';\n\n/**\n * Directive that triggers the menu to open/close. Applied to the button that activates the menu. The selector doubles as an input for the menu content to display.\n *\n * @example\n * ```html\n * <button [daffMenuActivator]=\"menu\">\n *   Open Menu\n * </button>\n * ```\n */\n@Directive({\n  selector: '[daffMenuActivator]',\n  host: {\n    '(click)': 'onClick($event)',\n    'aria-haspopup': 'menu',\n    '[attr.aria-expanded]': 'ariaExpanded',\n    '[attr.aria-controls]': '_open ? menuId() : null',\n  },\n  exportAs: 'daffMenuActivator',\n})\nexport class DaffMenuActivatorDirective implements OnDestroy {\n\n  private _destroyed$ = new Subject<boolean>();\n  private _defaultMenuId = daffNextMenuId();\n  protected _open: boolean;\n  readonly isOpen = signal(false);\n\n  /**\n   * The menu content to display when activated.\n   */\n  @Input() daffMenuActivator: Type<unknown> | TemplateRef<unknown>;\n\n  /**\n   * An optional ID for the activator.\n   * When set, the menu's ID is derived as `${id}-menu`.\n   */\n  id = input<string>();\n\n  /**\n   * The resolved menu ID.\n   */\n  protected menuId = computed(() => {\n    const id = this.id();\n    return id ? `${id}-menu` : this._defaultMenuId;\n  });\n\n  /**\n   * @docs-private\n   */\n  get ariaExpanded() {\n    return this._open ? 'true' : 'false';\n  }\n\n  constructor(\n    private service: DaffMenuService,\n    private viewContainerRef: ViewContainerRef,\n    private cdRef: ChangeDetectorRef,\n  ) {\n    this.service.open$.pipe(\n      takeUntil(this._destroyed$),\n    ).subscribe((val: boolean) => {\n      this._open = val;\n      this.isOpen.set(this._open);\n      this.cdRef.markForCheck();\n    });\n  }\n\n  /**\n   * @docs-private\n   */\n  ngOnDestroy(): void {\n    this._destroyed$.next(true);\n    this._destroyed$.complete();\n  }\n\n  /**\n   * @docs-private\n   */\n  focus() {\n    this.viewContainerRef.element.nativeElement.focus();\n  }\n\n  /**\n   * @docs-private\n   */\n  onClick(event: MouseEvent) {\n    event.preventDefault();\n    this.service.open(this.viewContainerRef, this.daffMenuActivator, { menuId: this.menuId() });\n  }\n}\n","import { FocusableOption } from '@angular/cdk/a11y';\n\nimport { createSingletonInjectionToken } from '@daffodil/core';\n\n/**\n * Injection token/provider pair used to identify menu items.\n *\n * `DaffMenuComponent` uses `@ContentChildren(DAFF_MENU_ITEM_TOKEN)` to discover\n * its menu items. Use `provideDaffMenuItemToken` in component providers to register\n * custom directives and components as menu items alongside native `daff-menu-item` elements.\n */\nexport const {\n  token: DAFF_MENU_ITEM_TOKEN,\n  provider: provideDaffMenuItemToken,\n} = createSingletonInjectionToken<FocusableOption>('DAFF_MENU_ITEM_TOKEN');\n","/* eslint-disable quote-props */\nimport { FocusableOption } from '@angular/cdk/a11y';\nimport {\n  Component,\n  ChangeDetectionStrategy,\n  ContentChild,\n  ElementRef,\n} from '@angular/core';\n\nimport { DaffPrefixDirective } from '@daffodil/design';\n\nimport { provideDaffMenuItemToken } from './menu-item.token';\nimport { DaffMenuService } from '../services/menu.service';\n\n/**\n * Individual clickable items within the menu. Applied to `<button>` or `<a>` elements.\n *\n * @example\n * ```\n * <a daff-menu-item href=\"/\">Settings</a>\n * <button daff-menu-item href=\"/\">Settings</button>\n * ```\n */\n@Component({\n  selector:\n    'a[daff-menu-item]' + ',' +\n    'button[daff-menu-item]',\n  templateUrl: './menu-item.component.html',\n  host: {\n    'class': 'daff-menu-item',\n    'role': 'menuitem',\n    '(click)': 'onClick()',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [provideDaffMenuItemToken(DaffMenuItemComponent)],\n})\n\nexport class DaffMenuItemComponent implements FocusableOption {\n  /**\n   * @docs-private\n   */\n  @ContentChild(DaffPrefixDirective) _prefix: DaffPrefixDirective;\n\n  constructor(\n    private _elementRef: ElementRef<HTMLElement>,\n    private _menuService: DaffMenuService,\n  ) {}\n\n  /**\n   * @docs-private\n   */\n  onClick() {\n    this._menuService.close();\n  }\n\n  /**\n   * Focus the menu item.\n   */\n  focus() {\n    this._elementRef.nativeElement.focus();\n  }\n}\n","@if (_prefix) {\n  <ng-content select=\"[daffPrefix]\"></ng-content>\n}\n<ng-content></ng-content>","/* eslint-disable quote-props */\nimport {\n  ConfigurableFocusTrapFactory,\n  ConfigurableFocusTrap,\n  FocusKeyManager,\n  FocusableOption,\n} from '@angular/cdk/a11y';\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Inject,\n  QueryList,\n  ContentChildren,\n  ViewEncapsulation,\n} from '@angular/core';\n\nimport {\n  DAFF_MENU_CONFIG,\n  DaffMenuConfig,\n} from '../config/menu-config';\nimport { DaffMenuItemComponent } from '../menu-item/menu-item.component';\nimport { DAFF_MENU_ITEM_TOKEN } from '../menu-item/menu-item.token';\nimport { DaffMenuService } from '../services/menu.service';\n\n/**\n * The floating panel that contains menu items.\n *\n * @example\n * ```html\n * <daff-menu>\n *  <button daff-menu-item>\n *    <fa-icon [icon]=\"faEdit\" daffPrefix></fa-icon>\n *      Edit\n *    </button>\n *    <button daff-menu-item>\n *      <fa-icon [icon]=\"faTrash\" daffPrefix></fa-icon>\n *      Delete\n *    </button>\n *    <a href=\"/settings\" daff-menu-item>\n *      <fa-icon [icon]=\"faCog\" daffPrefix></fa-icon>\n *      Settings\n *    </a>\n * </daff-menu>\n * ```\n */\n@Component({\n  selector: 'daff-menu',\n  templateUrl: './menu.component.html',\n  styleUrl: './menu.component.scss',\n  encapsulation: ViewEncapsulation.None, // Required to allow breadcrumb items to take on `.daff-menu-item` styles\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'daff-menu',\n    'tabindex': '0',\n    'role': 'menu',\n    '[id]': 'config.menuId',\n    '(keydown)': 'handleKeydown($event)',\n  },\n  imports: [\n    DaffMenuItemComponent,\n  ],\n})\nexport class DaffMenuComponent implements AfterContentInit, AfterViewInit {\n  private _focusTrap: ConfigurableFocusTrap;\n  private _keyManager: FocusKeyManager<unknown>;\n  /**\n   * @docs-private\n   *\n   * Content children that provide `DAFF_MENU_ITEM_TOKEN` are treated as menu items.\n   * This includes both `daff-menu-item` components and any custom directives that also provide the token.\n   */\n  @ContentChildren(DAFF_MENU_ITEM_TOKEN) private _items: QueryList<FocusableOption>;\n\n  constructor(\n    private _focusTrapFactory: ConfigurableFocusTrapFactory,\n    private _elementRef: ElementRef<HTMLElement>,\n    private menuService: DaffMenuService,\n\n    /**\n     * @docs-private\n     */\n    @Inject(DAFF_MENU_CONFIG) public readonly config: DaffMenuConfig,\n  ) {}\n\n  /**\n   * @docs-private\n   *\n   * Handles keyboard navigation.\n   */\n  handleKeydown(event: KeyboardEvent): void {\n    switch (event.key) {\n      case 'Escape':\n        event.preventDefault();\n        this.menuService.close();\n        break;\n      case 'ArrowDown':\n      case 'ArrowUp':\n      case 'Home':\n      case 'End':\n        event.preventDefault();\n        this._keyManager.onKeydown(event);\n        break;\n    }\n  }\n\n  /**\n   * @docs-private\n   */\n  ngAfterContentInit() {\n    this._focusTrap = this._focusTrapFactory.create(\n      this._elementRef.nativeElement,\n    );\n\n    this._keyManager = new FocusKeyManager(this._items)\n      .withWrap()\n      .withHomeAndEnd();\n  }\n\n  /**\n   * @docs-private\n   */\n  ngAfterViewInit() {\n    // Set focus to the first menu item when menu opens\n    if (this._items.length > 0) {\n      this._keyManager.setFirstItemActive();\n      this._keyManager.setActiveItem(0);\n    }\n  }\n}\n","<ng-content></ng-content>","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffPrefixDirective } from '@daffodil/design';\n\nimport { DaffMenuComponent } from './menu/menu.component';\nimport { DaffMenuActivatorDirective } from './menu-activator/menu-activator.component';\nimport { DaffMenuItemComponent } from './menu-item/menu-item.component';\nimport { DaffMenuService } from './services/menu.service';\n\n/**\n * @deprecated in favor of {@link DAFF_MENU_COMPONENTS} Deprecated in version 0.92.0. Will be removed in version 0.95.0.\n */\n@NgModule({\n  imports: [\n    CommonModule,\n    OverlayModule,\n    DaffMenuActivatorDirective,\n    DaffMenuComponent,\n    DaffMenuItemComponent,\n    DaffPrefixDirective,\n  ],\n  exports: [\n    DaffMenuActivatorDirective,\n    DaffMenuComponent,\n    DaffMenuItemComponent,\n    DaffPrefixDirective,\n  ],\n  providers: [\n    DaffMenuService,\n  ],\n})\n\nexport class DaffMenuModule {}\n","import { DaffMenuComponent } from './menu/menu.component';\nimport { DaffMenuActivatorDirective } from './menu-activator/menu-activator.component';\nimport { DaffMenuItemComponent } from './menu-item/menu-item.component';\n\n/**\n * @docs-private\n */\nexport const DAFF_MENU_COMPONENTS = <const> [\n  DaffMenuComponent,\n  DaffMenuActivatorDirective,\n  DaffMenuItemComponent,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DaffMenuService"],"mappings":"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"}