cmat 0.0.89 → 0.0.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/fesm2022/cmat-components-adapter.mjs +9 -9
  2. package/fesm2022/cmat-components-breadcrumb.mjs +9 -9
  3. package/fesm2022/cmat-components-card.mjs +3 -3
  4. package/fesm2022/cmat-components-carousel.mjs +12 -12
  5. package/fesm2022/cmat-components-cascade.mjs +9 -9
  6. package/fesm2022/cmat-components-chip-input.mjs +3 -3
  7. package/fesm2022/cmat-components-code-editor.mjs +3 -3
  8. package/fesm2022/cmat-components-color-picker.mjs +27 -27
  9. package/fesm2022/cmat-components-custom-formly.mjs +96 -96
  10. package/fesm2022/cmat-components-data-picker.mjs +15 -15
  11. package/fesm2022/cmat-components-date-range.mjs +3 -3
  12. package/fesm2022/cmat-components-date-time-display.mjs +3 -3
  13. package/fesm2022/cmat-components-drawer.mjs +6 -6
  14. package/fesm2022/cmat-components-empty-state.mjs +3 -3
  15. package/fesm2022/cmat-components-file-preview.mjs +3 -3
  16. package/fesm2022/cmat-components-filter-toolbar.mjs +3 -3
  17. package/fesm2022/cmat-components-form-actions.mjs +3 -3
  18. package/fesm2022/cmat-components-fullscreen.mjs +3 -3
  19. package/fesm2022/cmat-components-highlight.mjs +6 -6
  20. package/fesm2022/cmat-components-image-viewer.mjs +3 -3
  21. package/fesm2022/cmat-components-inline-loading.mjs +3 -3
  22. package/fesm2022/cmat-components-json-editor.mjs +3 -3
  23. package/fesm2022/cmat-components-knob-input.mjs +3 -3
  24. package/fesm2022/cmat-components-masonry.mjs +3 -3
  25. package/fesm2022/cmat-components-material-color-picker.mjs +3 -3
  26. package/fesm2022/cmat-components-material-datetimepicker.mjs +42 -42
  27. package/fesm2022/cmat-components-navigation.mjs +110 -43
  28. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  29. package/fesm2022/cmat-components-opt-input.mjs +3 -3
  30. package/fesm2022/cmat-components-org-chart.mjs +9 -9
  31. package/fesm2022/cmat-components-page-header.mjs +3 -3
  32. package/fesm2022/cmat-components-pagination.mjs +12 -12
  33. package/fesm2022/cmat-components-password-strength.mjs +9 -9
  34. package/fesm2022/cmat-components-popover.mjs +9 -9
  35. package/fesm2022/cmat-components-progress-bar.mjs +3 -3
  36. package/fesm2022/cmat-components-qrcode.mjs +3 -3
  37. package/fesm2022/cmat-components-rating.mjs +3 -3
  38. package/fesm2022/cmat-components-rich-text-editor.mjs +3 -3
  39. package/fesm2022/cmat-components-select-search.mjs +9 -9
  40. package/fesm2022/cmat-components-select-table.mjs +3 -3
  41. package/fesm2022/cmat-components-select-tree.mjs +3 -3
  42. package/fesm2022/cmat-components-skeleton.mjs +3 -3
  43. package/fesm2022/cmat-components-speed-dial.mjs +9 -9
  44. package/fesm2022/cmat-components-status-tag.mjs +3 -3
  45. package/fesm2022/cmat-components-table-toolbar.mjs +3 -3
  46. package/fesm2022/cmat-components-timeline.mjs +12 -12
  47. package/fesm2022/cmat-components-toast.mjs +11 -10
  48. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  49. package/fesm2022/cmat-components-transfer-picker.mjs +18 -18
  50. package/fesm2022/cmat-components-treetable.mjs +6 -6
  51. package/fesm2022/cmat-components-upload.mjs +9 -9
  52. package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -6
  53. package/fesm2022/cmat-directives-arrow-cursor.mjs +3 -3
  54. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  55. package/fesm2022/cmat-directives-data-exporter.mjs +21 -21
  56. package/fesm2022/cmat-directives-debounce.mjs +9 -9
  57. package/fesm2022/cmat-directives-digit-only.mjs +6 -6
  58. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  59. package/fesm2022/cmat-directives-seamless-auto-scroll.mjs +3 -3
  60. package/fesm2022/cmat-lib-mock-api.mjs +6 -6
  61. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  62. package/fesm2022/cmat-pipes-date-format.mjs +3 -3
  63. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
  64. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  65. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  66. package/fesm2022/cmat-pipes-secure.mjs +3 -3
  67. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  68. package/fesm2022/cmat-services-alert.mjs +17 -6
  69. package/fesm2022/cmat-services-alert.mjs.map +1 -1
  70. package/fesm2022/cmat-services-config.mjs +6 -6
  71. package/fesm2022/cmat-services-confirmation.mjs +6 -6
  72. package/fesm2022/cmat-services-data.mjs +3 -3
  73. package/fesm2022/cmat-services-export-as.mjs +3 -3
  74. package/fesm2022/cmat-services-loading.mjs +6 -6
  75. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  76. package/fesm2022/cmat-services-media-watcher.mjs +3 -3
  77. package/fesm2022/cmat-services-platform.mjs +3 -3
  78. package/fesm2022/cmat-services-splash-screen.mjs +3 -3
  79. package/fesm2022/cmat-services-title.mjs +3 -3
  80. package/fesm2022/cmat-services-translation.mjs +3 -3
  81. package/fesm2022/cmat-services-utils.mjs +3 -3
  82. package/fesm2022/cmat.mjs +642 -563
  83. package/fesm2022/cmat.mjs.map +1 -1
  84. package/package.json +1 -3
  85. package/styles/user-themes.scss +1 -1
  86. package/types/cmat-components-material-datetimepicker.d.ts +5 -5
  87. package/types/cmat-components-navigation.d.ts +32 -2
  88. package/types/cmat-components-toast.d.ts +1 -1
  89. package/types/cmat-services-alert.d.ts +3 -0
  90. package/types/cmat.d.ts +42 -9
  91. package/styles/overrides/fullcalendar.scss +0 -552
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-components-navigation.mjs","sources":["../../../projects/cmat/components/navigation/navigation.service.ts","../../../projects/cmat/components/navigation/horizontal/components/basic/basic.component.ts","../../../projects/cmat/components/navigation/horizontal/components/basic/basic.component.html","../../../projects/cmat/components/navigation/horizontal/components/divider/divider.component.ts","../../../projects/cmat/components/navigation/horizontal/components/divider/divider.component.html","../../../projects/cmat/components/navigation/horizontal/components/branch/branch.component.ts","../../../projects/cmat/components/navigation/horizontal/components/branch/branch.component.html","../../../projects/cmat/components/navigation/horizontal/components/spacer/spacer.component.ts","../../../projects/cmat/components/navigation/horizontal/components/spacer/spacer.component.html","../../../projects/cmat/components/navigation/horizontal/horizontal.component.ts","../../../projects/cmat/components/navigation/horizontal/horizontal.component.html","../../../projects/cmat/components/navigation/vertical/components/basic/basic.component.ts","../../../projects/cmat/components/navigation/vertical/components/basic/basic.component.html","../../../projects/cmat/components/navigation/vertical/components/divider/divider.component.ts","../../../projects/cmat/components/navigation/vertical/components/divider/divider.component.html","../../../projects/cmat/components/navigation/vertical/components/spacer/spacer.component.ts","../../../projects/cmat/components/navigation/vertical/components/spacer/spacer.component.html","../../../projects/cmat/components/navigation/vertical/components/group/group.component.ts","../../../projects/cmat/components/navigation/vertical/components/group/group.component.html","../../../projects/cmat/components/navigation/vertical/components/collapsable/collapsable.component.ts","../../../projects/cmat/components/navigation/vertical/components/collapsable/collapsable.component.html","../../../projects/cmat/components/navigation/vertical/components/aside/aside.component.ts","../../../projects/cmat/components/navigation/vertical/components/aside/aside.component.html","../../../projects/cmat/components/navigation/vertical/vertical.component.ts","../../../projects/cmat/components/navigation/vertical/vertical.component.html","../../../projects/cmat/components/navigation/navigation.types.ts","../../../projects/cmat/components/navigation/cmat-components-navigation.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { CmatNavigationItem } from './navigation.types';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatNavigationService {\r\n private readonly _componentRegistry = new Map<string, unknown>();\r\n private readonly _navigationStore = new Map<string, CmatNavigationItem[]>();\r\n\r\n registerComponent(name: string, component: unknown): void {\r\n this._componentRegistry.set(name, component);\r\n }\r\n deregisterComponent(name: string): void {\r\n this._componentRegistry.delete(name);\r\n }\r\n getComponent<T = unknown>(name: string): T {\r\n return this._componentRegistry.get(name) as T;\r\n }\r\n\r\n storeNavigation(key: string, navigation: CmatNavigationItem[]): void {\r\n this._navigationStore.set(key, navigation);\r\n }\r\n getNavigation(key: string): CmatNavigationItem[] {\r\n return this._navigationStore.get(key) ?? [];\r\n }\r\n deleteNavigation(key: string): void {\r\n if (!this._navigationStore.has(key)) {\r\n console.warn(`Navigation with the key '${key}' does not exist in the store.`);\r\n }\r\n\r\n this._navigationStore.delete(key);\r\n }\r\n getFlatNavigation(navigation: CmatNavigationItem[], flatNavigation: CmatNavigationItem[] = []): CmatNavigationItem[] {\r\n for (const item of navigation) {\r\n if (item.type === 'basic') {\r\n flatNavigation.push(item);\r\n continue;\r\n }\r\n\r\n if (item.type === 'aside' || item.type === 'collapsable' || item.type === 'group') {\r\n if (item.children) {\r\n this.getFlatNavigation(item.children, flatNavigation);\r\n }\r\n }\r\n }\r\n\r\n return flatNavigation;\r\n }\r\n getItem(id: string, navigation: CmatNavigationItem[]): CmatNavigationItem | null {\r\n for (const item of navigation) {\r\n if (item.id === id) {\r\n return item;\r\n }\r\n\r\n if (item.children) {\r\n const childItem = this.getItem(id, item.children);\r\n\r\n if (childItem) {\r\n return childItem;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n getItemParent(\r\n id: string,\r\n navigation: CmatNavigationItem[],\r\n parent: CmatNavigationItem[] | CmatNavigationItem\r\n ): CmatNavigationItem[] | CmatNavigationItem | null {\r\n for (const item of navigation) {\r\n if (item.id === id) {\r\n return parent;\r\n }\r\n\r\n if (item.children) {\r\n const childItem = this.getItemParent(id, item.children, item);\r\n\r\n if (childItem) {\r\n return childItem;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport {\r\n isActive,\r\n Router,\r\n RouterLink,\r\n RouterLinkActive,\r\n} from '@angular/router';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation-basic-item',\r\n templateUrl: './basic.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgClass,\r\n RouterLink,\r\n RouterLinkActive,\r\n MatTooltipModule,\r\n NgTemplateOutlet,\r\n MatMenuModule,\r\n MatIconModule,\r\n ],\r\n})\r\nexport class CmatHorizontalNavigationBasicItemComponent {\r\n readonly routeReuseStrategyEmitUrl = output<string>();\r\n\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input.required<string>();\r\n readonly hasRouteReuseStrategy = input<boolean>();\r\n\r\n protected readonly isActiveMatchOptions = computed(() => {\r\n const item = this.item();\r\n return (item?.isActiveMatchOptions ?? item?.exactMatch)\r\n ? this._cmatUtilsService.exactMatchOptions\r\n : this._cmatUtilsService.subsetMatchOptions;\r\n });\r\n\r\n private _router = inject(Router);\r\n private _cmatUtilsService = inject(CmatUtilsService);\r\n\r\n isRouteActive(link?: string): boolean {\r\n if (!link) {\r\n return false;\r\n }\r\n return isActive(link, this._router, this.isActiveMatchOptions())();\r\n }\r\n\r\n goToRouterLink(link?: string): void {\r\n if (!link) {\r\n return;\r\n }\r\n if (this.hasRouteReuseStrategy()) {\r\n this.routeReuseStrategyEmitUrl.emit(link);\r\n } else {\r\n void this._router.navigate([link]);\r\n }\r\n }\r\n}","<div\r\n class=\"cmat-horizontal-navigation-item-wrapper\"\r\n [class.cmat-horizontal-navigation-item-has-subtitle]=\"!!item().subTitle\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n>\r\n @if (\r\n item().link && !item().externalLink && !item().function && !item().disabled\r\n ) {\r\n <div\r\n class=\"cmat-horizontal-navigation-item\"\r\n role=\"presentation\"\r\n [ngClass]=\"{\r\n 'cmat-horizontal-navigation-item-active-forced': item().active,\r\n 'cmat-horizontal-navigation-item-active': isRouteActive(item().link),\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"goToRouterLink(item().link)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n @if (\r\n item().link && item().externalLink && !item().function && !item().disabled\r\n ) {\r\n <a\r\n class=\"cmat-horizontal-navigation-item\"\r\n [href]=\"item().link\"\r\n [target]=\"item().target || '_blank'\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n @if (!item().link && item().function && !item().disabled) {\r\n <div\r\n class=\"cmat-horizontal-navigation-item\"\r\n role=\"presentation\"\r\n [ngClass]=\"{\r\n 'cmat-horizontal-navigation-item-active-forced': item().active,\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"item().function!(item())\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n @if (\r\n item().link && !item().externalLink && item().function && !item().disabled\r\n ) {\r\n <div\r\n class=\"cmat-horizontal-navigation-item\"\r\n role=\"presentation\"\r\n [ngClass]=\"{\r\n 'cmat-horizontal-navigation-item-active-forced': item().active,\r\n 'cmat-horizontal-navigation-item-active': isRouteActive(item().link),\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"item().function!(item()); goToRouterLink(item().link)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n @if (\r\n item().link && item().externalLink && item().function && !item().disabled\r\n ) {\r\n <a\r\n class=\"cmat-horizontal-navigation-item\"\r\n mat-menu-item\r\n [href]=\"item().link\"\r\n [target]=\"item().target || '_blank'\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"item().function!(item())\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n @if (!item().link && !item().function && !item().disabled) {\r\n <div\r\n class=\"cmat-horizontal-navigation-item\"\r\n [ngClass]=\"{\r\n 'cmat-horizontal-navigation-item-active-forced': item().active,\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n @if (item().disabled) {\r\n <div\r\n class=\"cmat-horizontal-navigation-item cmat-horizontal-navigation-item-disabled\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n</div>\r\n\r\n<ng-template #itemTemplate>\r\n @if (item().icon) {\r\n <mat-icon\r\n class=\"cmat-horizontal-navigation-item-icon\"\r\n [ngClass]=\"item().classes?.icon\"\r\n [svgIcon]=\"item().icon!\"\r\n >\r\n </mat-icon>\r\n }\r\n\r\n <div class=\"cmat-horizontal-navigation-item-title-wrapper\">\r\n <div class=\"cmat-horizontal-navigation-item-title\">\r\n <span [ngClass]=\"item().classes?.title\">\r\n {{ item().title }}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n @if (item().badge) {\r\n <div class=\"cmat-horizontal-navigation-item-badge\">\r\n <div\r\n class=\"cmat-horizontal-navigation-item-badge-content\"\r\n [ngClass]=\"item().badge!.classes\"\r\n >\r\n {{ item().badge!.title }}\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation-divider-item',\r\n templateUrl: './divider.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass],\r\n})\r\nexport class CmatHorizontalNavigationDividerItemComponent {\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input<string>();\r\n}\r\n","<div\r\n class=\"cmat-horizontal-navigation-item-wrapper divider\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n></div>\r\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n forwardRef,\r\n input,\r\n output,\r\n viewChild\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenu, MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatHorizontalNavigationBasicItemComponent } from '../basic/basic.component';\r\nimport { CmatHorizontalNavigationDividerItemComponent } from '../divider/divider.component';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation-branch-item',\r\n templateUrl: './branch.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgClass,\r\n MatMenuModule,\r\n NgTemplateOutlet,\r\n CmatHorizontalNavigationBasicItemComponent,\r\n forwardRef(() => CmatHorizontalNavigationBranchItemComponent),\r\n CmatHorizontalNavigationDividerItemComponent,\r\n MatTooltipModule,\r\n MatIconModule,\r\n ],\r\n})\r\nexport class CmatHorizontalNavigationBranchItemComponent {\r\n readonly routeReuseStrategyEmitUrl = output<string>();\r\n readonly matMenu = viewChild('matMenu', { read: MatMenu });\r\n readonly matMenuPanel = computed(() => this.matMenu() ?? null);\r\n\r\n readonly child = input<boolean>(false);\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input.required<string>();\r\n readonly hasRouteReuseStrategy = input<boolean>();\r\n\r\n triggerChangeDetection(): void { /* empty */ }\r\n trackByFn(index: number, item: CmatNavigationItem): string | number {\r\n return item.id ?? index;\r\n }\r\n\r\n goToRouterLink(link: string): void {\r\n this.routeReuseStrategyEmitUrl.emit(link);\r\n }\r\n}","@if (!child()) {\r\n <div\r\n #trigger=\"matMenuTrigger\"\r\n [ngClass]=\"{\r\n 'cmat-horizontal-navigation-menu-active': trigger.menuOpen,\r\n 'cmat-horizontal-navigation-menu-active-forced': item().active,\r\n }\"\r\n [matMenuTriggerFor]=\"matMenu\"\r\n (menuOpened)=\"triggerChangeDetection()\"\r\n (onMenuClose)=\"triggerChangeDetection()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item() }\"\r\n ></ng-container>\r\n </div>\r\n}\r\n\r\n<mat-menu\r\n #matMenu=\"matMenu\"\r\n class=\"cmat-horizontal-navigation-menu-panel\"\r\n [overlapTrigger]=\"false\"\r\n>\r\n @for (item of item().children; track trackByFn($index, item)) {\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n @if (item.type === \"basic\") {\r\n <div\r\n class=\"cmat-horizontal-navigation-menu-item\"\r\n mat-menu-item\r\n [disabled]=\"item.disabled\"\r\n >\r\n <cmat-horizontal-navigation-basic-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-horizontal-navigation-basic-item>\r\n </div>\r\n }\r\n\r\n @if (\r\n item.type === \"aside\" ||\r\n item.type === \"collapsable\" ||\r\n item.type === \"group\"\r\n ) {\r\n <div\r\n class=\"cmat-horizontal-navigation-menu-item\"\r\n mat-menu-item\r\n [disabled]=\"item.disabled\"\r\n [matMenuTriggerFor]=\"branch.matMenuPanel()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"\r\n ></ng-container>\r\n <cmat-horizontal-navigation-branch-item\r\n #branch\r\n [child]=\"true\"\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-horizontal-navigation-branch-item>\r\n </div>\r\n }\r\n\r\n @if (item.type === \"divider\") {\r\n <div class=\"cmat-horizontal-navigation-menu-item\" mat-menu-item>\r\n <cmat-horizontal-navigation-divider-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n >\r\n </cmat-horizontal-navigation-divider-item>\r\n </div>\r\n }\r\n }\r\n }\r\n</mat-menu>\r\n\r\n<ng-template #itemTemplate let-item>\r\n <div\r\n class=\"cmat-horizontal-navigation-item-wrapper\"\r\n [class.cmat-horizontal-navigation-item-has-subtitle]=\"!!item.subTitle\"\r\n [ngClass]=\"item.classes?.wrapper\"\r\n >\r\n <div\r\n class=\"cmat-horizontal-navigation-item\"\r\n [ngClass]=\"{\r\n 'cmat-horizontal-navigation-item-disabled': item.disabled,\r\n 'cmat-horizontal-navigation-item-active-forced': item.active,\r\n }\"\r\n [matTooltip]=\"item.tooltip || ''\"\r\n >\r\n @if (item.icon) {\r\n <mat-icon\r\n class=\"cmat-horizontal-navigation-item-icon\"\r\n [ngClass]=\"item.classes?.icon\"\r\n [svgIcon]=\"item.icon\"\r\n ></mat-icon>\r\n }\r\n\r\n <div class=\"cmat-horizontal-navigation-item-title-wrapper\">\r\n <div class=\"cmat-horizontal-navigation-item-title\">\r\n <span [ngClass]=\"item.classes?.title\">\r\n {{ item.title }}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n @if (item.badge) {\r\n <div class=\"cmat-horizontal-navigation-item-badge\">\r\n <div\r\n class=\"cmat-horizontal-navigation-item-badge-content\"\r\n [ngClass]=\"item.badge.classes\"\r\n >\r\n {{ item.badge.title }}\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation-spacer-item',\r\n templateUrl: './spacer.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass],\r\n})\r\nexport class CmatHorizontalNavigationSpacerItemComponent {\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input.required<string>();\r\n}\r\n","<div\r\n class=\"cmat-horizontal-navigation-item-wrapper\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n></div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n ViewEncapsulation,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatNavigationService } from '../navigation.service';\r\nimport { CmatNavigationItem } from '../navigation.types';\r\nimport { CmatHorizontalNavigationBasicItemComponent } from './components/basic/basic.component';\r\nimport { CmatHorizontalNavigationBranchItemComponent } from './components/branch/branch.component';\r\nimport { CmatHorizontalNavigationSpacerItemComponent } from './components/spacer/spacer.component';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation',\r\n templateUrl: './horizontal.component.html',\r\n styleUrls: ['./horizontal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatHorizontalNavigation',\r\n imports: [\r\n CmatHorizontalNavigationBasicItemComponent,\r\n CmatHorizontalNavigationBranchItemComponent,\r\n CmatHorizontalNavigationSpacerItemComponent,\r\n ],\r\n})\r\nexport class CmatHorizontalNavigationComponent\r\n implements OnInit, OnDestroy {\r\n readonly routeReuseStrategyEmitUrl = output<string>();\r\n readonly refreshToken = signal(0);\r\n readonly name = input<string>(inject(CmatUtilsService).randomId());\r\n readonly navigation = input<CmatNavigationItem[]>();\r\n readonly hasRouteReuseStrategy = input<boolean>();\r\n\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n\r\n constructor() {\r\n effect(() => {\r\n this.navigation();\r\n this.refreshToken.update(value => value + 1);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this._cmatNavigationService.registerComponent(this.name(), this);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._cmatNavigationService.deregisterComponent(this.name());\r\n }\r\n\r\n refresh(): void {\r\n this.refreshToken.update(value => value + 1);\r\n }\r\n\r\n trackByFn(index: number, item: CmatNavigationItem): string | number {\r\n return item.id ?? index;\r\n }\r\n\r\n goToRouterLink(link: string): void {\r\n this.routeReuseStrategyEmitUrl.emit(link);\r\n }\r\n}","<div\r\n class=\"cmat-horizontal-navigation-wrapper\"\r\n [attr.data-refresh]=\"refreshToken()\"\r\n>\r\n @for (item of navigation(); track trackByFn($index, item)) {\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n @if (item.type === \"basic\") {\r\n <cmat-horizontal-navigation-basic-item\r\n class=\"cmat-horizontal-navigation-menu-item\"\r\n [item]=\"item\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n [name]=\"name()\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n ></cmat-horizontal-navigation-basic-item>\r\n }\r\n\r\n @if (\r\n item.type === \"aside\" ||\r\n item.type === \"collapsable\" ||\r\n item.type === \"group\"\r\n ) {\r\n <cmat-horizontal-navigation-branch-item\r\n class=\"cmat-horizontal-navigation-menu-item\"\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n ></cmat-horizontal-navigation-branch-item>\r\n }\r\n\r\n @if (item.type === \"spacer\") {\r\n <cmat-horizontal-navigation-spacer-item\r\n class=\"cmat-horizontal-navigation-menu-item\"\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n ></cmat-horizontal-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n</div>\r\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport {\r\n isActive,\r\n Router,\r\n RouterLink,\r\n RouterLinkActive,\r\n} from '@angular/router';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-basic-item',\r\n templateUrl: './basic.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgClass,\r\n RouterLink,\r\n RouterLinkActive,\r\n MatTooltipModule,\r\n NgTemplateOutlet,\r\n MatIconModule,\r\n ],\r\n})\r\nexport class CmatVerticalNavigationBasicItemComponent {\r\n\r\n readonly routeReuseStrategyEmitUrl = output<string>();\r\n readonly editSelectedItemChanged = output<CmatNavigationItem>();\r\n\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input<string>();\r\n readonly editState = input<boolean>(false);\r\n readonly hasRouteReuseStrategy = input<boolean>(false);\r\n\r\n protected readonly isActiveMatchOptions = computed(() => {\r\n const item = this.item();\r\n return (item?.isActiveMatchOptions ?? item?.exactMatch)\r\n ? this._cmatUtilsService.exactMatchOptions\r\n : this._cmatUtilsService.subsetMatchOptions;\r\n });\r\n\r\n private _router = inject(Router);\r\n private _cmatUtilsService = inject(CmatUtilsService);\r\n\r\n selectItem(): void {\r\n this.editSelectedItemChanged.emit(this.item());\r\n }\r\n\r\n isRouteActive(link?: string): boolean {\r\n if (!link) {\r\n return false;\r\n }\r\n return isActive(link, this._router, this.isActiveMatchOptions())();\r\n }\r\n\r\n goToRouterLink(link?: string): void {\r\n if (!link) {\r\n return;\r\n }\r\n if (this.hasRouteReuseStrategy()) {\r\n this.routeReuseStrategyEmitUrl.emit(link);\r\n } else {\r\n void this._router.navigate([link]);\r\n }\r\n }\r\n}","<div\r\n class=\"cmat-vertical-navigation-item-wrapper\"\r\n [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item().subTitle\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n>\r\n @if (editState()) {\r\n <div\r\n class=\"cmat-vertical-navigation-item\"\r\n role=\"presentation\"\r\n [ngClass]=\"{\r\n 'cmat-vertical-navigation-item-active-forced': item().active,\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"selectItem()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n } @else {\r\n @if (\r\n item().link &&\r\n !item().externalLink &&\r\n !item().function &&\r\n !item().disabled\r\n ) {\r\n <a\r\n class=\"cmat-vertical-navigation-item\"\r\n role=\"presentation\"\r\n [ngClass]=\"{\r\n 'cmat-vertical-navigation-item-active-forced': item().active,\r\n 'cmat-vertical-navigation-item-active': isRouteActive(item().link),\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"goToRouterLink(item().link)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n @if (\r\n item().link && item().externalLink && !item().function && !item().disabled\r\n ) {\r\n <a\r\n class=\"cmat-vertical-navigation-item\"\r\n [href]=\"item().link\"\r\n [target]=\"item().target || '_blank'\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n @if (!item().link && item().function && !item().disabled) {\r\n <div\r\n class=\"cmat-vertical-navigation-item\"\r\n role=\"presentation\"\r\n [ngClass]=\"{\r\n 'cmat-vertical-navigation-item-active-forced': item().active,\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"item().function!(item())\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n @if (\r\n item().link && !item().externalLink && item().function && !item().disabled\r\n ) {\r\n <a\r\n class=\"cmat-vertical-navigation-item\"\r\n role=\"presentation\"\r\n [ngClass]=\"{\r\n 'cmat-vertical-navigation-item-active-forced': item().active,\r\n 'cmat-vertical-navigation-item-active': isRouteActive(item().link),\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"item().function!(item()); goToRouterLink(item().link)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n @if (\r\n item().link && item().externalLink && item().function && !item().disabled\r\n ) {\r\n <a\r\n class=\"cmat-vertical-navigation-item\"\r\n [href]=\"item().link\"\r\n [target]=\"item().target || '_blank'\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"item().function!(item())\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n @if (!item().link && !item().function && !item().disabled) {\r\n <div\r\n class=\"cmat-vertical-navigation-item\"\r\n [ngClass]=\"{\r\n 'cmat-vertical-navigation-item-active-forced': item().active,\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n @if (item().disabled) {\r\n <div\r\n class=\"cmat-vertical-navigation-item cmat-vertical-navigation-item-disabled\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n }\r\n</div>\r\n\r\n<ng-template #itemTemplate>\r\n @if (item().icon) {\r\n <mat-icon\r\n class=\"cmat-vertical-navigation-item-icon\"\r\n [ngClass]=\"item().classes?.icon\"\r\n [svgIcon]=\"item().icon!\"\r\n >\r\n </mat-icon>\r\n }\r\n\r\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\r\n <div class=\"cmat-vertical-navigation-item-title\">\r\n <span [ngClass]=\"item().classes?.title\">\r\n {{ item().title }}\r\n </span>\r\n </div>\r\n @if (item().subTitle) {\r\n <div class=\"cmat-vertical-navigation-item-subtitle\">\r\n <span [ngClass]=\"item().classes?.subtitle\">\r\n {{ item().subTitle }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (item().badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div\r\n class=\"cmat-vertical-navigation-item-badge-content\"\r\n [ngClass]=\"item().badge!.classes\"\r\n >\r\n {{ item().badge!.title }}\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n","import { NgClass } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n output,\r\n input,\r\n} from '@angular/core';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-divider-item',\r\n templateUrl: './divider.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass],\r\n})\r\nexport class CmatVerticalNavigationDividerItemComponent {\r\n readonly editSelectedItemChanged = output<CmatNavigationItem>();\r\n\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input.required<string>();\r\n readonly editState = input<boolean>(false);\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.emit(item);\r\n }\r\n}","<div\r\n class=\"cmat-vertical-navigation-item-wrapper divider\"\r\n role=\"presentation\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n (click)=\"selectItem(item())\"\r\n></div>\r\n","import { NgClass } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n output,\r\n input,\r\n} from '@angular/core';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-spacer-item',\r\n templateUrl: './spacer.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass],\r\n})\r\nexport class CmatVerticalNavigationSpacerItemComponent {\r\n readonly editSelectedItemChanged = output<CmatNavigationItem>();\r\n\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input.required<string>();\r\n readonly editState = input<boolean>(false);\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.emit(item);\r\n }\r\n}","<div\r\n class=\"cmat-vertical-navigation-item-wrapper\"\r\n role=\"presentation\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n (click)=\"selectItem(item())\"\r\n></div>\r\n","import { NgClass } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n forwardRef,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationBasicItemComponent } from '../basic/basic.component';\r\nimport { CmatVerticalNavigationCollapsableItemComponent } from '../collapsable/collapsable.component';\r\nimport { CmatVerticalNavigationDividerItemComponent } from '../divider/divider.component';\r\nimport { CmatVerticalNavigationSpacerItemComponent } from '../spacer/spacer.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-group-item',\r\n templateUrl: './group.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgClass,\r\n MatIconModule,\r\n CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationDividerItemComponent,\r\n forwardRef(() => CmatVerticalNavigationGroupItemComponent),\r\n forwardRef(() => CmatVerticalNavigationCollapsableItemComponent),\r\n CmatVerticalNavigationSpacerItemComponent,\r\n ],\r\n})\r\nexport class CmatVerticalNavigationGroupItemComponent {\r\n readonly routeReuseStrategyEmitUrl = output<string>();\r\n readonly editSelectedItemChanged = output<CmatNavigationItem>();\r\n\r\n readonly autoCollapse = input<boolean>();\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input.required<string>();\r\n readonly editState = input<boolean>(false);\r\n readonly hasRouteReuseStrategy = input<boolean>(false);\r\n\r\n trackByFn(index: number, item: CmatNavigationItem): string | number {\r\n return item.id ?? index;\r\n }\r\n\r\n goToRouterLink(link: string): void {\r\n this.routeReuseStrategyEmitUrl.emit(link);\r\n }\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.emit(item);\r\n }\r\n}","<div\r\n class=\"cmat-vertical-navigation-item-wrapper\"\r\n role=\"presentation\"\r\n [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item().subTitle\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n (click)=\"selectItem(item())\"\r\n>\r\n <div class=\"cmat-vertical-navigation-item\">\r\n @if (item().icon) {\r\n <mat-icon\r\n class=\"cmat-vertical-navigation-item-icon\"\r\n [ngClass]=\"item().classes?.icon\"\r\n [svgIcon]=\"item().icon!\"\r\n >\r\n </mat-icon>\r\n }\r\n\r\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\r\n <div class=\"cmat-vertical-navigation-item-title\">\r\n <span [ngClass]=\"item().classes?.title\">\r\n {{ item().title }}\r\n </span>\r\n </div>\r\n @if (item().subTitle) {\r\n <div class=\"cmat-vertical-navigation-item-subtitle\">\r\n <span [ngClass]=\"item().classes?.subtitle\">\r\n {{ item().subTitle }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (item().badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div\r\n class=\"cmat-vertical-navigation-item-badge-content\"\r\n [ngClass]=\"item().badge!.classes\"\r\n >\r\n {{ item().badge!.title }}\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n@for (item of item().children; track trackByFn($index, item)) {\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n @if (item.type === \"basic\") {\r\n <cmat-vertical-navigation-basic-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n\r\n @if (item.type === \"collapsable\") {\r\n <cmat-vertical-navigation-collapsable-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [autoCollapse]=\"autoCollapse()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-collapsable-item>\r\n }\r\n\r\n @if (item.type === \"divider\") {\r\n <cmat-vertical-navigation-divider-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n ></cmat-vertical-navigation-divider-item>\r\n }\r\n\r\n @if (item.type === \"group\") {\r\n <cmat-vertical-navigation-group-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n ></cmat-vertical-navigation-group-item>\r\n }\r\n\r\n @if (item.type === \"spacer\") {\r\n <cmat-vertical-navigation-spacer-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n ></cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { NgClass } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n OnInit,\r\n computed,\r\n forwardRef,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { isActive, NavigationEnd, Router } from '@angular/router';\r\nimport { filter } from 'rxjs/operators';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\r\nimport { CmatVerticalNavigationBasicItemComponent } from '../basic/basic.component';\r\nimport { CmatVerticalNavigationDividerItemComponent } from '../divider/divider.component';\r\nimport { CmatVerticalNavigationGroupItemComponent } from '../group/group.component';\r\nimport { CmatVerticalNavigationSpacerItemComponent } from '../spacer/spacer.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-collapsable-item',\r\n templateUrl: './collapsable.component.html',\r\n styleUrls: ['../../../../../animations/expand-collapse.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class.cmat-vertical-navigation-item-collapsed]': 'isCollapsed()',\r\n '[class.cmat-vertical-navigation-item-expanded]': 'isExpanded()',\r\n },\r\n imports: [\r\n NgClass,\r\n MatTooltipModule,\r\n MatIconModule,\r\n CmatVerticalNavigationBasicItemComponent,\r\n forwardRef(() => CmatVerticalNavigationCollapsableItemComponent),\r\n forwardRef(() => CmatVerticalNavigationGroupItemComponent),\r\n CmatVerticalNavigationDividerItemComponent,\r\n CmatVerticalNavigationSpacerItemComponent,\r\n ],\r\n})\r\nexport class CmatVerticalNavigationCollapsableItemComponent implements OnInit {\r\n readonly routeReuseStrategyEmitUrl = output<string>();\r\n readonly editSelectedItemChanged = output<CmatNavigationItem>();\r\n\r\n readonly autoCollapse = input<boolean>();\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input.required<string>();\r\n readonly editState = input<boolean>(false);\r\n readonly hasRouteReuseStrategy = input<boolean>(false);\r\n\r\n readonly isCollapsed = signal(true);\r\n readonly isExpanded = computed(() => !this.isCollapsed());\r\n\r\n private _router = inject(Router);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n\r\n ngOnInit(): void {\r\n this._cmatVerticalNavigationComponent =\r\n this._cmatNavigationService.getComponent(this.name());\r\n\r\n if (!this._cmatVerticalNavigationComponent) {\r\n return;\r\n }\r\n\r\n const autoCollapse = this.autoCollapse();\r\n if (this._hasActiveChild(this.item(), this._router.url)) {\r\n this.expand();\r\n } else {\r\n if (autoCollapse) {\r\n this.collapse();\r\n }\r\n }\r\n\r\n this._cmatVerticalNavigationComponent.onCollapsableItemCollapsed\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((collapsedItem) => {\r\n if (collapsedItem === null) {\r\n return;\r\n }\r\n\r\n if (this._isChildrenOf(collapsedItem, this.item())) {\r\n this.collapse();\r\n }\r\n });\r\n\r\n if (autoCollapse) {\r\n this._cmatVerticalNavigationComponent.onCollapsableItemExpanded\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((expandedItem) => {\r\n if (expandedItem === null) {\r\n return;\r\n }\r\n\r\n const item = this.item();\r\n if (this._isChildrenOf(item, expandedItem)) {\r\n return;\r\n }\r\n\r\n if (this._hasActiveChild(item, this._router.url)) {\r\n return;\r\n }\r\n\r\n if (item === expandedItem) {\r\n return;\r\n }\r\n\r\n this.collapse();\r\n });\r\n }\r\n\r\n this._router.events\r\n .pipe(\r\n filter(\r\n (event): event is NavigationEnd => event instanceof NavigationEnd,\r\n ),\r\n takeUntilDestroyed(this._destroyRef),\r\n )\r\n .subscribe((event: NavigationEnd) => {\r\n if (this._hasActiveChild(this.item(), event.urlAfterRedirects)) {\r\n this.expand();\r\n } else {\r\n if (this.autoCollapse()) {\r\n this.collapse();\r\n }\r\n }\r\n });\r\n }\r\n collapse(): void {\r\n const item = this.item();\r\n if (item.disabled || !this._cmatVerticalNavigationComponent) {\r\n return;\r\n }\r\n\r\n if (this.isCollapsed()) {\r\n return;\r\n }\r\n\r\n this.isCollapsed.set(true);\r\n\r\n this._cmatVerticalNavigationComponent.onCollapsableItemCollapsed.next(item);\r\n }\r\n expand(): void {\r\n const item = this.item();\r\n if (item.disabled || !this._cmatVerticalNavigationComponent) {\r\n return;\r\n }\r\n\r\n if (!this.isCollapsed()) {\r\n return;\r\n }\r\n\r\n this.isCollapsed.set(false);\r\n\r\n this._cmatVerticalNavigationComponent.onCollapsableItemExpanded.next(item);\r\n }\r\n toggleCollapsable(): void {\r\n if (this.isCollapsed()) {\r\n this.expand();\r\n } else {\r\n this.collapse();\r\n }\r\n }\r\n\r\n trackByFn(index: number, item: CmatNavigationItem): string | number {\r\n return item.id ?? index;\r\n }\r\n\r\n goToRouterLink(link: string): void {\r\n this.routeReuseStrategyEmitUrl.emit(link);\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.emit(item);\r\n }\r\n private _hasActiveChild(\r\n item: CmatNavigationItem,\r\n currentUrl: string,\r\n ): boolean {\r\n const children = item.children;\r\n\r\n if (!children) {\r\n return false;\r\n }\r\n\r\n for (const child of children) {\r\n if (child.children) {\r\n if (this._hasActiveChild(child, currentUrl)) {\r\n return true;\r\n }\r\n }\r\n if (\r\n child.link &&\r\n isActive(child.link, this._router, {\r\n paths: child.exactMatch || false ? 'exact' : 'subset',\r\n queryParams: child.exactMatch || false ? 'exact' : 'subset',\r\n matrixParams: 'ignored',\r\n fragment: 'ignored',\r\n })()\r\n ) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private _isChildrenOf(\r\n parent: CmatNavigationItem,\r\n item: CmatNavigationItem,\r\n ): boolean {\r\n const children = parent.children;\r\n\r\n if (!children) {\r\n return false;\r\n }\r\n\r\n if (children.includes(item)) {\r\n return true;\r\n }\r\n\r\n for (const child of children) {\r\n if (child.children) {\r\n if (this._isChildrenOf(child, item)) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}","<div\r\n class=\"cmat-vertical-navigation-item-wrapper\"\r\n [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item().subTitle\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n>\r\n <div\r\n class=\"cmat-vertical-navigation-item\"\r\n role=\"presentation\"\r\n [ngClass]=\"{ 'cmat-vertical-navigation-item-disabled': item().disabled }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"toggleCollapsable(); selectItem(item())\"\r\n >\r\n @if (item().icon) {\r\n <mat-icon\r\n class=\"cmat-vertical-navigation-item-icon\"\r\n [ngClass]=\"item().classes?.icon\"\r\n [svgIcon]=\"item().icon!\"\r\n >\r\n </mat-icon>\r\n }\r\n\r\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\r\n <div class=\"cmat-vertical-navigation-item-title\">\r\n <span [ngClass]=\"item().classes?.title\">\r\n {{ item().title }}\r\n </span>\r\n </div>\r\n @if (item().subTitle) {\r\n <div class=\"cmat-vertical-navigation-item-subtitle\">\r\n <span [ngClass]=\"item().classes?.subtitle\">\r\n {{ item().subTitle }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (item().badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div\r\n class=\"cmat-vertical-navigation-item-badge-content\"\r\n [ngClass]=\"item().badge!.classes\"\r\n >\r\n {{ item().badge!.title }}\r\n </div>\r\n </div>\r\n }\r\n\r\n <mat-icon\r\n class=\"cmat-vertical-navigation-item-arrow icon-size-4\"\r\n [svgIcon]=\"'heroicons_outline:chevron-right'\"\r\n >\r\n </mat-icon>\r\n </div>\r\n</div>\r\n\r\n@if (!isCollapsed()) {\r\n <div\r\n animate.leave=\"expand-collapse-animation-leaving\"\r\n class=\"cmat-vertical-navigation-item-children expand-collapse-animation\"\r\n >\r\n <div>\r\n @for (item of item().children; track trackByFn($index, item)) {\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n @if (item.type === \"basic\") {\r\n <cmat-vertical-navigation-basic-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n\r\n @if (item.type === \"collapsable\") {\r\n <cmat-vertical-navigation-collapsable-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [autoCollapse]=\"autoCollapse()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-collapsable-item>\r\n }\r\n\r\n @if (item.type === \"divider\") {\r\n <cmat-vertical-navigation-divider-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n >\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n\r\n @if (item.type === \"group\") {\r\n <cmat-vertical-navigation-group-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n ></cmat-vertical-navigation-group-item>\r\n }\r\n\r\n @if (item.type === \"spacer\") {\r\n <cmat-vertical-navigation-spacer-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n >\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n </div>\r\n </div>\r\n}","import { NgClass } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n OnInit,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n untracked,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { isActive, NavigationEnd, Router } from '@angular/router';\r\nimport { filter } from 'rxjs/operators';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationBasicItemComponent } from '../basic/basic.component';\r\nimport { CmatVerticalNavigationCollapsableItemComponent } from '../collapsable/collapsable.component';\r\nimport { CmatVerticalNavigationDividerItemComponent } from '../divider/divider.component';\r\nimport { CmatVerticalNavigationGroupItemComponent } from '../group/group.component';\r\nimport { CmatVerticalNavigationSpacerItemComponent } from '../spacer/spacer.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-aside-item',\r\n templateUrl: './aside.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgClass,\r\n MatTooltipModule,\r\n MatIconModule,\r\n CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationCollapsableItemComponent,\r\n CmatVerticalNavigationDividerItemComponent,\r\n CmatVerticalNavigationGroupItemComponent,\r\n CmatVerticalNavigationSpacerItemComponent,\r\n ],\r\n})\r\nexport class CmatVerticalNavigationAsideItemComponent\r\n implements OnInit {\r\n readonly routeReuseStrategyEmitUrl = output<string>();\r\n readonly editSelectedItemChanged = output<CmatNavigationItem>();\r\n\r\n readonly activeItemId = input<string | null>();\r\n readonly autoCollapse = input<boolean>();\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input.required<string>();\r\n readonly skipChildren = input<boolean>();\r\n readonly editState = input<boolean>(false);\r\n readonly hasRouteReuseStrategy = input<boolean>(false);\r\n\r\n readonly active = signal(false);\r\n\r\n private _router = inject(Router);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n constructor() {\r\n effect(() => {\r\n this.activeItemId();\r\n \r\n untracked(() => {\r\n this._markIfActive(this._router.url);\r\n });\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this._markIfActive(this._router.url);\r\n\r\n this._router.events\r\n .pipe(\r\n filter(\r\n (event): event is NavigationEnd => event instanceof NavigationEnd,\r\n ),\r\n takeUntilDestroyed(this._destroyRef),\r\n )\r\n .subscribe((event: NavigationEnd) => {\r\n this._markIfActive(event.urlAfterRedirects);\r\n });\r\n }\r\n\r\n trackByFn(index: number, item: CmatNavigationItem): string | number {\r\n return item.id ?? index;\r\n }\r\n\r\n goToRouterLink(link: string): void {\r\n this.routeReuseStrategyEmitUrl.emit(link);\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.emit(item);\r\n }\r\n private _hasActiveChild(\r\n item: CmatNavigationItem,\r\n currentUrl: string,\r\n ): boolean {\r\n const children = item.children;\r\n\r\n if (!children) {\r\n return false;\r\n }\r\n\r\n for (const child of children) {\r\n if (child.children) {\r\n if (this._hasActiveChild(child, currentUrl)) {\r\n return true;\r\n }\r\n }\r\n if (child.type !== 'basic') {\r\n continue;\r\n }\r\n if (\r\n child.link &&\r\n isActive(child.link, this._router, {\r\n paths: child.exactMatch || false ? 'exact' : 'subset',\r\n queryParams: child.exactMatch || false ? 'exact' : 'subset',\r\n fragment: 'ignored',\r\n matrixParams: 'ignored',\r\n })()\r\n ) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private _markIfActive(currentUrl: string): void {\r\n this.active.set(this.activeItemId() === this.item().id);\r\n\r\n if (this._hasActiveChild(this.item(), currentUrl)) {\r\n this.active.set(true);\r\n }\r\n }\r\n}","<div\r\n class=\"cmat-vertical-navigation-item-wrapper\"\r\n role=\"presentation\"\r\n [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item().subTitle\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n (click)=\"selectItem(item())\"\r\n>\r\n <div\r\n class=\"cmat-vertical-navigation-item\"\r\n [ngClass]=\"{\r\n 'cmat-vertical-navigation-item-active': active(),\r\n 'cmat-vertical-navigation-item-disabled': item().disabled,\r\n 'cmat-vertical-navigation-item-active-forced': item().active,\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n >\r\n @if (item().icon) {\r\n <mat-icon\r\n class=\"cmat-vertical-navigation-item-icon\"\r\n [ngClass]=\"item().classes?.icon\"\r\n [svgIcon]=\"item().icon!\"\r\n >\r\n </mat-icon>\r\n }\r\n\r\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\r\n <div class=\"cmat-vertical-navigation-item-title\">\r\n <span [ngClass]=\"item().classes?.title\">\r\n {{ item().title }}\r\n </span>\r\n </div>\r\n @if (item().subTitle) {\r\n <div class=\"cmat-vertical-navigation-item-subtitle\">\r\n <span [ngClass]=\"item().classes?.subtitle\">\r\n {{ item().subTitle }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (item().badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div\r\n class=\"cmat-vertical-navigation-item-badge-content\"\r\n [ngClass]=\"item().badge!.classes\"\r\n >\r\n {{ item().badge!.title }}\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n@if (!skipChildren()) {\r\n <div class=\"cmat-vertical-navigation-item-children\">\r\n @for (item of item().children; track trackByFn($index, item)) {\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n @if (item.type === \"basic\") {\r\n <cmat-vertical-navigation-basic-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n\r\n @if (item.type === \"collapsable\") {\r\n <cmat-vertical-navigation-collapsable-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n [autoCollapse]=\"autoCollapse()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n ></cmat-vertical-navigation-collapsable-item>\r\n }\r\n\r\n @if (item.type === \"divider\") {\r\n <cmat-vertical-navigation-divider-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n >\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n\r\n @if (item.type === \"group\") {\r\n <cmat-vertical-navigation-group-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n >\r\n </cmat-vertical-navigation-group-item>\r\n }\r\n\r\n @if (item.type === \"spacer\") {\r\n <cmat-vertical-navigation-spacer-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n >\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n </div>\r\n}","/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n OnDestroy,\r\n OnInit,\r\n Renderer2,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n untracked,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { CmatNavigationService } from '../navigation.service';\r\nimport {\r\n CmatNavigationItem,\r\n CmatVerticalNavigationAppearance,\r\n CmatVerticalNavigationMode,\r\n CmatVerticalNavigationPosition,\r\n} from '../navigation.types';\r\nimport { CmatVerticalNavigationAsideItemComponent } from './components/aside/aside.component';\r\nimport { CmatVerticalNavigationBasicItemComponent } from './components/basic/basic.component';\r\nimport { CmatVerticalNavigationCollapsableItemComponent } from './components/collapsable/collapsable.component';\r\nimport { CmatVerticalNavigationDividerItemComponent } from './components/divider/divider.component';\r\nimport { CmatVerticalNavigationGroupItemComponent } from './components/group/group.component';\r\nimport { CmatVerticalNavigationSpacerItemComponent } from './components/spacer/spacer.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation',\r\n templateUrl: './vertical.component.html',\r\n styleUrls: ['./vertical.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatVerticalNavigation',\r\n host: {\r\n '[class]': 'classList()',\r\n '[style]': 'styleList()',\r\n '(mouseenter)': 'onMouseenter()',\r\n '(mouseleave)': 'onMouseleave()',\r\n },\r\n imports: [\r\n CmatVerticalNavigationAsideItemComponent,\r\n CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationCollapsableItemComponent,\r\n CmatVerticalNavigationDividerItemComponent,\r\n CmatVerticalNavigationGroupItemComponent,\r\n CmatVerticalNavigationSpacerItemComponent,\r\n ],\r\n})\r\nexport class CmatVerticalNavigationComponent\r\n implements OnInit, AfterViewInit, OnDestroy {\r\n readonly routeReuseStrategyEmitUrl = output<string>();\r\n readonly appearanceChanged = output<CmatVerticalNavigationAppearance>();\r\n readonly modeChanged = output<CmatVerticalNavigationMode>();\r\n readonly openedChanged = output<boolean>();\r\n readonly positionChanged = output<CmatVerticalNavigationPosition>();\r\n readonly editSelectedItemChanged = output<CmatNavigationItem>();\r\n\r\n readonly appearance = input<CmatVerticalNavigationAppearance>('default');\r\n readonly autoCollapse = input<boolean>(true);\r\n readonly editState = input<boolean>(false);\r\n readonly inner = input<boolean>(false);\r\n readonly mode = input<CmatVerticalNavigationMode>('side');\r\n readonly name = input<string>(inject(CmatUtilsService).randomId());\r\n readonly navigation = input<CmatNavigationItem[]>([]);\r\n readonly opened = input<boolean>(true);\r\n readonly position = input<CmatVerticalNavigationPosition>('left');\r\n readonly transparentOverlay = input<boolean>(false);\r\n readonly hasRouteReuseStrategy = input<boolean>(false);\r\n\r\n readonly activeAsideItemId = signal<string | null>(null);\r\n readonly asideOverlayVisible = signal(false);\r\n onCollapsableItemCollapsed: ReplaySubject<CmatNavigationItem> =\r\n new ReplaySubject<CmatNavigationItem>(1);\r\n onCollapsableItemExpanded: ReplaySubject<CmatNavigationItem> =\r\n new ReplaySubject<CmatNavigationItem>(1);\r\n\r\n readonly refreshToken = signal(0);\r\n\r\n readonly classList = computed(() => {\r\n const opened = this._openedState();\r\n return [\r\n this._animationsEnabled()\r\n ? 'cmat-vertical-navigation-animations-enabled'\r\n : '',\r\n `cmat-vertical-navigation-appearance-${this.appearance()}`,\r\n this._hovered() ? 'cmat-vertical-navigation-hover' : '',\r\n this.inner() ? 'cmat-vertical-navigation-inner' : '',\r\n this.mode() === 'over' ? 'cmat-vertical-navigation-mode-over' : '',\r\n this.mode() === 'side' ? 'cmat-vertical-navigation-mode-side' : '',\r\n opened ? 'cmat-vertical-navigation-opened' : '',\r\n this.position() === 'left'\r\n ? 'cmat-vertical-navigation-position-left'\r\n : '',\r\n this.position() === 'right'\r\n ? 'cmat-vertical-navigation-position-right'\r\n : '',\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n });\r\n\r\n readonly styleList = computed(() => {\r\n const opened = this._openedState();\r\n return `visibility: ${opened ? 'visible' : 'hidden'};`;\r\n });\r\n\r\n private readonly _openedState = signal<boolean>(true);\r\n private readonly _animationsEnabled = signal(false);\r\n private readonly _hovered = signal(false);\r\n private readonly _prevMode = signal<CmatVerticalNavigationMode | null>(null);\r\n\r\n private readonly _navigationContentEl = viewChild<ElementRef<HTMLDivElement>>('navigationContent');\r\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private _renderer2 = inject(Renderer2);\r\n private _router = inject(Router);\r\n private _scrollStrategyOptions = inject(ScrollStrategyOptions);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n private _asideOverlay: HTMLElement | null = null;\r\n private _asideOverlayClickDestroyFn: (() => void) | null = null;\r\n private _asideOverlayLeaveTimeoutId: number | null = null;\r\n private readonly _handleOverlayClick: () => void;\r\n private _overlay: HTMLElement | null = null;\r\n private _overlayClickDestroyFn: (() => void) | null = null;\r\n private _overlayLeaveTimeoutId: number | null = null;\r\n private _modeChangeTimeoutId: number | null = null;\r\n private _scrollStrategy: ScrollStrategy = this._scrollStrategyOptions.block();\r\n\r\n constructor() {\r\n this._handleOverlayClick = (): void => {\r\n this.close();\r\n };\r\n\r\n effect(() => {\r\n this.appearance();\r\n this.appearanceChanged.emit(this.appearance());\r\n });\r\n\r\n effect(() => {\r\n const opened = this.opened();\r\n untracked(() => {\r\n this._toggleOpened(opened);\r\n });\r\n });\r\n\r\n effect(() => {\r\n const currentMode = this.mode();\r\n const previousMode = this._prevMode();\r\n\r\n untracked(() => {\r\n if (currentMode === previousMode) return;\r\n if (previousMode !== null) {\r\n this._disableAnimations();\r\n\r\n if (previousMode === 'over' && currentMode === 'side') {\r\n this._hideOverlay();\r\n }\r\n\r\n if (previousMode === 'side' && currentMode === 'over') {\r\n this.closeAside();\r\n\r\n if (this._openedState()) {\r\n this._showOverlay();\r\n }\r\n }\r\n\r\n this.modeChanged.emit(currentMode);\r\n\r\n this._modeChangeTimeoutId = window.setTimeout(() => {\r\n this._modeChangeTimeoutId = null;\r\n this._enableAnimations();\r\n }, 500);\r\n }\r\n\r\n this._prevMode.set(currentMode);\r\n });\r\n\r\n });\r\n\r\n effect(() => {\r\n this.position();\r\n this.positionChanged.emit(this.position());\r\n });\r\n }\r\n\r\n onMouseenter(): void {\r\n this._enableAnimations();\r\n this._hovered.set(true);\r\n }\r\n\r\n onMouseleave(): void {\r\n this._enableAnimations();\r\n this._hovered.set(false);\r\n }\r\n\r\n ngOnInit(): void {\r\n this._cmatNavigationService.registerComponent(this.name(), this);\r\n\r\n this._router.events\r\n .pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n takeUntilDestroyed(this._destroyRef),\r\n )\r\n .subscribe(() => {\r\n const mode = this.mode();\r\n if (mode === 'over' && this.opened()) {\r\n this.close();\r\n }\r\n\r\n if (mode === 'side' && this.activeAsideItemId()) {\r\n this.closeAside();\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n const navContent = this._navigationContentEl();\r\n if (!navContent) {\r\n return;\r\n }\r\n\r\n const activeItem = navContent.nativeElement.querySelector(\r\n '.cmat-vertical-navigation-item-active',\r\n );\r\n if (activeItem) {\r\n if (\r\n activeItem.getBoundingClientRect().bottom <=\r\n navContent.nativeElement.getBoundingClientRect().bottom -\r\n Math.abs(-120)\r\n ) {\r\n return;\r\n }\r\n\r\n navContent.nativeElement.scrollTo({\r\n top:\r\n activeItem.getBoundingClientRect().top -\r\n navContent.nativeElement.getBoundingClientRect().top -\r\n 120,\r\n behavior: 'smooth',\r\n });\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._forceCleanupOverlay();\r\n this._forceCleanupAsideOverlay();\r\n\r\n this.onCollapsableItemCollapsed.complete();\r\n this.onCollapsableItemExpanded.complete();\r\n\r\n if (this._modeChangeTimeoutId !== null) {\r\n clearTimeout(this._modeChangeTimeoutId);\r\n this._modeChangeTimeoutId = null;\r\n }\r\n\r\n this._cmatNavigationService.deregisterComponent(this.name());\r\n }\r\n refresh(): void {\r\n this.refreshToken.update(value => value + 1);\r\n }\r\n open(): void {\r\n this._setNavigationOpened(true);\r\n }\r\n close(): void {\r\n this._setNavigationOpened(false);\r\n }\r\n toggle(): void {\r\n if (this._openedState()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n openAside(item: CmatNavigationItem): void {\r\n if (item.disabled || !item.id) {\r\n return;\r\n }\r\n\r\n this._setAsideActive(item);\r\n }\r\n\r\n closeAside(): void {\r\n this._setAsideActive(null);\r\n }\r\n toggleAside(item: CmatNavigationItem): void {\r\n if (this.activeAsideItemId() === item.id) {\r\n this.closeAside();\r\n } else {\r\n this.openAside(item);\r\n }\r\n }\r\n\r\n trackByFn(index: number, item: CmatNavigationItem): string | number {\r\n return item.id ?? index;\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.emit(item);\r\n }\r\n\r\n goToRouterLink(link: string): void {\r\n this.routeReuseStrategyEmitUrl.emit(link);\r\n }\r\n\r\n isItemVisible(item: CmatNavigationItem): boolean {\r\n return !item.hidden?.(item);\r\n }\r\n private _removeOverlayElement(overlay: HTMLElement): void {\r\n if (this._overlayClickDestroyFn) {\r\n this._overlayClickDestroyFn();\r\n this._overlayClickDestroyFn = null;\r\n }\r\n overlay.parentNode?.removeChild(overlay);\r\n if (this._overlay === overlay) {\r\n this._overlay = null;\r\n }\r\n }\r\n\r\n private _removeAsideOverlayElement(asideOverlay: HTMLElement): void {\r\n if (this._asideOverlayClickDestroyFn) {\r\n this._asideOverlayClickDestroyFn();\r\n this._asideOverlayClickDestroyFn = null;\r\n }\r\n asideOverlay.parentNode?.removeChild(asideOverlay);\r\n if (this._asideOverlay === asideOverlay) {\r\n this._asideOverlay = null;\r\n }\r\n }\r\n\r\n private _forceCleanupOverlay(): void {\r\n this._clearOverlayLeaveTimeout();\r\n if (this._overlay) {\r\n this._removeOverlayElement(this._overlay);\r\n }\r\n this._scrollStrategy.disable();\r\n }\r\n\r\n private _forceCleanupAsideOverlay(): void {\r\n this._clearAsideOverlayLeaveTimeout();\r\n if (this._asideOverlay) {\r\n this._removeAsideOverlayElement(this._asideOverlay);\r\n }\r\n this.asideOverlayVisible.set(false);\r\n }\r\n\r\n private _clearOverlayLeaveTimeout(): void {\r\n if (this._overlayLeaveTimeoutId !== null) {\r\n clearTimeout(this._overlayLeaveTimeoutId);\r\n this._overlayLeaveTimeoutId = null;\r\n }\r\n }\r\n\r\n private _clearAsideOverlayLeaveTimeout(): void {\r\n if (this._asideOverlayLeaveTimeoutId !== null) {\r\n clearTimeout(this._asideOverlayLeaveTimeoutId);\r\n this._asideOverlayLeaveTimeoutId = null;\r\n }\r\n }\r\n\r\n private _enableAnimations(): void {\r\n if (this._animationsEnabled()) {\r\n return;\r\n }\r\n\r\n this._animationsEnabled.set(true);\r\n }\r\n private _disableAnimations(): void {\r\n if (!this._animationsEnabled()) {\r\n return;\r\n }\r\n\r\n this._animationsEnabled.set(false);\r\n }\r\n private _showOverlay(): void {\r\n if (this._overlay) {\r\n return;\r\n }\r\n\r\n this._overlay = this._renderer2.createElement('div') as HTMLElement;\r\n\r\n if (this._overlay) {\r\n this._overlay.classList.add('cmat-vertical-navigation-overlay');\r\n\r\n if (this.transparentOverlay()) {\r\n this._overlay.classList.add(\r\n 'cmat-vertical-navigation-overlay-transparent',\r\n );\r\n }\r\n\r\n const parentEl = this._elementRef.nativeElement.parentElement;\r\n if (parentEl) {\r\n this._renderer2.appendChild(parentEl, this._overlay);\r\n }\r\n\r\n this._scrollStrategy.enable();\r\n\r\n this._overlay.classList.add('cmat-vertical-navigation-overlay-enter');\r\n\r\n this._overlayClickDestroyFn = this._renderer2.listen(\r\n this._overlay,\r\n 'click',\r\n this._handleOverlayClick,\r\n );\r\n }\r\n }\r\n private _hideOverlay(): void {\r\n if (!this._overlay) {\r\n return;\r\n }\r\n\r\n this._overlay.classList.remove('cmat-vertical-navigation-overlay-enter');\r\n\r\n const overlay = this._overlay;\r\n const handleAnimationEnd = (event: AnimationEvent): void => {\r\n if (event.animationName === 'vertical-navigation-overlay-leave') {\r\n overlay.removeEventListener('animationend', handleAnimationEnd);\r\n this._clearOverlayLeaveTimeout();\r\n this._removeOverlayElement(overlay);\r\n this._scrollStrategy.disable();\r\n }\r\n };\r\n\r\n overlay.addEventListener('animationend', handleAnimationEnd);\r\n this._overlay.classList.add('cmat-vertical-navigation-overlay-leave');\r\n\r\n this._overlayLeaveTimeoutId = window.setTimeout(() => {\r\n this._overlayLeaveTimeoutId = null;\r\n overlay.removeEventListener('animationend', handleAnimationEnd);\r\n this._removeOverlayElement(overlay);\r\n this._scrollStrategy.disable();\r\n }, 400);\r\n }\r\n\r\n private _showAsideOverlay(): void {\r\n if (this._asideOverlay) {\r\n this._asideOverlay.classList.remove(\r\n 'cmat-vertical-navigation-aside-overlay-leave',\r\n );\r\n this._asideOverlay.classList.add(\r\n 'cmat-vertical-navigation-aside-overlay-enter',\r\n );\r\n this.asideOverlayVisible.set(true);\r\n return;\r\n }\r\n\r\n this._asideOverlay = this._renderer2.createElement('div') as HTMLElement;\r\n\r\n if (this._asideOverlay) {\r\n this._asideOverlay.classList.add(\r\n 'cmat-vertical-navigation-aside-overlay',\r\n );\r\n\r\n const parentEl = this._elementRef.nativeElement.parentElement;\r\n if (parentEl) {\r\n this._renderer2.appendChild(parentEl, this._asideOverlay);\r\n }\r\n\r\n this._asideOverlay.classList.add(\r\n 'cmat-vertical-navigation-aside-overlay-enter',\r\n );\r\n\r\n this._asideOverlayClickDestroyFn = this._renderer2.listen(\r\n this._asideOverlay,\r\n 'click',\r\n () => {\r\n this.closeAside();\r\n },\r\n );\r\n\r\n this.asideOverlayVisible.set(true);\r\n }\r\n }\r\n private _hideAsideOverlay(): void {\r\n if (!this._asideOverlay) {\r\n return;\r\n }\r\n\r\n this._asideOverlay.classList.remove(\r\n 'cmat-vertical-navigation-aside-overlay-enter',\r\n );\r\n\r\n const asideOverlay = this._asideOverlay;\r\n const handleAnimationEnd = (event: AnimationEvent): void => {\r\n if (event.animationName === 'vertical-navigation-overlay-leave') {\r\n asideOverlay.removeEventListener('animationend', handleAnimationEnd);\r\n this._clearAsideOverlayLeaveTimeout();\r\n this._removeAsideOverlayElement(asideOverlay);\r\n this.asideOverlayVisible.set(false);\r\n }\r\n };\r\n\r\n asideOverlay.addEventListener('animationend', handleAnimationEnd);\r\n this._asideOverlay.classList.add(\r\n 'cmat-vertical-navigation-aside-overlay-leave',\r\n );\r\n\r\n this._asideOverlayLeaveTimeoutId = window.setTimeout(() => {\r\n this._asideOverlayLeaveTimeoutId = null;\r\n asideOverlay.removeEventListener('animationend', handleAnimationEnd);\r\n this._removeAsideOverlayElement(asideOverlay);\r\n this.asideOverlayVisible.set(false);\r\n }, 400);\r\n }\r\n\r\n private _toggleOpened(open: boolean): void {\r\n this._setNavigationOpened(open);\r\n }\r\n\r\n private _setNavigationOpened(open: boolean): void {\r\n if (this._openedState() === open) {\r\n return;\r\n }\r\n\r\n if (!open) {\r\n this.closeAside();\r\n }\r\n\r\n this._applyOpenedState(open);\r\n }\r\n\r\n private _applyOpenedState(open: boolean): void {\r\n this._openedState.set(open);\r\n\r\n this._enableAnimations();\r\n\r\n if (this.mode() === 'over') {\r\n if (this._openedState()) {\r\n this._showOverlay();\r\n } else {\r\n this._hideOverlay();\r\n }\r\n }\r\n\r\n this.openedChanged.emit(open);\r\n }\r\n\r\n private _setAsideActive(item: CmatNavigationItem | null): void {\r\n if (this.activeAsideItemId() === (item?.id ?? null)) {\r\n return;\r\n }\r\n\r\n if (item?.id ?? null) {\r\n this.activeAsideItemId.set(item?.id ?? null);\r\n this._showAsideOverlay();\r\n } else {\r\n this._hideAsideOverlay();\r\n this.activeAsideItemId.set(null);\r\n }\r\n }\r\n}","<div\r\n class=\"cmat-vertical-navigation-wrapper\"\r\n [attr.data-refresh]=\"refreshToken()\"\r\n>\r\n <div class=\"cmat-vertical-navigation-header\">\r\n <ng-content select=\"[cmatVerticalNavigationHeader]\"></ng-content>\r\n </div>\r\n\r\n <div\r\n #navigationContent\r\n class=\"cmat-vertical-navigation-content py-2 overflow-y-auto scrollbar-custom\"\r\n >\r\n <div class=\"cmat-vertical-navigation-content-header\">\r\n <ng-content select=\"[cmatVerticalNavigationContentHeader]\"></ng-content>\r\n </div>\r\n\r\n @for (item of navigation(); track trackByFn($index, item)) {\r\n @let isVisible = isItemVisible(item);\r\n @if (isVisible) {\r\n @switch (item.type) {\r\n @case (\"aside\") {\r\n <cmat-vertical-navigation-aside-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [activeItemId]=\"activeAsideItemId()\"\r\n [autoCollapse]=\"autoCollapse()\"\r\n [skipChildren]=\"true\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (click)=\"toggleAside(item)\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-aside-item>\r\n }\r\n @case (\"basic\") {\r\n <cmat-vertical-navigation-basic-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n @case (\"collapsable\") {\r\n <cmat-vertical-navigation-collapsable-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n [autoCollapse]=\"autoCollapse()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n ></cmat-vertical-navigation-collapsable-item>\r\n }\r\n @case (\"divider\") {\r\n <cmat-vertical-navigation-divider-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n >\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n @case (\"group\") {\r\n <cmat-vertical-navigation-group-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [autoCollapse]=\"autoCollapse()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-group-item>\r\n }\r\n @case (\"spacer\") {\r\n <cmat-vertical-navigation-spacer-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n >\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n }\r\n\r\n <div class=\"cmat-vertical-navigation-content-footer\">\r\n <ng-content select=\"[cmatVerticalNavigationContentFooter]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div class=\"cmat-vertical-navigation-footer\">\r\n <ng-content select=\"[cmatVerticalNavigationFooter]\"></ng-content>\r\n </div>\r\n</div>\r\n\r\n@if (activeAsideItemId()) {\r\n <div\r\n class=\"cmat-vertical-navigation-aside-wrapper overflow-y-auto scrollbar-custom\"\r\n [animate.enter]=\"\r\n position() === 'left'\r\n ? 'fade-in-left-animation'\r\n : 'fade-in-right-animation'\r\n \"\r\n [animate.leave]=\"\r\n position() === 'left'\r\n ? 'fade-out-left-animation'\r\n : 'fade-out-right-animation'\r\n \"\r\n >\r\n @for (item of navigation(); track trackByFn($index, item)) {\r\n @let isVisible = isItemVisible(item);\r\n @if (isVisible) {\r\n @if (item.type === \"aside\" && item.id === activeAsideItemId()) {\r\n <cmat-vertical-navigation-aside-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [autoCollapse]=\"autoCollapse()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-aside-item>\r\n }\r\n }\r\n }\r\n </div>\r\n}\r\n","import { IsActiveMatchOptions } from '@angular/router';\r\n\r\nexport class CmatNavigationItem {\r\n id?: string;\r\n title?: string;\r\n subTitle?: string;\r\n type:\r\n | 'aside'\r\n | 'basic'\r\n | 'collapsable'\r\n | 'divider'\r\n | 'group'\r\n | 'spacer';\r\n hidden?: (item: CmatNavigationItem) => boolean;\r\n active?: boolean;\r\n disabled?: boolean;\r\n tooltip?: string;\r\n link?: string;\r\n externalLink?: boolean;\r\n target?:\r\n | '_blank'\r\n | '_self'\r\n | '_parent'\r\n | '_top';\r\n exactMatch?: boolean;\r\n isActiveMatchOptions?: IsActiveMatchOptions;\r\n function?: (item: CmatNavigationItem) => void;\r\n classes?: {\r\n title?: string;\r\n subtitle?: string;\r\n icon?: string;\r\n wrapper?: string;\r\n };\r\n icon?: string;\r\n badge?: {\r\n title?: string;\r\n classes?: string;\r\n };\r\n children?: CmatNavigationItem[];\r\n meta?: unknown;\r\n permission?: unknown;\r\n}\r\n\r\nexport interface CmatNavigationComponent {\r\n close(): void;\r\n open(): void;\r\n toggle(): void;\r\n}\r\n\r\nexport type CmatVerticalNavigationAppearance =\r\n | 'default'\r\n | 'compact'\r\n | 'dense'\r\n | 'thin';\r\n\r\nexport type CmatVerticalNavigationMode =\r\n | 'over'\r\n | 'side';\r\n\r\nexport type CmatVerticalNavigationPosition =\r\n | 'left'\r\n | 'right';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1"],"mappings":"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"}
1
+ {"version":3,"file":"cmat-components-navigation.mjs","sources":["../../../projects/cmat/components/navigation/navigation.service.ts","../../../projects/cmat/components/navigation/horizontal/components/basic/basic.component.ts","../../../projects/cmat/components/navigation/horizontal/components/basic/basic.component.html","../../../projects/cmat/components/navigation/horizontal/components/divider/divider.component.ts","../../../projects/cmat/components/navigation/horizontal/components/divider/divider.component.html","../../../projects/cmat/components/navigation/horizontal/components/branch/branch.component.ts","../../../projects/cmat/components/navigation/horizontal/components/branch/branch.component.html","../../../projects/cmat/components/navigation/horizontal/components/spacer/spacer.component.ts","../../../projects/cmat/components/navigation/horizontal/components/spacer/spacer.component.html","../../../projects/cmat/components/navigation/horizontal/horizontal.component.ts","../../../projects/cmat/components/navigation/horizontal/horizontal.component.html","../../../projects/cmat/components/navigation/vertical/components/basic/basic.component.ts","../../../projects/cmat/components/navigation/vertical/components/basic/basic.component.html","../../../projects/cmat/components/navigation/vertical/components/divider/divider.component.ts","../../../projects/cmat/components/navigation/vertical/components/divider/divider.component.html","../../../projects/cmat/components/navigation/vertical/components/spacer/spacer.component.ts","../../../projects/cmat/components/navigation/vertical/components/spacer/spacer.component.html","../../../projects/cmat/components/navigation/vertical/components/group/group.component.ts","../../../projects/cmat/components/navigation/vertical/components/group/group.component.html","../../../projects/cmat/components/navigation/vertical/components/collapsable/collapsable.component.ts","../../../projects/cmat/components/navigation/vertical/components/collapsable/collapsable.component.html","../../../projects/cmat/components/navigation/vertical/components/aside/aside.component.ts","../../../projects/cmat/components/navigation/vertical/components/aside/aside.component.html","../../../projects/cmat/components/navigation/vertical/vertical.component.ts","../../../projects/cmat/components/navigation/vertical/vertical.component.html","../../../projects/cmat/components/navigation/navigation.types.ts","../../../projects/cmat/components/navigation/cmat-components-navigation.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { CmatNavigationItem } from './navigation.types';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatNavigationService {\r\n private readonly _componentRegistry = new Map<string, unknown>();\r\n private readonly _navigationStore = new Map<string, CmatNavigationItem[]>();\r\n\r\n registerComponent(name: string, component: unknown): void {\r\n this._componentRegistry.set(name, component);\r\n }\r\n deregisterComponent(name: string): void {\r\n this._componentRegistry.delete(name);\r\n }\r\n getComponent<T = unknown>(name: string): T {\r\n return this._componentRegistry.get(name) as T;\r\n }\r\n\r\n storeNavigation(key: string, navigation: CmatNavigationItem[]): void {\r\n this._navigationStore.set(key, navigation);\r\n }\r\n getNavigation(key: string): CmatNavigationItem[] {\r\n return this._navigationStore.get(key) ?? [];\r\n }\r\n deleteNavigation(key: string): void {\r\n if (!this._navigationStore.has(key)) {\r\n console.warn(`Navigation with the key '${key}' does not exist in the store.`);\r\n }\r\n\r\n this._navigationStore.delete(key);\r\n }\r\n getFlatNavigation(navigation: CmatNavigationItem[], flatNavigation: CmatNavigationItem[] = []): CmatNavigationItem[] {\r\n for (const item of navigation) {\r\n if (item.type === 'basic') {\r\n flatNavigation.push(item);\r\n continue;\r\n }\r\n\r\n if (item.type === 'aside' || item.type === 'collapsable' || item.type === 'group') {\r\n if (item.children) {\r\n this.getFlatNavigation(item.children, flatNavigation);\r\n }\r\n }\r\n }\r\n\r\n return flatNavigation;\r\n }\r\n getItem(id: string, navigation: CmatNavigationItem[]): CmatNavigationItem | null {\r\n for (const item of navigation) {\r\n if (item.id === id) {\r\n return item;\r\n }\r\n\r\n if (item.children) {\r\n const childItem = this.getItem(id, item.children);\r\n\r\n if (childItem) {\r\n return childItem;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n getItemParent(\r\n id: string,\r\n navigation: CmatNavigationItem[],\r\n parent: CmatNavigationItem[] | CmatNavigationItem\r\n ): CmatNavigationItem[] | CmatNavigationItem | null {\r\n for (const item of navigation) {\r\n if (item.id === id) {\r\n return parent;\r\n }\r\n\r\n if (item.children) {\r\n const childItem = this.getItemParent(id, item.children, item);\r\n\r\n if (childItem) {\r\n return childItem;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport {\r\n isActive,\r\n Router,\r\n RouterLink,\r\n RouterLinkActive,\r\n} from '@angular/router';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation-basic-item',\r\n templateUrl: './basic.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgClass,\r\n RouterLink,\r\n RouterLinkActive,\r\n MatTooltipModule,\r\n NgTemplateOutlet,\r\n MatMenuModule,\r\n MatIconModule,\r\n ],\r\n})\r\nexport class CmatHorizontalNavigationBasicItemComponent {\r\n readonly routeReuseStrategyEmitUrl = output<string>();\r\n\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input.required<string>();\r\n readonly hasRouteReuseStrategy = input<boolean>();\r\n\r\n protected readonly isActiveMatchOptions = computed(() => {\r\n const item = this.item();\r\n return (item?.isActiveMatchOptions ?? item?.exactMatch)\r\n ? this._cmatUtilsService.exactMatchOptions\r\n : this._cmatUtilsService.subsetMatchOptions;\r\n });\r\n\r\n private _router = inject(Router);\r\n private _cmatUtilsService = inject(CmatUtilsService);\r\n\r\n isRouteActive(link?: string): boolean {\r\n if (!link) {\r\n return false;\r\n }\r\n return isActive(link, this._router, this.isActiveMatchOptions())();\r\n }\r\n\r\n goToRouterLink(link?: string): void {\r\n if (!link) {\r\n return;\r\n }\r\n if (this.hasRouteReuseStrategy()) {\r\n this.routeReuseStrategyEmitUrl.emit(link);\r\n } else {\r\n void this._router.navigate([link]);\r\n }\r\n }\r\n}","<div\r\n class=\"cmat-horizontal-navigation-item-wrapper\"\r\n [class.cmat-horizontal-navigation-item-has-subtitle]=\"!!item().subTitle\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n>\r\n @if (\r\n item().link && !item().externalLink && !item().function && !item().disabled\r\n ) {\r\n <div\r\n class=\"cmat-horizontal-navigation-item\"\r\n role=\"presentation\"\r\n [ngClass]=\"{\r\n 'cmat-horizontal-navigation-item-active-forced': item().active,\r\n 'cmat-horizontal-navigation-item-active': isRouteActive(item().link),\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"goToRouterLink(item().link)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n @if (\r\n item().link && item().externalLink && !item().function && !item().disabled\r\n ) {\r\n <a\r\n class=\"cmat-horizontal-navigation-item\"\r\n [href]=\"item().link\"\r\n [target]=\"item().target || '_blank'\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n @if (!item().link && item().function && !item().disabled) {\r\n <div\r\n class=\"cmat-horizontal-navigation-item\"\r\n role=\"presentation\"\r\n [ngClass]=\"{\r\n 'cmat-horizontal-navigation-item-active-forced': item().active,\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"item().function!(item())\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n @if (\r\n item().link && !item().externalLink && item().function && !item().disabled\r\n ) {\r\n <div\r\n class=\"cmat-horizontal-navigation-item\"\r\n role=\"presentation\"\r\n [ngClass]=\"{\r\n 'cmat-horizontal-navigation-item-active-forced': item().active,\r\n 'cmat-horizontal-navigation-item-active': isRouteActive(item().link),\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"item().function!(item()); goToRouterLink(item().link)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n @if (\r\n item().link && item().externalLink && item().function && !item().disabled\r\n ) {\r\n <a\r\n class=\"cmat-horizontal-navigation-item\"\r\n mat-menu-item\r\n [href]=\"item().link\"\r\n [target]=\"item().target || '_blank'\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"item().function!(item())\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n @if (!item().link && !item().function && !item().disabled) {\r\n <div\r\n class=\"cmat-horizontal-navigation-item\"\r\n [ngClass]=\"{\r\n 'cmat-horizontal-navigation-item-active-forced': item().active,\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n @if (item().disabled) {\r\n <div\r\n class=\"cmat-horizontal-navigation-item cmat-horizontal-navigation-item-disabled\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n</div>\r\n\r\n<ng-template #itemTemplate>\r\n @if (item().icon) {\r\n <mat-icon\r\n class=\"cmat-horizontal-navigation-item-icon\"\r\n [ngClass]=\"item().classes?.icon\"\r\n [svgIcon]=\"item().icon!\"\r\n >\r\n </mat-icon>\r\n }\r\n\r\n <div class=\"cmat-horizontal-navigation-item-title-wrapper\">\r\n <div class=\"cmat-horizontal-navigation-item-title\">\r\n <span [ngClass]=\"item().classes?.title\">\r\n {{ item().title }}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n @if (item().badge) {\r\n <div class=\"cmat-horizontal-navigation-item-badge\">\r\n <div\r\n class=\"cmat-horizontal-navigation-item-badge-content\"\r\n [ngClass]=\"item().badge!.classes\"\r\n >\r\n {{ item().badge!.title }}\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation-divider-item',\r\n templateUrl: './divider.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass],\r\n})\r\nexport class CmatHorizontalNavigationDividerItemComponent {\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input<string>();\r\n}\r\n","<div\r\n class=\"cmat-horizontal-navigation-item-wrapper divider\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n></div>\r\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n forwardRef,\r\n input,\r\n output,\r\n viewChild\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenu, MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatHorizontalNavigationBasicItemComponent } from '../basic/basic.component';\r\nimport { CmatHorizontalNavigationDividerItemComponent } from '../divider/divider.component';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation-branch-item',\r\n templateUrl: './branch.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgClass,\r\n MatMenuModule,\r\n NgTemplateOutlet,\r\n CmatHorizontalNavigationBasicItemComponent,\r\n forwardRef(() => CmatHorizontalNavigationBranchItemComponent),\r\n CmatHorizontalNavigationDividerItemComponent,\r\n MatTooltipModule,\r\n MatIconModule,\r\n ],\r\n})\r\nexport class CmatHorizontalNavigationBranchItemComponent {\r\n readonly routeReuseStrategyEmitUrl = output<string>();\r\n readonly matMenu = viewChild('matMenu', { read: MatMenu });\r\n readonly matMenuPanel = computed(() => this.matMenu() ?? null);\r\n\r\n readonly child = input<boolean>(false);\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input.required<string>();\r\n readonly hasRouteReuseStrategy = input<boolean>();\r\n\r\n triggerChangeDetection(): void { /* empty */ }\r\n trackByFn(index: number, item: CmatNavigationItem): string | number {\r\n return item.id ?? index;\r\n }\r\n\r\n goToRouterLink(link: string): void {\r\n this.routeReuseStrategyEmitUrl.emit(link);\r\n }\r\n}","@if (!child()) {\r\n <div\r\n #trigger=\"matMenuTrigger\"\r\n [ngClass]=\"{\r\n 'cmat-horizontal-navigation-menu-active': trigger.menuOpen,\r\n 'cmat-horizontal-navigation-menu-active-forced': item().active,\r\n }\"\r\n [matMenuTriggerFor]=\"matMenu\"\r\n (menuOpened)=\"triggerChangeDetection()\"\r\n (onMenuClose)=\"triggerChangeDetection()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item() }\"\r\n ></ng-container>\r\n </div>\r\n}\r\n\r\n<mat-menu\r\n #matMenu=\"matMenu\"\r\n class=\"cmat-horizontal-navigation-menu-panel\"\r\n [overlapTrigger]=\"false\"\r\n>\r\n @for (item of item().children; track trackByFn($index, item)) {\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n @if (item.type === \"basic\") {\r\n <div\r\n class=\"cmat-horizontal-navigation-menu-item\"\r\n mat-menu-item\r\n [disabled]=\"item.disabled\"\r\n >\r\n <cmat-horizontal-navigation-basic-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-horizontal-navigation-basic-item>\r\n </div>\r\n }\r\n\r\n @if (\r\n item.type === \"aside\" ||\r\n item.type === \"collapsable\" ||\r\n item.type === \"group\"\r\n ) {\r\n <div\r\n class=\"cmat-horizontal-navigation-menu-item\"\r\n mat-menu-item\r\n [disabled]=\"item.disabled\"\r\n [matMenuTriggerFor]=\"branch.matMenuPanel()\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"\r\n ></ng-container>\r\n <cmat-horizontal-navigation-branch-item\r\n #branch\r\n [child]=\"true\"\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-horizontal-navigation-branch-item>\r\n </div>\r\n }\r\n\r\n @if (item.type === \"divider\") {\r\n <div class=\"cmat-horizontal-navigation-menu-item\" mat-menu-item>\r\n <cmat-horizontal-navigation-divider-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n >\r\n </cmat-horizontal-navigation-divider-item>\r\n </div>\r\n }\r\n }\r\n }\r\n</mat-menu>\r\n\r\n<ng-template #itemTemplate let-item>\r\n <div\r\n class=\"cmat-horizontal-navigation-item-wrapper\"\r\n [class.cmat-horizontal-navigation-item-has-subtitle]=\"!!item.subTitle\"\r\n [ngClass]=\"item.classes?.wrapper\"\r\n >\r\n <div\r\n class=\"cmat-horizontal-navigation-item\"\r\n [ngClass]=\"{\r\n 'cmat-horizontal-navigation-item-disabled': item.disabled,\r\n 'cmat-horizontal-navigation-item-active-forced': item.active,\r\n }\"\r\n [matTooltip]=\"item.tooltip || ''\"\r\n >\r\n @if (item.icon) {\r\n <mat-icon\r\n class=\"cmat-horizontal-navigation-item-icon\"\r\n [ngClass]=\"item.classes?.icon\"\r\n [svgIcon]=\"item.icon\"\r\n ></mat-icon>\r\n }\r\n\r\n <div class=\"cmat-horizontal-navigation-item-title-wrapper\">\r\n <div class=\"cmat-horizontal-navigation-item-title\">\r\n <span [ngClass]=\"item.classes?.title\">\r\n {{ item.title }}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n @if (item.badge) {\r\n <div class=\"cmat-horizontal-navigation-item-badge\">\r\n <div\r\n class=\"cmat-horizontal-navigation-item-badge-content\"\r\n [ngClass]=\"item.badge.classes\"\r\n >\r\n {{ item.badge.title }}\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation-spacer-item',\r\n templateUrl: './spacer.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass],\r\n})\r\nexport class CmatHorizontalNavigationSpacerItemComponent {\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input.required<string>();\r\n}\r\n","<div\r\n class=\"cmat-horizontal-navigation-item-wrapper\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n></div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatNavigationService } from '../navigation.service';\r\nimport { CmatNavigationItem } from '../navigation.types';\r\nimport { CmatHorizontalNavigationBasicItemComponent } from './components/basic/basic.component';\r\nimport { CmatHorizontalNavigationBranchItemComponent } from './components/branch/branch.component';\r\nimport { CmatHorizontalNavigationSpacerItemComponent } from './components/spacer/spacer.component';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation',\r\n templateUrl: './horizontal.component.html',\r\n styleUrls: ['./horizontal.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatHorizontalNavigation',\r\n imports: [\r\n CmatHorizontalNavigationBasicItemComponent,\r\n CmatHorizontalNavigationBranchItemComponent,\r\n CmatHorizontalNavigationSpacerItemComponent,\r\n ],\r\n})\r\nexport class CmatHorizontalNavigationComponent implements OnInit, OnDestroy {\r\n readonly routeReuseStrategyEmitUrl = output<string>();\r\n readonly refreshToken = signal(0);\r\n readonly name = input<string>(inject(CmatUtilsService).randomId());\r\n readonly navigation = input<CmatNavigationItem[]>();\r\n readonly hasRouteReuseStrategy = input<boolean>();\r\n\r\n /**\r\n * 渲染用导航树:refreshToken变化时重新深拷贝整棵树,使每一级item获得新引用。\r\n *\r\n * 原因:@for的reconcile算法(valuesMatching)在同位置同引用(Object.is)时\r\n * 直接判定匹配,根本不调用track表达式——原地修改(push/splice/字段赋值)后\r\n * 仅靠track键变化无法触发视图更新。深拷贝产生新引用后,track键随refreshToken\r\n * 变化→视图销毁重建→重新读取已修改的数据,刷新生效。\r\n * 函数属性(hidden等)按引用保留,行为不变;未调用refresh()时computed命中缓存。\r\n */\r\n readonly _renderNavigation = computed(() => {\r\n this.refreshToken();\r\n return this._deepCopyItems(this.navigation());\r\n });\r\n\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n\r\n constructor() {\r\n effect(() => {\r\n this.navigation();\r\n this.refreshToken.update(value => value + 1);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this._cmatNavigationService.registerComponent(this.name(), this);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._cmatNavigationService.deregisterComponent(this.name());\r\n }\r\n\r\n refresh(): void {\r\n this.refreshToken.update(value => value + 1);\r\n }\r\n\r\n trackByFn(index: number, item: CmatNavigationItem): string {\r\n //将refreshToken纳入track键:配合_renderNavigation深拷贝(产生新引用绕过\r\n //@for reconcile的Object.is同引用短路)使refresh()时所有track键变化,\r\n //强制销毁重建子组件,原地修改(子级增删、字段编辑)得以重新渲染。\r\n return `${item.id ?? index}-${this.refreshToken()}`;\r\n }\r\n\r\n goToRouterLink(link: string): void {\r\n this.routeReuseStrategyEmitUrl.emit(link);\r\n }\r\n\r\n /**\r\n * 深拷贝导航项树:每级item及children数组均生成新引用,\r\n * 函数属性(hidden等)按引用保留。\r\n */\r\n private _deepCopyItems(\r\n items: CmatNavigationItem[] | undefined,\r\n ): CmatNavigationItem[] {\r\n if (!items) {\r\n return [];\r\n }\r\n return items.map((item) => {\r\n const copy = { ...item };\r\n if (copy.children) {\r\n copy.children = this._deepCopyItems(copy.children);\r\n }\r\n return copy;\r\n });\r\n }\r\n}\r\n","<div\r\n class=\"cmat-horizontal-navigation-wrapper\"\r\n [attr.data-refresh]=\"refreshToken()\"\r\n>\r\n @for (item of _renderNavigation(); track trackByFn($index, item)) {\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n @if (item.type === \"basic\") {\r\n <cmat-horizontal-navigation-basic-item\r\n class=\"cmat-horizontal-navigation-menu-item\"\r\n [item]=\"item\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n [name]=\"name()\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n ></cmat-horizontal-navigation-basic-item>\r\n }\r\n\r\n @if (\r\n item.type === \"aside\" ||\r\n item.type === \"collapsable\" ||\r\n item.type === \"group\"\r\n ) {\r\n <cmat-horizontal-navigation-branch-item\r\n class=\"cmat-horizontal-navigation-menu-item\"\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n ></cmat-horizontal-navigation-branch-item>\r\n }\r\n\r\n @if (item.type === \"spacer\") {\r\n <cmat-horizontal-navigation-spacer-item\r\n class=\"cmat-horizontal-navigation-menu-item\"\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n ></cmat-horizontal-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n</div>\r\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n inject,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport {\r\n isActive,\r\n Router,\r\n RouterLink,\r\n RouterLinkActive,\r\n} from '@angular/router';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-basic-item',\r\n templateUrl: './basic.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgClass,\r\n RouterLink,\r\n RouterLinkActive,\r\n MatTooltipModule,\r\n NgTemplateOutlet,\r\n MatIconModule,\r\n ],\r\n})\r\nexport class CmatVerticalNavigationBasicItemComponent {\r\n\r\n readonly routeReuseStrategyEmitUrl = output<string>();\r\n readonly editSelectedItemChanged = output<CmatNavigationItem>();\r\n\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input<string>();\r\n readonly editState = input<boolean>(false);\r\n readonly hasRouteReuseStrategy = input<boolean>(false);\r\n\r\n protected readonly isActiveMatchOptions = computed(() => {\r\n const item = this.item();\r\n return (item?.isActiveMatchOptions ?? item?.exactMatch)\r\n ? this._cmatUtilsService.exactMatchOptions\r\n : this._cmatUtilsService.subsetMatchOptions;\r\n });\r\n\r\n private _router = inject(Router);\r\n private _cmatUtilsService = inject(CmatUtilsService);\r\n\r\n selectItem(): void {\r\n this.editSelectedItemChanged.emit(this.item());\r\n }\r\n\r\n isRouteActive(link?: string): boolean {\r\n if (!link) {\r\n return false;\r\n }\r\n return isActive(link, this._router, this.isActiveMatchOptions())();\r\n }\r\n\r\n goToRouterLink(link?: string): void {\r\n if (!link) {\r\n return;\r\n }\r\n if (this.hasRouteReuseStrategy()) {\r\n this.routeReuseStrategyEmitUrl.emit(link);\r\n } else {\r\n void this._router.navigate([link]);\r\n }\r\n }\r\n}","<div\r\n class=\"cmat-vertical-navigation-item-wrapper\"\r\n [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item().subTitle\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n>\r\n @if (editState()) {\r\n <div\r\n class=\"cmat-vertical-navigation-item\"\r\n role=\"presentation\"\r\n [ngClass]=\"{\r\n 'cmat-vertical-navigation-item-active-forced': item().active,\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"selectItem()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n } @else {\r\n @if (\r\n item().link &&\r\n !item().externalLink &&\r\n !item().function &&\r\n !item().disabled\r\n ) {\r\n <a\r\n class=\"cmat-vertical-navigation-item\"\r\n role=\"presentation\"\r\n [ngClass]=\"{\r\n 'cmat-vertical-navigation-item-active-forced': item().active,\r\n 'cmat-vertical-navigation-item-active': isRouteActive(item().link),\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"goToRouterLink(item().link)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n @if (\r\n item().link && item().externalLink && !item().function && !item().disabled\r\n ) {\r\n <a\r\n class=\"cmat-vertical-navigation-item\"\r\n [href]=\"item().link\"\r\n [target]=\"item().target || '_blank'\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n @if (!item().link && item().function && !item().disabled) {\r\n <div\r\n class=\"cmat-vertical-navigation-item\"\r\n role=\"presentation\"\r\n [ngClass]=\"{\r\n 'cmat-vertical-navigation-item-active-forced': item().active,\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"item().function!(item())\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n @if (\r\n item().link && !item().externalLink && item().function && !item().disabled\r\n ) {\r\n <a\r\n class=\"cmat-vertical-navigation-item\"\r\n role=\"presentation\"\r\n [ngClass]=\"{\r\n 'cmat-vertical-navigation-item-active-forced': item().active,\r\n 'cmat-vertical-navigation-item-active': isRouteActive(item().link),\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"item().function!(item()); goToRouterLink(item().link)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n @if (\r\n item().link && item().externalLink && item().function && !item().disabled\r\n ) {\r\n <a\r\n class=\"cmat-vertical-navigation-item\"\r\n [href]=\"item().link\"\r\n [target]=\"item().target || '_blank'\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"item().function!(item())\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n @if (!item().link && !item().function && !item().disabled) {\r\n <div\r\n class=\"cmat-vertical-navigation-item\"\r\n [ngClass]=\"{\r\n 'cmat-vertical-navigation-item-active-forced': item().active,\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n @if (item().disabled) {\r\n <div\r\n class=\"cmat-vertical-navigation-item cmat-vertical-navigation-item-disabled\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n }\r\n</div>\r\n\r\n<ng-template #itemTemplate>\r\n @if (item().icon) {\r\n <mat-icon\r\n class=\"cmat-vertical-navigation-item-icon\"\r\n [ngClass]=\"item().classes?.icon\"\r\n [svgIcon]=\"item().icon!\"\r\n >\r\n </mat-icon>\r\n }\r\n\r\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\r\n <div class=\"cmat-vertical-navigation-item-title\">\r\n <span [ngClass]=\"item().classes?.title\">\r\n {{ item().title }}\r\n </span>\r\n </div>\r\n @if (item().subTitle) {\r\n <div class=\"cmat-vertical-navigation-item-subtitle\">\r\n <span [ngClass]=\"item().classes?.subtitle\">\r\n {{ item().subTitle }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (item().badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div\r\n class=\"cmat-vertical-navigation-item-badge-content\"\r\n [ngClass]=\"item().badge!.classes\"\r\n >\r\n {{ item().badge!.title }}\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n","import { NgClass } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n output,\r\n input,\r\n} from '@angular/core';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-divider-item',\r\n templateUrl: './divider.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass],\r\n})\r\nexport class CmatVerticalNavigationDividerItemComponent {\r\n readonly editSelectedItemChanged = output<CmatNavigationItem>();\r\n\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input.required<string>();\r\n readonly editState = input<boolean>(false);\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.emit(item);\r\n }\r\n}","<div\r\n class=\"cmat-vertical-navigation-item-wrapper divider\"\r\n role=\"presentation\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n (click)=\"selectItem(item())\"\r\n></div>\r\n","import { NgClass } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n output,\r\n input,\r\n} from '@angular/core';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-spacer-item',\r\n templateUrl: './spacer.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass],\r\n})\r\nexport class CmatVerticalNavigationSpacerItemComponent {\r\n readonly editSelectedItemChanged = output<CmatNavigationItem>();\r\n\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input.required<string>();\r\n readonly editState = input<boolean>(false);\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.emit(item);\r\n }\r\n}","<div\r\n class=\"cmat-vertical-navigation-item-wrapper\"\r\n role=\"presentation\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n (click)=\"selectItem(item())\"\r\n></div>\r\n","import { NgClass } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n forwardRef,\r\n input,\r\n output,\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationBasicItemComponent } from '../basic/basic.component';\r\nimport { CmatVerticalNavigationCollapsableItemComponent } from '../collapsable/collapsable.component';\r\nimport { CmatVerticalNavigationDividerItemComponent } from '../divider/divider.component';\r\nimport { CmatVerticalNavigationSpacerItemComponent } from '../spacer/spacer.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-group-item',\r\n templateUrl: './group.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgClass,\r\n MatIconModule,\r\n CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationDividerItemComponent,\r\n forwardRef(() => CmatVerticalNavigationGroupItemComponent),\r\n forwardRef(() => CmatVerticalNavigationCollapsableItemComponent),\r\n CmatVerticalNavigationSpacerItemComponent,\r\n ],\r\n})\r\nexport class CmatVerticalNavigationGroupItemComponent {\r\n readonly routeReuseStrategyEmitUrl = output<string>();\r\n readonly editSelectedItemChanged = output<CmatNavigationItem>();\r\n\r\n readonly autoCollapse = input<boolean>();\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input.required<string>();\r\n readonly editState = input<boolean>(false);\r\n readonly hasRouteReuseStrategy = input<boolean>(false);\r\n\r\n trackByFn(index: number, item: CmatNavigationItem): string | number {\r\n return item.id ?? index;\r\n }\r\n\r\n goToRouterLink(link: string): void {\r\n this.routeReuseStrategyEmitUrl.emit(link);\r\n }\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.emit(item);\r\n }\r\n}","<div\r\n class=\"cmat-vertical-navigation-item-wrapper\"\r\n role=\"presentation\"\r\n [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item().subTitle\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n (click)=\"selectItem(item())\"\r\n>\r\n <div class=\"cmat-vertical-navigation-item\">\r\n @if (item().icon) {\r\n <mat-icon\r\n class=\"cmat-vertical-navigation-item-icon\"\r\n [ngClass]=\"item().classes?.icon\"\r\n [svgIcon]=\"item().icon!\"\r\n >\r\n </mat-icon>\r\n }\r\n\r\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\r\n <div class=\"cmat-vertical-navigation-item-title\">\r\n <span [ngClass]=\"item().classes?.title\">\r\n {{ item().title }}\r\n </span>\r\n </div>\r\n @if (item().subTitle) {\r\n <div class=\"cmat-vertical-navigation-item-subtitle\">\r\n <span [ngClass]=\"item().classes?.subtitle\">\r\n {{ item().subTitle }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (item().badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div\r\n class=\"cmat-vertical-navigation-item-badge-content\"\r\n [ngClass]=\"item().badge!.classes\"\r\n >\r\n {{ item().badge!.title }}\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n@for (item of item().children; track trackByFn($index, item)) {\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n @if (item.type === \"basic\") {\r\n <cmat-vertical-navigation-basic-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n\r\n @if (item.type === \"collapsable\") {\r\n <cmat-vertical-navigation-collapsable-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [autoCollapse]=\"autoCollapse()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-collapsable-item>\r\n }\r\n\r\n @if (item.type === \"divider\") {\r\n <cmat-vertical-navigation-divider-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n ></cmat-vertical-navigation-divider-item>\r\n }\r\n\r\n @if (item.type === \"group\") {\r\n <cmat-vertical-navigation-group-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n ></cmat-vertical-navigation-group-item>\r\n }\r\n\r\n @if (item.type === \"spacer\") {\r\n <cmat-vertical-navigation-spacer-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n ></cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { NgClass } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n OnInit,\r\n computed,\r\n forwardRef,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { isActive, NavigationEnd, Router } from '@angular/router';\r\nimport { filter } from 'rxjs/operators';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\r\nimport { CmatVerticalNavigationBasicItemComponent } from '../basic/basic.component';\r\nimport { CmatVerticalNavigationDividerItemComponent } from '../divider/divider.component';\r\nimport { CmatVerticalNavigationGroupItemComponent } from '../group/group.component';\r\nimport { CmatVerticalNavigationSpacerItemComponent } from '../spacer/spacer.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-collapsable-item',\r\n templateUrl: './collapsable.component.html',\r\n styleUrls: ['../../../../../animations/expand-collapse.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[class.cmat-vertical-navigation-item-collapsed]': 'isCollapsed()',\r\n '[class.cmat-vertical-navigation-item-expanded]': 'isExpanded()',\r\n },\r\n imports: [\r\n NgClass,\r\n MatTooltipModule,\r\n MatIconModule,\r\n CmatVerticalNavigationBasicItemComponent,\r\n forwardRef(() => CmatVerticalNavigationCollapsableItemComponent),\r\n forwardRef(() => CmatVerticalNavigationGroupItemComponent),\r\n CmatVerticalNavigationDividerItemComponent,\r\n CmatVerticalNavigationSpacerItemComponent,\r\n ],\r\n})\r\nexport class CmatVerticalNavigationCollapsableItemComponent implements OnInit {\r\n readonly routeReuseStrategyEmitUrl = output<string>();\r\n readonly editSelectedItemChanged = output<CmatNavigationItem>();\r\n\r\n readonly autoCollapse = input<boolean>();\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input.required<string>();\r\n readonly editState = input<boolean>(false);\r\n readonly hasRouteReuseStrategy = input<boolean>(false);\r\n\r\n readonly isCollapsed = signal(true);\r\n readonly isExpanded = computed(() => !this.isCollapsed());\r\n\r\n private _router = inject(Router);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n\r\n ngOnInit(): void {\r\n this._cmatVerticalNavigationComponent =\r\n this._cmatNavigationService.getComponent(this.name());\r\n\r\n if (!this._cmatVerticalNavigationComponent) {\r\n return;\r\n }\r\n\r\n const autoCollapse = this.autoCollapse();\r\n if (this._hasActiveChild(this.item(), this._router.url)) {\r\n this.expand();\r\n } else {\r\n if (autoCollapse) {\r\n this.collapse();\r\n }\r\n }\r\n\r\n this._cmatVerticalNavigationComponent.onCollapsableItemCollapsed\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((collapsedItem) => {\r\n if (collapsedItem === null) {\r\n return;\r\n }\r\n\r\n if (this._isChildrenOf(collapsedItem, this.item())) {\r\n this.collapse();\r\n }\r\n });\r\n\r\n if (autoCollapse) {\r\n this._cmatVerticalNavigationComponent.onCollapsableItemExpanded\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((expandedItem) => {\r\n if (expandedItem === null) {\r\n return;\r\n }\r\n\r\n const item = this.item();\r\n if (this._isChildrenOf(item, expandedItem)) {\r\n return;\r\n }\r\n\r\n if (this._hasActiveChild(item, this._router.url)) {\r\n return;\r\n }\r\n\r\n if (item === expandedItem) {\r\n return;\r\n }\r\n\r\n this.collapse();\r\n });\r\n }\r\n\r\n this._router.events\r\n .pipe(\r\n filter(\r\n (event): event is NavigationEnd => event instanceof NavigationEnd,\r\n ),\r\n takeUntilDestroyed(this._destroyRef),\r\n )\r\n .subscribe((event: NavigationEnd) => {\r\n if (this._hasActiveChild(this.item(), event.urlAfterRedirects)) {\r\n this.expand();\r\n } else {\r\n if (this.autoCollapse()) {\r\n this.collapse();\r\n }\r\n }\r\n });\r\n }\r\n collapse(): void {\r\n const item = this.item();\r\n if (item.disabled || !this._cmatVerticalNavigationComponent) {\r\n return;\r\n }\r\n\r\n if (this.isCollapsed()) {\r\n return;\r\n }\r\n\r\n this.isCollapsed.set(true);\r\n\r\n this._cmatVerticalNavigationComponent.onCollapsableItemCollapsed.next(item);\r\n }\r\n expand(): void {\r\n const item = this.item();\r\n if (item.disabled || !this._cmatVerticalNavigationComponent) {\r\n return;\r\n }\r\n\r\n if (!this.isCollapsed()) {\r\n return;\r\n }\r\n\r\n this.isCollapsed.set(false);\r\n\r\n this._cmatVerticalNavigationComponent.onCollapsableItemExpanded.next(item);\r\n }\r\n toggleCollapsable(): void {\r\n if (this.isCollapsed()) {\r\n this.expand();\r\n } else {\r\n this.collapse();\r\n }\r\n }\r\n\r\n trackByFn(index: number, item: CmatNavigationItem): string | number {\r\n return item.id ?? index;\r\n }\r\n\r\n goToRouterLink(link: string): void {\r\n this.routeReuseStrategyEmitUrl.emit(link);\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.emit(item);\r\n }\r\n private _hasActiveChild(\r\n item: CmatNavigationItem,\r\n currentUrl: string,\r\n ): boolean {\r\n const children = item.children;\r\n\r\n if (!children) {\r\n return false;\r\n }\r\n\r\n for (const child of children) {\r\n if (child.children) {\r\n if (this._hasActiveChild(child, currentUrl)) {\r\n return true;\r\n }\r\n }\r\n if (\r\n child.link &&\r\n isActive(child.link, this._router, {\r\n paths: child.exactMatch || false ? 'exact' : 'subset',\r\n queryParams: child.exactMatch || false ? 'exact' : 'subset',\r\n matrixParams: 'ignored',\r\n fragment: 'ignored',\r\n })()\r\n ) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private _isChildrenOf(\r\n parent: CmatNavigationItem,\r\n item: CmatNavigationItem,\r\n ): boolean {\r\n const children = parent.children;\r\n\r\n if (!children) {\r\n return false;\r\n }\r\n\r\n if (children.includes(item)) {\r\n return true;\r\n }\r\n\r\n for (const child of children) {\r\n if (child.children) {\r\n if (this._isChildrenOf(child, item)) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}","<div\r\n class=\"cmat-vertical-navigation-item-wrapper\"\r\n [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item().subTitle\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n>\r\n <div\r\n class=\"cmat-vertical-navigation-item\"\r\n role=\"presentation\"\r\n [ngClass]=\"{ 'cmat-vertical-navigation-item-disabled': item().disabled }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n (click)=\"toggleCollapsable(); selectItem(item())\"\r\n >\r\n @if (item().icon) {\r\n <mat-icon\r\n class=\"cmat-vertical-navigation-item-icon\"\r\n [ngClass]=\"item().classes?.icon\"\r\n [svgIcon]=\"item().icon!\"\r\n >\r\n </mat-icon>\r\n }\r\n\r\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\r\n <div class=\"cmat-vertical-navigation-item-title\">\r\n <span [ngClass]=\"item().classes?.title\">\r\n {{ item().title }}\r\n </span>\r\n </div>\r\n @if (item().subTitle) {\r\n <div class=\"cmat-vertical-navigation-item-subtitle\">\r\n <span [ngClass]=\"item().classes?.subtitle\">\r\n {{ item().subTitle }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (item().badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div\r\n class=\"cmat-vertical-navigation-item-badge-content\"\r\n [ngClass]=\"item().badge!.classes\"\r\n >\r\n {{ item().badge!.title }}\r\n </div>\r\n </div>\r\n }\r\n\r\n <mat-icon\r\n class=\"cmat-vertical-navigation-item-arrow icon-size-4\"\r\n [svgIcon]=\"'heroicons_outline:chevron-right'\"\r\n >\r\n </mat-icon>\r\n </div>\r\n</div>\r\n\r\n@if (!isCollapsed()) {\r\n <div\r\n animate.leave=\"expand-collapse-animation-leaving\"\r\n class=\"cmat-vertical-navigation-item-children expand-collapse-animation\"\r\n >\r\n <div>\r\n @for (item of item().children; track trackByFn($index, item)) {\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n @if (item.type === \"basic\") {\r\n <cmat-vertical-navigation-basic-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n\r\n @if (item.type === \"collapsable\") {\r\n <cmat-vertical-navigation-collapsable-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [autoCollapse]=\"autoCollapse()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-collapsable-item>\r\n }\r\n\r\n @if (item.type === \"divider\") {\r\n <cmat-vertical-navigation-divider-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n >\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n\r\n @if (item.type === \"group\") {\r\n <cmat-vertical-navigation-group-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n ></cmat-vertical-navigation-group-item>\r\n }\r\n\r\n @if (item.type === \"spacer\") {\r\n <cmat-vertical-navigation-spacer-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n >\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n </div>\r\n </div>\r\n}","import { NgClass } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n OnInit,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n untracked,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { isActive, NavigationEnd, Router } from '@angular/router';\r\nimport { filter } from 'rxjs/operators';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationBasicItemComponent } from '../basic/basic.component';\r\nimport { CmatVerticalNavigationCollapsableItemComponent } from '../collapsable/collapsable.component';\r\nimport { CmatVerticalNavigationDividerItemComponent } from '../divider/divider.component';\r\nimport { CmatVerticalNavigationGroupItemComponent } from '../group/group.component';\r\nimport { CmatVerticalNavigationSpacerItemComponent } from '../spacer/spacer.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-aside-item',\r\n templateUrl: './aside.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgClass,\r\n MatTooltipModule,\r\n MatIconModule,\r\n CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationCollapsableItemComponent,\r\n CmatVerticalNavigationDividerItemComponent,\r\n CmatVerticalNavigationGroupItemComponent,\r\n CmatVerticalNavigationSpacerItemComponent,\r\n ],\r\n})\r\nexport class CmatVerticalNavigationAsideItemComponent\r\n implements OnInit {\r\n readonly routeReuseStrategyEmitUrl = output<string>();\r\n readonly editSelectedItemChanged = output<CmatNavigationItem>();\r\n\r\n readonly activeItemId = input<string | null>();\r\n readonly autoCollapse = input<boolean>();\r\n readonly item = input.required<CmatNavigationItem>();\r\n readonly name = input.required<string>();\r\n readonly skipChildren = input<boolean>();\r\n readonly editState = input<boolean>(false);\r\n readonly hasRouteReuseStrategy = input<boolean>(false);\r\n\r\n readonly active = signal(false);\r\n\r\n private _router = inject(Router);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n constructor() {\r\n effect(() => {\r\n this.activeItemId();\r\n \r\n untracked(() => {\r\n this._markIfActive(this._router.url);\r\n });\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this._markIfActive(this._router.url);\r\n\r\n this._router.events\r\n .pipe(\r\n filter(\r\n (event): event is NavigationEnd => event instanceof NavigationEnd,\r\n ),\r\n takeUntilDestroyed(this._destroyRef),\r\n )\r\n .subscribe((event: NavigationEnd) => {\r\n this._markIfActive(event.urlAfterRedirects);\r\n });\r\n }\r\n\r\n trackByFn(index: number, item: CmatNavigationItem): string | number {\r\n return item.id ?? index;\r\n }\r\n\r\n goToRouterLink(link: string): void {\r\n this.routeReuseStrategyEmitUrl.emit(link);\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.emit(item);\r\n }\r\n private _hasActiveChild(\r\n item: CmatNavigationItem,\r\n currentUrl: string,\r\n ): boolean {\r\n const children = item.children;\r\n\r\n if (!children) {\r\n return false;\r\n }\r\n\r\n for (const child of children) {\r\n if (child.children) {\r\n if (this._hasActiveChild(child, currentUrl)) {\r\n return true;\r\n }\r\n }\r\n if (child.type !== 'basic') {\r\n continue;\r\n }\r\n if (\r\n child.link &&\r\n isActive(child.link, this._router, {\r\n paths: child.exactMatch || false ? 'exact' : 'subset',\r\n queryParams: child.exactMatch || false ? 'exact' : 'subset',\r\n fragment: 'ignored',\r\n matrixParams: 'ignored',\r\n })()\r\n ) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private _markIfActive(currentUrl: string): void {\r\n this.active.set(this.activeItemId() === this.item().id);\r\n\r\n if (this._hasActiveChild(this.item(), currentUrl)) {\r\n this.active.set(true);\r\n }\r\n }\r\n}","<div\r\n class=\"cmat-vertical-navigation-item-wrapper\"\r\n role=\"presentation\"\r\n [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item().subTitle\"\r\n [ngClass]=\"item().classes?.wrapper\"\r\n (click)=\"selectItem(item())\"\r\n>\r\n <div\r\n class=\"cmat-vertical-navigation-item\"\r\n [ngClass]=\"{\r\n 'cmat-vertical-navigation-item-active': active(),\r\n 'cmat-vertical-navigation-item-disabled': item().disabled,\r\n 'cmat-vertical-navigation-item-active-forced': item().active,\r\n }\"\r\n [matTooltip]=\"item().tooltip || ''\"\r\n >\r\n @if (item().icon) {\r\n <mat-icon\r\n class=\"cmat-vertical-navigation-item-icon\"\r\n [ngClass]=\"item().classes?.icon\"\r\n [svgIcon]=\"item().icon!\"\r\n >\r\n </mat-icon>\r\n }\r\n\r\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\r\n <div class=\"cmat-vertical-navigation-item-title\">\r\n <span [ngClass]=\"item().classes?.title\">\r\n {{ item().title }}\r\n </span>\r\n </div>\r\n @if (item().subTitle) {\r\n <div class=\"cmat-vertical-navigation-item-subtitle\">\r\n <span [ngClass]=\"item().classes?.subtitle\">\r\n {{ item().subTitle }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (item().badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div\r\n class=\"cmat-vertical-navigation-item-badge-content\"\r\n [ngClass]=\"item().badge!.classes\"\r\n >\r\n {{ item().badge!.title }}\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n@if (!skipChildren()) {\r\n <div class=\"cmat-vertical-navigation-item-children\">\r\n @for (item of item().children; track trackByFn($index, item)) {\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n @if (item.type === \"basic\") {\r\n <cmat-vertical-navigation-basic-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n\r\n @if (item.type === \"collapsable\") {\r\n <cmat-vertical-navigation-collapsable-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n [autoCollapse]=\"autoCollapse()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n ></cmat-vertical-navigation-collapsable-item>\r\n }\r\n\r\n @if (item.type === \"divider\") {\r\n <cmat-vertical-navigation-divider-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n >\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n\r\n @if (item.type === \"group\") {\r\n <cmat-vertical-navigation-group-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n >\r\n </cmat-vertical-navigation-group-item>\r\n }\r\n\r\n @if (item.type === \"spacer\") {\r\n <cmat-vertical-navigation-spacer-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n >\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n </div>\r\n}","/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n OnDestroy,\r\n OnInit,\r\n Renderer2,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n untracked,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { CmatNavigationService } from '../navigation.service';\r\nimport {\r\n CmatNavigationItem,\r\n CmatVerticalNavigationAppearance,\r\n CmatVerticalNavigationMode,\r\n CmatVerticalNavigationPosition,\r\n} from '../navigation.types';\r\nimport { CmatVerticalNavigationAsideItemComponent } from './components/aside/aside.component';\r\nimport { CmatVerticalNavigationBasicItemComponent } from './components/basic/basic.component';\r\nimport { CmatVerticalNavigationCollapsableItemComponent } from './components/collapsable/collapsable.component';\r\nimport { CmatVerticalNavigationDividerItemComponent } from './components/divider/divider.component';\r\nimport { CmatVerticalNavigationGroupItemComponent } from './components/group/group.component';\r\nimport { CmatVerticalNavigationSpacerItemComponent } from './components/spacer/spacer.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation',\r\n templateUrl: './vertical.component.html',\r\n styleUrls: ['./vertical.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatVerticalNavigation',\r\n host: {\r\n '[class]': 'classList()',\r\n '[style]': 'styleList()',\r\n '(mouseenter)': 'onMouseenter()',\r\n '(mouseleave)': 'onMouseleave()',\r\n },\r\n imports: [\r\n CmatVerticalNavigationAsideItemComponent,\r\n CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationCollapsableItemComponent,\r\n CmatVerticalNavigationDividerItemComponent,\r\n CmatVerticalNavigationGroupItemComponent,\r\n CmatVerticalNavigationSpacerItemComponent,\r\n ],\r\n})\r\nexport class CmatVerticalNavigationComponent\r\n implements OnInit, AfterViewInit, OnDestroy {\r\n readonly routeReuseStrategyEmitUrl = output<string>();\r\n readonly appearanceChanged = output<CmatVerticalNavigationAppearance>();\r\n readonly modeChanged = output<CmatVerticalNavigationMode>();\r\n readonly openedChanged = output<boolean>();\r\n readonly positionChanged = output<CmatVerticalNavigationPosition>();\r\n readonly editSelectedItemChanged = output<CmatNavigationItem>();\r\n\r\n readonly appearance = input<CmatVerticalNavigationAppearance>('default');\r\n readonly autoCollapse = input<boolean>(true);\r\n readonly editState = input<boolean>(false);\r\n readonly inner = input<boolean>(false);\r\n readonly mode = input<CmatVerticalNavigationMode>('side');\r\n readonly name = input<string>(inject(CmatUtilsService).randomId());\r\n readonly navigation = input<CmatNavigationItem[]>([]);\r\n readonly opened = input<boolean>(true);\r\n readonly position = input<CmatVerticalNavigationPosition>('left');\r\n readonly transparentOverlay = input<boolean>(false);\r\n readonly hasRouteReuseStrategy = input<boolean>(false);\r\n\r\n readonly activeAsideItemId = signal<string | null>(null);\r\n readonly asideOverlayVisible = signal(false);\r\n onCollapsableItemCollapsed: ReplaySubject<CmatNavigationItem> =\r\n new ReplaySubject<CmatNavigationItem>(1);\r\n onCollapsableItemExpanded: ReplaySubject<CmatNavigationItem> =\r\n new ReplaySubject<CmatNavigationItem>(1);\r\n\r\n readonly refreshToken = signal(0);\r\n\r\n /**\r\n * 渲染用导航树:refreshToken变化时重新深拷贝整棵树,使每一级item获得新引用。\r\n *\r\n * 原因:@for的reconcile算法(valuesMatching)在同位置同引用(Object.is)时\r\n * 直接判定匹配,根本不调用track表达式——原地修改(push/splice/字段赋值)后\r\n * 仅靠track键变化无法触发视图更新。深拷贝产生新引用后,track键随refreshToken\r\n * 变化→视图销毁重建→重新读取已修改的数据,刷新生效。\r\n * 函数属性(hidden等)按引用保留,行为不变;未调用refresh()时computed命中缓存。\r\n */\r\n readonly _renderNavigation = computed(() => {\r\n this.refreshToken();\r\n return this._deepCopyItems(this.navigation());\r\n });\r\n\r\n readonly classList = computed(() => {\r\n const opened = this._openedState();\r\n return [\r\n this._animationsEnabled()\r\n ? 'cmat-vertical-navigation-animations-enabled'\r\n : '',\r\n `cmat-vertical-navigation-appearance-${this.appearance()}`,\r\n this._hovered() ? 'cmat-vertical-navigation-hover' : '',\r\n this.inner() ? 'cmat-vertical-navigation-inner' : '',\r\n this.mode() === 'over' ? 'cmat-vertical-navigation-mode-over' : '',\r\n this.mode() === 'side' ? 'cmat-vertical-navigation-mode-side' : '',\r\n opened ? 'cmat-vertical-navigation-opened' : '',\r\n this.position() === 'left'\r\n ? 'cmat-vertical-navigation-position-left'\r\n : '',\r\n this.position() === 'right'\r\n ? 'cmat-vertical-navigation-position-right'\r\n : '',\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n });\r\n\r\n readonly styleList = computed(() => {\r\n const opened = this._openedState();\r\n return `visibility: ${opened ? 'visible' : 'hidden'};`;\r\n });\r\n\r\n private readonly _openedState = signal<boolean>(true);\r\n private readonly _animationsEnabled = signal(false);\r\n private readonly _hovered = signal(false);\r\n private readonly _prevMode = signal<CmatVerticalNavigationMode | null>(null);\r\n\r\n private readonly _navigationContentEl = viewChild<ElementRef<HTMLDivElement>>('navigationContent');\r\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private _renderer2 = inject(Renderer2);\r\n private _router = inject(Router);\r\n private _scrollStrategyOptions = inject(ScrollStrategyOptions);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n private _asideOverlay: HTMLElement | null = null;\r\n private _asideOverlayClickDestroyFn: (() => void) | null = null;\r\n private _asideOverlayLeaveTimeoutId: number | null = null;\r\n private readonly _handleOverlayClick: () => void;\r\n private _overlay: HTMLElement | null = null;\r\n private _overlayClickDestroyFn: (() => void) | null = null;\r\n private _overlayLeaveTimeoutId: number | null = null;\r\n private _modeChangeTimeoutId: number | null = null;\r\n private _scrollStrategy: ScrollStrategy = this._scrollStrategyOptions.block();\r\n\r\n constructor() {\r\n this._handleOverlayClick = (): void => {\r\n this.close();\r\n };\r\n\r\n effect(() => {\r\n this.appearance();\r\n this.appearanceChanged.emit(this.appearance());\r\n });\r\n\r\n effect(() => {\r\n const opened = this.opened();\r\n untracked(() => {\r\n this._toggleOpened(opened);\r\n });\r\n });\r\n\r\n effect(() => {\r\n const currentMode = this.mode();\r\n const previousMode = this._prevMode();\r\n\r\n untracked(() => {\r\n if (currentMode === previousMode) return;\r\n if (previousMode !== null) {\r\n this._disableAnimations();\r\n\r\n if (previousMode === 'over' && currentMode === 'side') {\r\n this._hideOverlay();\r\n }\r\n\r\n if (previousMode === 'side' && currentMode === 'over') {\r\n this.closeAside();\r\n\r\n if (this._openedState()) {\r\n this._showOverlay();\r\n }\r\n }\r\n\r\n this.modeChanged.emit(currentMode);\r\n\r\n this._modeChangeTimeoutId = window.setTimeout(() => {\r\n this._modeChangeTimeoutId = null;\r\n this._enableAnimations();\r\n }, 500);\r\n }\r\n\r\n this._prevMode.set(currentMode);\r\n });\r\n\r\n });\r\n\r\n effect(() => {\r\n this.position();\r\n this.positionChanged.emit(this.position());\r\n });\r\n }\r\n\r\n onMouseenter(): void {\r\n this._enableAnimations();\r\n this._hovered.set(true);\r\n }\r\n\r\n onMouseleave(): void {\r\n this._enableAnimations();\r\n this._hovered.set(false);\r\n }\r\n\r\n ngOnInit(): void {\r\n this._cmatNavigationService.registerComponent(this.name(), this);\r\n\r\n this._router.events\r\n .pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n takeUntilDestroyed(this._destroyRef),\r\n )\r\n .subscribe(() => {\r\n const mode = this.mode();\r\n if (mode === 'over' && this.opened()) {\r\n this.close();\r\n }\r\n\r\n if (mode === 'side' && this.activeAsideItemId()) {\r\n this.closeAside();\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n const navContent = this._navigationContentEl();\r\n if (!navContent) {\r\n return;\r\n }\r\n\r\n const activeItem = navContent.nativeElement.querySelector(\r\n '.cmat-vertical-navigation-item-active',\r\n );\r\n if (activeItem) {\r\n if (\r\n activeItem.getBoundingClientRect().bottom <=\r\n navContent.nativeElement.getBoundingClientRect().bottom -\r\n Math.abs(-120)\r\n ) {\r\n return;\r\n }\r\n\r\n navContent.nativeElement.scrollTo({\r\n top:\r\n activeItem.getBoundingClientRect().top -\r\n navContent.nativeElement.getBoundingClientRect().top -\r\n 120,\r\n behavior: 'smooth',\r\n });\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._forceCleanupOverlay();\r\n this._forceCleanupAsideOverlay();\r\n\r\n this.onCollapsableItemCollapsed.complete();\r\n this.onCollapsableItemExpanded.complete();\r\n\r\n if (this._modeChangeTimeoutId !== null) {\r\n clearTimeout(this._modeChangeTimeoutId);\r\n this._modeChangeTimeoutId = null;\r\n }\r\n\r\n this._cmatNavigationService.deregisterComponent(this.name());\r\n }\r\n refresh(): void {\r\n this.refreshToken.update(value => value + 1);\r\n }\r\n open(): void {\r\n this._setNavigationOpened(true);\r\n }\r\n close(): void {\r\n this._setNavigationOpened(false);\r\n }\r\n toggle(): void {\r\n if (this._openedState()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n openAside(item: CmatNavigationItem): void {\r\n if (item.disabled || !item.id) {\r\n return;\r\n }\r\n\r\n this._setAsideActive(item);\r\n }\r\n\r\n closeAside(): void {\r\n this._setAsideActive(null);\r\n }\r\n toggleAside(item: CmatNavigationItem): void {\r\n if (this.activeAsideItemId() === item.id) {\r\n this.closeAside();\r\n } else {\r\n this.openAside(item);\r\n }\r\n }\r\n\r\n trackByFn(index: number, item: CmatNavigationItem): string {\r\n //将refreshToken纳入track键:配合_renderNavigation深拷贝(产生新引用绕过\r\n //@for reconcile的Object.is同引用短路)使refresh()时所有track键变化,\r\n //强制销毁重建子组件,原地修改(子级增删、字段编辑)得以重新渲染。\r\n //未刷新时refreshToken恒定且computed缓存引用不变,track键稳定,不影响正常导航。\r\n return `${item.id ?? index}-${this.refreshToken()}`;\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.emit(item);\r\n }\r\n\r\n goToRouterLink(link: string): void {\r\n this.routeReuseStrategyEmitUrl.emit(link);\r\n }\r\n\r\n isItemVisible(item: CmatNavigationItem): boolean {\r\n return !item.hidden?.(item);\r\n }\r\n\r\n /**\r\n * 深拷贝导航项树:每级item及children数组均生成新引用,\r\n * 函数属性(hidden等)按引用保留。\r\n */\r\n private _deepCopyItems(\r\n items: CmatNavigationItem[] | undefined,\r\n ): CmatNavigationItem[] {\r\n if (!items) {\r\n return [];\r\n }\r\n return items.map((item) => {\r\n const copy = { ...item };\r\n if (copy.children) {\r\n copy.children = this._deepCopyItems(copy.children);\r\n }\r\n return copy;\r\n });\r\n }\r\n\r\n private _removeOverlayElement(overlay: HTMLElement): void {\r\n if (this._overlayClickDestroyFn) {\r\n this._overlayClickDestroyFn();\r\n this._overlayClickDestroyFn = null;\r\n }\r\n overlay.parentNode?.removeChild(overlay);\r\n if (this._overlay === overlay) {\r\n this._overlay = null;\r\n }\r\n }\r\n\r\n private _removeAsideOverlayElement(asideOverlay: HTMLElement): void {\r\n if (this._asideOverlayClickDestroyFn) {\r\n this._asideOverlayClickDestroyFn();\r\n this._asideOverlayClickDestroyFn = null;\r\n }\r\n asideOverlay.parentNode?.removeChild(asideOverlay);\r\n if (this._asideOverlay === asideOverlay) {\r\n this._asideOverlay = null;\r\n }\r\n }\r\n\r\n private _forceCleanupOverlay(): void {\r\n this._clearOverlayLeaveTimeout();\r\n if (this._overlay) {\r\n this._removeOverlayElement(this._overlay);\r\n }\r\n this._scrollStrategy.disable();\r\n }\r\n\r\n private _forceCleanupAsideOverlay(): void {\r\n this._clearAsideOverlayLeaveTimeout();\r\n if (this._asideOverlay) {\r\n this._removeAsideOverlayElement(this._asideOverlay);\r\n }\r\n this.asideOverlayVisible.set(false);\r\n }\r\n\r\n private _clearOverlayLeaveTimeout(): void {\r\n if (this._overlayLeaveTimeoutId !== null) {\r\n clearTimeout(this._overlayLeaveTimeoutId);\r\n this._overlayLeaveTimeoutId = null;\r\n }\r\n }\r\n\r\n private _clearAsideOverlayLeaveTimeout(): void {\r\n if (this._asideOverlayLeaveTimeoutId !== null) {\r\n clearTimeout(this._asideOverlayLeaveTimeoutId);\r\n this._asideOverlayLeaveTimeoutId = null;\r\n }\r\n }\r\n\r\n private _enableAnimations(): void {\r\n if (this._animationsEnabled()) {\r\n return;\r\n }\r\n\r\n this._animationsEnabled.set(true);\r\n }\r\n private _disableAnimations(): void {\r\n if (!this._animationsEnabled()) {\r\n return;\r\n }\r\n\r\n this._animationsEnabled.set(false);\r\n }\r\n private _showOverlay(): void {\r\n if (this._overlay) {\r\n return;\r\n }\r\n\r\n this._overlay = this._renderer2.createElement('div') as HTMLElement;\r\n\r\n if (this._overlay) {\r\n this._overlay.classList.add('cmat-vertical-navigation-overlay');\r\n\r\n if (this.transparentOverlay()) {\r\n this._overlay.classList.add(\r\n 'cmat-vertical-navigation-overlay-transparent',\r\n );\r\n }\r\n\r\n const parentEl = this._elementRef.nativeElement.parentElement;\r\n if (parentEl) {\r\n this._renderer2.appendChild(parentEl, this._overlay);\r\n }\r\n\r\n this._scrollStrategy.enable();\r\n\r\n this._overlay.classList.add('cmat-vertical-navigation-overlay-enter');\r\n\r\n this._overlayClickDestroyFn = this._renderer2.listen(\r\n this._overlay,\r\n 'click',\r\n this._handleOverlayClick,\r\n );\r\n }\r\n }\r\n private _hideOverlay(): void {\r\n if (!this._overlay) {\r\n return;\r\n }\r\n\r\n this._overlay.classList.remove('cmat-vertical-navigation-overlay-enter');\r\n\r\n const overlay = this._overlay;\r\n const handleAnimationEnd = (event: AnimationEvent): void => {\r\n if (event.animationName === 'vertical-navigation-overlay-leave') {\r\n overlay.removeEventListener('animationend', handleAnimationEnd);\r\n this._clearOverlayLeaveTimeout();\r\n this._removeOverlayElement(overlay);\r\n this._scrollStrategy.disable();\r\n }\r\n };\r\n\r\n overlay.addEventListener('animationend', handleAnimationEnd);\r\n this._overlay.classList.add('cmat-vertical-navigation-overlay-leave');\r\n\r\n this._overlayLeaveTimeoutId = window.setTimeout(() => {\r\n this._overlayLeaveTimeoutId = null;\r\n overlay.removeEventListener('animationend', handleAnimationEnd);\r\n this._removeOverlayElement(overlay);\r\n this._scrollStrategy.disable();\r\n }, 400);\r\n }\r\n\r\n private _showAsideOverlay(): void {\r\n if (this._asideOverlay) {\r\n this._asideOverlay.classList.remove(\r\n 'cmat-vertical-navigation-aside-overlay-leave',\r\n );\r\n this._asideOverlay.classList.add(\r\n 'cmat-vertical-navigation-aside-overlay-enter',\r\n );\r\n this.asideOverlayVisible.set(true);\r\n return;\r\n }\r\n\r\n this._asideOverlay = this._renderer2.createElement('div') as HTMLElement;\r\n\r\n if (this._asideOverlay) {\r\n this._asideOverlay.classList.add(\r\n 'cmat-vertical-navigation-aside-overlay',\r\n );\r\n\r\n const parentEl = this._elementRef.nativeElement.parentElement;\r\n if (parentEl) {\r\n this._renderer2.appendChild(parentEl, this._asideOverlay);\r\n }\r\n\r\n this._asideOverlay.classList.add(\r\n 'cmat-vertical-navigation-aside-overlay-enter',\r\n );\r\n\r\n this._asideOverlayClickDestroyFn = this._renderer2.listen(\r\n this._asideOverlay,\r\n 'click',\r\n () => {\r\n this.closeAside();\r\n },\r\n );\r\n\r\n this.asideOverlayVisible.set(true);\r\n }\r\n }\r\n private _hideAsideOverlay(): void {\r\n if (!this._asideOverlay) {\r\n return;\r\n }\r\n\r\n this._asideOverlay.classList.remove(\r\n 'cmat-vertical-navigation-aside-overlay-enter',\r\n );\r\n\r\n const asideOverlay = this._asideOverlay;\r\n const handleAnimationEnd = (event: AnimationEvent): void => {\r\n if (event.animationName === 'vertical-navigation-overlay-leave') {\r\n asideOverlay.removeEventListener('animationend', handleAnimationEnd);\r\n this._clearAsideOverlayLeaveTimeout();\r\n this._removeAsideOverlayElement(asideOverlay);\r\n this.asideOverlayVisible.set(false);\r\n }\r\n };\r\n\r\n asideOverlay.addEventListener('animationend', handleAnimationEnd);\r\n this._asideOverlay.classList.add(\r\n 'cmat-vertical-navigation-aside-overlay-leave',\r\n );\r\n\r\n this._asideOverlayLeaveTimeoutId = window.setTimeout(() => {\r\n this._asideOverlayLeaveTimeoutId = null;\r\n asideOverlay.removeEventListener('animationend', handleAnimationEnd);\r\n this._removeAsideOverlayElement(asideOverlay);\r\n this.asideOverlayVisible.set(false);\r\n }, 400);\r\n }\r\n\r\n private _toggleOpened(open: boolean): void {\r\n this._setNavigationOpened(open);\r\n }\r\n\r\n private _setNavigationOpened(open: boolean): void {\r\n if (this._openedState() === open) {\r\n return;\r\n }\r\n\r\n if (!open) {\r\n this.closeAside();\r\n }\r\n\r\n this._applyOpenedState(open);\r\n }\r\n\r\n private _applyOpenedState(open: boolean): void {\r\n this._openedState.set(open);\r\n\r\n this._enableAnimations();\r\n\r\n if (this.mode() === 'over') {\r\n if (this._openedState()) {\r\n this._showOverlay();\r\n } else {\r\n this._hideOverlay();\r\n }\r\n }\r\n\r\n this.openedChanged.emit(open);\r\n }\r\n\r\n private _setAsideActive(item: CmatNavigationItem | null): void {\r\n if (this.activeAsideItemId() === (item?.id ?? null)) {\r\n return;\r\n }\r\n\r\n if (item?.id ?? null) {\r\n this.activeAsideItemId.set(item?.id ?? null);\r\n this._showAsideOverlay();\r\n } else {\r\n this._hideAsideOverlay();\r\n this.activeAsideItemId.set(null);\r\n }\r\n }\r\n}","<div\r\n class=\"cmat-vertical-navigation-wrapper\"\r\n [attr.data-refresh]=\"refreshToken()\"\r\n>\r\n <div class=\"cmat-vertical-navigation-header\">\r\n <ng-content select=\"[cmatVerticalNavigationHeader]\"></ng-content>\r\n </div>\r\n\r\n <div\r\n #navigationContent\r\n class=\"cmat-vertical-navigation-content py-2 overflow-y-auto scrollbar-custom\"\r\n >\r\n <div class=\"cmat-vertical-navigation-content-header\">\r\n <ng-content select=\"[cmatVerticalNavigationContentHeader]\"></ng-content>\r\n </div>\r\n\r\n @for (item of _renderNavigation(); track trackByFn($index, item)) {\r\n @let isVisible = isItemVisible(item);\r\n @if (isVisible) {\r\n @switch (item.type) {\r\n @case (\"aside\") {\r\n <cmat-vertical-navigation-aside-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [activeItemId]=\"activeAsideItemId()\"\r\n [autoCollapse]=\"autoCollapse()\"\r\n [skipChildren]=\"true\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (click)=\"toggleAside(item)\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-aside-item>\r\n }\r\n @case (\"basic\") {\r\n <cmat-vertical-navigation-basic-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n @case (\"collapsable\") {\r\n <cmat-vertical-navigation-collapsable-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n [autoCollapse]=\"autoCollapse()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n ></cmat-vertical-navigation-collapsable-item>\r\n }\r\n @case (\"divider\") {\r\n <cmat-vertical-navigation-divider-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n >\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n @case (\"group\") {\r\n <cmat-vertical-navigation-group-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [autoCollapse]=\"autoCollapse()\"\r\n [editState]=\"editState()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-group-item>\r\n }\r\n @case (\"spacer\") {\r\n <cmat-vertical-navigation-spacer-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [editState]=\"editState()\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n >\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n }\r\n\r\n <div class=\"cmat-vertical-navigation-content-footer\">\r\n <ng-content select=\"[cmatVerticalNavigationContentFooter]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div class=\"cmat-vertical-navigation-footer\">\r\n <ng-content select=\"[cmatVerticalNavigationFooter]\"></ng-content>\r\n </div>\r\n</div>\r\n\r\n@if (activeAsideItemId()) {\r\n <div\r\n class=\"cmat-vertical-navigation-aside-wrapper overflow-y-auto scrollbar-custom\"\r\n [animate.enter]=\"\r\n position() === 'left'\r\n ? 'fade-in-left-animation'\r\n : 'fade-in-right-animation'\r\n \"\r\n [animate.leave]=\"\r\n position() === 'left'\r\n ? 'fade-out-left-animation'\r\n : 'fade-out-right-animation'\r\n \"\r\n >\r\n @for (item of _renderNavigation(); track trackByFn($index, item)) {\r\n @let isVisible = isItemVisible(item);\r\n @if (isVisible) {\r\n @if (item.type === \"aside\" && item.id === activeAsideItemId()) {\r\n <cmat-vertical-navigation-aside-item\r\n [item]=\"item\"\r\n [name]=\"name()\"\r\n [autoCollapse]=\"autoCollapse()\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy()\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"\r\n >\r\n </cmat-vertical-navigation-aside-item>\r\n }\r\n }\r\n }\r\n </div>\r\n}\r\n","import { IsActiveMatchOptions } from '@angular/router';\r\n\r\nexport class CmatNavigationItem {\r\n id?: string;\r\n title?: string;\r\n subTitle?: string;\r\n type:\r\n | 'aside'\r\n | 'basic'\r\n | 'collapsable'\r\n | 'divider'\r\n | 'group'\r\n | 'spacer';\r\n hidden?: (item: CmatNavigationItem) => boolean;\r\n active?: boolean;\r\n disabled?: boolean;\r\n tooltip?: string;\r\n link?: string;\r\n externalLink?: boolean;\r\n target?:\r\n | '_blank'\r\n | '_self'\r\n | '_parent'\r\n | '_top';\r\n exactMatch?: boolean;\r\n isActiveMatchOptions?: IsActiveMatchOptions;\r\n function?: (item: CmatNavigationItem) => void;\r\n classes?: {\r\n title?: string;\r\n subtitle?: string;\r\n icon?: string;\r\n wrapper?: string;\r\n };\r\n icon?: string;\r\n badge?: {\r\n title?: string;\r\n classes?: string;\r\n };\r\n children?: CmatNavigationItem[];\r\n meta?: unknown;\r\n permission?: unknown;\r\n}\r\n\r\nexport interface CmatNavigationComponent {\r\n close(): void;\r\n open(): void;\r\n toggle(): void;\r\n}\r\n\r\nexport type CmatVerticalNavigationAppearance =\r\n | 'default'\r\n | 'compact'\r\n | 'dense'\r\n | 'thin';\r\n\r\nexport type CmatVerticalNavigationMode =\r\n | 'over'\r\n | 'side';\r\n\r\nexport type CmatVerticalNavigationPosition =\r\n | 'left'\r\n | 'right';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1"],"mappings":"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"}