{"version":3,"file":"ng-nest-ui-menu.mjs","sources":["../../../../lib/ng-nest/ui/menu/menu.property.ts","../../../../lib/ng-nest/ui/menu/menu.token.ts","../../../../lib/ng-nest/ui/menu/menu-node.component.ts","../../../../lib/ng-nest/ui/menu/menu-node.component.html","../../../../lib/ng-nest/ui/menu/menu.component.ts","../../../../lib/ng-nest/ui/menu/menu.component.html","../../../../lib/ng-nest/ui/menu/menu.module.ts","../../../../lib/ng-nest/ui/menu/ng-nest-ui-menu.ts"],"sourcesContent":["import { XProperty, XPropertyFunction, XToDataArray, XToCssPixelValue, XToBoolean, XToNumber } from '@ng-nest/ui/core';\r\nimport { TemplateRef, Component, input, model, output } from '@angular/core';\r\nimport type { XParentIdentityProperty, XSize, XNumber, XBoolean, XTrigger, XDataArray } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Menu\r\n * @selector x-menu\r\n * @decorator component\r\n */\r\nexport const XMenuPrefix = 'x-menu';\r\nconst X_MENU_CONFIG_NAME = 'menu';\r\n\r\n/**\r\n * Menu Property\r\n */\r\n@Component({ selector: `${XMenuPrefix}-property`, template: '' })\r\nexport class XMenuProperty extends XPropertyFunction(X_MENU_CONFIG_NAME) {\r\n  /**\r\n   * @zh_CN 节点数据\r\n   * @en_US Node data\r\n   */\r\n  readonly data = input<XMenuNode[], XDataArray<XMenuNode>>([], { transform: XToDataArray });\r\n  /**\r\n   * @zh_CN 布局方向\r\n   * @en_US Layout direction\r\n   */\r\n  readonly layout = input<XMenuLayout>('row');\r\n  /**\r\n   * @zh_CN 尺寸\r\n   * @en_US Size\r\n   */\r\n  readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n  /**\r\n   * @zh_CN 宽度，只有布局 layout 为 'column' 生效\r\n   * @en_US Width, only layout layout is the 'column'\r\n   */\r\n  readonly width = input<string, XNumber>(this.config?.width ?? '16rem', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 缩起菜单\r\n   * @en_US Shrink menu\r\n   */\r\n  readonly collapsed = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 触发方式，只针对横向布局\r\n   * @en_US Trigger mode, only for horizontal layout\r\n   */\r\n  readonly trigger = input<XMenuTrigger>(this.config?.trigger ?? 'hover');\r\n  /**\r\n   * @zh_CN 节点模板\r\n   * @en_US Node template\r\n   */\r\n  readonly nodeTpl = input<TemplateRef<any>>();\r\n  /**\r\n   * @zh_CN 展开的所有层级，只对 layout 布局为 'column' 的生效\r\n   * @en_US All expanded levels are only effective for the layout of'column'\r\n   */\r\n  readonly expandedAll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 默认展开的层级，只对 layout 布局为 'column' 的生效\r\n   * @en_US The level expanded by default is only valid for the layout of'column'\r\n   */\r\n  readonly expandedLevel = input<number, XNumber>(-1, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 当前激活的节点 id\r\n   * @en_US Currently active node id\r\n   */\r\n  readonly activatedId = model<string | number>();\r\n  /**\r\n   * @zh_CN 滚动容器\r\n   * @en_US Rolling container\r\n   */\r\n  readonly target = input<string | HTMLElement>();\r\n  /**\r\n   * @zh_CN 弹框的最小宽度\r\n   * @en_US Portal min-width\r\n   */\r\n  readonly portalMinWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 节点点击的事件\r\n   * @en_US Node click event\r\n   */\r\n  readonly nodeClick = output<XMenuNode>();\r\n}\r\n\r\n/**\r\n * @zh_CN MenuNode 节点数据\r\n * @en_US MenuNode node data\r\n */\r\nexport interface XMenuNode extends XParentIdentityProperty<XMenuNode> {\r\n  /**\r\n   * @zh_CN 图标\r\n   * @en_US Icon\r\n   */\r\n  icon?: string;\r\n  /**\r\n   * @zh_CN 展开\r\n   * @en_US Unfold\r\n   */\r\n  open?: boolean;\r\n  /**\r\n   * @zh_CN 子节点已加载过\r\n   * @en_US Child node has been loaded\r\n   */\r\n  childrenLoaded?: boolean;\r\n  /**\r\n   * @zh_CN 分类显示，设置值后节点显示成分类样式\r\n   * @en_US Category display, after setting the value, the node is displayed in a category style\r\n   */\r\n  category?: string;\r\n  /**\r\n   * @zh_CN 分类节点，通过内部计算\r\n   * @en_US Classification node, through internal calculation\r\n   */\r\n  categoryNode?: boolean;\r\n  /**\r\n   * @zh_CN 检查更新\r\n   * @en_US Check for updates\r\n   */\r\n  change?: Function;\r\n  /**\r\n   * @zh_CN 路由\r\n   * @en_US Router\r\n   */\r\n  routerLink?: string | any[];\r\n}\r\n\r\n/**\r\n * @zh_CN 布局方式\r\n * @en_US Layout\r\n */\r\nexport type XMenuLayout = 'row' | 'column';\r\n\r\n/**\r\n * @zh_CN 触发方式\r\n * @en_US Trigger method\r\n */\r\nexport type XMenuTrigger = XTrigger;\r\n\r\n/**\r\n * Menu Node\r\n * @selector x-menu-node\r\n * @decorator component\r\n */\r\nexport const XMenuNodePrefix = 'x-menu-node';\r\n\r\n/**\r\n * Menu Node Property\r\n */\r\n@Component({ selector: `${XMenuNodePrefix}-property`, template: '' })\r\nexport class XMenuNodeProperty extends XProperty {}\r\n","import { ElementRef, InjectionToken, Signal, WritableSignal } from '@angular/core';\r\nimport type { XMenuNode } from './menu.property';\r\n\r\nexport interface XMenuContext {\r\n  activatedId: Signal<any>;\r\n  activatedElementRef: WritableSignal<ElementRef<HTMLElement> | null>;\r\n  setScrollTop(): void;\r\n  onNodeClick(node: XMenuNode): void;\r\n  rootIndexChange(index: number): void;\r\n  onToggle(event: Event | null, node: XMenuNode, isDropdown?: boolean): void;\r\n  setCategory(nodes: XMenuNode[]): void;\r\n  setActivatedNode(nodes: XMenuNode[]): void;\r\n  setParentOpen(nodes: XMenuNode[], node: XMenuNode): void;\r\n}\r\n\r\nexport const X_MENU_CONTEXT = new InjectionToken<XMenuContext>('X_MENU_CONTEXT');\r\n","import {\r\n  Component,\r\n  ViewEncapsulation,\r\n  ChangeDetectionStrategy,\r\n  ElementRef,\r\n  inject,\r\n  input,\r\n  effect,\r\n  TemplateRef\r\n} from '@angular/core';\r\nimport { XMenuNodeProperty, XMenuNodePrefix, XMenuNode } from './menu.property';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { RouterModule } from '@angular/router';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { X_MENU_CONTEXT } from './menu.token';\r\n\r\n@Component({\r\n  selector: `${XMenuNodePrefix}`,\r\n  imports: [NgTemplateOutlet, XIconComponent, RouterModule],\r\n  templateUrl: './menu-node.component.html',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XMenuNodeComponent extends XMenuNodeProperty {\r\n  menu = inject(X_MENU_CONTEXT, { optional: true })!;\r\n  routerLink = input<string>();\r\n  leaf = input<boolean>();\r\n  icon = input<string>();\r\n  label = input<string>();\r\n  open = input<boolean>();\r\n  id = input<any>();\r\n  node = input<XMenuNode>();\r\n  nodeTpl = input<TemplateRef<any>>();\r\n\r\n  private elementRef = inject(ElementRef);\r\n\r\n  constructor() {\r\n    super();\r\n    effect(() => {\r\n      if (this.menu.activatedId() === this.id()) {\r\n        this.menu.activatedElementRef.set(this.elementRef);\r\n      }\r\n    });\r\n  }\r\n}\r\n","@if (routerLink() && !leaf()) {\r\n  <a [routerLink]=\"routerLink()\">\r\n    <ng-container *ngTemplateOutlet=\"menuTpl\"></ng-container>\r\n  </a>\r\n} @else {\r\n  <ng-container *ngTemplateOutlet=\"menuTpl\"></ng-container>\r\n}\r\n\r\n<ng-template #menuTpl>\r\n  @if (icon()) {\r\n    <x-icon class=\"x-menu-icon\" [type]=\"icon()\"></x-icon>\r\n  }\r\n  @if (nodeTpl()) {\r\n    <ng-container *ngTemplateOutlet=\"nodeTpl()!; context: { $node: node()! }\"></ng-container>\r\n  } @else if (label()) {\r\n    <span class=\"x-menu-text\">{{ label() }} </span>\r\n  }\r\n  @if (label()) {}\r\n  @if (leaf()) {\r\n    <x-icon class=\"x-menu-arrow\" [class.is-open]=\"open()\" type=\"fto-chevron-down\"></x-icon>\r\n  }\r\n</ng-template>\r\n","import {\r\n  Component,\r\n  ViewEncapsulation,\r\n  ElementRef,\r\n  ChangeDetectionStrategy,\r\n  SimpleChanges,\r\n  OnChanges,\r\n  inject,\r\n  computed,\r\n  signal,\r\n  effect\r\n} from '@angular/core';\r\nimport { XMenuPrefix, XMenuNode, XMenuProperty } from './menu.property';\r\nimport { XIsChange, XIsEmpty, XGroupBy } from '@ng-nest/ui/core';\r\nimport { DOCUMENT, NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { XSliderComponent } from '@ng-nest/ui/slider';\r\nimport { XDropdownComponent } from '@ng-nest/ui/dropdown';\r\nimport { XMenuNodeComponent } from './menu-node.component';\r\nimport { X_MENU_CONTEXT, XMenuContext } from './menu.token';\r\n\r\n@Component({\r\n  selector: `${XMenuPrefix}`,\r\n  imports: [NgClass, NgTemplateOutlet, XSliderComponent, XDropdownComponent, XMenuNodeComponent],\r\n  templateUrl: './menu.component.html',\r\n  styleUrls: ['./menu.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [\r\n    {\r\n      provide: X_MENU_CONTEXT,\r\n      useExisting: XMenuComponent\r\n    }\r\n  ]\r\n})\r\nexport class XMenuComponent extends XMenuProperty implements OnChanges, XMenuContext {\r\n  showCategory = signal(false);\r\n  get scroll(): HTMLElement {\r\n    return this._target;\r\n  }\r\n  datas = signal<XMenuNode[]>([]);\r\n  nodes = signal<XMenuNode[]>([]);\r\n  rootIndex = signal(0);\r\n  activated = signal<XMenuNode | null>(null);\r\n  activatedElementRef = signal<ElementRef<HTMLElement> | null>(null);\r\n  expanded = signal<any[]>([]);\r\n  private doc = inject(DOCUMENT);\r\n  private _target!: HTMLElement;\r\n\r\n  classMap = computed(() => ({\r\n    [`${XMenuPrefix}-${this.layout()}`]: !XIsEmpty(this.layout()),\r\n    [`${XMenuPrefix}-collapsed`]: this.collapsed()\r\n  }));\r\n  nodeClassMap = computed(() => ({\r\n    [`x-size-${this.size()}`]: !XIsEmpty(this.size())\r\n  }));\r\n\r\n  constructor() {\r\n    super();\r\n    effect(() => {\r\n      this.setScrollTop();\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    const { data, activatedId, target } = changes;\r\n    XIsChange(data) && this.setDataChange(this.data());\r\n    XIsChange(activatedId) && this.setActivatedNode(this.datas());\r\n    if (XIsChange(target)) {\r\n      const target = this.target();\r\n      this._target = typeof target === 'string' ? this.doc.querySelector(target)! : target!;\r\n    }\r\n  }\r\n\r\n  setScrollTop() {\r\n    if (this.activatedElementRef() && this.scroll) {\r\n      if (typeof this.activatedElementRef()!.nativeElement.getBoundingClientRect !== 'function') {\r\n        return;\r\n      }\r\n      const nodeRect: DOMRect = this.activatedElementRef()!.nativeElement.getBoundingClientRect();\r\n      const scrollRect: DOMRect = this.scroll.getBoundingClientRect();\r\n      let scrollTop = nodeRect.top - scrollRect.top - scrollRect.height;\r\n      if (scrollTop > 0) {\r\n        let offset = 0;\r\n        while (offset < scrollRect.height / 2) {\r\n          offset = offset + nodeRect.height;\r\n        }\r\n        this.scroll.scrollTop = scrollTop + offset;\r\n      }\r\n    }\r\n  }\r\n\r\n  onNodeClick(node: XMenuNode) {\r\n    if (!this.collapsed()) {\r\n      this.rootIndex.set(this.nodes().indexOf(this.getRoot(node)));\r\n      this.activatedId.set(node.id);\r\n      this.activated.set(node);\r\n      this.nodeClick.emit(node);\r\n    } else {\r\n      this.onToggle(null, node, true);\r\n    }\r\n  }\r\n\r\n  rootIndexChange(index: number) {\r\n    this.rootIndex.set(index);\r\n    let node = this.nodes()[index];\r\n    this.activatedId.set(node.id);\r\n    this.activated.set(node);\r\n    this.nodeClick.emit(node);\r\n  }\r\n\r\n  onToggle(event: Event | null, node: XMenuNode, isDropdown = false) {\r\n    if ((this.collapsed() && !isDropdown) || node.categoryNode) return;\r\n    if (!node.leaf) {\r\n      this.activated.set(node);\r\n    } else {\r\n      event?.stopPropagation();\r\n      node.open = !node.open;\r\n      if (node.open && !node.childrenLoaded) {\r\n        node.childrenLoaded = true;\r\n      }\r\n    }\r\n    this.nodeClick.emit(node);\r\n  }\r\n\r\n  private setDataChange(value: XMenuNode[]) {\r\n    !XIsEmpty(this.activatedId()) && this.setActivatedNode(value);\r\n    let handlerDatas: XMenuNode[] = [];\r\n    const getChildren = (node: XMenuNode, level: number) => {\r\n      node.level = level;\r\n      node.children = value.filter((y) => y.pid === node.id);\r\n      node.leaf = node.children?.length > 0;\r\n      if (node.leaf) {\r\n        node.open = this.expandedAll() || level <= this.expandedLevel() || this.expanded().indexOf(node.id) >= 0;\r\n        node.childrenLoaded = node.open;\r\n        node.children.map((y) => getChildren(y, level + 1));\r\n        node.children = this.setCategory(node.children);\r\n      }\r\n      handlerDatas = [...handlerDatas, node];\r\n      return node;\r\n    };\r\n\r\n    this.nodes.set(this.setCategory(value.filter((x) => XIsEmpty(x.pid))).map((x) => getChildren(x, 0)));\r\n    this.datas.set(handlerDatas);\r\n  }\r\n\r\n  private getRoot(value: XMenuNode) {\r\n    let root = value;\r\n    const getParent = (node: XMenuNode) => {\r\n      const parent = this.datas().find((x) => node.pid === x.id) as XMenuNode;\r\n      if (XIsEmpty(parent?.pid)) root = parent;\r\n      else getParent(parent);\r\n    };\r\n    if (!XIsEmpty(value.pid)) getParent(value);\r\n    return root;\r\n  }\r\n\r\n  setCategory(nodes: XMenuNode[]) {\r\n    const group = XGroupBy(nodes as XMenuNode[], 'category');\r\n    for (let key in group) {\r\n      const list = group[key];\r\n      const first = list[0];\r\n      if (first.category) {\r\n        list.unshift({\r\n          id: `${first.pid}__${first.category}`,\r\n          pid: first.pid,\r\n          label: first.category,\r\n          level: first.level,\r\n          categoryNode: true\r\n        });\r\n      }\r\n    }\r\n    let con: XMenuNode[] = [];\r\n    for (let key in group) {\r\n      const list = group[key];\r\n      list.map((x) => {\r\n        con = con.concat(x);\r\n      });\r\n    }\r\n\r\n    return con;\r\n  }\r\n\r\n  setActivatedNode(nodes: XMenuNode[]) {\r\n    this.activated.set(nodes.find((x) => x.id == this.activatedId()) as XMenuNode);\r\n    this.rootIndex.set(nodes.findIndex((x) => x.id == this.activatedId() && !x.pid));\r\n    if (this.activated()) {\r\n      this.setParentOpen(nodes, this.activated()!);\r\n    }\r\n  }\r\n\r\n  setParentOpen(nodes: XMenuNode[], node: XMenuNode) {\r\n    const getParent = (child: XMenuNode) => {\r\n      if (XIsEmpty(child.pid)) return;\r\n      const parent = nodes.find((x) => x.id === child.pid) as XMenuNode;\r\n      if (!XIsEmpty(parent)) {\r\n        this.expanded.set([...this.expanded(), parent.id]);\r\n        getParent(parent);\r\n      }\r\n    };\r\n    getParent(node);\r\n  }\r\n}\r\n","<div #menu class=\"x-menu\" [ngClass]=\"classMap()\" [style.width]=\"layout() === 'column' ? width() : ''\">\r\n  @if (layout() === 'column') {\r\n    <div class=\"x-menu-nodes\">\r\n      @for (node of nodes(); track node.id) {\r\n        <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: node, $children: true }\"></ng-container>\r\n      }\r\n    </div>\r\n  }\r\n  @if (layout() === 'row') {\r\n    <x-slider\r\n      [data]=\"nodes()\"\r\n      [size]=\"size()\"\r\n      [nodeTpl]=\"nodeRowTpl\"\r\n      [nodeJustify]=\"'center'\"\r\n      [activatedIndex]=\"rootIndex()\"\r\n      (indexChange)=\"rootIndexChange($event)\"\r\n    ></x-slider>\r\n  }\r\n</div>\r\n\r\n<ng-template #nodeTemplate let-node=\"$node\">\r\n  @if (node.level === 0 && collapsed()) {\r\n    <x-dropdown\r\n      [disabled]=\"!node.leaf\"\r\n      [data]=\"node.children\"\r\n      [trigger]=\"trigger()\"\r\n      placement=\"right-start\"\r\n      [(activatedId)]=\"activatedId\"\r\n      (nodeClick)=\"onNodeClick($event)\"\r\n      [portalMinWidth]=\"portalMinWidth()\"\r\n      [size]=\"size()\"\r\n      children\r\n    >\r\n      <x-menu-node\r\n        [routerLink]=\"node.routerLink\"\r\n        [leaf]=\"node.leaf\"\r\n        [icon]=\"node.icon\"\r\n        [label]=\"node.label\"\r\n        [open]=\"node.open\"\r\n        [id]=\"node.id\"\r\n        [nodeTpl]=\"nodeTpl()\"\r\n        [node]=\"node\"\r\n      ></x-menu-node>\r\n    </x-dropdown>\r\n  }\r\n  @if (!collapsed()) {\r\n    <x-menu-node\r\n      [routerLink]=\"node.routerLink\"\r\n      [leaf]=\"node.leaf\"\r\n      [icon]=\"node.icon\"\r\n      [label]=\"node.label\"\r\n      [open]=\"node.open\"\r\n      [id]=\"node.id\"\r\n      [nodeTpl]=\"nodeTpl()\"\r\n      [node]=\"node\"\r\n    ></x-menu-node>\r\n  }\r\n</ng-template>\r\n\r\n<ng-template #nodeRowTpl let-node=\"$node\">\r\n  <x-dropdown\r\n    [disabled]=\"!node.leaf\"\r\n    [data]=\"node.children\"\r\n    [trigger]=\"trigger()\"\r\n    [(activatedId)]=\"activatedId\"\r\n    (nodeClick)=\"onNodeClick($event)\"\r\n    [portalMinWidth]=\"portalMinWidth()\"\r\n    [size]=\"size()\"\r\n    children\r\n  >\r\n    <div class=\"x-menu-node\" [ngClass]=\"nodeClassMap()\">\r\n      <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $node: node }\"></ng-container>\r\n    </div>\r\n  </x-dropdown>\r\n</ng-template>\r\n\r\n<ng-template #nodeColumnTpl let-node=\"$node\">\r\n  <div\r\n    class=\"x-menu-node\"\r\n    [class.x-activated]=\"activated()?.id === node.id\"\r\n    [class.x-menu-category]=\"node.categoryNode\"\r\n    [ngClass]=\"nodeClassMap()\"\r\n    (click)=\"onToggle($event, node)\"\r\n    [style.padding-left.rem]=\"(node.level + 1) * 0.875\"\r\n  >\r\n    <ng-container *ngTemplateOutlet=\"nodeTemplate; context: { $node: node }\"></ng-container>\r\n  </div>\r\n  @if (node.childrenLoaded || (node.leaf && node.open)) {\r\n    <div class=\"x-menu-nodes\" [hidden]=\"!node.open\">\r\n      @for (child of node.children; track child.id) {\r\n        <ng-container *ngTemplateOutlet=\"nodeColumnTpl; context: { $node: child }\"></ng-container>\r\n      }\r\n    </div>\r\n  }\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XMenuComponent } from './menu.component';\r\nimport { XMenuNodeComponent } from './menu-node.component';\r\n\r\n@NgModule({\r\n  exports: [XMenuComponent, XMenuNodeComponent],\r\n  imports: [XMenuComponent, XMenuNodeComponent]\r\n})\r\nexport class XMenuModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}