cmat 0.0.45 → 0.0.47

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 (135) hide show
  1. package/components/masonry/index.d.ts +1 -0
  2. package/fesm2022/cmat-components-adapter.mjs +9 -9
  3. package/fesm2022/cmat-components-adapter.mjs.map +1 -1
  4. package/fesm2022/cmat-components-breadcrumb.mjs +9 -9
  5. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  6. package/fesm2022/cmat-components-card.mjs +3 -3
  7. package/fesm2022/cmat-components-card.mjs.map +1 -1
  8. package/fesm2022/cmat-components-carousel.mjs +12 -12
  9. package/fesm2022/cmat-components-carousel.mjs.map +1 -1
  10. package/fesm2022/cmat-components-cascade.mjs +9 -9
  11. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  12. package/fesm2022/cmat-components-chip-input.mjs +3 -3
  13. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  14. package/fesm2022/cmat-components-custom-formly.mjs +88 -88
  15. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
  16. package/fesm2022/cmat-components-date-range.mjs +3 -3
  17. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  18. package/fesm2022/cmat-components-drawer.mjs +6 -6
  19. package/fesm2022/cmat-components-drawer.mjs.map +1 -1
  20. package/fesm2022/cmat-components-fullscreen.mjs +3 -3
  21. package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
  22. package/fesm2022/cmat-components-highlight.mjs +6 -6
  23. package/fesm2022/cmat-components-highlight.mjs.map +1 -1
  24. package/fesm2022/cmat-components-image-viewer.mjs +3 -3
  25. package/fesm2022/cmat-components-image-viewer.mjs.map +1 -1
  26. package/fesm2022/cmat-components-json-editor.mjs +3 -3
  27. package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
  28. package/fesm2022/cmat-components-knob-input.mjs +3 -3
  29. package/fesm2022/cmat-components-knob-input.mjs.map +1 -1
  30. package/fesm2022/cmat-components-masonry.mjs +7 -4
  31. package/fesm2022/cmat-components-masonry.mjs.map +1 -1
  32. package/fesm2022/cmat-components-material-color-picker.mjs +3 -3
  33. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  34. package/fesm2022/cmat-components-material-datetimepicker.mjs +42 -42
  35. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  36. package/fesm2022/cmat-components-navigation.mjs +39 -39
  37. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  38. package/fesm2022/cmat-components-opt-input.mjs +3 -3
  39. package/fesm2022/cmat-components-opt-input.mjs.map +1 -1
  40. package/fesm2022/cmat-components-org-chart.mjs +9 -9
  41. package/fesm2022/cmat-components-org-chart.mjs.map +1 -1
  42. package/fesm2022/cmat-components-pagination.mjs +12 -12
  43. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  44. package/fesm2022/cmat-components-password-strength.mjs +9 -9
  45. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  46. package/fesm2022/cmat-components-popover.mjs +9 -9
  47. package/fesm2022/cmat-components-popover.mjs.map +1 -1
  48. package/fesm2022/cmat-components-progress-bar.mjs +3 -3
  49. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
  50. package/fesm2022/cmat-components-qrcode.mjs +3 -3
  51. package/fesm2022/cmat-components-qrcode.mjs.map +1 -1
  52. package/fesm2022/cmat-components-rating.mjs +3 -3
  53. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  54. package/fesm2022/cmat-components-select-search.mjs +9 -9
  55. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  56. package/fesm2022/cmat-components-select-table.mjs +3 -3
  57. package/fesm2022/cmat-components-select-table.mjs.map +1 -1
  58. package/fesm2022/cmat-components-select-tree.mjs +3 -3
  59. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  60. package/fesm2022/cmat-components-speed-dial.mjs +9 -9
  61. package/fesm2022/cmat-components-speed-dial.mjs.map +1 -1
  62. package/fesm2022/cmat-components-timeline.mjs +12 -12
  63. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  64. package/fesm2022/cmat-components-toast.mjs +9 -9
  65. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  66. package/fesm2022/cmat-components-transfer-picker.mjs +18 -18
  67. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  68. package/fesm2022/cmat-components-treetable.mjs +6 -6
  69. package/fesm2022/cmat-components-treetable.mjs.map +1 -1
  70. package/fesm2022/cmat-components-upload.mjs +9 -9
  71. package/fesm2022/cmat-components-upload.mjs.map +1 -1
  72. package/fesm2022/cmat-components-x6-angular-shape.mjs.map +1 -1
  73. package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -6
  74. package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
  75. package/fesm2022/cmat-directives-arrow-cursor.mjs +3 -3
  76. package/fesm2022/cmat-directives-arrow-cursor.mjs.map +1 -1
  77. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  78. package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
  79. package/fesm2022/cmat-directives-data-exporter.mjs +21 -21
  80. package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -1
  81. package/fesm2022/cmat-directives-debounce.mjs +9 -9
  82. package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
  83. package/fesm2022/cmat-directives-digit-only.mjs +6 -6
  84. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  85. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  86. package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
  87. package/fesm2022/cmat-lib-mock-api.mjs +6 -6
  88. package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
  89. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  90. package/fesm2022/cmat-pipes-bytes.mjs.map +1 -1
  91. package/fesm2022/cmat-pipes-date-format.mjs +3 -3
  92. package/fesm2022/cmat-pipes-date-format.mjs.map +1 -1
  93. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
  94. package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
  95. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  96. package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
  97. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  98. package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
  99. package/fesm2022/cmat-pipes-secure.mjs +3 -3
  100. package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
  101. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  102. package/fesm2022/cmat-pipes-uppercase.mjs.map +1 -1
  103. package/fesm2022/cmat-services-alert.mjs +3 -3
  104. package/fesm2022/cmat-services-alert.mjs.map +1 -1
  105. package/fesm2022/cmat-services-config.mjs +6 -6
  106. package/fesm2022/cmat-services-config.mjs.map +1 -1
  107. package/fesm2022/cmat-services-confirmation.mjs +6 -6
  108. package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
  109. package/fesm2022/cmat-services-data.mjs +3 -3
  110. package/fesm2022/cmat-services-data.mjs.map +1 -1
  111. package/fesm2022/cmat-services-export-as.mjs +3 -3
  112. package/fesm2022/cmat-services-export-as.mjs.map +1 -1
  113. package/fesm2022/cmat-services-loading.mjs +6 -6
  114. package/fesm2022/cmat-services-loading.mjs.map +1 -1
  115. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  116. package/fesm2022/cmat-services-local-storage.mjs.map +1 -1
  117. package/fesm2022/cmat-services-media-watcher.mjs +3 -3
  118. package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
  119. package/fesm2022/cmat-services-platform.mjs +3 -3
  120. package/fesm2022/cmat-services-platform.mjs.map +1 -1
  121. package/fesm2022/cmat-services-splash-screen.mjs +3 -3
  122. package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
  123. package/fesm2022/cmat-services-title.mjs +3 -3
  124. package/fesm2022/cmat-services-title.mjs.map +1 -1
  125. package/fesm2022/cmat-services-translation.mjs +3 -3
  126. package/fesm2022/cmat-services-translation.mjs.map +1 -1
  127. package/fesm2022/cmat-services-utils.mjs +3 -3
  128. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  129. package/fesm2022/cmat-validators.mjs.map +1 -1
  130. package/fesm2022/cmat-version.mjs.map +1 -1
  131. package/package.json +24 -24
  132. package/styles/components/bundle.scss +7 -7
  133. package/styles/overrides/angular-material.scss +3 -3
  134. package/styles/overrides/fullcalendar.scss +7 -7
  135. package/styles/themes.scss +4 -4
