{"version":3,"file":"alyle-ui-menu.mjs","sources":["../../../lib/menu/menu.ts","../../../lib/menu/menu.html","../../../lib/menu/menu.module.ts","../../../lib/menu/alyle-ui-menu.ts"],"sourcesContent":["import {\n  AfterViewInit,\n  Component,\n  Directive,\n  ElementRef,\n  HostListener,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Renderer2,\n  TemplateRef,\n  ViewChild,\n  Output,\n  EventEmitter,\n  OnChanges,\n  ContentChildren,\n  forwardRef,\n  QueryList,\n  HostBinding\n  } from '@angular/core';\nimport {\n  LyOverlay,\n  LyTheme2,\n  OverlayFactory,\n  Placement,\n  Positioning,\n  shadowBuilder,\n  ThemeVariables,\n  XPosition,\n  YPosition,\n  StyleCollection,\n  LyClasses,\n  StyleTemplate,\n  ThemeRef,\n  LyOverlayPosition,\n  StyleRenderer } from '@alyle/ui';\nimport {\n  trigger,\n  style,\n  animate,\n  transition,\n  AnimationEvent,\n  group\n} from '@angular/animations';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { Subject, asapScheduler } from 'rxjs';\nimport { take, delay, debounceTime } from 'rxjs/operators';\n\nexport interface LyMenuTheme {\n  /** Styles for Menu Component */\n  root?: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)>\n    | ((classes: LyClasses<typeof STYLES>) => StyleTemplate);\n}\n\nexport interface LyMenuVariables {\n  menu?: LyMenuTheme;\n}\n\nconst STYLE_PRIORITY = -1;\n\nexport const STYLES = (theme: ThemeVariables & LyMenuVariables, ref: ThemeRef) => {\n  const menu = ref.selectorsOf(STYLES);\n  const { after } = theme;\n  return {\n    $name: LyMenu.и,\n    $priority: STYLE_PRIORITY,\n    root: () => (\n      theme.menu?.root\n        && (theme.menu.root instanceof StyleCollection\n          ? theme.menu.root.setTransformer(fn => fn(menu)).css\n          : theme.menu.root(menu))\n    ),\n    container: (_className: string) => `${_className}{background:${theme.background.primary.default};border-radius:2px;box-shadow:${shadowBuilder(4)};display:block;padding-top:8px;padding-bottom:8px;transform-origin:inherit;pointer-events:all;overflow:auto;max-height:inherit;max-width:inherit;box-sizing:border-box;}`,\n    item: (_className: string) => `${_className}{display:flex;min-height:48px;border-radius:0;width:100%;justify-content:flex-start;font-weight:400;}${_className} ly-icon{margin-${after}:16px;}`,\n    itemSubMenuTrigger: () => (_className: string) => `${_className}{padding-${after}:32px;}${_className}::after{width:0;height:0;border-style:solid;border-width:5px 0 5px 5px;border-color:transparent transparent transparent currentColor;content:\"\";display:inline-block;position:absolute;top:50%;${after}:16px;transform:translateY(-50%);}`\n  };\n};\n\nconst ANIMATIONS = [\n  trigger('transformMenu', [\n    transition('void => enter', group([\n      style({\n        opacity: 0,\n        transform: 'scale(0.8)'\n      }),\n      animate('100ms linear', style({\n        opacity: 1\n      })),\n      animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({transform: 'scale(1)'})),\n    ]))\n  ]),\n  trigger('transformMenuLeave', [\n    transition('* => void', animate('100ms 25ms linear', style({ opacity: 0 })))\n  ])\n];\n\n/** Menu container */\n@Component({\n  selector: 'ly-menu',\n  animations: [...ANIMATIONS],\n  templateUrl: 'menu.html',\n  exportAs: 'lyMenu',\n  providers: [\n    StyleRenderer\n  ],\n  standalone: false\n})\nexport class LyMenu implements OnChanges, OnInit, AfterViewInit, OnDestroy {\n\n  /** Menu Trigger */\n  @Input()\n  set ref(value: LyMenuTriggerFor) {\n    this._ref = value;\n    this._menuRef = value._menuRef!;\n  }\n  get ref() {\n    return this._ref;\n  }\n\n  /** Whether the menu has a backdrop. */\n  @Input()\n  get hasBackdrop(): boolean {\n    return this._hasBackdrop;\n  }\n  set hasBackdrop(value: boolean) {\n    this._hasBackdrop = coerceBooleanProperty(value);\n  }\n\n  constructor(\n    private _theme: LyTheme2,\n    private _el: ElementRef,\n    private _renderer: Renderer2,\n    private _viewportRuler: ViewportRuler,\n    readonly sRenderer: StyleRenderer\n  ) { }\n\n  /** @docs-private */\n  static readonly и = 'LyMenu';\n\n\n  static ngAcceptInputType_hasBackdrop: BooleanInput;\n\n  /**\n   * styles\n   * @docs-private\n   */\n  readonly classes = this.sRenderer.renderSheet(STYLES, true);\n\n  /** Whether the menu is animating. */\n  _isAnimating: boolean;\n\n  /** Whether the menu is destroying. */\n  _isDestroying: boolean;\n\n  /** Emits whenever an animation on the menu completes. */\n  _animationDone = new Subject<AnimationEvent>();\n\n  private _menuRef: OverlayFactory<any>;\n  /**\n   * Destroy menu\n   * @docs-private\n   */\n  destroy: () => void;\n  @ViewChild('container') _container?: ElementRef<HTMLDivElement>;\n  @ContentChildren(forwardRef(() => LyMenuItem)) readonly menuItems?: QueryList<LyMenuItem>;\n  private _ref: LyMenuTriggerFor;\n\n  /** The point in the anchor where the menu `xAxis` will be attached. */\n  @Input() xAnchor: XPosition;\n\n  /** The point in the anchor where the menu `yAxis` will be attached. */\n  @Input() yAnchor: YPosition;\n\n  /** The x-axis position of the menu. */\n  @Input() xAxis: XPosition;\n\n  /** The y-axis position of the menu. */\n  @Input() yAxis: YPosition;\n\n  /**\n   * Position where the menu will be placed.\n   * @deprecated Use `xAxis` and` yAxis` together instead.\n   */\n  @Input() placement: Placement;\n\n\n  /**\n   * The x-axis position of the menu.\n   * @deprecated Use `xAxis` instead.\n   */\n  @Input() xPosition: XPosition;\n\n  /**\n   * The y-axis position of the menu.\n   * @deprecated Use `yAxis` instead.\n   */\n  @Input() yPosition: YPosition;\n  private _hasBackdrop: boolean = true;\n  private _mouseenterListen?: () => void;\n  private _mouseleaveListen?: () => void;\n\n  @HostBinding('@transformMenuLeave') transformMenuLeave: unknown;\n\n  ngOnChanges() {\n    if (this.ref?._menuRef && this._container) {\n      // Update backdrop\n      this.ref._menuRef.updateBackdrop(this.ref._isItemSubMenuTrigger() ? false : this.hasBackdrop);\n      this._updatePlacement();\n      this._checkBackdropAndOpenOnHover();\n    }\n  }\n\n  ngOnInit() {\n    if (!this.ref) {\n      throw new Error('LyMenu: require @Input() ref');\n    }\n  }\n\n  ngAfterViewInit() {\n    if (this.ref._menuRef) {\n      this.ref._menuRef.onResizeScroll = this._updatePlacement.bind(this);\n      this.ref._menuRef.updateBackdrop(this.ref._isItemSubMenuTrigger() ? false : this.hasBackdrop);\n      this._checkBackdropAndOpenOnHover();\n    }\n    this._updatePlacement();\n    this.ref.menuOpened.emit();\n    Promise.resolve(null).then(() => {\n      this.ref._setMenuOpenToTrue();\n    });\n    const hostTrigger = this._getHostMenuTrigger();\n    hostTrigger._menuDetached\n      .pipe(take(1))\n      .subscribe(() => this._ref.closeMenu());\n    this._addOpenOnHover();\n  }\n\n  ngOnDestroy() {\n    this._removeOpenOnHoverListeners();\n  }\n\n  private _checkBackdropAndOpenOnHover() {\n    const hostTrigger = this._getHostMenuTrigger();\n    if (this.hasBackdrop && hostTrigger._menuOpenOnHoverRef?.openOnHover) {\n      throw new Error(`${LyMenu.и}: Can't use [hasBackdrop] with [openOnHover] at the same time, set [hasBackdrop] to false to use [openOnHover]`);\n    }\n  }\n\n  private _getHostMenuTrigger() {\n    let menuTrigger = this.ref;\n\n    while (menuTrigger._menu?.ref) {\n      menuTrigger = menuTrigger._menu.ref;\n    }\n\n    return menuTrigger;\n  }\n\n  private _addOpenOnHover() {\n    const hostTrigger = this._getHostMenuTrigger();\n    if (hostTrigger._menuOpenOnHoverRef?.openOnHover && !this._mouseenterListen && !this._mouseleaveListen) {\n      hostTrigger._menuOpenOnHoverRef!._handleMouseEnterOrLeave(true);\n      this._mouseenterListen = this._renderer\n        .listen(\n          this._el.nativeElement,\n          'mouseenter',\n          () => hostTrigger._menuOpenOnHoverRef!._handleMouseEnterOrLeave(true)\n        );\n\n      this._mouseleaveListen = this._renderer\n        .listen(\n          this._el.nativeElement,\n          'mouseleave',\n          () => hostTrigger._menuOpenOnHoverRef!._handleMouseEnterOrLeave(false)\n        );\n    }\n  }\n\n  /** Remove listeners */\n  private _removeOpenOnHoverListeners() {\n    if (this._mouseenterListen) {\n      this._mouseenterListen();\n    }\n    if (this._mouseleaveListen) {\n      this._mouseleaveListen();\n    }\n  }\n\n  /** Update Menu Position */\n  private _updatePlacement() {\n    const el = this.ref._menuRef?.containerElement;\n    const container = this._container?.nativeElement;\n\n    // Do not update when not available\n    if (!el || !container) {\n      return;\n    }\n\n    // reset height & width\n    this._renderer.setStyle(container, 'height', 'initial');\n    this._renderer.setStyle(container, 'width', 'initial');\n\n    const position = this.placement\n      ? new Positioning(this.placement, this.xPosition, this.yPosition, this.ref._getHostElement(), el, this._theme.variables)\n      : !this.ref._isItemSubMenuTrigger()\n        ? new LyOverlayPosition(this._theme, this._viewportRuler, this.ref._getHostElement(), el)\n          .setXAnchor(this.xAnchor)\n          .setYAnchor(this.yAnchor)\n          .setXAxis(this.xAxis)\n          .setYAxis(this.yAxis)\n          .setFlip(true)\n          .build()\n        : new LyOverlayPosition(this._theme, this._viewportRuler, this.ref._getHostElement(), el)\n          .setXAnchor(XPosition.after)\n          .setYAnchor(YPosition.above)\n          .setFlip(true)\n          .build();\n\n    if (position instanceof Positioning) {\n      // set position deprecated\n      this._renderer.setStyle(el, 'transform', `translate3d(${position.x}px, ${position.y}px, 0)`);\n      this._renderer.setStyle(this._el.nativeElement, 'transform-origin', `${position.ox} ${position.oy} 0`);\n\n      // set height & width deprecated\n      this._renderer.setStyle(container, 'height', position.height === 'initial' ? '100%' : position.height);\n      this._renderer.setStyle(container, 'width', position.width === 'initial' ? '100%' : position.width);\n    } else {\n      // set position\n      this._renderer.setStyle(el, 'left', `${position.x}px`);\n      this._renderer.setStyle(el, 'top', `${position.y}px`);\n      this._renderer.setStyle(container, 'width', position.width ? `${position.width}px` : '100%');\n      this._renderer.setStyle(container, 'height', position.height ? `${position.height}px` : '100%');\n      this._renderer.setStyle(this._el.nativeElement, 'transform-origin', `${position.xo}px ${position.yo}px 0`);\n    }\n\n  }\n  @HostListener('@transformMenuLeave.start', ['$event']) _onAnimationStart(event: AnimationEvent) {\n    this._isAnimating = true;\n    if (event.triggerName === 'transformMenuLeave' && event.toState === 'void') {\n      this._isDestroying = true;\n    }\n  }\n  @HostListener('@transformMenuLeave.done', ['$event']) _onAnimationDone(event: AnimationEvent) {\n    this._animationDone.next(event);\n    this._isAnimating = false;\n    if (event.toState === 'void' && event.triggerName === 'transformMenuLeave') {\n      this.ref.destroy(this._menuRef);\n    }\n  }\n}\n\n@Directive({\n  selector: '[ly-menu-item]',\n  host: {\n    '(click)': '_handleClick()',\n    '(mouseenter)': '_handleMouseEnter()'\n  },\n  standalone: false\n})\nexport class LyMenuItem {\n\n  constructor(\n    @Optional() private _menu: LyMenu,\n    el: ElementRef,\n    renderer: Renderer2\n  ) {\n    renderer.addClass(el.nativeElement, _menu.classes.item);\n  }\n  private _itemSubMenuTrigger?: LyMenuTriggerFor;\n\n  _handleClick() {\n    if (this._menu.ref && this._menu.ref._menuRef) {\n      if (!this._getItemSubMenuTrigger()) {\n        let currentTrigger = this._menu.ref;\n        while (currentTrigger) {\n          currentTrigger.closeMenu();\n          currentTrigger = currentTrigger._menu?.ref;\n        }\n      }\n    }\n  }\n\n  _handleMouseEnter() {\n    const itemSubMenuTrigger = this._getItemSubMenuTrigger();\n    if (itemSubMenuTrigger && !this._menu._isDestroying) {\n      if (this._menu._isAnimating) {\n        this._menu._animationDone\n        .pipe(take(1), delay(0, asapScheduler))\n        .subscribe(() => {\n          itemSubMenuTrigger.openMenu();\n          this._closeOtherMenus();\n        });\n      } else {\n        itemSubMenuTrigger.openMenu();\n        this._closeOtherMenus();\n      }\n    } else {\n      this._closeOtherMenus();\n    }\n  }\n\n  /** Except for this, close all menus */\n  private _closeOtherMenus() {\n    this._menu.menuItems!.forEach(menuItem => {\n      if (menuItem !== this) {\n        menuItem._getItemSubMenuTrigger()?.closeMenu();\n      }\n    });\n  }\n\n  _setItemSubMenuTrigger(menuTrigger: LyMenuTriggerFor) {\n    this._itemSubMenuTrigger = menuTrigger;\n  }\n  _getItemSubMenuTrigger() {\n    return this._itemSubMenuTrigger;\n  }\n}\n\n\n@Directive({\n  selector: '[lyMenuTriggerFor]',\n  host: {\n    '(click)': '_handleClick()'\n  },\n  exportAs: 'lyMenuTriggerFor',\n  providers: [\n    StyleRenderer\n  ],\n  standalone: false\n})\nexport class LyMenuTriggerFor implements OnDestroy {\n  readonly classes = this.sRenderer.renderSheet(STYLES);\n\n  /** Current menuRef */\n  _menuRef?: OverlayFactory | null;\n  private _menuOpen = false;\n  private _destroying: boolean;\n  _menuDetached = new Subject<void>();\n  _menuOpenOnHoverRef?: LyMenuOpenOnHover;\n\n  /** Whether the menu is open. */\n  get menuOpen() {\n    return this._menuOpen;\n  }\n\n  @Input() lyMenuTriggerFor: TemplateRef<any>;\n\n  /** Data to be passed to the menu. */\n  @Input('lyMenuTriggerData') menuData: any;\n\n  @Output() readonly menuOpened = new EventEmitter<void>();\n  @Output() readonly menuClosed = new EventEmitter<void>();\n\n  constructor(\n    private elementRef: ElementRef,\n    private overlay: LyOverlay,\n    @Optional() private _menuItem: LyMenuItem,\n    readonly sRenderer: StyleRenderer,\n    @Optional() public _menu: LyMenu\n  ) {\n    if (this._isItemSubMenuTrigger()) {\n      _menuItem._setItemSubMenuTrigger(this);\n      sRenderer.addClass(this.classes.itemSubMenuTrigger);\n    }\n  }\n\n  ngOnDestroy() {\n    // Not force destruction if it is already being destroyed\n    if (!this._destroying) {\n      this.closeMenu();\n    }\n    this._menuDetached.complete();\n  }\n\n  _handleClick() {\n    if (!this._isItemSubMenuTrigger()) {\n      this.toggleMenu();\n    }\n  }\n\n  /** Opens the menu */\n  openMenu() {\n    if (!this._menuRef) {\n      this._menuRef = this.overlay.create(this.lyMenuTriggerFor, {\n        $implicit: this,\n        data: this.menuData\n      }, {\n        styles: {\n          top: 0,\n          left: 0,\n          pointerEvents: null\n        },\n        fnDestroy: this.detach.bind(this),\n        hasBackdrop: false\n      });\n    }\n  }\n\n  /** Closes the menu */\n  closeMenu() {\n    this.detach();\n  }\n\n  /** Toggle menu */\n  toggleMenu() {\n    if (this._menuRef) {\n      this.closeMenu();\n    } else {\n      this.openMenu();\n    }\n  }\n\n  /** @docs-private */\n  detach() {\n    if (this._menuRef) {\n      this._menuRef.detach();\n      this._menuRef = null;\n      this._destroying = true;\n      this._menuDetached.next();\n    }\n  }\n\n  /** @docs-private */\n  destroy(menuRef: OverlayFactory<any>) {\n    this.menuClosed.emit(null!);\n    menuRef.remove();\n    this._destroying = false;\n    Promise.resolve(null).then(() => this._menuOpen = false);\n  }\n\n  _getHostElement() {\n    return this.elementRef.nativeElement;\n  }\n\n  _setMenuOpenToTrue() {\n    this._menuOpen = true;\n  }\n\n  /**\n   * @docs-private\n   */\n  _isItemSubMenuTrigger() {\n    return !!this._menuItem;\n  }\n\n}\n\n@Directive({\n  selector: '[lyMenuTriggerFor][openOnHover]',\n  host: {\n    '(mouseenter)': '_handleMouseEnterOrLeave(true)',\n    '(mouseleave)': '_handleMouseEnterOrLeave(false)'\n  },\n  standalone: false\n})\nexport class LyMenuOpenOnHover implements OnDestroy {\n\n  private _events = new Subject<boolean>();\n\n  /** Whether menu should open on hover. */\n  @Input()\n  get openOnHover(): boolean {\n    return this._openOnHover;\n  }\n  set openOnHover(value: boolean) {\n    this._openOnHover = coerceBooleanProperty(value);\n    Promise.resolve(null)\n    .then(() => this._openOnHover\n      ? this._trigger._menuOpenOnHoverRef = this\n      : delete this._trigger._menuOpenOnHoverRef);\n  }\n  private _openOnHover: boolean = true;\n\n  constructor(\n    private _trigger: LyMenuTriggerFor\n  ) {\n    _trigger._menuOpenOnHoverRef = this;\n    this._events\n      .pipe(\n        debounceTime(200)\n      )\n      .subscribe(enterOrLeave => {\n        if (this.openOnHover) {\n          if (enterOrLeave) {\n            _trigger.openMenu();\n          } else {\n            _trigger.closeMenu();\n          }\n        }\n      });\n  }\n\n  ngOnDestroy() {\n    this._events.complete();\n  }\n\n  /** Handle mouseenter */\n  _handleMouseEnterOrLeave(enter: true): void;\n  /** Handle mouseleave */\n  _handleMouseEnterOrLeave(leave: false): void;\n  /** Handle mouseenter or mouseleave */\n  _handleMouseEnterOrLeave(leaveOrEnter: boolean): void {\n    if (this.openOnHover) {\n      if (leaveOrEnter) {\n        this._trigger.openMenu();\n      }\n      this._events.next(leaveOrEnter);\n    }\n  }\n}\n","<div #container\n  [class]=\"classes.container\"\n  [@transformMenu]=\"'enter'\"\n  (@transformMenu.start)=\"_onAnimationStart($event)\"\n  (@transformMenu.done)=\"_onAnimationDone($event)\"\n>\n  <ng-content></ng-content>\n</div>","import { LyMenu, LyMenuTriggerFor, LyMenuItem, LyMenuOpenOnHover } from './menu';\nimport { LyCommonModule, LyOverlayModule } from '@alyle/ui';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n  imports: [CommonModule, FormsModule, LyCommonModule, LyOverlayModule],\n  exports: [LyMenu, LyMenuItem, LyMenuTriggerFor, LyMenuOpenOnHover],\n  declarations: [LyMenu, LyMenuItem, LyMenuTriggerFor, LyMenuOpenOnHover],\n})\nexport class LyMenuModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}