{"version":3,"file":"moxa-formoxa-mx-side-nav.mjs","sources":["../../../../libs/formoxa/mx-side-nav/src/lib/components/mx-side-nav-select.component.ts","../../../../libs/formoxa/mx-side-nav/src/lib/components/mx-side-nav-item.component.ts","../../../../libs/formoxa/mx-side-nav/src/lib/components/mx-side-nav-item.component.html","../../../../libs/formoxa/mx-side-nav/src/lib/components/mx-side-nav.component.ts","../../../../libs/formoxa/mx-side-nav/src/lib/components/mx-side-nav.component.html","../../../../libs/formoxa/mx-side-nav/src/lib/helpers/filter.ts","../../../../libs/formoxa/mx-side-nav/src/moxa-formoxa-mx-side-nav.ts"],"sourcesContent":["import { Component, Input, booleanAttribute } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n  selector: 'mx-side-nav-select',\n  imports: [MatIconModule],\n  template: `\n    <span class=\"mx-side-nav-select__left-icon\">\n      <mat-icon [svgIcon]=\"leftIcon\"></mat-icon>\n    </span>\n    @if (open) {\n      <div class=\"mx-side-nav-select__name gl-body-lg\">{{ name }}</div>\n      <span class=\"mx-side-nav-select__right-icon\">\n        <mat-icon svgIcon=\"icon:arrow_drop_down\"></mat-icon>\n      </span>\n    }\n  `,\n  styleUrls: ['./mx-side-nav-select.component.scss'],\n  host: {\n    class: 'mx-side-nav-select',\n    '[class.mx-side-nav-select__close]': '!open'\n  }\n})\nexport class MxSideNavSelectComponent {\n  @Input({ transform: booleanAttribute }) open: boolean = true;\n  @Input() name: string = '';\n  @Input() leftIcon: string = '';\n  @Input() rightIcon: string = '';\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, booleanAttribute, forwardRef, numberAttribute } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MxTooltipDirective } from '@moxa/formoxa/mx-tooltip';\nimport { MxSideNavItem } from '../models/side-nav-item.model';\n\nconst NODE_INDENT_PADDING = 10;\n\n@Component({\n  selector: 'mx-side-nav-item',\n  imports: [\n    CommonModule,\n    MatListModule,\n    MatIconModule,\n    MatButtonModule,\n    MatDividerModule,\n    MatTooltipModule,\n    MxTooltipDirective\n  ],\n  templateUrl: './mx-side-nav-item.component.html',\n  styleUrls: ['./mx-side-nav-item.component.scss'],\n  providers: [forwardRef(() => MxSideNavItemComponent)]\n})\nexport class MxSideNavItemComponent {\n  @Input() data!: MxSideNavItem;\n  @Input({ transform: booleanAttribute }) open: boolean = false;\n  @Input({ transform: booleanAttribute }) isGroupItem: boolean = false;\n  @Input({ transform: numberAttribute }) indent: number = 0;\n\n  @Output() onToggleGroup = new EventEmitter<MxSideNavItem>();\n  @Output() onClickRoute = new EventEmitter<MxSideNavItem>();\n\n  get isActive(): boolean {\n    return this.data.isActive || this.isChildActive();\n  }\n\n  get showChildren(): boolean {\n    const hasChildren = !!this.data.children && !!this.data.children.length;\n    const isExpand = this.data.expand ?? true;\n    const isHide = this.data.hide ?? false;\n    return hasChildren && isExpand && !isHide;\n  }\n\n  get nextIndent(): number {\n    if (this.data.type === 'Group') return this.indent + NODE_INDENT_PADDING;\n    return this.indent;\n  }\n\n  private isChildActive(): boolean {\n    if (!this.data.children || this.data.children.length == 0) {\n      return false;\n    }\n    return this.data.children.some((child) => {\n      if (child.isActive) return true;\n      if (child.children && child.children.length > 0) {\n        return this.isChildActiveRecursive(child);\n      }\n      return false;\n    });\n  }\n\n  private isChildActiveRecursive(item: MxSideNavItem): boolean {\n    return (\n      item.children?.some((child) => {\n        if (child.isActive) return true;\n        if (child.children && child.children.length > 0) {\n          return this.isChildActiveRecursive(child);\n        }\n        return false;\n      }) || false\n    );\n  }\n\n  toggleGroup(item: MxSideNavItem = this.data) {\n    this.onToggleGroup.emit(item);\n  }\n\n  clickRoute(item: MxSideNavItem = this.data) {\n    this.onClickRoute.emit(item);\n  }\n}\n","@if (data) {\n  <!-- NOTE: Render current level item -->\n  @if (data.type === 'Category') {\n    <ng-container [ngTemplateOutlet]=\"category\"></ng-container>\n  }\n  @if (data.type === 'Group') {\n    <ng-container [ngTemplateOutlet]=\"group\"></ng-container>\n  }\n  @if (data.type === 'Route') {\n    <ng-container [ngTemplateOutlet]=\"route\"></ng-container>\n  }\n  <!-- NOTE: Render next level items -->\n  @if (showChildren) {\n    <mat-nav-list>\n      @for (item of data.children; track item) {\n        <mx-side-nav-item\n          [data]=\"item\"\n          [open]=\"open\"\n          [indent]=\"nextIndent\"\n          [isGroupItem]=\"data.type === 'Group'\"\n          (onToggleGroup)=\"toggleGroup($event)\"\n          (onClickRoute)=\"clickRoute($event)\"\n        >\n        </mx-side-nav-item>\n      }\n    </mat-nav-list>\n  }\n}\n\n<!-- SECTION: Category Type -->\n<ng-template #category>\n  <div category class=\"mx-side-nav-node\">\n    @if (open) {\n      <span class=\"node-name gl-ellipsis-text\" [matTooltip]=\"data.displayName\" mxAutoTooltip>{{\n        data.displayName\n      }}</span>\n    } @else {\n      <mat-divider></mat-divider>\n    }\n  </div>\n</ng-template>\n\n<!-- SECTION: Group Type -->\n<ng-template #group>\n  <mat-list-item\n    group\n    class=\"mx-side-nav-node\"\n    [class.is-active]=\"isActive\"\n    [class.is-group-item]=\"data.type === 'Group' || isGroupItem\"\n    [class.is-side-nav-close]=\"!open\"\n    [style.padding-left.px]=\"indent\"\n    [disabled]=\"data.disabled\"\n    (click)=\"data.disabled || toggleGroup()\"\n  >\n    <div [ngClass]=\"['mx-side-nav-node__item', data.iconName ? 'three-cols' : 'two-cols']\">\n      <mat-icon\n        class=\"node-expand-icon\"\n        [svgIcon]=\"data.expand ? 'icon:keyboard_arrow_down' : 'icon:navigate_next'\"\n      ></mat-icon>\n      @if (data.iconName) {\n        <mat-icon class=\"node-icon\" mat-list-icon [svgIcon]=\"data.iconName\"></mat-icon>\n      }\n      <div class=\"node-name gl-ellipsis-text\" [matTooltip]=\"data.displayName\" mxAutoTooltip>{{ data.displayName }}</div>\n    </div>\n  </mat-list-item>\n</ng-template>\n\n<!-- SECTION: Route Type -->\n<ng-template #route>\n  <mat-list-item\n    route\n    class=\"mx-side-nav-node\"\n    [class.is-active]=\"isActive\"\n    [class.is-group-item]=\"isGroupItem\"\n    [class.is-side-nav-close]=\"!open\"\n    [style.padding-left.px]=\"indent\"\n    [disabled]=\"data.disabled\"\n    (click)=\"data.disabled || clickRoute()\"\n  >\n    <div [ngClass]=\"['mx-side-nav-node__item', data.iconName ? 'three-cols' : 'two-cols']\">\n      <span></span>\n      @if (data.iconName) {\n        <mat-icon class=\"node-icon\" mat-list-icon [svgIcon]=\"data.iconName\"></mat-icon>\n      }\n      <div class=\"node-name gl-ellipsis-text\" [matTooltip]=\"data.displayName\" mxAutoTooltip>{{ data.displayName }}</div>\n    </div>\n  </mat-list-item>\n</ng-template>\n","import { animate, state, style, transition, trigger } from '@angular/animations';\n\nimport { Component, EventEmitter, Input, Output, booleanAttribute, computed, forwardRef, signal } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { auditTime } from 'rxjs';\nimport { MxSideNavItem } from './../models/side-nav-item.model';\nimport { MxSideNavItemComponent } from './mx-side-nav-item.component';\n\n@Component({\n  selector: 'mx-side-nav',\n  imports: [MxSideNavItemComponent, MatMenuModule, MatListModule, MatIconModule, MatDividerModule],\n  templateUrl: './mx-side-nav.component.html',\n  styleUrls: ['./mx-side-nav.component.scss'],\n  animations: [\n    trigger('openClose', [\n      state(\n        'open',\n        style({\n          width: '260px'\n        })\n      ),\n      state(\n        'close',\n        style({\n          width: '1px',\n          padding: '8px',\n          opacity: 0\n        })\n      ),\n      transition('open => close', [animate('0.3s cubic-bezier(0.63, 0.06, 0.33, 0.93)')]),\n      transition('close => open', [animate('0.3s cubic-bezier(0.63, 0.06, 0.33, 0.93)')])\n    ])\n  ],\n  providers: [forwardRef(() => MxSideNavComponent)]\n})\nexport class MxSideNavComponent {\n  @Input()\n  set data(value: MxSideNavItem[]) {\n    this.dataItems.set(value);\n  }\n  @Input({ transform: booleanAttribute })\n  set open(value: boolean) {\n    this.isOpen.set(value);\n  }\n  @Input() containerHeight: string = '100vh';\n  @Input() notFoundText: string = '';\n  @Input({ transform: booleanAttribute }) loading: boolean = false;\n  @Input({ transform: booleanAttribute }) showNotFound: boolean = false;\n\n  @Output() onToggleGroup = new EventEmitter<MxSideNavItem>();\n  @Output() onClickRoute = new EventEmitter<MxSideNavItem>();\n\n  readonly isOpen = signal<boolean>(true);\n  readonly dataItems = signal<MxSideNavItem[]>([]);\n\n  readonly randomIdItems = computed(() => this.generateIDs(this.dataItems()));\n  readonly viewData = computed(() => this.updateItems(this.randomIdItems()));\n  readonly fixedData = computed(() => this.getFixedItems(this.viewData()));\n  readonly normalData = computed(() => this.getNormalItems(this.viewData()));\n\n  readonly isOpenWithAudit = toSignal(toObservable(this.isOpen).pipe(auditTime(30))); // for animation\n\n  private generateIDs(items: MxSideNavItem[], parentId: string = ''): MxSideNavItem[] {\n    return items.map<MxSideNavItem>((item) => {\n      const id = item.id ?? Math.random().toString(36).substring(2);\n      return {\n        ...item,\n        id,\n        parentId: item.parentId ?? parentId,\n        children: item.children && this.generateIDs(item.children, id)\n      };\n    });\n  }\n\n  private getFixedItems(items: MxSideNavItem[]): MxSideNavItem[] {\n    const resultItems: MxSideNavItem[] = [];\n    const findItems = (items: MxSideNavItem[]) => {\n      items.map((item) => {\n        if (item.isFixed) {\n          resultItems.push({ ...item, isFixed: false }); // Note: Set false to avoid circular dependency\n        }\n        item.children && findItems(item.children);\n      });\n    };\n    findItems(items);\n    return resultItems;\n  }\n\n  private getNormalItems(items: MxSideNavItem[]) {\n    const findItems = (items: MxSideNavItem[]): MxSideNavItem[] => {\n      const filteredItems: MxSideNavItem[] = items.filter((i) => !i.isFixed);\n      return filteredItems.map((item) => {\n        return {\n          ...item,\n          children: item.children && findItems(item.children)\n        };\n      });\n    };\n    return findItems(items);\n  }\n\n  private updateItems(items: MxSideNavItem[]): MxSideNavItem[] {\n    return items.map<MxSideNavItem>((item) => {\n      return {\n        ...item,\n        isActive: item.isActive,\n        expand: item.expand,\n        children: item.children && this.updateItems(item.children)\n      };\n    });\n  }\n\n  toggleGroup(item: MxSideNavItem) {\n    this.dataItems.update((items) => {\n      const updateItemExpand = (items: MxSideNavItem[]): MxSideNavItem[] => {\n        return items.map((currentItem) => {\n          if (currentItem.id === item.id) {\n            return {\n              ...currentItem,\n              expand: !currentItem.expand\n            };\n          }\n          if (currentItem.children) {\n            return {\n              ...currentItem,\n              children: updateItemExpand(currentItem.children)\n            };\n          }\n          return currentItem;\n        });\n      };\n      return updateItemExpand(items);\n    });\n    this.onToggleGroup.emit(item);\n  }\n\n  clickRoute(item: MxSideNavItem) {\n    this.onClickRoute.emit(item);\n  }\n\n  animationEnd() {}\n}\n","<div\n  class=\"mx-side-nav-wrapper\"\n  [class.is-side-nav-close]=\"!isOpen()\"\n  [style.height]=\"containerHeight\"\n  [@openClose]=\"isOpen() ? 'open' : 'close'\"\n  (@openClose.done)=\"animationEnd()\"\n>\n  <div class=\"mx-side-nav-header\">\n    <!-- NOTE: Render custom header slot -->\n    <div #header>\n      @if (isOpen()) {\n        <ng-content select=\"[mx-side-nav-header]\"></ng-content>\n      }\n    </div>\n    <!-- NOTE: Render fixed nav items -->\n    <div class=\"header-side-nav-wrapper\" [class.opacity-038]=\"loading\">\n      @if (fixedData().length > 0) {\n        <mat-nav-list>\n          @for (item of fixedData(); track item) {\n            <mx-side-nav-item\n              [data]=\"item\"\n              [open]=\"isOpen()\"\n              [class.is-category]=\"item.type === 'Category'\"\n              [class.is-group]=\"item.type === 'Group'\"\n              [class.is-route]=\"item.type === 'Route'\"\n              [isGroupItem]=\"item.type === 'Group'\"\n              (onToggleGroup)=\"toggleGroup($event)\"\n              (onClickRoute)=\"clickRoute($event)\"\n            ></mx-side-nav-item>\n          }\n        </mat-nav-list>\n      }\n      @if (loading) {\n        <div class=\"loading-mask\"></div>\n      }\n    </div>\n  </div>\n\n  @if (header.children.length || fixedData().length > 0) {\n    <mat-divider></mat-divider>\n  }\n\n  @if (showNotFound) {\n    <div class=\"not-found-box\">\n      <mat-icon svgIcon=\"icon:mx-empty_state_box\"></mat-icon>\n      <span class=\"gl-body-md\"> {{ notFoundText || 'No results found for the search term.' }} </span>\n    </div>\n  } @else {\n    <!-- NOTE: Render main side nav tree -->\n    <div class=\"mx-side-nav-scrollable-container\" [class.opacity-038]=\"loading\">\n      <mat-nav-list>\n        @for (item of normalData(); track item) {\n          <mx-side-nav-item\n            [data]=\"item\"\n            [open]=\"isOpen()\"\n            [class.is-category]=\"item.type === 'Category'\"\n            [class.is-group]=\"item.type === 'Group'\"\n            [class.is-route]=\"item.type === 'Route'\"\n            [isGroupItem]=\"item.type === 'Group'\"\n            (onToggleGroup)=\"toggleGroup($event)\"\n            (onClickRoute)=\"clickRoute($event)\"\n          ></mx-side-nav-item>\n        }\n      </mat-nav-list>\n      @if (loading) {\n        <div class=\"loading-mask\"></div>\n      }\n    </div>\n  }\n</div>\n","import { MxSideNavItem } from '../models/side-nav-item.model';\n\n/**\n * Filters the side navigation items based on a search string.\n *\n * @param searchString - The string to search for within the side navigation items.\n * @param items - The array of side navigation items to filter.\n * @param options - Optional configuration for filtering.\n * @param options.key - The key of the `MxSideNavItem` to search within. Defaults to 'displayName'.\n * @returns An array of filtered side navigation items.\n */\nexport function filterSideNavItems(\n  searchString: string,\n  items: MxSideNavItem[],\n  options: {\n    key: keyof MxSideNavItem;\n  } = {\n    key: 'displayName'\n  }\n): MxSideNavItem[] {\n  if (searchString === '') return [];\n  const { key } = options;\n  return items\n    .map((item) => {\n      if (item.children) {\n        const filteredChildren = filterSideNavItems(searchString, item.children, options);\n        if (\n          filteredChildren.length > 0 ||\n          (item[key] && item[key]!.toString().toLocaleLowerCase().includes(searchString.toLocaleLowerCase()))\n        ) {\n          return { ...item, children: filteredChildren };\n        }\n      } else if (item[key] && item[key]!.toString().toLocaleLowerCase().includes(searchString.toLocaleLowerCase())) {\n        return item;\n      }\n      return null;\n    })\n    .filter((item) => item !== null) as MxSideNavItem[];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i1","i2"],"mappings":"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"}