@@ -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 _componentRegistry: Map<string, any> = new Map<string, any>();\r\n private _navigationStore: Map<string, CmatNavigationItem[]> = new Map<string, any>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Register navigation component\r\n *\r\n * @param name\r\n * @param component\r\n */\r\n registerComponent(name: string, component: any): void {\r\n this._componentRegistry.set(name, component);\r\n }\r\n\r\n /**\r\n * Deregister navigation component\r\n *\r\n * @param name\r\n */\r\n deregisterComponent(name: string): void {\r\n this._componentRegistry.delete(name);\r\n }\r\n\r\n /**\r\n * Get navigation component from the registry\r\n *\r\n * @param name\r\n */\r\n getComponent<T>(name: string): T {\r\n return this._componentRegistry.get(name);\r\n }\r\n\r\n /**\r\n * Store the given navigation with the given key\r\n *\r\n * @param key\r\n * @param navigation\r\n */\r\n storeNavigation(key: string, navigation: CmatNavigationItem[]): void {\r\n // Add to the store\r\n this._navigationStore.set(key, navigation);\r\n }\r\n\r\n /**\r\n * Get navigation from storage by key\r\n *\r\n * @param key\r\n */\r\n getNavigation(key: string): CmatNavigationItem[] {\r\n return this._navigationStore.get(key) ?? [];\r\n }\r\n\r\n /**\r\n * Delete the navigation from the storage\r\n *\r\n * @param key\r\n */\r\n deleteNavigation(key: string): void {\r\n // Check if the navigation exists\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 // Delete from the storage\r\n this._navigationStore.delete(key);\r\n }\r\n\r\n /**\r\n * Utility function that returns a flattened\r\n * version of the given navigation array\r\n *\r\n * @param navigation\r\n * @param flatNavigation\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\r\n /**\r\n * Utility function that returns the item\r\n * with the given id from given navigation\r\n *\r\n * @param id\r\n * @param navigation\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\r\n /**\r\n * Utility function that returns the item's parent\r\n * with the given id from given navigation\r\n *\r\n * @param id\r\n * @param navigation\r\n * @param parent\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 { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, inject } 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 { IsActiveMatchOptions, Router, RouterLink, RouterLinkActive } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatHorizontalNavigationComponent } from '../../../horizontal/horizontal.component';\r\nimport { CmatNavigationService } from '../../../navigation.service';\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: [NgClass, RouterLink, RouterLinkActive, MatTooltipModule, NgTemplateOutlet, MatMenuModule, MatIconModule]\r\n})\r\nexport class CmatHorizontalNavigationBasicItemComponent implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() hasRouteReuseStrategy: boolean;\r\n @Output() readonly routeReuseStrategyEmitUrl: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n isActiveMatchOptions: IsActiveMatchOptions;\r\n\r\n private _router = inject(Router);\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatUtilsService = inject(CmatUtilsService);\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor() {\r\n // Set the equivalent of {exact: false} as default for active match options.\r\n // We are not assigning the item.isActiveMatchOptions directly to the\r\n // [routerLinkActiveOptions] because if it's \"undefined\" initially, the router\r\n // will throw an error and stop working.\r\n this.isActiveMatchOptions = this._cmatUtilsService.subsetMatchOptions;\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Set the \"isActiveMatchOptions\" either from item's\r\n // \"isActiveMatchOptions\" or the equivalent form of\r\n // item's \"exactMatch\" option\r\n this.isActiveMatchOptions =\r\n this.item.isActiveMatchOptions ?? this.item.exactMatch\r\n ? this._cmatUtilsService.exactMatchOptions\r\n : this._cmatUtilsService.subsetMatchOptions;\r\n\r\n // Get the parent navigation component\r\n this._cmatHorizontalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatHorizontalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n\r\n this._router.events.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n isRouteActive(link: string): boolean {\r\n return this._router.isActive(link, this.isActiveMatchOptions);\r\n }\r\n\r\n goToRouterLink(link: string): void {\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}\r\n","<!-- Item wrapper -->\r\n<div class=\"cmat-horizontal-navigation-item-wrapper\"\r\n [class.cmat-horizontal-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\">\r\n\r\n <!-- Item with an internal link -->\r\n @if (item.link && !item.externalLink && !item.function && !item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active,'cmat-horizontal-navigation-item-active':isRouteActive(item.link)}\"\r\n [matTooltip]=\"item.tooltip || ''\" (click)=\"goToRouterLink(item.link)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item with an external link -->\r\n @if (item.link && item.externalLink && !item.function && !item.disabled) {\r\n <a class=\"cmat-horizontal-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with a function -->\r\n @if (!item.link && item.function && !item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\r\n (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item with an internal link and function -->\r\n @if (item.link && !item.externalLink && item.function && !item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active,'cmat-horizontal-navigation-item-active':isRouteActive(item.link)}\"\r\n [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item);goToRouterLink(item.link)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item with an external link and function -->\r\n @if (item.link && item.externalLink && item.function && !item.disabled) {\r\n <a class=\"cmat-horizontal-navigation-item\" mat-menu-item [href]=\"item.link\" [target]=\"item.target || '_blank'\"\r\n [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with a no link and no function -->\r\n @if (!item.link && !item.function && !item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item\"\r\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item is disabled -->\r\n @if (item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item cmat-horizontal-navigation-item-disabled\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n</div>\r\n\r\n<!-- Item template -->\r\n<ng-template #itemTemplate>\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-horizontal-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\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 <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-horizontal-navigation-item-badge\">\r\n <div class=\"cmat-horizontal-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n\r\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatHorizontalNavigationComponent } from '../../../horizontal/horizontal.component';\r\nimport { CmatNavigationService } from '../../../navigation.service';\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 implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatHorizontalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatHorizontalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n}\r\n","<!-- Divider -->\r\n<div class=\"cmat-horizontal-navigation-item-wrapper divider\" [ngClass]=\"item.classes?.wrapper\"></div>","import { BooleanInput } from '@angular/cdk/coercion';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild, forwardRef, inject } 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 { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatHorizontalNavigationComponent } from '../../../horizontal/horizontal.component';\r\nimport { CmatNavigationService } from '../../../navigation.service';\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: [NgClass, MatMenuModule, NgTemplateOutlet, CmatHorizontalNavigationBasicItemComponent,\r\n forwardRef(() => CmatHorizontalNavigationBranchItemComponent), CmatHorizontalNavigationDividerItemComponent, MatTooltipModule, MatIconModule]\r\n})\r\nexport class CmatHorizontalNavigationBranchItemComponent implements OnInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_child: BooleanInput;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n\r\n @Input() child: boolean = false;\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() hasRouteReuseStrategy: boolean;\r\n @Output() readonly routeReuseStrategyEmitUrl: EventEmitter<string> = new EventEmitter<string>();\r\n @ViewChild('matMenu', { static: true }) matMenu: MatMenu;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatHorizontalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatHorizontalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Trigger the change detection\r\n */\r\n triggerChangeDetection(): void {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\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","@if (!child) {\r\n<div #trigger=\"matMenuTrigger\" [ngClass]=\"{'cmat-horizontal-navigation-menu-active': trigger.menuOpen,\r\n 'cmat-horizontal-navigation-menu-active-forced': item.active}\" [matMenuTriggerFor]=\"matMenu\"\r\n (menuOpened)=\"triggerChangeDetection()\" (onMenuClose)=\"triggerChangeDetection()\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\r\n</div>\r\n}\r\n\r\n<mat-menu #matMenu=\"matMenu\" class=\"cmat-horizontal-navigation-menu-panel\" [overlapTrigger]=\"false\">\r\n\r\n @for (item of item.children; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <div class=\"cmat-horizontal-navigation-menu-item\" mat-menu-item [disabled]=\"item.disabled\">\r\n <cmat-horizontal-navigation-basic-item [item]=\"item\" [name]=\"name\" [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-horizontal-navigation-basic-item>\r\n </div>\r\n }\r\n <!-- Branch: aside, collapsable, group -->\r\n @if (item.type === 'aside' || item.type === 'collapsable' || item.type === 'group') {\r\n <div class=\"cmat-horizontal-navigation-menu-item\" mat-menu-item [disabled]=\"item.disabled\"\r\n [matMenuTriggerFor]=\"branch.matMenu\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\r\n <cmat-horizontal-navigation-branch-item #branch [child]=\"true\" [item]=\"item\" [name]=\"name\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-horizontal-navigation-branch-item>\r\n </div>\r\n }\r\n <!-- Divider -->\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 [item]=\"item\" [name]=\"name\">\r\n </cmat-horizontal-navigation-divider-item>\r\n </div>\r\n }\r\n }\r\n }\r\n\r\n</mat-menu>\r\n\r\n<!-- Item template -->\r\n<ng-template #itemTemplate let-item>\r\n\r\n <div class=\"cmat-horizontal-navigation-item-wrapper\"\r\n [class.cmat-horizontal-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\">\r\n\r\n <div class=\"cmat-horizontal-navigation-item\" [ngClass]=\"{'cmat-horizontal-navigation-item-disabled': item.disabled,\r\n 'cmat-horizontal-navigation-item-active-forced': item.active}\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-horizontal-navigation-item-icon\" [ngClass]=\"item.classes?.icon\"\r\n [svgIcon]=\"item.icon\"></mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\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 <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-horizontal-navigation-item-badge\">\r\n <div class=\"cmat-horizontal-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatHorizontalNavigationComponent } from '../../../horizontal/horizontal.component';\r\nimport { CmatNavigationService } from '../../../navigation.service';\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 implements OnInit, OnDestroy {\r\n\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatHorizontalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatHorizontalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n}\r\n","<!-- Spacer -->\r\n<div class=\"cmat-horizontal-navigation-item-wrapper\" [ngClass]=\"item.classes?.wrapper\"></div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewEncapsulation, inject } from '@angular/core';\r\nimport { ReplaySubject, Subject } from 'rxjs';\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\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: [CmatHorizontalNavigationBasicItemComponent, CmatHorizontalNavigationBranchItemComponent, CmatHorizontalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatHorizontalNavigationComponent implements OnChanges, OnInit, OnDestroy {\r\n @Input() name: string = inject(CmatUtilsService).randomId();\r\n @Input() navigation: CmatNavigationItem[];\r\n @Input() hasRouteReuseStrategy:boolean;\r\n @Output() readonly routeReuseStrategyEmitUrl: EventEmitter<string> = new EventEmitter<string>();\r\n onRefreshed: ReplaySubject<boolean> = new ReplaySubject<boolean>(1);\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // Navigation\r\n if ('navigation' in changes) {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n // Make sure the name input is not an empty string\r\n if (this.name === '') {\r\n this.name = inject(CmatUtilsService).randomId();\r\n }\r\n\r\n // Register the navigation component\r\n this._cmatNavigationService.registerComponent(this.name, this);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // Deregister the navigation component from the registry\r\n this._cmatNavigationService.deregisterComponent(this.name);\r\n\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n\r\n refresh(): void {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Execute the observable\r\n this.onRefreshed.next(true);\r\n }\r\n\r\n trackByFn(index: number, item: any): any {\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","<div class=\"cmat-horizontal-navigation-wrapper\">\r\n\r\n @for (item of navigation; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-horizontal-navigation-basic-item class=\"cmat-horizontal-navigation-menu-item\" [item]=\"item\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" [name]=\"name\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"></cmat-horizontal-navigation-basic-item>\r\n }\r\n <!-- Branch: aside, collapsable, group -->\r\n @if (item.type === 'aside' || item.type === 'collapsable' || item.type === 'group') {\r\n <cmat-horizontal-navigation-branch-item class=\"cmat-horizontal-navigation-menu-item\" [item]=\"item\" [name]=\"name\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"></cmat-horizontal-navigation-branch-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-horizontal-navigation-spacer-item class=\"cmat-horizontal-navigation-menu-item\" [item]=\"item\"\r\n [name]=\"name\"></cmat-horizontal-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n\r\n</div>","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, inject } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { IsActiveMatchOptions, Router, RouterLink, RouterLinkActive } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\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: [NgClass, RouterLink, RouterLinkActive, MatTooltipModule, NgTemplateOutlet, MatIconModule]\r\n})\r\nexport class CmatVerticalNavigationBasicItemComponent implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Input() hasRouteReuseStrategy: boolean = false;\r\n @Output() readonly routeReuseStrategyEmitUrl: EventEmitter<string> = new EventEmitter<string>();\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n isActiveMatchOptions: IsActiveMatchOptions;\r\n\r\n private _router = inject(Router);\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatUtilsService = inject(CmatUtilsService);\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n constructor() {\r\n\r\n this.isActiveMatchOptions = this._cmatUtilsService.subsetMatchOptions;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.isActiveMatchOptions =\r\n this.item.isActiveMatchOptions ?? this.item.exactMatch\r\n ? this._cmatUtilsService.exactMatchOptions\r\n : this._cmatUtilsService.subsetMatchOptions;\r\n\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n\r\n this._router.events.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\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 return this._router.isActive(link, this.isActiveMatchOptions);\r\n }\r\n\r\n goToRouterLink(link: string): void {\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}\r\n","<!-- Item wrapper -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper\" [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\"\r\n [ngClass]=\"item.classes?.wrapper\">\r\n\r\n @if(editState){\r\n <div class=\"cmat-vertical-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\r\n (click)=\"selectItem()\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }@else{\r\n <!-- Item with an internal link -->\r\n @if (item.link && !item.externalLink && !item.function && !item.disabled) {\r\n <a class=\"cmat-vertical-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active,'cmat-vertical-navigation-item-active': isRouteActive(item.link)}\"\r\n [matTooltip]=\"item.tooltip || ''\" (click)=\"goToRouterLink(item.link)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with an external link -->\r\n @if (item.link && item.externalLink && !item.function && !item.disabled) {\r\n <a class=\"cmat-vertical-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with a function -->\r\n @if (!item.link && item.function && !item.disabled) {\r\n <div class=\"cmat-vertical-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\r\n (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item with an internal link and function -->\r\n @if (item.link && !item.externalLink && item.function && !item.disabled) {\r\n <a class=\"cmat-vertical-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active,'cmat-vertical-navigation-item-active': isRouteActive(item.link)}\"\r\n [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item);goToRouterLink(item.link)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with an external link and function -->\r\n @if (item.link && item.externalLink && item.function && !item.disabled) {\r\n <a class=\"cmat-vertical-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\r\n [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with a no link and no function -->\r\n @if (!item.link && !item.function && !item.disabled) {\r\n <div class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item is disabled -->\r\n @if (item.disabled) {\r\n <div class=\"cmat-vertical-navigation-item cmat-vertical-navigation-item-disabled\" [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n }\r\n</div>\r\n\r\n<!-- Item template -->\r\n<ng-template #itemTemplate>\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\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 <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, inject } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\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 implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.emit(item);\r\n }\r\n}\r\n","<!-- Divider -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper divider\" role=\"presentation\" [ngClass]=\"item.classes?.wrapper\" (click)=\"selectItem(item);\"></div>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, inject } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\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 implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.emit(item);\r\n }\r\n}\r\n","<!-- Spacer -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper\" role=\"presentation\" [ngClass]=\"item.classes?.wrapper\" (click)=\"selectItem(item);\"></div>","import { BooleanInput } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, forwardRef, inject } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } 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 { 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: [NgClass, MatIconModule, CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationDividerItemComponent, forwardRef(() => CmatVerticalNavigationGroupItemComponent),\r\n forwardRef(() => CmatVerticalNavigationCollapsableItemComponent), CmatVerticalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatVerticalNavigationGroupItemComponent implements OnInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_autoCollapse: BooleanInput;\r\n\r\n @Input() autoCollapse: boolean;\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Input() hasRouteReuseStrategy: boolean = false;\r\n @Output() readonly routeReuseStrategyEmitUrl: EventEmitter<string> = new EventEmitter<string>();\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\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}\r\n","<!-- Item wrapper -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper\" role=\"presentation\"\r\n [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\"\r\n (click)=\"selectItem(item);\">\r\n\r\n <div class=\"cmat-vertical-navigation-item\">\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\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 <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n@for (item of item.children; track trackByFn($index, item)) {\r\n<!-- Skip the hidden items -->\r\n@if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n<!-- Basic -->\r\n@if (item.type === 'basic') {\r\n<cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n</cmat-vertical-navigation-basic-item>\r\n}\r\n<!-- Collapsable -->\r\n@if (item.type === 'collapsable') {\r\n<cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\"\r\n [editState]=\"editState\" [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n</cmat-vertical-navigation-collapsable-item>\r\n}\r\n<!-- Divider -->\r\n@if (item.type === 'divider') {\r\n<cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-divider-item>\r\n}\r\n<!-- Group -->\r\n@if (item.type === 'group') {\r\n<cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"></cmat-vertical-navigation-group-item>\r\n}\r\n<!-- Spacer -->\r\n@if (item.type === 'spacer') {\r\n<cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-spacer-item>\r\n}\r\n}\r\n}","import { BooleanInput } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n forwardRef,\r\n inject,\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } 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 imports: [NgClass, MatTooltipModule, MatIconModule, CmatVerticalNavigationBasicItemComponent,\r\n forwardRef(() => CmatVerticalNavigationCollapsableItemComponent),\r\n forwardRef(() => CmatVerticalNavigationGroupItemComponent), CmatVerticalNavigationDividerItemComponent, CmatVerticalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatVerticalNavigationCollapsableItemComponent implements OnInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_autoCollapse: BooleanInput;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n\r\n @Input() autoCollapse: boolean;\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Input() hasRouteReuseStrategy: boolean = false;\r\n @Output() readonly routeReuseStrategyEmitUrl: EventEmitter<string> = new EventEmitter<string>();\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n isCollapsed: boolean = true;\r\n isExpanded: boolean = false;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _router = inject(Router);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Accessors\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Host binding for component classes\r\n */\r\n @HostBinding('class') get classList(): any {\r\n return {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-item-collapsed': this.isCollapsed,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-item-expanded': this.isExpanded\r\n };\r\n }\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // If the item has a children that has a matching url with the current url, expand...\r\n if (this._hasActiveChild(this.item, this._router.url)) {\r\n this.expand();\r\n }\r\n // Otherwise...\r\n else {\r\n // If the autoCollapse is on, collapse...\r\n if (this.autoCollapse) {\r\n this.collapse();\r\n }\r\n }\r\n\r\n // Listen for the onCollapsableItemCollapsed from the service\r\n this._cmatVerticalNavigationComponent.onCollapsableItemCollapsed\r\n .pipe(takeUntil(this._unsubscribeAll))\r\n .subscribe((collapsedItem) => {\r\n\r\n // Check if the collapsed item is null\r\n if (collapsedItem === null) {\r\n return;\r\n }\r\n\r\n // Collapse if this is a children of the collapsed item\r\n if (this._isChildrenOf(collapsedItem, this.item)) {\r\n this.collapse();\r\n }\r\n });\r\n\r\n // Listen for the onCollapsableItemExpanded from the service if the autoCollapse is on\r\n if (this.autoCollapse) {\r\n this._cmatVerticalNavigationComponent.onCollapsableItemExpanded\r\n .pipe(takeUntil(this._unsubscribeAll))\r\n .subscribe((expandedItem) => {\r\n\r\n // Check if the expanded item is null\r\n if (expandedItem === null) {\r\n return;\r\n }\r\n\r\n // Check if this is a parent of the expanded item\r\n if (this._isChildrenOf(this.item, expandedItem)) {\r\n return;\r\n }\r\n\r\n // Check if this has a children with a matching url with the current active url\r\n if (this._hasActiveChild(this.item, this._router.url)) {\r\n return;\r\n }\r\n\r\n // Check if this is the expanded item\r\n if (this.item === expandedItem) {\r\n return;\r\n }\r\n\r\n // If none of the above conditions are matched, collapse this item\r\n this.collapse();\r\n });\r\n }\r\n\r\n // Attach a listener to the NavigationEnd event\r\n this._router.events\r\n .pipe(\r\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\r\n takeUntil(this._unsubscribeAll)\r\n )\r\n .subscribe((event: NavigationEnd) => {\r\n\r\n // If the item has a children that has a matching url with the current url, expand...\r\n if (this._hasActiveChild(this.item, event.urlAfterRedirects)) {\r\n this.expand();\r\n }\r\n // Otherwise...\r\n else {\r\n // If the autoCollapse is on, collapse...\r\n if (this.autoCollapse) {\r\n this.collapse();\r\n }\r\n }\r\n });\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Collapse\r\n */\r\n collapse(): void {\r\n // Return if the item is disabled\r\n if (this.item.disabled) {\r\n return;\r\n }\r\n\r\n // Return if the item is already collapsed\r\n if (this.isCollapsed) {\r\n return;\r\n }\r\n\r\n // Collapse it\r\n this.isCollapsed = true;\r\n this.isExpanded = !this.isCollapsed;\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Execute the observable\r\n this._cmatVerticalNavigationComponent.onCollapsableItemCollapsed.next(this.item);\r\n }\r\n\r\n /**\r\n * Expand\r\n */\r\n expand(): void {\r\n // Return if the item is disabled\r\n if (this.item.disabled) {\r\n return;\r\n }\r\n\r\n // Return if the item is already expanded\r\n if (!this.isCollapsed) {\r\n return;\r\n }\r\n\r\n // Expand it\r\n this.isCollapsed = false;\r\n this.isExpanded = !this.isCollapsed;\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Execute the observable\r\n this._cmatVerticalNavigationComponent.onCollapsableItemExpanded.next(this.item);\r\n }\r\n\r\n /**\r\n * Toggle collapsable\r\n */\r\n toggleCollapsable(): void {\r\n // Toggle collapse/expand\r\n if (this.isCollapsed) {\r\n this.expand();\r\n }\r\n else {\r\n this.collapse();\r\n }\r\n }\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\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\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Private methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Check if the given item has the given url\r\n * in one of its children\r\n *\r\n * @param item\r\n * @param currentUrl\r\n * @private\r\n */\r\n private _hasActiveChild(item: CmatNavigationItem, currentUrl: string): 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\r\n // Check if the child has a link and is active\r\n if (child.link && this._router.isActive(child.link, {\r\n paths: child.exactMatch || false ? 'exact' : 'subset',\r\n queryParams: child.exactMatch || false ? 'exact' : 'subset', matrixParams: 'ignored', fragment: 'ignored'\r\n })) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Check if this is a children\r\n * of the given item\r\n *\r\n * @param parent\r\n * @param item\r\n * @private\r\n */\r\n private _isChildrenOf(parent: CmatNavigationItem, item: CmatNavigationItem): 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}\r\n","<div class=\"cmat-vertical-navigation-item-wrapper\" [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\"\r\n [ngClass]=\"item.classes?.wrapper\">\r\n\r\n <div class=\"cmat-vertical-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-vertical-navigation-item-disabled': item.disabled}\" [matTooltip]=\"item.tooltip || ''\"\r\n (click)=\"toggleCollapsable();selectItem(item);\">\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\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 <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- Arrow -->\r\n <mat-icon class=\"cmat-vertical-navigation-item-arrow icon-size-4\" [svgIcon]=\"'heroicons_outline:chevron-right'\">\r\n </mat-icon>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n@if (!isCollapsed) {\r\n<div animate.leave=\"expand-collapse-animation-leaving\"\r\n class=\"cmat-vertical-navigation-item-children expand-collapse-animation\">\r\n <div>\r\n @for (item of item.children; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n <!-- Collapsable -->\r\n @if (item.type === 'collapsable') {\r\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\"\r\n [editState]=\"editState\" [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\"\r\n (editSelectedItemChanged)=\"selectItem($event)\" (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-vertical-navigation-collapsable-item>\r\n }\r\n <!-- Divider -->\r\n @if (item.type === 'divider') {\r\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n <!-- Group -->\r\n @if (item.type === 'group') {\r\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"></cmat-vertical-navigation-group-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n </div>\r\n</div>\r\n}","import { BooleanInput } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, inject } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } 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 { 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: [NgClass, MatTooltipModule, MatIconModule, CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationCollapsableItemComponent, CmatVerticalNavigationDividerItemComponent,\r\n CmatVerticalNavigationGroupItemComponent, CmatVerticalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatVerticalNavigationAsideItemComponent implements OnChanges, OnInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_autoCollapse: BooleanInput;\r\n static ngAcceptInputType_skipChildren: BooleanInput;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n\r\n @Input() activeItemId: string | null;\r\n @Input() autoCollapse: boolean;\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() skipChildren: boolean;\r\n @Input() editState: boolean = false;\r\n @Input() hasRouteReuseStrategy: boolean = false;\r\n @Output() readonly routeReuseStrategyEmitUrl: EventEmitter<string> = new EventEmitter<string>();\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n active: boolean = false;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _router = inject(Router);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On changes\r\n *\r\n * @param changes\r\n */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // Active item id\r\n if ('activeItemId' in changes) {\r\n // Mark if active\r\n this._markIfActive(this._router.url);\r\n }\r\n }\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Mark if active\r\n this._markIfActive(this._router.url);\r\n\r\n // Attach a listener to the NavigationEnd event\r\n this._router.events\r\n .pipe(\r\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\r\n takeUntil(this._unsubscribeAll)\r\n )\r\n .subscribe((event: NavigationEnd) => {\r\n\r\n // Mark if active\r\n this._markIfActive(event.urlAfterRedirects);\r\n });\r\n\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\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 // -----------------------------------------------------------------------------------------------------\r\n // @ Private methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Check if the given item has the given url\r\n * in one of its children\r\n *\r\n * @param item\r\n * @param currentUrl\r\n * @private\r\n */\r\n private _hasActiveChild(item: CmatNavigationItem, currentUrl: string): 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\r\n // Skip items other than 'basic'\r\n if (child.type !== 'basic') {\r\n continue;\r\n }\r\n\r\n // Check if the child has a link and is active\r\n if (child.link && this._router.isActive(child.link, {\r\n paths: child.exactMatch || false ? 'exact' : 'subset',\r\n queryParams: child.exactMatch || false ? 'exact' : 'subset', fragment: 'ignored', matrixParams: 'ignored'\r\n })) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Decide and mark if the item is active\r\n *\r\n * @private\r\n */\r\n private _markIfActive(currentUrl: string): void {\r\n // Check if the activeItemId is equals to this item id\r\n this.active = this.activeItemId === this.item.id;\r\n\r\n // If the aside has a children that is active,\r\n // always mark it as active\r\n if (this._hasActiveChild(this.item, currentUrl)) {\r\n this.active = true;\r\n }\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n}\r\n","<div class=\"cmat-vertical-navigation-item-wrapper\" role=\"presentation\"\r\n [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\" (click)=\"selectItem(item);\">\r\n\r\n <div class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'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}\" [matTooltip]=\"item.tooltip || ''\">\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\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 <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\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 <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (editSelectedItemChanged)=\"selectItem($event)\" (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n <!-- Collapsable -->\r\n @if (item.type === 'collapsable') {\r\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" [autoCollapse]=\"autoCollapse\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-collapsable-item>\r\n }\r\n <!-- Divider -->\r\n @if (item.type === 'divider') {\r\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n <!-- Group -->\r\n @if (item.type === 'group') {\r\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-group-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n </div>\r\n}","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnChanges, OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewChild, ViewEncapsulation, inject } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { ReplaySubject, Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatNavigationService } from '../navigation.service';\r\nimport { CmatNavigationItem, CmatVerticalNavigationAppearance, CmatVerticalNavigationMode, CmatVerticalNavigationPosition } 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\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 imports: [CmatVerticalNavigationAsideItemComponent, CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationCollapsableItemComponent, CmatVerticalNavigationDividerItemComponent,\r\n CmatVerticalNavigationGroupItemComponent, CmatVerticalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatVerticalNavigationComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_inner: BooleanInput;\r\n static ngAcceptInputType_opened: BooleanInput;\r\n static ngAcceptInputType_transparentOverlay: BooleanInput;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n\r\n @Input() appearance: CmatVerticalNavigationAppearance = 'default';\r\n @Input() autoCollapse: boolean = true;\r\n @Input() editState: boolean = false;\r\n @Input() inner: boolean = false;\r\n @Input() mode: CmatVerticalNavigationMode = 'side';\r\n @Input() name: string = inject(CmatUtilsService).randomId();\r\n @Input() navigation: CmatNavigationItem[];\r\n @Input() opened: boolean = true;\r\n @Input() position: CmatVerticalNavigationPosition = 'left';\r\n @Input() transparentOverlay: boolean = false;\r\n @Input() hasRouteReuseStrategy: boolean = false;\r\n @Output() readonly routeReuseStrategyEmitUrl: EventEmitter<string> = new EventEmitter<string>();\r\n @Output() readonly appearanceChanged: EventEmitter<CmatVerticalNavigationAppearance> = new EventEmitter<CmatVerticalNavigationAppearance>();\r\n @Output() readonly modeChanged: EventEmitter<CmatVerticalNavigationMode> = new EventEmitter<CmatVerticalNavigationMode>();\r\n @Output() readonly openedChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n @Output() readonly positionChanged: EventEmitter<CmatVerticalNavigationPosition> = new EventEmitter<CmatVerticalNavigationPosition>();\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n @ViewChild('navigationContent') private _navigationContentEl: ElementRef<HTMLDivElement>;\r\n\r\n activeAsideItemId: string | null = null;\r\n onCollapsableItemCollapsed: ReplaySubject<CmatNavigationItem> = new ReplaySubject<CmatNavigationItem>(1);\r\n onCollapsableItemExpanded: ReplaySubject<CmatNavigationItem> = new ReplaySubject<CmatNavigationItem>(1);\r\n onRefreshed: ReplaySubject<boolean> = new ReplaySubject<boolean>(1);\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _elementRef = inject(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\r\n private _animationsEnabled: boolean = false;\r\n private _asideOverlay: HTMLElement | null;\r\n private readonly _handleAsideOverlayClick: any;\r\n private readonly _handleOverlayClick: any;\r\n private _hovered: boolean = false;\r\n private _overlay: HTMLElement | null;\r\n private _scrollStrategy: ScrollStrategy = this._scrollStrategyOptions.block();\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n\r\n\r\n constructor() {\r\n this._handleAsideOverlayClick = (): void => {\r\n this.closeAside();\r\n };\r\n this._handleOverlayClick = (): void => {\r\n this.close();\r\n };\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Accessors\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Host binding for component classes\r\n */\r\n @HostBinding('class') get classList(): any {\r\n return {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-animations-enabled': this._animationsEnabled,\r\n [`cmat-vertical-navigation-appearance-${this.appearance}`]: true,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-hover': this._hovered,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-inner': this.inner,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-mode-over': this.mode === 'over',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-mode-side': this.mode === 'side',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-opened': this.opened,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-position-left': this.position === 'left',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-position-right': this.position === 'right'\r\n };\r\n }\r\n\r\n /**\r\n * Host binding for component inline styles\r\n */\r\n @HostBinding('style') get styleList(): any {\r\n return {\r\n 'visibility': this.opened ? 'visible' : 'hidden'\r\n };\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Decorated methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On mouseenter\r\n *\r\n * @private\r\n */\r\n @HostListener('mouseenter')\r\n onMouseenter(): void {\r\n // Enable the animations\r\n this._enableAnimations();\r\n\r\n // Set the hovered\r\n this._hovered = true;\r\n }\r\n\r\n /**\r\n * On mouseleave\r\n *\r\n * @private\r\n */\r\n @HostListener('mouseleave')\r\n onMouseleave(): void {\r\n // Enable the animations\r\n this._enableAnimations();\r\n\r\n // Set the hovered\r\n this._hovered = false;\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On changes\r\n *\r\n * @param changes\r\n */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // Appearance\r\n if ('appearance' in changes) {\r\n // Execute the observable\r\n this.appearanceChanged.emit(changes['appearance'].currentValue);\r\n }\r\n\r\n // Inner\r\n if ('inner' in changes) {\r\n // Coerce the value to a boolean\r\n this.inner = coerceBooleanProperty(changes['inner'].currentValue);\r\n }\r\n\r\n // Mode\r\n if ('mode' in changes) {\r\n // Get the previous and current values\r\n const currentMode = changes['mode'].currentValue;\r\n const previousMode = changes['mode'].previousValue;\r\n\r\n // Disable the animations\r\n this._disableAnimations();\r\n\r\n // If the mode changes: 'over -> side'\r\n if (previousMode === 'over' && currentMode === 'side') {\r\n // Hide the overlay\r\n this._hideOverlay();\r\n }\r\n\r\n // If the mode changes: 'side -> over'\r\n if (previousMode === 'side' && currentMode === 'over') {\r\n // Close the aside\r\n this.closeAside();\r\n\r\n // If the navigation is opened\r\n if (this.opened) {\r\n // Show the overlay\r\n this._showOverlay();\r\n }\r\n }\r\n\r\n // Execute the observable\r\n this.modeChanged.emit(currentMode);\r\n\r\n // Enable the animations after a delay\r\n // The delay must be bigger than the current transition-duration\r\n // to make sure nothing will be animated while the mode changing\r\n setTimeout(() => {\r\n this._enableAnimations();\r\n }, 500);\r\n }\r\n\r\n // Navigation\r\n if ('navigation' in changes) {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n // Opened\r\n if ('opened' in changes) {\r\n // Coerce the value to a boolean\r\n this.opened = coerceBooleanProperty(changes['opened'].currentValue);\r\n\r\n // Open/close the navigation\r\n this._toggleOpened(this.opened);\r\n }\r\n\r\n // Position\r\n if ('position' in changes) {\r\n // Execute the observable\r\n this.positionChanged.emit(changes['position'].currentValue);\r\n }\r\n\r\n // Transparent overlay\r\n if ('transparentOverlay' in changes) {\r\n // Coerce the value to a boolean\r\n this.transparentOverlay = coerceBooleanProperty(changes['transparentOverlay'].currentValue);\r\n }\r\n }\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Make sure the name input is not an empty string\r\n if (this.name === '') {\r\n this.name = inject(CmatUtilsService).randomId();\r\n }\r\n\r\n // Register the navigation component\r\n this._cmatNavigationService.registerComponent(this.name, this);\r\n\r\n // Subscribe to the 'NavigationEnd' event\r\n this._router.events\r\n .pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n takeUntil(this._unsubscribeAll)\r\n )\r\n .subscribe(() => {\r\n\r\n // If the mode is 'over' and the navigation is opened...\r\n if (this.mode === 'over' && this.opened) {\r\n // Close the navigation\r\n this.close();\r\n }\r\n\r\n // If the mode is 'side' and the aside is active...\r\n if (this.mode === 'side' && this.activeAsideItemId) {\r\n // Close the aside\r\n this.closeAside();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * After view init\r\n */\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n\r\n // Return if 'navigation content' element does not exist\r\n if (!this._navigationContentEl) {\r\n return;\r\n }\r\n\r\n const activeItem = this._navigationContentEl.nativeElement.querySelector('.cmat-vertical-navigation-item-active')!;\r\n // If the active item exists, scroll it into view\r\n if (activeItem) {\r\n if (activeItem.getBoundingClientRect().bottom\r\n <= (this._navigationContentEl.nativeElement.getBoundingClientRect().bottom - Math.abs(-120))) {\r\n return;\r\n }\r\n\r\n this._navigationContentEl.nativeElement.scrollTo({\r\n top: activeItem.getBoundingClientRect().top -\r\n this._navigationContentEl.nativeElement.getBoundingClientRect().top - 120, behavior: 'smooth'\r\n });\r\n\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Forcefully close the navigation and aside in case they are opened\r\n this.close();\r\n this.closeAside();\r\n\r\n // Deregister the navigation component from the registry\r\n this._cmatNavigationService.deregisterComponent(this.name);\r\n\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Refresh the component to apply the changes\r\n */\r\n refresh(): void {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Execute the observable\r\n this.onRefreshed.next(true);\r\n }\r\n\r\n /**\r\n * Open the navigation\r\n */\r\n open(): void {\r\n // Return if the navigation is already open\r\n if (this.opened) {\r\n return;\r\n }\r\n\r\n // Set the opened\r\n this._toggleOpened(true);\r\n }\r\n\r\n /**\r\n * Close the navigation\r\n */\r\n close(): void {\r\n // Return if the navigation is already closed\r\n if (!this.opened) {\r\n return;\r\n }\r\n\r\n // Close the aside\r\n this.closeAside();\r\n\r\n // Set the opened\r\n this._toggleOpened(false);\r\n }\r\n\r\n /**\r\n * Toggle the navigation\r\n */\r\n toggle(): void {\r\n // Toggle\r\n if (this.opened) {\r\n this.close();\r\n }\r\n else {\r\n this.open();\r\n }\r\n }\r\n\r\n /**\r\n * Open the aside\r\n *\r\n * @param item\r\n */\r\n openAside(item: CmatNavigationItem): void {\r\n // Return if the item is disabled\r\n if (item.disabled || !item.id) {\r\n return;\r\n }\r\n\r\n // Open\r\n this.activeAsideItemId = item.id;\r\n\r\n // Show the aside overlay\r\n this._showAsideOverlay();\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Close the aside\r\n */\r\n closeAside(): void {\r\n // Close\r\n this.activeAsideItemId = null;\r\n\r\n // Hide the aside overlay\r\n this._hideAsideOverlay();\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Toggle the aside\r\n *\r\n * @param item\r\n */\r\n toggleAside(item: CmatNavigationItem): void {\r\n // Toggle\r\n if (this.activeAsideItemId === item.id) {\r\n this.closeAside();\r\n }\r\n else {\r\n this.openAside(item);\r\n }\r\n }\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\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 // @ Private methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Enable the animations\r\n *\r\n * @private\r\n */\r\n private _enableAnimations(): void {\r\n // Return if the animations are already enabled\r\n if (this._animationsEnabled) {\r\n return;\r\n }\r\n\r\n // Enable the animations\r\n this._animationsEnabled = true;\r\n }\r\n\r\n /**\r\n * Disable the animations\r\n *\r\n * @private\r\n */\r\n private _disableAnimations(): void {\r\n // Return if the animations are already disabled\r\n if (!this._animationsEnabled) {\r\n return;\r\n }\r\n\r\n // Disable the animations\r\n this._animationsEnabled = false;\r\n }\r\n\r\n /**\r\n * Show the overlay\r\n *\r\n * @private\r\n */\r\n private _showOverlay(): void {\r\n // Return if there is already an overlay\r\n if (this._asideOverlay) {\r\n return;\r\n }\r\n\r\n // Create the overlay element\r\n this._overlay = this._renderer2.createElement('div');\r\n\r\n if (this._overlay) {\r\n // Add a class to the overlay element\r\n this._overlay.classList.add('cmat-vertical-navigation-overlay');\r\n\r\n // Add a class depending on the transparentOverlay option\r\n if (this.transparentOverlay) {\r\n this._overlay.classList.add('cmat-vertical-navigation-overlay-transparent');\r\n }\r\n\r\n // Append the overlay to the parent of the navigation\r\n this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._overlay);\r\n\r\n // Enable block scroll strategy\r\n this._scrollStrategy.enable();\r\n\r\n setTimeout(() => {\r\n this._overlay?.classList.add('cmat-vertical-navigation-overlay-enter');\r\n }, 10);\r\n\r\n // Add an event listener to the overlay\r\n this._overlay.addEventListener('click', this._handleOverlayClick);\r\n }\r\n }\r\n\r\n /**\r\n * Hide the overlay\r\n *\r\n * @private\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 this._overlay.classList.add('cmat-vertical-navigation-overlay-leave');\r\n\r\n const handleAnimationEnd = (event: AnimationEvent): void => {\r\n if (event.animationName === 'vertical-navigation-overlay-leave') {\r\n this._overlay?.removeEventListener('animationend', handleAnimationEnd);\r\n\r\n if (this._overlay) {\r\n this._overlay.removeEventListener('click', this._handleOverlayClick);\r\n\r\n this._overlay.parentNode?.removeChild(this._overlay);\r\n this._overlay = null;\r\n }\r\n\r\n this._scrollStrategy.disable();\r\n }\r\n };\r\n\r\n this._overlay.addEventListener('animationend', handleAnimationEnd);\r\n }\r\n\r\n /**\r\n * Show the aside overlay\r\n *\r\n * @private\r\n */\r\n private _showAsideOverlay(): void {\r\n // Return if there is already an overlay\r\n if (this._asideOverlay) {\r\n return;\r\n }\r\n\r\n // Create the aside overlay element\r\n this._asideOverlay = this._renderer2.createElement('div');\r\n\r\n if (this._asideOverlay) {\r\n // Add a class to the aside overlay element\r\n this._asideOverlay.classList.add('cmat-vertical-navigation-aside-overlay');\r\n\r\n // Append the aside overlay to the parent of the navigation\r\n this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._asideOverlay);\r\n\r\n setTimeout(() => {\r\n this._overlay?.classList.add('cmat-vertical-navigation-aside-overlay-enter');\r\n }, 10);\r\n\r\n // Add an event listener to the aside overlay\r\n this._asideOverlay.addEventListener('click', this._handleAsideOverlayClick);\r\n }\r\n }\r\n\r\n /**\r\n * Hide the aside overlay\r\n *\r\n * @private\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('cmat-vertical-navigation-aside-overlay-enter');\r\n this._asideOverlay.classList.add('cmat-vertical-navigation-aside-overlay-leave');\r\n\r\n const handleAnimationEnd = (event: AnimationEvent): void => {\r\n if (event.animationName === 'vertical-navigation-overlay-leave') {\r\n this._asideOverlay?.removeEventListener('animationend', handleAnimationEnd);\r\n\r\n if (this._asideOverlay) {\r\n this._asideOverlay.removeEventListener('click', this._handleOverlayClick);\r\n\r\n this._asideOverlay.parentNode?.removeChild(this._asideOverlay);\r\n this._asideOverlay = null;\r\n }\r\n }\r\n };\r\n\r\n this._asideOverlay.addEventListener('animationend', handleAnimationEnd); \r\n }\r\n\r\n /**\r\n * Open/close the navigation\r\n *\r\n * @param open\r\n * @private\r\n */\r\n private _toggleOpened(open: boolean): void {\r\n // Set the opened\r\n this.opened = open;\r\n\r\n // Enable the animations\r\n this._enableAnimations();\r\n\r\n // If the navigation opened, and the mode\r\n // is 'over', show the overlay\r\n if (this.mode === 'over') {\r\n if (this.opened) {\r\n this._showOverlay();\r\n }\r\n else {\r\n this._hideOverlay();\r\n }\r\n }\r\n\r\n // Execute the observable\r\n this.openedChanged.emit(open);\r\n }\r\n}\r\n","<div class=\"cmat-vertical-navigation-wrapper\">\r\n\r\n <!-- Header -->\r\n <div class=\"cmat-vertical-navigation-header\">\r\n <ng-content select=\"[cmatVerticalNavigationHeader]\"></ng-content>\r\n </div>\r\n\r\n <!-- Content -->\r\n <div #navigationContent class=\"cmat-vertical-navigation-content py-2 overflow-y-auto scrollbar-custom\">\r\n\r\n <!-- Content header -->\r\n <div class=\"cmat-vertical-navigation-content-header\">\r\n <ng-content select=\"[cmatVerticalNavigationContentHeader]\"></ng-content>\r\n </div>\r\n\r\n <!-- Items -->\r\n @for (item of navigation; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Aside -->\r\n @if (item.type === 'aside') {\r\n <cmat-vertical-navigation-aside-item [item]=\"item\" [name]=\"name\" [activeItemId]=\"activeAsideItemId\"\r\n [autoCollapse]=\"autoCollapse\" [skipChildren]=\"true\" [editState]=\"editState\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (click)=\"toggleAside(item)\"\r\n (editSelectedItemChanged)=\"selectItem($event)\" (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-vertical-navigation-aside-item>\r\n }\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n <!-- Collapsable -->\r\n @if (item.type === 'collapsable') {\r\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n [autoCollapse]=\"autoCollapse\" [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"></cmat-vertical-navigation-collapsable-item>\r\n }\r\n <!-- Divider -->\r\n @if (item.type === 'divider') {\r\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n <!-- Group -->\r\n @if (item.type === 'group') {\r\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\"\r\n [editState]=\"editState\" [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\"\r\n (editSelectedItemChanged)=\"selectItem($event)\" (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-vertical-navigation-group-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n\r\n <!-- Content footer -->\r\n <div class=\"cmat-vertical-navigation-content-footer\">\r\n <ng-content select=\"[cmatVerticalNavigationContentFooter]\"></ng-content>\r\n </div>\r\n\r\n </div>\r\n <!-- Footer -->\r\n <div class=\"cmat-vertical-navigation-footer\">\r\n <ng-content select=\"[cmatVerticalNavigationFooter]\"></ng-content>\r\n </div>\r\n\r\n</div>\r\n\r\n<!-- Aside -->\r\n@if (activeAsideItemId) {\r\n<div class=\"cmat-vertical-navigation-aside-wrapper overflow-y-auto scrollbar-custom\"\r\n [animate.enter]=\"position === 'left'?'fade-in-left-animation':'fade-in-right-animation'\"\r\n [animate.leave]=\"position === 'left'?'fade-out-left-animation':'fade-out-right-animation'\">\r\n <!-- Items -->\r\n @for (item of navigation; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Aside -->\r\n @if (item.type === 'aside' && item.id === activeAsideItemId) {\r\n <cmat-vertical-navigation-aside-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-vertical-navigation-aside-item>\r\n }\r\n }\r\n }\r\n</div>\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?: any;\r\n permission?: any;\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 _componentRegistry: Map<string, any> = new Map<string, any>();\r\n private _navigationStore: Map<string, CmatNavigationItem[]> = new Map<string, any>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Register navigation component\r\n *\r\n * @param name\r\n * @param component\r\n */\r\n registerComponent(name: string, component: any): void {\r\n this._componentRegistry.set(name, component);\r\n }\r\n\r\n /**\r\n * Deregister navigation component\r\n *\r\n * @param name\r\n */\r\n deregisterComponent(name: string): void {\r\n this._componentRegistry.delete(name);\r\n }\r\n\r\n /**\r\n * Get navigation component from the registry\r\n *\r\n * @param name\r\n */\r\n getComponent<T>(name: string): T {\r\n return this._componentRegistry.get(name);\r\n }\r\n\r\n /**\r\n * Store the given navigation with the given key\r\n *\r\n * @param key\r\n * @param navigation\r\n */\r\n storeNavigation(key: string, navigation: CmatNavigationItem[]): void {\r\n // Add to the store\r\n this._navigationStore.set(key, navigation);\r\n }\r\n\r\n /**\r\n * Get navigation from storage by key\r\n *\r\n * @param key\r\n */\r\n getNavigation(key: string): CmatNavigationItem[] {\r\n return this._navigationStore.get(key) ?? [];\r\n }\r\n\r\n /**\r\n * Delete the navigation from the storage\r\n *\r\n * @param key\r\n */\r\n deleteNavigation(key: string): void {\r\n // Check if the navigation exists\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 // Delete from the storage\r\n this._navigationStore.delete(key);\r\n }\r\n\r\n /**\r\n * Utility function that returns a flattened\r\n * version of the given navigation array\r\n *\r\n * @param navigation\r\n * @param flatNavigation\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\r\n /**\r\n * Utility function that returns the item\r\n * with the given id from given navigation\r\n *\r\n * @param id\r\n * @param navigation\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\r\n /**\r\n * Utility function that returns the item's parent\r\n * with the given id from given navigation\r\n *\r\n * @param id\r\n * @param navigation\r\n * @param parent\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 { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, inject } 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 { IsActiveMatchOptions, Router, RouterLink, RouterLinkActive } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatHorizontalNavigationComponent } from '../../../horizontal/horizontal.component';\r\nimport { CmatNavigationService } from '../../../navigation.service';\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: [NgClass, RouterLink, RouterLinkActive, MatTooltipModule, NgTemplateOutlet, MatMenuModule, MatIconModule]\r\n})\r\nexport class CmatHorizontalNavigationBasicItemComponent implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() hasRouteReuseStrategy: boolean;\r\n @Output() readonly routeReuseStrategyEmitUrl: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n isActiveMatchOptions: IsActiveMatchOptions;\r\n\r\n private _router = inject(Router);\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatUtilsService = inject(CmatUtilsService);\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor() {\r\n // Set the equivalent of {exact: false} as default for active match options.\r\n // We are not assigning the item.isActiveMatchOptions directly to the\r\n // [routerLinkActiveOptions] because if it's \"undefined\" initially, the router\r\n // will throw an error and stop working.\r\n this.isActiveMatchOptions = this._cmatUtilsService.subsetMatchOptions;\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Set the \"isActiveMatchOptions\" either from item's\r\n // \"isActiveMatchOptions\" or the equivalent form of\r\n // item's \"exactMatch\" option\r\n this.isActiveMatchOptions =\r\n this.item.isActiveMatchOptions ?? this.item.exactMatch\r\n ? this._cmatUtilsService.exactMatchOptions\r\n : this._cmatUtilsService.subsetMatchOptions;\r\n\r\n // Get the parent navigation component\r\n this._cmatHorizontalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatHorizontalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n\r\n this._router.events.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n isRouteActive(link: string): boolean {\r\n return this._router.isActive(link, this.isActiveMatchOptions);\r\n }\r\n\r\n goToRouterLink(link: string): void {\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}\r\n","<!-- Item wrapper -->\r\n<div class=\"cmat-horizontal-navigation-item-wrapper\"\r\n [class.cmat-horizontal-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\">\r\n\r\n <!-- Item with an internal link -->\r\n @if (item.link && !item.externalLink && !item.function && !item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active,'cmat-horizontal-navigation-item-active':isRouteActive(item.link)}\"\r\n [matTooltip]=\"item.tooltip || ''\" (click)=\"goToRouterLink(item.link)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item with an external link -->\r\n @if (item.link && item.externalLink && !item.function && !item.disabled) {\r\n <a class=\"cmat-horizontal-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with a function -->\r\n @if (!item.link && item.function && !item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\r\n (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item with an internal link and function -->\r\n @if (item.link && !item.externalLink && item.function && !item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active,'cmat-horizontal-navigation-item-active':isRouteActive(item.link)}\"\r\n [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item);goToRouterLink(item.link)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item with an external link and function -->\r\n @if (item.link && item.externalLink && item.function && !item.disabled) {\r\n <a class=\"cmat-horizontal-navigation-item\" mat-menu-item [href]=\"item.link\" [target]=\"item.target || '_blank'\"\r\n [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with a no link and no function -->\r\n @if (!item.link && !item.function && !item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item\"\r\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item is disabled -->\r\n @if (item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item cmat-horizontal-navigation-item-disabled\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n</div>\r\n\r\n<!-- Item template -->\r\n<ng-template #itemTemplate>\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-horizontal-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\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 <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-horizontal-navigation-item-badge\">\r\n <div class=\"cmat-horizontal-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n\r\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatHorizontalNavigationComponent } from '../../../horizontal/horizontal.component';\r\nimport { CmatNavigationService } from '../../../navigation.service';\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 implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatHorizontalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatHorizontalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n}\r\n","<!-- Divider -->\r\n<div class=\"cmat-horizontal-navigation-item-wrapper divider\" [ngClass]=\"item.classes?.wrapper\"></div>","import { BooleanInput } from '@angular/cdk/coercion';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild, forwardRef, inject } 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 { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatHorizontalNavigationComponent } from '../../../horizontal/horizontal.component';\r\nimport { CmatNavigationService } from '../../../navigation.service';\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: [NgClass, MatMenuModule, NgTemplateOutlet, CmatHorizontalNavigationBasicItemComponent,\r\n forwardRef(() => CmatHorizontalNavigationBranchItemComponent), CmatHorizontalNavigationDividerItemComponent, MatTooltipModule, MatIconModule]\r\n})\r\nexport class CmatHorizontalNavigationBranchItemComponent implements OnInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_child: BooleanInput;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n\r\n @Input() child: boolean = false;\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() hasRouteReuseStrategy: boolean;\r\n @Output() readonly routeReuseStrategyEmitUrl: EventEmitter<string> = new EventEmitter<string>();\r\n @ViewChild('matMenu', { static: true }) matMenu: MatMenu;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatHorizontalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatHorizontalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Trigger the change detection\r\n */\r\n triggerChangeDetection(): void {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\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","@if (!child) {\r\n<div #trigger=\"matMenuTrigger\" [ngClass]=\"{'cmat-horizontal-navigation-menu-active': trigger.menuOpen,\r\n 'cmat-horizontal-navigation-menu-active-forced': item.active}\" [matMenuTriggerFor]=\"matMenu\"\r\n (menuOpened)=\"triggerChangeDetection()\" (onMenuClose)=\"triggerChangeDetection()\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\r\n</div>\r\n}\r\n\r\n<mat-menu #matMenu=\"matMenu\" class=\"cmat-horizontal-navigation-menu-panel\" [overlapTrigger]=\"false\">\r\n\r\n @for (item of item.children; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <div class=\"cmat-horizontal-navigation-menu-item\" mat-menu-item [disabled]=\"item.disabled\">\r\n <cmat-horizontal-navigation-basic-item [item]=\"item\" [name]=\"name\" [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-horizontal-navigation-basic-item>\r\n </div>\r\n }\r\n <!-- Branch: aside, collapsable, group -->\r\n @if (item.type === 'aside' || item.type === 'collapsable' || item.type === 'group') {\r\n <div class=\"cmat-horizontal-navigation-menu-item\" mat-menu-item [disabled]=\"item.disabled\"\r\n [matMenuTriggerFor]=\"branch.matMenu\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\r\n <cmat-horizontal-navigation-branch-item #branch [child]=\"true\" [item]=\"item\" [name]=\"name\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-horizontal-navigation-branch-item>\r\n </div>\r\n }\r\n <!-- Divider -->\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 [item]=\"item\" [name]=\"name\">\r\n </cmat-horizontal-navigation-divider-item>\r\n </div>\r\n }\r\n }\r\n }\r\n\r\n</mat-menu>\r\n\r\n<!-- Item template -->\r\n<ng-template #itemTemplate let-item>\r\n\r\n <div class=\"cmat-horizontal-navigation-item-wrapper\"\r\n [class.cmat-horizontal-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\">\r\n\r\n <div class=\"cmat-horizontal-navigation-item\" [ngClass]=\"{'cmat-horizontal-navigation-item-disabled': item.disabled,\r\n 'cmat-horizontal-navigation-item-active-forced': item.active}\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-horizontal-navigation-item-icon\" [ngClass]=\"item.classes?.icon\"\r\n [svgIcon]=\"item.icon\"></mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\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 <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-horizontal-navigation-item-badge\">\r\n <div class=\"cmat-horizontal-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatHorizontalNavigationComponent } from '../../../horizontal/horizontal.component';\r\nimport { CmatNavigationService } from '../../../navigation.service';\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 implements OnInit, OnDestroy {\r\n\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatHorizontalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatHorizontalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n}\r\n","<!-- Spacer -->\r\n<div class=\"cmat-horizontal-navigation-item-wrapper\" [ngClass]=\"item.classes?.wrapper\"></div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewEncapsulation, inject } from '@angular/core';\r\nimport { ReplaySubject, Subject } from 'rxjs';\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\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: [CmatHorizontalNavigationBasicItemComponent, CmatHorizontalNavigationBranchItemComponent, CmatHorizontalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatHorizontalNavigationComponent implements OnChanges, OnInit, OnDestroy {\r\n @Input() name: string = inject(CmatUtilsService).randomId();\r\n @Input() navigation: CmatNavigationItem[];\r\n @Input() hasRouteReuseStrategy:boolean;\r\n @Output() readonly routeReuseStrategyEmitUrl: EventEmitter<string> = new EventEmitter<string>();\r\n onRefreshed: ReplaySubject<boolean> = new ReplaySubject<boolean>(1);\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // Navigation\r\n if ('navigation' in changes) {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n // Make sure the name input is not an empty string\r\n if (this.name === '') {\r\n this.name = inject(CmatUtilsService).randomId();\r\n }\r\n\r\n // Register the navigation component\r\n this._cmatNavigationService.registerComponent(this.name, this);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // Deregister the navigation component from the registry\r\n this._cmatNavigationService.deregisterComponent(this.name);\r\n\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n\r\n refresh(): void {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Execute the observable\r\n this.onRefreshed.next(true);\r\n }\r\n\r\n trackByFn(index: number, item: any): any {\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","<div class=\"cmat-horizontal-navigation-wrapper\">\r\n\r\n @for (item of navigation; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-horizontal-navigation-basic-item class=\"cmat-horizontal-navigation-menu-item\" [item]=\"item\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" [name]=\"name\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"></cmat-horizontal-navigation-basic-item>\r\n }\r\n <!-- Branch: aside, collapsable, group -->\r\n @if (item.type === 'aside' || item.type === 'collapsable' || item.type === 'group') {\r\n <cmat-horizontal-navigation-branch-item class=\"cmat-horizontal-navigation-menu-item\" [item]=\"item\" [name]=\"name\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"></cmat-horizontal-navigation-branch-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-horizontal-navigation-spacer-item class=\"cmat-horizontal-navigation-menu-item\" [item]=\"item\"\r\n [name]=\"name\"></cmat-horizontal-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n\r\n</div>","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, inject } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { IsActiveMatchOptions, Router, RouterLink, RouterLinkActive } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\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: [NgClass, RouterLink, RouterLinkActive, MatTooltipModule, NgTemplateOutlet, MatIconModule]\r\n})\r\nexport class CmatVerticalNavigationBasicItemComponent implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Input() hasRouteReuseStrategy: boolean = false;\r\n @Output() readonly routeReuseStrategyEmitUrl: EventEmitter<string> = new EventEmitter<string>();\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n isActiveMatchOptions: IsActiveMatchOptions;\r\n\r\n private _router = inject(Router);\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatUtilsService = inject(CmatUtilsService);\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n constructor() {\r\n\r\n this.isActiveMatchOptions = this._cmatUtilsService.subsetMatchOptions;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.isActiveMatchOptions =\r\n this.item.isActiveMatchOptions ?? this.item.exactMatch\r\n ? this._cmatUtilsService.exactMatchOptions\r\n : this._cmatUtilsService.subsetMatchOptions;\r\n\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n\r\n this._router.events.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\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 return this._router.isActive(link, this.isActiveMatchOptions);\r\n }\r\n\r\n goToRouterLink(link: string): void {\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}\r\n","<!-- Item wrapper -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper\" [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\"\r\n [ngClass]=\"item.classes?.wrapper\">\r\n\r\n @if(editState){\r\n <div class=\"cmat-vertical-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\r\n (click)=\"selectItem()\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }@else{\r\n <!-- Item with an internal link -->\r\n @if (item.link && !item.externalLink && !item.function && !item.disabled) {\r\n <a class=\"cmat-vertical-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active,'cmat-vertical-navigation-item-active': isRouteActive(item.link)}\"\r\n [matTooltip]=\"item.tooltip || ''\" (click)=\"goToRouterLink(item.link)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with an external link -->\r\n @if (item.link && item.externalLink && !item.function && !item.disabled) {\r\n <a class=\"cmat-vertical-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with a function -->\r\n @if (!item.link && item.function && !item.disabled) {\r\n <div class=\"cmat-vertical-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\r\n (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item with an internal link and function -->\r\n @if (item.link && !item.externalLink && item.function && !item.disabled) {\r\n <a class=\"cmat-vertical-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active,'cmat-vertical-navigation-item-active': isRouteActive(item.link)}\"\r\n [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item);goToRouterLink(item.link)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with an external link and function -->\r\n @if (item.link && item.externalLink && item.function && !item.disabled) {\r\n <a class=\"cmat-vertical-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\r\n [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with a no link and no function -->\r\n @if (!item.link && !item.function && !item.disabled) {\r\n <div class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item is disabled -->\r\n @if (item.disabled) {\r\n <div class=\"cmat-vertical-navigation-item cmat-vertical-navigation-item-disabled\" [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n }\r\n</div>\r\n\r\n<!-- Item template -->\r\n<ng-template #itemTemplate>\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\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 <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, inject } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\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 implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.emit(item);\r\n }\r\n}\r\n","<!-- Divider -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper divider\" role=\"presentation\" [ngClass]=\"item.classes?.wrapper\" (click)=\"selectItem(item);\"></div>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, inject } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\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 implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.emit(item);\r\n }\r\n}\r\n","<!-- Spacer -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper\" role=\"presentation\" [ngClass]=\"item.classes?.wrapper\" (click)=\"selectItem(item);\"></div>","import { BooleanInput } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, forwardRef, inject } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } 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 { 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: [NgClass, MatIconModule, CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationDividerItemComponent, forwardRef(() => CmatVerticalNavigationGroupItemComponent),\r\n forwardRef(() => CmatVerticalNavigationCollapsableItemComponent), CmatVerticalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatVerticalNavigationGroupItemComponent implements OnInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_autoCollapse: BooleanInput;\r\n\r\n @Input() autoCollapse: boolean;\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Input() hasRouteReuseStrategy: boolean = false;\r\n @Output() readonly routeReuseStrategyEmitUrl: EventEmitter<string> = new EventEmitter<string>();\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\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}\r\n","<!-- Item wrapper -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper\" role=\"presentation\"\r\n [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\"\r\n (click)=\"selectItem(item);\">\r\n\r\n <div class=\"cmat-vertical-navigation-item\">\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\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 <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n@for (item of item.children; track trackByFn($index, item)) {\r\n<!-- Skip the hidden items -->\r\n@if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n<!-- Basic -->\r\n@if (item.type === 'basic') {\r\n<cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n</cmat-vertical-navigation-basic-item>\r\n}\r\n<!-- Collapsable -->\r\n@if (item.type === 'collapsable') {\r\n<cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\"\r\n [editState]=\"editState\" [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n</cmat-vertical-navigation-collapsable-item>\r\n}\r\n<!-- Divider -->\r\n@if (item.type === 'divider') {\r\n<cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-divider-item>\r\n}\r\n<!-- Group -->\r\n@if (item.type === 'group') {\r\n<cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"></cmat-vertical-navigation-group-item>\r\n}\r\n<!-- Spacer -->\r\n@if (item.type === 'spacer') {\r\n<cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-spacer-item>\r\n}\r\n}\r\n}","import { BooleanInput } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n forwardRef,\r\n inject,\r\n} from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } 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 imports: [NgClass, MatTooltipModule, MatIconModule, CmatVerticalNavigationBasicItemComponent,\r\n forwardRef(() => CmatVerticalNavigationCollapsableItemComponent),\r\n forwardRef(() => CmatVerticalNavigationGroupItemComponent), CmatVerticalNavigationDividerItemComponent, CmatVerticalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatVerticalNavigationCollapsableItemComponent implements OnInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_autoCollapse: BooleanInput;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n\r\n @Input() autoCollapse: boolean;\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Input() hasRouteReuseStrategy: boolean = false;\r\n @Output() readonly routeReuseStrategyEmitUrl: EventEmitter<string> = new EventEmitter<string>();\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n isCollapsed: boolean = true;\r\n isExpanded: boolean = false;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _router = inject(Router);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Accessors\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Host binding for component classes\r\n */\r\n @HostBinding('class') get classList(): any {\r\n return {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-item-collapsed': this.isCollapsed,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-item-expanded': this.isExpanded\r\n };\r\n }\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // If the item has a children that has a matching url with the current url, expand...\r\n if (this._hasActiveChild(this.item, this._router.url)) {\r\n this.expand();\r\n }\r\n // Otherwise...\r\n else {\r\n // If the autoCollapse is on, collapse...\r\n if (this.autoCollapse) {\r\n this.collapse();\r\n }\r\n }\r\n\r\n // Listen for the onCollapsableItemCollapsed from the service\r\n this._cmatVerticalNavigationComponent.onCollapsableItemCollapsed\r\n .pipe(takeUntil(this._unsubscribeAll))\r\n .subscribe((collapsedItem) => {\r\n\r\n // Check if the collapsed item is null\r\n if (collapsedItem === null) {\r\n return;\r\n }\r\n\r\n // Collapse if this is a children of the collapsed item\r\n if (this._isChildrenOf(collapsedItem, this.item)) {\r\n this.collapse();\r\n }\r\n });\r\n\r\n // Listen for the onCollapsableItemExpanded from the service if the autoCollapse is on\r\n if (this.autoCollapse) {\r\n this._cmatVerticalNavigationComponent.onCollapsableItemExpanded\r\n .pipe(takeUntil(this._unsubscribeAll))\r\n .subscribe((expandedItem) => {\r\n\r\n // Check if the expanded item is null\r\n if (expandedItem === null) {\r\n return;\r\n }\r\n\r\n // Check if this is a parent of the expanded item\r\n if (this._isChildrenOf(this.item, expandedItem)) {\r\n return;\r\n }\r\n\r\n // Check if this has a children with a matching url with the current active url\r\n if (this._hasActiveChild(this.item, this._router.url)) {\r\n return;\r\n }\r\n\r\n // Check if this is the expanded item\r\n if (this.item === expandedItem) {\r\n return;\r\n }\r\n\r\n // If none of the above conditions are matched, collapse this item\r\n this.collapse();\r\n });\r\n }\r\n\r\n // Attach a listener to the NavigationEnd event\r\n this._router.events\r\n .pipe(\r\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\r\n takeUntil(this._unsubscribeAll)\r\n )\r\n .subscribe((event: NavigationEnd) => {\r\n\r\n // If the item has a children that has a matching url with the current url, expand...\r\n if (this._hasActiveChild(this.item, event.urlAfterRedirects)) {\r\n this.expand();\r\n }\r\n // Otherwise...\r\n else {\r\n // If the autoCollapse is on, collapse...\r\n if (this.autoCollapse) {\r\n this.collapse();\r\n }\r\n }\r\n });\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Collapse\r\n */\r\n collapse(): void {\r\n // Return if the item is disabled\r\n if (this.item.disabled) {\r\n return;\r\n }\r\n\r\n // Return if the item is already collapsed\r\n if (this.isCollapsed) {\r\n return;\r\n }\r\n\r\n // Collapse it\r\n this.isCollapsed = true;\r\n this.isExpanded = !this.isCollapsed;\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Execute the observable\r\n this._cmatVerticalNavigationComponent.onCollapsableItemCollapsed.next(this.item);\r\n }\r\n\r\n /**\r\n * Expand\r\n */\r\n expand(): void {\r\n // Return if the item is disabled\r\n if (this.item.disabled) {\r\n return;\r\n }\r\n\r\n // Return if the item is already expanded\r\n if (!this.isCollapsed) {\r\n return;\r\n }\r\n\r\n // Expand it\r\n this.isCollapsed = false;\r\n this.isExpanded = !this.isCollapsed;\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Execute the observable\r\n this._cmatVerticalNavigationComponent.onCollapsableItemExpanded.next(this.item);\r\n }\r\n\r\n /**\r\n * Toggle collapsable\r\n */\r\n toggleCollapsable(): void {\r\n // Toggle collapse/expand\r\n if (this.isCollapsed) {\r\n this.expand();\r\n }\r\n else {\r\n this.collapse();\r\n }\r\n }\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\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\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Private methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Check if the given item has the given url\r\n * in one of its children\r\n *\r\n * @param item\r\n * @param currentUrl\r\n * @private\r\n */\r\n private _hasActiveChild(item: CmatNavigationItem, currentUrl: string): 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\r\n // Check if the child has a link and is active\r\n if (child.link && this._router.isActive(child.link, {\r\n paths: child.exactMatch || false ? 'exact' : 'subset',\r\n queryParams: child.exactMatch || false ? 'exact' : 'subset', matrixParams: 'ignored', fragment: 'ignored'\r\n })) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Check if this is a children\r\n * of the given item\r\n *\r\n * @param parent\r\n * @param item\r\n * @private\r\n */\r\n private _isChildrenOf(parent: CmatNavigationItem, item: CmatNavigationItem): 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}\r\n","<div class=\"cmat-vertical-navigation-item-wrapper\" [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\"\r\n [ngClass]=\"item.classes?.wrapper\">\r\n\r\n <div class=\"cmat-vertical-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-vertical-navigation-item-disabled': item.disabled}\" [matTooltip]=\"item.tooltip || ''\"\r\n (click)=\"toggleCollapsable();selectItem(item);\">\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\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 <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- Arrow -->\r\n <mat-icon class=\"cmat-vertical-navigation-item-arrow icon-size-4\" [svgIcon]=\"'heroicons_outline:chevron-right'\">\r\n </mat-icon>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n@if (!isCollapsed) {\r\n<div animate.leave=\"expand-collapse-animation-leaving\"\r\n class=\"cmat-vertical-navigation-item-children expand-collapse-animation\">\r\n <div>\r\n @for (item of item.children; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n <!-- Collapsable -->\r\n @if (item.type === 'collapsable') {\r\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\"\r\n [editState]=\"editState\" [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\"\r\n (editSelectedItemChanged)=\"selectItem($event)\" (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-vertical-navigation-collapsable-item>\r\n }\r\n <!-- Divider -->\r\n @if (item.type === 'divider') {\r\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n <!-- Group -->\r\n @if (item.type === 'group') {\r\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"></cmat-vertical-navigation-group-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n </div>\r\n</div>\r\n}","import { BooleanInput } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, inject } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } 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 { 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: [NgClass, MatTooltipModule, MatIconModule, CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationCollapsableItemComponent, CmatVerticalNavigationDividerItemComponent,\r\n CmatVerticalNavigationGroupItemComponent, CmatVerticalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatVerticalNavigationAsideItemComponent implements OnChanges, OnInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_autoCollapse: BooleanInput;\r\n static ngAcceptInputType_skipChildren: BooleanInput;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n\r\n @Input() activeItemId: string | null;\r\n @Input() autoCollapse: boolean;\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() skipChildren: boolean;\r\n @Input() editState: boolean = false;\r\n @Input() hasRouteReuseStrategy: boolean = false;\r\n @Output() readonly routeReuseStrategyEmitUrl: EventEmitter<string> = new EventEmitter<string>();\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n active: boolean = false;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _router = inject(Router);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On changes\r\n *\r\n * @param changes\r\n */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // Active item id\r\n if ('activeItemId' in changes) {\r\n // Mark if active\r\n this._markIfActive(this._router.url);\r\n }\r\n }\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Mark if active\r\n this._markIfActive(this._router.url);\r\n\r\n // Attach a listener to the NavigationEnd event\r\n this._router.events\r\n .pipe(\r\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\r\n takeUntil(this._unsubscribeAll)\r\n )\r\n .subscribe((event: NavigationEnd) => {\r\n\r\n // Mark if active\r\n this._markIfActive(event.urlAfterRedirects);\r\n });\r\n\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\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 // -----------------------------------------------------------------------------------------------------\r\n // @ Private methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Check if the given item has the given url\r\n * in one of its children\r\n *\r\n * @param item\r\n * @param currentUrl\r\n * @private\r\n */\r\n private _hasActiveChild(item: CmatNavigationItem, currentUrl: string): 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\r\n // Skip items other than 'basic'\r\n if (child.type !== 'basic') {\r\n continue;\r\n }\r\n\r\n // Check if the child has a link and is active\r\n if (child.link && this._router.isActive(child.link, {\r\n paths: child.exactMatch || false ? 'exact' : 'subset',\r\n queryParams: child.exactMatch || false ? 'exact' : 'subset', fragment: 'ignored', matrixParams: 'ignored'\r\n })) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Decide and mark if the item is active\r\n *\r\n * @private\r\n */\r\n private _markIfActive(currentUrl: string): void {\r\n // Check if the activeItemId is equals to this item id\r\n this.active = this.activeItemId === this.item.id;\r\n\r\n // If the aside has a children that is active,\r\n // always mark it as active\r\n if (this._hasActiveChild(this.item, currentUrl)) {\r\n this.active = true;\r\n }\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n}\r\n","<div class=\"cmat-vertical-navigation-item-wrapper\" role=\"presentation\"\r\n [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\" (click)=\"selectItem(item);\">\r\n\r\n <div class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'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}\" [matTooltip]=\"item.tooltip || ''\">\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\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 <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\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 <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (editSelectedItemChanged)=\"selectItem($event)\" (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n <!-- Collapsable -->\r\n @if (item.type === 'collapsable') {\r\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" [autoCollapse]=\"autoCollapse\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-collapsable-item>\r\n }\r\n <!-- Divider -->\r\n @if (item.type === 'divider') {\r\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n <!-- Group -->\r\n @if (item.type === 'group') {\r\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-group-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n </div>\r\n}","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnChanges, OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewChild, ViewEncapsulation, inject } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { ReplaySubject, Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatNavigationService } from '../navigation.service';\r\nimport { CmatNavigationItem, CmatVerticalNavigationAppearance, CmatVerticalNavigationMode, CmatVerticalNavigationPosition } 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\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 imports: [CmatVerticalNavigationAsideItemComponent, CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationCollapsableItemComponent, CmatVerticalNavigationDividerItemComponent,\r\n CmatVerticalNavigationGroupItemComponent, CmatVerticalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatVerticalNavigationComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_inner: BooleanInput;\r\n static ngAcceptInputType_opened: BooleanInput;\r\n static ngAcceptInputType_transparentOverlay: BooleanInput;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n\r\n @Input() appearance: CmatVerticalNavigationAppearance = 'default';\r\n @Input() autoCollapse: boolean = true;\r\n @Input() editState: boolean = false;\r\n @Input() inner: boolean = false;\r\n @Input() mode: CmatVerticalNavigationMode = 'side';\r\n @Input() name: string = inject(CmatUtilsService).randomId();\r\n @Input() navigation: CmatNavigationItem[];\r\n @Input() opened: boolean = true;\r\n @Input() position: CmatVerticalNavigationPosition = 'left';\r\n @Input() transparentOverlay: boolean = false;\r\n @Input() hasRouteReuseStrategy: boolean = false;\r\n @Output() readonly routeReuseStrategyEmitUrl: EventEmitter<string> = new EventEmitter<string>();\r\n @Output() readonly appearanceChanged: EventEmitter<CmatVerticalNavigationAppearance> = new EventEmitter<CmatVerticalNavigationAppearance>();\r\n @Output() readonly modeChanged: EventEmitter<CmatVerticalNavigationMode> = new EventEmitter<CmatVerticalNavigationMode>();\r\n @Output() readonly openedChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n @Output() readonly positionChanged: EventEmitter<CmatVerticalNavigationPosition> = new EventEmitter<CmatVerticalNavigationPosition>();\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n @ViewChild('navigationContent') private _navigationContentEl: ElementRef<HTMLDivElement>;\r\n\r\n activeAsideItemId: string | null = null;\r\n onCollapsableItemCollapsed: ReplaySubject<CmatNavigationItem> = new ReplaySubject<CmatNavigationItem>(1);\r\n onCollapsableItemExpanded: ReplaySubject<CmatNavigationItem> = new ReplaySubject<CmatNavigationItem>(1);\r\n onRefreshed: ReplaySubject<boolean> = new ReplaySubject<boolean>(1);\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _elementRef = inject(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\r\n private _animationsEnabled: boolean = false;\r\n private _asideOverlay: HTMLElement | null;\r\n private readonly _handleAsideOverlayClick: any;\r\n private readonly _handleOverlayClick: any;\r\n private _hovered: boolean = false;\r\n private _overlay: HTMLElement | null;\r\n private _scrollStrategy: ScrollStrategy = this._scrollStrategyOptions.block();\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n\r\n\r\n constructor() {\r\n this._handleAsideOverlayClick = (): void => {\r\n this.closeAside();\r\n };\r\n this._handleOverlayClick = (): void => {\r\n this.close();\r\n };\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Accessors\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Host binding for component classes\r\n */\r\n @HostBinding('class') get classList(): any {\r\n return {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-animations-enabled': this._animationsEnabled,\r\n [`cmat-vertical-navigation-appearance-${this.appearance}`]: true,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-hover': this._hovered,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-inner': this.inner,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-mode-over': this.mode === 'over',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-mode-side': this.mode === 'side',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-opened': this.opened,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-position-left': this.position === 'left',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-position-right': this.position === 'right'\r\n };\r\n }\r\n\r\n /**\r\n * Host binding for component inline styles\r\n */\r\n @HostBinding('style') get styleList(): any {\r\n return {\r\n 'visibility': this.opened ? 'visible' : 'hidden'\r\n };\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Decorated methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On mouseenter\r\n *\r\n * @private\r\n */\r\n @HostListener('mouseenter')\r\n onMouseenter(): void {\r\n // Enable the animations\r\n this._enableAnimations();\r\n\r\n // Set the hovered\r\n this._hovered = true;\r\n }\r\n\r\n /**\r\n * On mouseleave\r\n *\r\n * @private\r\n */\r\n @HostListener('mouseleave')\r\n onMouseleave(): void {\r\n // Enable the animations\r\n this._enableAnimations();\r\n\r\n // Set the hovered\r\n this._hovered = false;\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On changes\r\n *\r\n * @param changes\r\n */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // Appearance\r\n if ('appearance' in changes) {\r\n // Execute the observable\r\n this.appearanceChanged.emit(changes['appearance'].currentValue);\r\n }\r\n\r\n // Inner\r\n if ('inner' in changes) {\r\n // Coerce the value to a boolean\r\n this.inner = coerceBooleanProperty(changes['inner'].currentValue);\r\n }\r\n\r\n // Mode\r\n if ('mode' in changes) {\r\n // Get the previous and current values\r\n const currentMode = changes['mode'].currentValue;\r\n const previousMode = changes['mode'].previousValue;\r\n\r\n // Disable the animations\r\n this._disableAnimations();\r\n\r\n // If the mode changes: 'over -> side'\r\n if (previousMode === 'over' && currentMode === 'side') {\r\n // Hide the overlay\r\n this._hideOverlay();\r\n }\r\n\r\n // If the mode changes: 'side -> over'\r\n if (previousMode === 'side' && currentMode === 'over') {\r\n // Close the aside\r\n this.closeAside();\r\n\r\n // If the navigation is opened\r\n if (this.opened) {\r\n // Show the overlay\r\n this._showOverlay();\r\n }\r\n }\r\n\r\n // Execute the observable\r\n this.modeChanged.emit(currentMode);\r\n\r\n // Enable the animations after a delay\r\n // The delay must be bigger than the current transition-duration\r\n // to make sure nothing will be animated while the mode changing\r\n setTimeout(() => {\r\n this._enableAnimations();\r\n }, 500);\r\n }\r\n\r\n // Navigation\r\n if ('navigation' in changes) {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n // Opened\r\n if ('opened' in changes) {\r\n // Coerce the value to a boolean\r\n this.opened = coerceBooleanProperty(changes['opened'].currentValue);\r\n\r\n // Open/close the navigation\r\n this._toggleOpened(this.opened);\r\n }\r\n\r\n // Position\r\n if ('position' in changes) {\r\n // Execute the observable\r\n this.positionChanged.emit(changes['position'].currentValue);\r\n }\r\n\r\n // Transparent overlay\r\n if ('transparentOverlay' in changes) {\r\n // Coerce the value to a boolean\r\n this.transparentOverlay = coerceBooleanProperty(changes['transparentOverlay'].currentValue);\r\n }\r\n }\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Make sure the name input is not an empty string\r\n if (this.name === '') {\r\n this.name = inject(CmatUtilsService).randomId();\r\n }\r\n\r\n // Register the navigation component\r\n this._cmatNavigationService.registerComponent(this.name, this);\r\n\r\n // Subscribe to the 'NavigationEnd' event\r\n this._router.events\r\n .pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n takeUntil(this._unsubscribeAll)\r\n )\r\n .subscribe(() => {\r\n\r\n // If the mode is 'over' and the navigation is opened...\r\n if (this.mode === 'over' && this.opened) {\r\n // Close the navigation\r\n this.close();\r\n }\r\n\r\n // If the mode is 'side' and the aside is active...\r\n if (this.mode === 'side' && this.activeAsideItemId) {\r\n // Close the aside\r\n this.closeAside();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * After view init\r\n */\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n\r\n // Return if 'navigation content' element does not exist\r\n if (!this._navigationContentEl) {\r\n return;\r\n }\r\n\r\n const activeItem = this._navigationContentEl.nativeElement.querySelector('.cmat-vertical-navigation-item-active')!;\r\n // If the active item exists, scroll it into view\r\n if (activeItem) {\r\n if (activeItem.getBoundingClientRect().bottom\r\n <= (this._navigationContentEl.nativeElement.getBoundingClientRect().bottom - Math.abs(-120))) {\r\n return;\r\n }\r\n\r\n this._navigationContentEl.nativeElement.scrollTo({\r\n top: activeItem.getBoundingClientRect().top -\r\n this._navigationContentEl.nativeElement.getBoundingClientRect().top - 120, behavior: 'smooth'\r\n });\r\n\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Forcefully close the navigation and aside in case they are opened\r\n this.close();\r\n this.closeAside();\r\n\r\n // Deregister the navigation component from the registry\r\n this._cmatNavigationService.deregisterComponent(this.name);\r\n\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Refresh the component to apply the changes\r\n */\r\n refresh(): void {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Execute the observable\r\n this.onRefreshed.next(true);\r\n }\r\n\r\n /**\r\n * Open the navigation\r\n */\r\n open(): void {\r\n // Return if the navigation is already open\r\n if (this.opened) {\r\n return;\r\n }\r\n\r\n // Set the opened\r\n this._toggleOpened(true);\r\n }\r\n\r\n /**\r\n * Close the navigation\r\n */\r\n close(): void {\r\n // Return if the navigation is already closed\r\n if (!this.opened) {\r\n return;\r\n }\r\n\r\n // Close the aside\r\n this.closeAside();\r\n\r\n // Set the opened\r\n this._toggleOpened(false);\r\n }\r\n\r\n /**\r\n * Toggle the navigation\r\n */\r\n toggle(): void {\r\n // Toggle\r\n if (this.opened) {\r\n this.close();\r\n }\r\n else {\r\n this.open();\r\n }\r\n }\r\n\r\n /**\r\n * Open the aside\r\n *\r\n * @param item\r\n */\r\n openAside(item: CmatNavigationItem): void {\r\n // Return if the item is disabled\r\n if (item.disabled || !item.id) {\r\n return;\r\n }\r\n\r\n // Open\r\n this.activeAsideItemId = item.id;\r\n\r\n // Show the aside overlay\r\n this._showAsideOverlay();\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Close the aside\r\n */\r\n closeAside(): void {\r\n // Close\r\n this.activeAsideItemId = null;\r\n\r\n // Hide the aside overlay\r\n this._hideAsideOverlay();\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Toggle the aside\r\n *\r\n * @param item\r\n */\r\n toggleAside(item: CmatNavigationItem): void {\r\n // Toggle\r\n if (this.activeAsideItemId === item.id) {\r\n this.closeAside();\r\n }\r\n else {\r\n this.openAside(item);\r\n }\r\n }\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\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 // @ Private methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Enable the animations\r\n *\r\n * @private\r\n */\r\n private _enableAnimations(): void {\r\n // Return if the animations are already enabled\r\n if (this._animationsEnabled) {\r\n return;\r\n }\r\n\r\n // Enable the animations\r\n this._animationsEnabled = true;\r\n }\r\n\r\n /**\r\n * Disable the animations\r\n *\r\n * @private\r\n */\r\n private _disableAnimations(): void {\r\n // Return if the animations are already disabled\r\n if (!this._animationsEnabled) {\r\n return;\r\n }\r\n\r\n // Disable the animations\r\n this._animationsEnabled = false;\r\n }\r\n\r\n /**\r\n * Show the overlay\r\n *\r\n * @private\r\n */\r\n private _showOverlay(): void {\r\n // Return if there is already an overlay\r\n if (this._asideOverlay) {\r\n return;\r\n }\r\n\r\n // Create the overlay element\r\n this._overlay = this._renderer2.createElement('div');\r\n\r\n if (this._overlay) {\r\n // Add a class to the overlay element\r\n this._overlay.classList.add('cmat-vertical-navigation-overlay');\r\n\r\n // Add a class depending on the transparentOverlay option\r\n if (this.transparentOverlay) {\r\n this._overlay.classList.add('cmat-vertical-navigation-overlay-transparent');\r\n }\r\n\r\n // Append the overlay to the parent of the navigation\r\n this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._overlay);\r\n\r\n // Enable block scroll strategy\r\n this._scrollStrategy.enable();\r\n\r\n setTimeout(() => {\r\n this._overlay?.classList.add('cmat-vertical-navigation-overlay-enter');\r\n }, 10);\r\n\r\n // Add an event listener to the overlay\r\n this._overlay.addEventListener('click', this._handleOverlayClick);\r\n }\r\n }\r\n\r\n /**\r\n * Hide the overlay\r\n *\r\n * @private\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 this._overlay.classList.add('cmat-vertical-navigation-overlay-leave');\r\n\r\n const handleAnimationEnd = (event: AnimationEvent): void => {\r\n if (event.animationName === 'vertical-navigation-overlay-leave') {\r\n this._overlay?.removeEventListener('animationend', handleAnimationEnd);\r\n\r\n if (this._overlay) {\r\n this._overlay.removeEventListener('click', this._handleOverlayClick);\r\n\r\n this._overlay.parentNode?.removeChild(this._overlay);\r\n this._overlay = null;\r\n }\r\n\r\n this._scrollStrategy.disable();\r\n }\r\n };\r\n\r\n this._overlay.addEventListener('animationend', handleAnimationEnd);\r\n }\r\n\r\n /**\r\n * Show the aside overlay\r\n *\r\n * @private\r\n */\r\n private _showAsideOverlay(): void {\r\n // Return if there is already an overlay\r\n if (this._asideOverlay) {\r\n return;\r\n }\r\n\r\n // Create the aside overlay element\r\n this._asideOverlay = this._renderer2.createElement('div');\r\n\r\n if (this._asideOverlay) {\r\n // Add a class to the aside overlay element\r\n this._asideOverlay.classList.add('cmat-vertical-navigation-aside-overlay');\r\n\r\n // Append the aside overlay to the parent of the navigation\r\n this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._asideOverlay);\r\n\r\n setTimeout(() => {\r\n this._overlay?.classList.add('cmat-vertical-navigation-aside-overlay-enter');\r\n }, 10);\r\n\r\n // Add an event listener to the aside overlay\r\n this._asideOverlay.addEventListener('click', this._handleAsideOverlayClick);\r\n }\r\n }\r\n\r\n /**\r\n * Hide the aside overlay\r\n *\r\n * @private\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('cmat-vertical-navigation-aside-overlay-enter');\r\n this._asideOverlay.classList.add('cmat-vertical-navigation-aside-overlay-leave');\r\n\r\n const handleAnimationEnd = (event: AnimationEvent): void => {\r\n if (event.animationName === 'vertical-navigation-overlay-leave') {\r\n this._asideOverlay?.removeEventListener('animationend', handleAnimationEnd);\r\n\r\n if (this._asideOverlay) {\r\n this._asideOverlay.removeEventListener('click', this._handleOverlayClick);\r\n\r\n this._asideOverlay.parentNode?.removeChild(this._asideOverlay);\r\n this._asideOverlay = null;\r\n }\r\n }\r\n };\r\n\r\n this._asideOverlay.addEventListener('animationend', handleAnimationEnd); \r\n }\r\n\r\n /**\r\n * Open/close the navigation\r\n *\r\n * @param open\r\n * @private\r\n */\r\n private _toggleOpened(open: boolean): void {\r\n // Set the opened\r\n this.opened = open;\r\n\r\n // Enable the animations\r\n this._enableAnimations();\r\n\r\n // If the navigation opened, and the mode\r\n // is 'over', show the overlay\r\n if (this.mode === 'over') {\r\n if (this.opened) {\r\n this._showOverlay();\r\n }\r\n else {\r\n this._hideOverlay();\r\n }\r\n }\r\n\r\n // Execute the observable\r\n this.openedChanged.emit(open);\r\n }\r\n}\r\n","<div class=\"cmat-vertical-navigation-wrapper\">\r\n\r\n <!-- Header -->\r\n <div class=\"cmat-vertical-navigation-header\">\r\n <ng-content select=\"[cmatVerticalNavigationHeader]\"></ng-content>\r\n </div>\r\n\r\n <!-- Content -->\r\n <div #navigationContent class=\"cmat-vertical-navigation-content py-2 overflow-y-auto scrollbar-custom\">\r\n\r\n <!-- Content header -->\r\n <div class=\"cmat-vertical-navigation-content-header\">\r\n <ng-content select=\"[cmatVerticalNavigationContentHeader]\"></ng-content>\r\n </div>\r\n\r\n <!-- Items -->\r\n @for (item of navigation; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Aside -->\r\n @if (item.type === 'aside') {\r\n <cmat-vertical-navigation-aside-item [item]=\"item\" [name]=\"name\" [activeItemId]=\"activeAsideItemId\"\r\n [autoCollapse]=\"autoCollapse\" [skipChildren]=\"true\" [editState]=\"editState\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (click)=\"toggleAside(item)\"\r\n (editSelectedItemChanged)=\"selectItem($event)\" (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-vertical-navigation-aside-item>\r\n }\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n <!-- Collapsable -->\r\n @if (item.type === 'collapsable') {\r\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n [autoCollapse]=\"autoCollapse\" [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"\r\n (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\"></cmat-vertical-navigation-collapsable-item>\r\n }\r\n <!-- Divider -->\r\n @if (item.type === 'divider') {\r\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n <!-- Group -->\r\n @if (item.type === 'group') {\r\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\"\r\n [editState]=\"editState\" [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\"\r\n (editSelectedItemChanged)=\"selectItem($event)\" (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-vertical-navigation-group-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\"\r\n (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n\r\n <!-- Content footer -->\r\n <div class=\"cmat-vertical-navigation-content-footer\">\r\n <ng-content select=\"[cmatVerticalNavigationContentFooter]\"></ng-content>\r\n </div>\r\n\r\n </div>\r\n <!-- Footer -->\r\n <div class=\"cmat-vertical-navigation-footer\">\r\n <ng-content select=\"[cmatVerticalNavigationFooter]\"></ng-content>\r\n </div>\r\n\r\n</div>\r\n\r\n<!-- Aside -->\r\n@if (activeAsideItemId) {\r\n<div class=\"cmat-vertical-navigation-aside-wrapper overflow-y-auto scrollbar-custom\"\r\n [animate.enter]=\"position === 'left'?'fade-in-left-animation':'fade-in-right-animation'\"\r\n [animate.leave]=\"position === 'left'?'fade-out-left-animation':'fade-out-right-animation'\">\r\n <!-- Items -->\r\n @for (item of navigation; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Aside -->\r\n @if (item.type === 'aside' && item.id === activeAsideItemId) {\r\n <cmat-vertical-navigation-aside-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\"\r\n [hasRouteReuseStrategy]=\"hasRouteReuseStrategy\" (routeReuseStrategyEmitUrl)=\"goToRouterLink($event)\">\r\n </cmat-vertical-navigation-aside-item>\r\n }\r\n }\r\n }\r\n</div>\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?: any;\r\n permission?: any;\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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"}