{"version":3,"file":"talenra-ngx-base-menu.mjs","sources":["../../../projects/ngx-base/menu/src/menu-link/menu-link.component.ts","../../../projects/ngx-base/menu/src/menu-link/menu-link.component.html","../../../projects/ngx-base/menu/src/menu/menu.component.ts","../../../projects/ngx-base/menu/src/menu/menu.component.html","../../../projects/ngx-base/menu/src/menu-action-item/menu-action-item.component.ts","../../../projects/ngx-base/menu/src/menu-action-item/menu-action-item.component.html","../../../projects/ngx-base/menu/src/menu-anchor/menu-anchor.directive.ts","../../../projects/ngx-base/menu/src/menu-separator/menu-separator.component.ts","../../../projects/ngx-base/menu/src/menu-bar/menu-bar.component.ts","../../../projects/ngx-base/menu/src/menu-bar/menu-bar.component.html","../../../projects/ngx-base/menu/src/menu-title/menu-title.component.ts","../../../projects/ngx-base/menu/src/menu-title/menu-title.component.html","../../../projects/ngx-base/menu/talenra-ngx-base-menu.ts"],"sourcesContent":["import { booleanAttribute, ChangeDetectionStrategy, Component, inject, input, Input } from '@angular/core';\nimport { IconComponent } from '@talenra/ngx-base/icons';\nimport { CdkMenuItem } from '@angular/cdk/menu';\nimport { FocusOrigin, FocusableOption } from '@angular/cdk/a11y';\nimport { Router } from '@angular/router';\n\n/**\n * Type of the callback function that is called when the MenuLink is selected.\n *\n * ### Import\n *\n * ```typescript\n * import { TSelectCallback } from '@talenra/ngx-base/menu';\n * ```\n *\n * @see {@link MenuComponent}\n */\nexport type TSelectCallback = (menuLink: MenuLinkComponent) => void;\n\n/**\n * MenuLink is a container for links in a Menu. It requires a label and can optionally have an icon on the left.\n *\n * MenuLink can have a router link and/or a callback. The callback will be called before the router link is navigated\n * to. If there is no select callback and no router link the MenuLink will be displayed as disabled.\n *\n * MenuLink can have an action icon which will be displayed on the right-hand side. The action icon can be displayed as\n * disabled.\n *\n * ```html\n * <talenra-menu-link label=\"Menu\" routerLink=\"/menu\" />\n * <talenra-menu-link label=\"Refresh\" icon=\"ini\" [selectCallback]=\"menuItemSelected\" />\n * ```\n *\n * ### Import\n *\n * ```typescript\n * import { MenuLinkComponent } from '@talenra/ngx-base/menu';\n * ```\n *\n * @see {@link MenuComponent}\n *\n * <example-url>../../#/menu</example-url>\n */\n@Component({\n  selector: 'talenra-menu-link',\n  templateUrl: './menu-link.component.html',\n  styleUrl: './menu-link.component.scss',\n  imports: [IconComponent, CdkMenuItem],\n  hostDirectives: [CdkMenuItem],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '(click)': 'onSelect()',\n    '(keydown)': 'onSelectByEnter($event)',\n    '[class.disabled]': 'disabled',\n    '[class.pointer-disabled]': 'classPointerDisabled',\n  },\n})\nexport class MenuLinkComponent implements FocusableOption {\n  /**\n   * The label of the MenuLink.\n   * @required\n   */\n  label = input.required<string>();\n\n  /**\n   * The icon of the MenuLink.\n   * @optional\n   */\n  icon = input<string>();\n\n  /**\n   * The router link of the MenuLink.\n   * @optional\n   */\n  routerLink = input<string>();\n\n  /**\n   * The shortcut of the MenuLink.\n   * @optional\n   *\n   * If a shortcut is provided the actionIcon will be ignored\n   */\n  shortcut = input<string>();\n\n  /**\n   * The action icon of the MenuLink.\n   * @optional\n   *\n   * If a shortcut is provided the actionIcon will be ignored\n   */\n  actionIcon = input<string>();\n\n  /**\n   * The callback function that is called when the MenuLink is selected.\n   * @optional\n   */\n  @Input() selectCallback?: TSelectCallback;\n\n  /**\n   * Whether the action icon is disabled.\n   * @optional\n   */\n  @Input({ transform: booleanAttribute })\n  actionIconDisabled: boolean = false;\n\n  // part of the FocusableOption interface, can't be a signal input (yet)\n  /**\n   * Whether the MenuLink is disabled.\n   * @optional\n   */\n  @Input({ transform: booleanAttribute })\n  disabled?: boolean;\n\n  /** @internal */\n  router = inject(Router);\n\n  private get pointerDisabled(): boolean {\n    return this.routerLink() === undefined && this.selectCallback === undefined;\n  }\n\n  /** @internal */\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  focus(_origin?: FocusOrigin | undefined): void {}\n\n  /** @internal */\n  getLabel?(): string {\n    return this.label();\n  }\n\n  private onSelect() {\n    if (this.disabled) return;\n    this.onClickOrSelect();\n  }\n\n  private onSelectByEnter(event?: KeyboardEvent) {\n    if (this.disabled) return;\n    if (event && event.key === 'Enter') {\n      this.onClickOrSelect();\n    }\n  }\n\n  private onClickOrSelect() {\n    if (this.selectCallback) {\n      this.selectCallback(this);\n    }\n    if (this.routerLink()) {\n      this.router.navigate([this.routerLink()]);\n    }\n  }\n}\n","<div class=\"entry\">\n  @if (icon()) {\n    <talenra-icon [name]=\"icon()!\" class=\"icon\" />\n  }\n  <span class=\"label\">{{ label() }}</span>\n</div>\n<div class=\"addition\">\n  @if (shortcut()) {\n    <span>{{ shortcut() }}</span>\n  } @else if (actionIcon() !== undefined) {\n    <talenra-icon [name]=\"actionIcon()!\" class=\"action-icon\" [class.disabled]=\"actionIconDisabled\" />\n  }\n</div>\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ContentChildren, QueryList } from '@angular/core';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { CdkMenu } from '@angular/cdk/menu';\nimport { MenuLinkComponent } from '../menu-link/menu-link.component';\n\n/**\n * Menu is a container for a list of menu items.\n *\n * There are three different menu items\n * - MenuLink: A clickable menu item that navigates to a different page and/or triggers a given callback\n * - MenuActionItem: A non-clickable menu item that can be used as container for action items\n * - MenuSeparator: A horizontal line that separates menu items\n *\n * ```html\n * <talenra-menu>\n *   <talenra-menu-link routerLink=\"/home\">Home</talenra-menu-link>\n *   <talenra-menu-link routerLink=\"/about\">About</talenra-menu-link>\n *   <talenra-menu-link routerLink=\"/contact\">Contact</talenra-menu-link>\n *   <talenra-menu-separator></talenra-menu-separator>\n *   <talenra-menu-action-item>\n *     <talenra-icon name=\"flag-circle\" (click)=\"setPriority('high')\"></talenra-icon>\n *     <talenra-icon name=\"flag-circle\" (click)=\"setPriority('medium')\"></talenra-icon>\n *     <talenra-icon name=\"flag-circle\" (click)=\"setPriority('low')\"></talenra-icon>\n *   </talenra-menu-action-item>\n * </talenra-menu>\n *\n * ### Import\n *\n * ```typescript\n * import { MenuComponent } from '@talenra/ngx-base/menu';\n * ```\n *\n * @see {@link MenuLinkComponent}\n * @see {@link MenuActionItemComponent}\n * @see {@link MenuSeparatorComponent}\n * @see {@link MenuAnchorDirective}\n *\n * <example-url>../../#/menu</example-url>\n */\n@Component({\n  selector: 'talenra-menu',\n  imports: [CdkMenu],\n  templateUrl: './menu.component.html',\n  styleUrl: './menu.component.scss',\n  hostDirectives: [CdkMenu],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '(keydown)': 'onKeydown($event)',\n  },\n})\nexport class MenuComponent implements AfterViewInit {\n  /** @internal */\n  @ContentChildren(MenuLinkComponent) menuItems!: QueryList<MenuLinkComponent>;\n\n  private keyManager!: FocusKeyManager<MenuLinkComponent>;\n\n  /**\n   * Attaches the key manager to the menu items\n   *\n   * @internal\n   */\n  ngAfterViewInit(): void {\n    this.keyManager = new FocusKeyManager<MenuLinkComponent>(this.menuItems).withWrap();\n  }\n\n  /**\n   * Handles keyboard events for menu navigation\n   *\n   * @internal\n   */\n  onKeydown(event: KeyboardEvent) {\n    if (!this.keyManager.activeItem) {\n      this.keyManager.setFirstItemActive();\n    } else {\n      this.keyManager.onKeydown(event);\n    }\n  }\n}\n","<ng-content />\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { IconComponent } from '@talenra/ngx-base/icons';\n\n/**\n * MenuActionItem is a container for action items in a menu.\n *\n * ```html\n * <talenra-menu-action-item>\n *   <talenra-icon name=\"flag-circle\" (click)=\"setPriority('high')\"></talenra-icon>\n *   <talenra-icon name=\"flag-circle\" (click)=\"setPriority('medium')\"></talenra-icon>\n *   <talenra-icon name=\"flag-circle\" (click)=\"setPriority('low')\"></talenra-icon>\n * </talenra-menu-action-item>\n * ```\n *\n * ### Import\n *\n * ```typescript\n * import { MenuActionItemComponent } from '@talenra/ngx-base/menu';\n * ```\n *\n * @see {@link MenuComponent}\n *\n * <example-url>../../../#/menu</example-url>\n */\n@Component({\n  selector: 'talenra-menu-action-item',\n  imports: [IconComponent],\n  templateUrl: './menu-action-item.component.html',\n  styleUrl: './menu-action-item.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuActionItemComponent {\n  /**\n   * The label of the action item.\n   *\n   * @required\n   */\n  label = input.required<string>();\n\n  /**\n   * The icon of the action item.\n   *\n   * @optional\n   */\n  icon = input<string>();\n}\n","<div class=\"entry\">\n  @if (icon()) {\n    <talenra-icon [name]=\"icon()!\" class=\"icon\" />\n  }\n  <span class=\"label\">{{ label() }}</span>\n</div>\n<div class=\"addition\">\n  <ng-content />\n</div>\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, EventEmitter, inject, Output } from '@angular/core';\nimport { CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FocusableOption } from '@angular/cdk/a11y';\n\n/**\n * Assigned to an element, MenuAnchor triggers the associated Menu. MenuAnchor provides `triggerFor` input property. It\n * will trigger the template with a matching id.\n *\n * ```html\n * <span talenraMenuAnchor [triggerFor]=\"myMenu\">My Menu</span>\n * <ng-template #myMenu>\n *   <talenra-menu><!-- Menu content goes here --></talenra-menu>\n * </ng-template>\n * ```\n *\n * ### Import\n *\n * ```typescript\n * import { MenuAnchorDirective } from '@talenra/ngx-base/menu';\n * ```\n *\n * @see {@link MenuComponent}\n *\n * <example-url>../../../#/menu</example-url>\n */\n@Directive({\n  selector: '[talenraMenuAnchor]',\n  host: {\n    '(click)': 'focus()',\n    '(mouseenter)': 'focus()',\n  },\n  hostDirectives: [\n    CdkMenuItem,\n    {\n      directive: CdkMenuTrigger,\n      inputs: ['cdkMenuTriggerFor: triggerFor'],\n    },\n  ],\n})\nexport class MenuAnchorDirective implements FocusableOption, AfterViewInit {\n  /**\n   * Emits when the associated menu is opened.\n   *\n   * @internal\n   */\n  @Output() menuOpen = new EventEmitter<void>();\n\n  /**\n   * Emits when the associated menu is closed.\n   *\n   * @internal\n   */\n  @Output() menuClose = new EventEmitter<void>();\n\n  private elementRef = inject(ElementRef);\n\n  private cdkMenuTrigger = inject(CdkMenuTrigger);\n\n  private destroyRef = inject(DestroyRef);\n\n  /**\n   * Implements the FocusableOption interface.\n   *\n   * @internal\n   */\n  disabled?: boolean | undefined;\n\n  private handleScroll = () => {\n    if (this.cdkMenuTrigger.isOpen()) {\n      this.close();\n    }\n  };\n\n  /** @internal */\n  ngAfterViewInit(): void {\n    this.cdkMenuTrigger.opened.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      this.menuOpen.emit();\n      window.addEventListener('scroll', this.handleScroll, true);\n    });\n    this.cdkMenuTrigger.closed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      this.menuClose.emit();\n      window.removeEventListener('scroll', this.handleScroll, true);\n    });\n  }\n\n  /**\n   * Implements the FocusableOption interface.\n   *\n   * @internal\n   */\n  focus(): void {\n    this.elementRef.nativeElement.focus();\n  }\n\n  /** @internal */\n  getLabel(): string {\n    return this.elementRef.nativeElement.textContent?.trim() || '';\n  }\n\n  /**\n   * Opens the associated menu.\n   *\n   * This method triggers the `cdkMenuTrigger` to open the menu associated with this anchor.\n   * It can be used to programmatically open the menu.\n   *\n   * @internal\n   */\n  open() {\n    this.cdkMenuTrigger.open();\n  }\n\n  /**\n   * Closes the associated menu.\n   *\n   * This method triggers the `cdkMenuTrigger` to close the menu associated with this anchor.\n   * It can be used to programmatically close the menu.\n   *\n   * @internal\n   */\n  close() {\n    this.cdkMenuTrigger.close();\n  }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * MenuSeparator is used to organize Menu content.\n *\n * ```html\n * <talenra-menu>\n *   <talenra-menu-link>Home</talenra-menu-link>\n *   <talenra-menu-separator></talenra-menu-separator>\n *   <talenra-menu-link>About</talenra-menu-link>\n * </talenra-menu>\n * ```\n *\n * ### Import\n *\n * ```typescript\n * import { MenuSeparatorComponent } from '@talenra/ngx-base/menu';\n * ```\n *\n * @see {@link MenuComponent}\n *\n * <example-url>../../#/menu</example-url>\n */\n@Component({\n  selector: 'talenra-menu-separator',\n  template: ``,\n  styleUrl: './menu-separator.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuSeparatorComponent {}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  DestroyRef,\n  inject,\n  QueryList,\n} from '@angular/core';\nimport { CdkMenuBar } from '@angular/cdk/menu';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { MenuAnchorDirective } from '../menu-anchor/menu-anchor.directive';\n\n/**\n * MenuBar is a container for a group of related Menus.\n *\n * It handles closing other menus when a menu is opened and thus helps preventing a stack of open menus.\n *\n * ```html\n * <talenra-menu-bar>\n *   <span talenraMenuAnchor [triggerFor]=\"mymenu\">My Menu</span>\n *   <span talenraMenuAnchor [triggerFor]=\"yourmenu\">Your Menu</span>\n * </talenra-menu-bar>\n * ```\n *\n * ### Import\n *\n * ```typescript\n * import { MenuBarComponent } from '@talenra/ngx-base/menu';\n * ```\n *\n * @see {@link MenuComponent}\n * @see {@link MenuAnchorDirective}\n *\n * <example-url>../../#/menu</example-url>\n */\n@Component({\n  selector: 'talenra-menu-bar',\n  imports: [CdkMenuBar],\n  templateUrl: './menu-bar.component.html',\n  styleUrl: './menu-bar.component.scss',\n  hostDirectives: [CdkMenuBar],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '(keydown)': 'onKeydown($event)',\n  },\n})\nexport class MenuBarComponent implements AfterViewInit {\n  private destroyRef = inject(DestroyRef);\n  private openedMenuItem: MenuAnchorDirective | null = null;\n  private lastOpenedIndex = 0;\n  private numberOfMenuItems: number = 0;\n  private keyManager!: FocusKeyManager<MenuAnchorDirective>;\n  private firstKeyboardInteraction = true;\n\n  /** @internal */\n  @ContentChildren(MenuAnchorDirective) menuItems!: QueryList<MenuAnchorDirective>;\n\n  /** @internal */\n  ngAfterViewInit(): void {\n    this.keyManager = new FocusKeyManager(this.menuItems).withWrap();\n    this.numberOfMenuItems = this.menuItems.length;\n    this.menuItems.forEach((menuItem) => {\n      menuItem.menuOpen.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n        this.lastOpenedIndex = this.getMenuAnchorIndex(menuItem);\n        this.openedMenuItem = menuItem;\n      });\n      menuItem.menuClose.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n        this.openedMenuItem = null;\n      });\n    });\n  }\n\n  /** @internal */\n  onKeydown(event: KeyboardEvent) {\n    if (event.key === 'ArrowRight' || event.key === 'ArrowLeft') {\n      if (\n        this.firstKeyboardInteraction &&\n        this.openedMenuItem &&\n        this.getMenuAnchorIndex(this.openedMenuItem) === this.lastOpenedIndex\n      ) {\n        this.menuItems.toArray()[this.lastOpenedIndex].close();\n      }\n      if (this.openedMenuItem === null) {\n        let nextIndex = this.lastOpenedIndex;\n        if (event.key === 'ArrowRight') {\n          nextIndex = (this.lastOpenedIndex + 1) % this.numberOfMenuItems;\n        }\n        if (event.key === 'ArrowLeft') {\n          nextIndex = (this.lastOpenedIndex - 1 + this.numberOfMenuItems) % this.numberOfMenuItems;\n        }\n        this.openMenuItemAtIndex(nextIndex);\n      } else {\n        this.keyManager.onKeydown(event);\n      }\n    }\n    this.firstKeyboardInteraction = false;\n  }\n\n  private getMenuAnchorIndex(menuAnchorDirective: MenuAnchorDirective): number {\n    return this.menuItems.toArray().indexOf(menuAnchorDirective);\n  }\n\n  private openMenuItemAtIndex(newIndex: number) {\n    this.keyManager.setActiveItem(newIndex);\n    this.menuItems.toArray()[newIndex].open();\n  }\n}\n","<ng-content />\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { MenuSeparatorComponent } from '../menu-separator/menu-separator.component';\n\n/**\n * MenuTitle is used to organize menu content.\n *\n * It requires a label to display the title.\n *\n * ```html\n * <talenra-menu-title label=\"Menu\" />\n * ```\n *\n * ### Import\n *\n * ```typescript\n * import { MenuTitleComponent } from '@talenra/ngx-base/menu';\n * ```\n *\n * <example-url>../../#/menu</example-url>\n */\n@Component({\n  selector: 'talenra-menu-title',\n  templateUrl: './menu-title.component.html',\n  styleUrl: './menu-title.component.scss',\n  imports: [MenuSeparatorComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuTitleComponent {\n  /**\n   * The label to display for the title.\n   */\n  label = input.required<string>();\n}\n","{{ label() }}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}