cmat 0.0.13 → 0.0.14

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 (265) hide show
  1. package/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.d.ts +0 -1
  2. package/components/cascade/cascade-menu/cascade-menu.component.d.ts +0 -1
  3. package/components/chip-input/chip-input.component.d.ts +0 -1
  4. package/components/custom-formly/public-api.d.ts +1 -0
  5. package/components/custom-formly/types/quill/quill.component.d.ts +42 -0
  6. package/components/custom-formly/types/repeat/repeat.component.d.ts +0 -1
  7. package/components/custom-formly/types/select/select.component.d.ts +0 -1
  8. package/components/custom-formly/types/stepper/horizontal/stepper.component.d.ts +0 -1
  9. package/components/custom-formly/types/stepper/vertical/stepper.component.d.ts +0 -1
  10. package/components/custom-formly/types/table/table.component.d.ts +0 -1
  11. package/components/custom-formly/types/tabs/tab.component.d.ts +0 -1
  12. package/components/custom-formly/types/tags/tags.component.d.ts +0 -1
  13. package/components/material-color-picker/material-color-picker.component.d.ts +0 -1
  14. package/components/material-datetimepicker/calendar-body.d.ts +0 -1
  15. package/components/material-datetimepicker/calendar.d.ts +3 -4
  16. package/components/material-datetimepicker/clock.d.ts +0 -1
  17. package/components/material-datetimepicker/datetimepicker.d.ts +3 -4
  18. package/components/material-datetimepicker/month-view.d.ts +0 -1
  19. package/components/pagination/pagination.component.d.ts +0 -1
  20. package/components/popover/popover.component.d.ts +3 -4
  21. package/components/popover/popover.interfaces.d.ts +1 -2
  22. package/components/select-tree/select-tree.component.d.ts +0 -1
  23. package/components/timeline/timeline.component.d.ts +3 -5
  24. package/components/transfer-picker/filter/filter.component.d.ts +0 -1
  25. package/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.d.ts +0 -1
  26. package/esm2022/components/adapter/datetime-adapter.mjs +1 -1
  27. package/esm2022/components/adapter/dayjs-date-adapter.mjs +4 -4
  28. package/esm2022/components/adapter/dayjs-datetime-adapter.mjs +4 -4
  29. package/esm2022/components/adapter/native-datetime-adapter.mjs +4 -4
  30. package/esm2022/components/breadcrumb/breadcrumb-item.directive.mjs +3 -3
  31. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +5 -5
  32. package/esm2022/components/breadcrumb/breadcrumb.service.mjs +4 -4
  33. package/esm2022/components/card/card.component.mjs +4 -4
  34. package/esm2022/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.mjs +5 -8
  35. package/esm2022/components/cascade/cascade-list/cascade-list.component.mjs +4 -4
  36. package/esm2022/components/cascade/cascade-menu/cascade-menu.component.mjs +5 -8
  37. package/esm2022/components/chip-input/chip-input.component.mjs +6 -9
  38. package/esm2022/components/custom-formly/extension/addons.extension.mjs +1 -1
  39. package/esm2022/components/custom-formly/public-api.mjs +2 -1
  40. package/esm2022/components/custom-formly/types/button/button.component.mjs +4 -4
  41. package/esm2022/components/custom-formly/types/cascade/cascade.component.mjs +4 -4
  42. package/esm2022/components/custom-formly/types/checklist/checklist.component.mjs +4 -4
  43. package/esm2022/components/custom-formly/types/chips/chips.component.mjs +4 -4
  44. package/esm2022/components/custom-formly/types/color-picker/color-picker.component.mjs +3 -3
  45. package/esm2022/components/custom-formly/types/date-range/date-range.component.mjs +3 -3
  46. package/esm2022/components/custom-formly/types/datepicker/datepicker.component.mjs +3 -3
  47. package/esm2022/components/custom-formly/types/multicheckbox/multicheckbox.component.mjs +4 -4
  48. package/esm2022/components/custom-formly/types/number/number.component.mjs +3 -3
  49. package/esm2022/components/custom-formly/types/quill/quill.component.mjs +171 -0
  50. package/esm2022/components/custom-formly/types/radio/radio.component.mjs +4 -4
  51. package/esm2022/components/custom-formly/types/rating/rating.component.mjs +3 -3
  52. package/esm2022/components/custom-formly/types/repeat/repeat.component.mjs +5 -8
  53. package/esm2022/components/custom-formly/types/select/select.component.mjs +5 -8
  54. package/esm2022/components/custom-formly/types/select-tree/select-tree.component.mjs +4 -4
  55. package/esm2022/components/custom-formly/types/stepper/horizontal/stepper.component.mjs +5 -8
  56. package/esm2022/components/custom-formly/types/stepper/vertical/stepper.component.mjs +5 -8
  57. package/esm2022/components/custom-formly/types/table/table.component.mjs +5 -8
  58. package/esm2022/components/custom-formly/types/tabs/tab.component.mjs +5 -8
  59. package/esm2022/components/custom-formly/types/tags/tags.component.mjs +5 -8
  60. package/esm2022/components/custom-formly/types/textarea/textarea.component.mjs +3 -3
  61. package/esm2022/components/custom-formly/types/upload/upload.component.mjs +4 -4
  62. package/esm2022/components/custom-formly/wrappers/addons/addons.component.mjs +4 -4
  63. package/esm2022/components/custom-formly/wrappers/card/card.component.mjs +3 -3
  64. package/esm2022/components/custom-formly/wrappers/expansion/expansion.component.mjs +3 -3
  65. package/esm2022/components/custom-formly/wrappers/panel/panel.component.mjs +3 -3
  66. package/esm2022/components/date-range/date-range.component.mjs +4 -4
  67. package/esm2022/components/drawer/drawer.component.mjs +4 -4
  68. package/esm2022/components/drawer/drawer.service.mjs +3 -3
  69. package/esm2022/components/fullscreen/fullscreen.component.mjs +4 -4
  70. package/esm2022/components/highlight/highlight.component.mjs +4 -4
  71. package/esm2022/components/highlight/highlight.service.mjs +4 -4
  72. package/esm2022/components/json-editor/json-editor.component.mjs +4 -4
  73. package/esm2022/components/masonry/masonry.component.mjs +4 -4
  74. package/esm2022/components/material-color-picker/material-color-picker.component.mjs +5 -8
  75. package/esm2022/components/material-datetimepicker/calendar-body.mjs +5 -8
  76. package/esm2022/components/material-datetimepicker/calendar.mjs +7 -13
  77. package/esm2022/components/material-datetimepicker/clock.mjs +5 -8
  78. package/esm2022/components/material-datetimepicker/datetimepicker-input.mjs +4 -4
  79. package/esm2022/components/material-datetimepicker/datetimepicker-intl.mjs +3 -3
  80. package/esm2022/components/material-datetimepicker/datetimepicker-toggle.mjs +7 -7
  81. package/esm2022/components/material-datetimepicker/datetimepicker.mjs +10 -11
  82. package/esm2022/components/material-datetimepicker/month-view.mjs +5 -8
  83. package/esm2022/components/material-datetimepicker/multi-year-view.mjs +4 -4
  84. package/esm2022/components/material-datetimepicker/time.mjs +7 -7
  85. package/esm2022/components/material-datetimepicker/year-view.mjs +4 -4
  86. package/esm2022/components/navigation/horizontal/components/basic/basic.component.mjs +3 -3
  87. package/esm2022/components/navigation/horizontal/components/branch/branch.component.mjs +5 -5
  88. package/esm2022/components/navigation/horizontal/components/divider/divider.component.mjs +3 -3
  89. package/esm2022/components/navigation/horizontal/components/spacer/spacer.component.mjs +3 -3
  90. package/esm2022/components/navigation/horizontal/horizontal.component.mjs +5 -5
  91. package/esm2022/components/navigation/navigation.service.mjs +4 -4
  92. package/esm2022/components/navigation/vertical/components/aside/aside.component.mjs +5 -5
  93. package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +3 -3
  94. package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +5 -5
  95. package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +3 -3
  96. package/esm2022/components/navigation/vertical/components/group/group.component.mjs +5 -5
  97. package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +3 -3
  98. package/esm2022/components/navigation/vertical/vertical.component.mjs +5 -5
  99. package/esm2022/components/pagination/pagination.component.mjs +5 -8
  100. package/esm2022/components/pagination/pagination.directive.mjs +4 -4
  101. package/esm2022/components/pagination/pagination.pipe.mjs +4 -4
  102. package/esm2022/components/pagination/pagination.service.mjs +4 -4
  103. package/esm2022/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.mjs +3 -3
  104. package/esm2022/components/password-strength/mat-password-strength/mat-password-strength.component.mjs +4 -4
  105. package/esm2022/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.mjs +4 -4
  106. package/esm2022/components/password-strength/mat-password-strength-validator.mjs +1 -1
  107. package/esm2022/components/popover/popover-trigger.mjs +6 -8
  108. package/esm2022/components/popover/popover.component.mjs +6 -7
  109. package/esm2022/components/popover/popover.interfaces.mjs +1 -1
  110. package/esm2022/components/popover/popover.target.mjs +3 -3
  111. package/esm2022/components/progress-bar/progress-bar.component.mjs +4 -4
  112. package/esm2022/components/rating/rating.component.mjs +5 -5
  113. package/esm2022/components/select-search/select-no-entries-found.directive.mjs +3 -3
  114. package/esm2022/components/select-search/select-search-clear.directive.mjs +3 -3
  115. package/esm2022/components/select-search/select-search.component.mjs +4 -4
  116. package/esm2022/components/select-tree/select-tree.component.mjs +5 -8
  117. package/esm2022/components/timeline/timeline-item/timeline-item.component.mjs +9 -9
  118. package/esm2022/components/timeline/timeline.component.mjs +7 -11
  119. package/esm2022/components/toast/toast-modal.component.mjs +4 -4
  120. package/esm2022/components/toast/toast.component.mjs +5 -5
  121. package/esm2022/components/toast/toast.service.mjs +4 -4
  122. package/esm2022/components/transfer-picker/filter/filter.component.mjs +5 -8
  123. package/esm2022/components/transfer-picker/search/search.component.mjs +3 -3
  124. package/esm2022/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.mjs +4 -4
  125. package/esm2022/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.mjs +5 -8
  126. package/esm2022/components/transfer-picker/transfer-picker.component.mjs +4 -4
  127. package/esm2022/components/transfer-picker/transfer-picker.service.mjs +4 -4
  128. package/esm2022/components/upload/files.util.service.mjs +4 -4
  129. package/esm2022/components/upload/upload-queue/upload-queue.component.mjs +4 -4
  130. package/esm2022/components/upload/upload.component.mjs +4 -4
  131. package/esm2022/directives/animate-on-scroll/animate-on-scroll.directive.mjs +4 -4
  132. package/esm2022/directives/animate-on-scroll/scroll.service.mjs +3 -3
  133. package/esm2022/directives/autofocus/autofocus.directive.mjs +3 -3
  134. package/esm2022/directives/debounce/abstract-debounce.directive.mjs +3 -3
  135. package/esm2022/directives/debounce/debounce-click.directive.mjs +3 -3
  136. package/esm2022/directives/debounce/debounce-keyup.directive.mjs +3 -3
  137. package/esm2022/directives/digit-only/digit-only.directive.mjs +4 -4
  138. package/esm2022/directives/digit-only/mask.directive.mjs +4 -4
  139. package/esm2022/directives/equal-validator/equal-validator.directive.mjs +4 -4
  140. package/esm2022/lib/mock-api/mock-api.interceptor.mjs +4 -4
  141. package/esm2022/lib/mock-api/mock-api.request-handler.mjs +1 -1
  142. package/esm2022/lib/mock-api/mock-api.service.mjs +4 -4
  143. package/esm2022/lib/mock-api/mock-api.utils.mjs +1 -1
  144. package/esm2022/pipes/bytes/bytes.pipe.mjs +4 -4
  145. package/esm2022/pipes/date-format/date-format.pipe.mjs +3 -3
  146. package/esm2022/pipes/find-by-key/find-by-key.pipe.mjs +4 -4
  147. package/esm2022/pipes/group-by/group-by.pipe.mjs +4 -4
  148. package/esm2022/pipes/keys/keys.pipe.mjs +4 -4
  149. package/esm2022/pipes/secure/secure-pipe.mjs +3 -3
  150. package/esm2022/pipes/uppercase/uppercase.pipe.mjs +3 -3
  151. package/esm2022/services/alert/alert.service.mjs +4 -4
  152. package/esm2022/services/config/config.service.mjs +3 -3
  153. package/esm2022/services/config/urlStateConfig.service.mjs +3 -3
  154. package/esm2022/services/confirmation/confirmation.service.mjs +3 -3
  155. package/esm2022/services/confirmation/dialog/dialog.component.mjs +3 -3
  156. package/esm2022/services/data/data.service.mjs +4 -4
  157. package/esm2022/services/loading/loading.interceptor.mjs +4 -4
  158. package/esm2022/services/loading/loading.service.mjs +4 -4
  159. package/esm2022/services/local-storage/local-storage.service.mjs +3 -3
  160. package/esm2022/services/media-watcher/media-watcher.service.mjs +4 -4
  161. package/esm2022/services/platform/platform.service.mjs +4 -4
  162. package/esm2022/services/splash-screen/splash-screen.service.mjs +3 -3
  163. package/esm2022/services/title/title.service.mjs +4 -4
  164. package/esm2022/services/translation/translation.service.mjs +4 -4
  165. package/esm2022/services/utils/utils.service.mjs +4 -4
  166. package/esm2022/validators/validators.mjs +1 -1
  167. package/fesm2022/cmat-animations.mjs +1 -1
  168. package/fesm2022/cmat-components-adapter.mjs +9 -9
  169. package/fesm2022/cmat-components-adapter.mjs.map +1 -1
  170. package/fesm2022/cmat-components-breadcrumb.mjs +10 -10
  171. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  172. package/fesm2022/cmat-components-card.mjs +3 -3
  173. package/fesm2022/cmat-components-card.mjs.map +1 -1
  174. package/fesm2022/cmat-components-cascade.mjs +11 -17
  175. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  176. package/fesm2022/cmat-components-chip-input.mjs +5 -8
  177. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  178. package/fesm2022/cmat-components-custom-formly.mjs +248 -104
  179. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
  180. package/fesm2022/cmat-components-date-range.mjs +4 -4
  181. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  182. package/fesm2022/cmat-components-drawer.mjs +7 -7
  183. package/fesm2022/cmat-components-drawer.mjs.map +1 -1
  184. package/fesm2022/cmat-components-fullscreen.mjs +3 -3
  185. package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
  186. package/fesm2022/cmat-components-highlight.mjs +6 -6
  187. package/fesm2022/cmat-components-highlight.mjs.map +1 -1
  188. package/fesm2022/cmat-components-json-editor.mjs +3 -3
  189. package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
  190. package/fesm2022/cmat-components-masonry.mjs +3 -3
  191. package/fesm2022/cmat-components-masonry.mjs.map +1 -1
  192. package/fesm2022/cmat-components-material-color-picker.mjs +4 -7
  193. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  194. package/fesm2022/cmat-components-material-datetimepicker.mjs +53 -68
  195. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  196. package/fesm2022/cmat-components-navigation.mjs +46 -46
  197. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  198. package/fesm2022/cmat-components-pagination.mjs +13 -16
  199. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  200. package/fesm2022/cmat-components-password-strength.mjs +10 -10
  201. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  202. package/fesm2022/cmat-components-popover.mjs +13 -16
  203. package/fesm2022/cmat-components-popover.mjs.map +1 -1
  204. package/fesm2022/cmat-components-progress-bar.mjs +3 -3
  205. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
  206. package/fesm2022/cmat-components-rating.mjs +4 -4
  207. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  208. package/fesm2022/cmat-components-select-search.mjs +10 -10
  209. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  210. package/fesm2022/cmat-components-select-tree.mjs +4 -7
  211. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  212. package/fesm2022/cmat-components-timeline.mjs +15 -19
  213. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  214. package/fesm2022/cmat-components-toast.mjs +10 -10
  215. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  216. package/fesm2022/cmat-components-transfer-picker.mjs +20 -26
  217. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  218. package/fesm2022/cmat-components-upload.mjs +9 -9
  219. package/fesm2022/cmat-components-upload.mjs.map +1 -1
  220. package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -6
  221. package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
  222. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  223. package/fesm2022/cmat-directives-debounce.mjs +9 -9
  224. package/fesm2022/cmat-directives-digit-only.mjs +6 -6
  225. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  226. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  227. package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
  228. package/fesm2022/cmat-lib-mock-api.mjs +7 -7
  229. package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
  230. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  231. package/fesm2022/cmat-pipes-bytes.mjs.map +1 -1
  232. package/fesm2022/cmat-pipes-date-format.mjs +3 -3
  233. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
  234. package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
  235. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  236. package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
  237. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  238. package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
  239. package/fesm2022/cmat-pipes-secure.mjs +3 -3
  240. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  241. package/fesm2022/cmat-services-alert.mjs +3 -3
  242. package/fesm2022/cmat-services-alert.mjs.map +1 -1
  243. package/fesm2022/cmat-services-config.mjs +6 -6
  244. package/fesm2022/cmat-services-confirmation.mjs +6 -6
  245. package/fesm2022/cmat-services-data.mjs +3 -3
  246. package/fesm2022/cmat-services-data.mjs.map +1 -1
  247. package/fesm2022/cmat-services-loading.mjs +6 -6
  248. package/fesm2022/cmat-services-loading.mjs.map +1 -1
  249. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  250. package/fesm2022/cmat-services-media-watcher.mjs +3 -3
  251. package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
  252. package/fesm2022/cmat-services-platform.mjs +3 -3
  253. package/fesm2022/cmat-services-platform.mjs.map +1 -1
  254. package/fesm2022/cmat-services-splash-screen.mjs +3 -3
  255. package/fesm2022/cmat-services-title.mjs +3 -3
  256. package/fesm2022/cmat-services-title.mjs.map +1 -1
  257. package/fesm2022/cmat-services-translation.mjs +3 -3
  258. package/fesm2022/cmat-services-translation.mjs.map +1 -1
  259. package/fesm2022/cmat-services-utils.mjs +3 -3
  260. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  261. package/fesm2022/cmat-validators.mjs.map +1 -1
  262. package/package.json +111 -102
  263. package/styles/overrides/angular-material.scss +0 -1
  264. package/styles/overrides/quill.scss +102 -0
  265. package/styles/themes.scss +19 -19
@@ -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, Input, OnDestroy, OnInit } 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, 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 standalone: true,\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\r\n isActiveMatchOptions: IsActiveMatchOptions;\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService,\r\n private _cmatUtilsService: CmatUtilsService\r\n ) {\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\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","<!-- Item wrapper -->\n<div class=\"cmat-horizontal-navigation-item-wrapper\"\n [class.cmat-horizontal-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\">\n\n <!-- Item with an internal link -->\n @if (item.link && !item.externalLink && !item.function && !item.disabled) {\n <div class=\"cmat-horizontal-navigation-item\"\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [routerLinkActive]=\"'cmat-horizontal-navigation-item-active'\"\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item with an external link -->\n @if (item.link && item.externalLink && !item.function && !item.disabled) {\n <a class=\"cmat-horizontal-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n }\n\n <!-- Item with a function -->\n @if (!item.link && item.function && !item.disabled) {\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item with an internal link and function -->\n @if (item.link && !item.externalLink && item.function && !item.disabled) {\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [routerLinkActive]=\"'cmat-horizontal-navigation-item-active'\"\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item with an external link and function -->\n @if (item.link && item.externalLink && item.function && !item.disabled) {\n <a class=\"cmat-horizontal-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\n [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\" mat-menu-item>\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n }\n\n <!-- Item with a no link and no function -->\n @if (!item.link && !item.function && !item.disabled) {\n <div class=\"cmat-horizontal-navigation-item\"\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item is disabled -->\n @if (item.disabled) {\n <div class=\"cmat-horizontal-navigation-item cmat-horizontal-navigation-item-disabled\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n <!-- Icon -->\n @if (item.icon) {\n <mat-icon class=\"cmat-horizontal-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\n </mat-icon>\n }\n\n <!-- Title & Subtitle -->\n <div class=\"cmat-horizontal-navigation-item-title-wrapper\">\n <div class=\"cmat-horizontal-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{item.title}}\n </span>\n </div>\n</div>\n\n<!-- Badge -->\n@if (item.badge) {\n <div class=\"cmat-horizontal-navigation-item-badge\">\n <div class=\"cmat-horizontal-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n}\n\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } 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 standalone: true,\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 _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\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 // 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, Input, OnDestroy, OnInit, ViewChild, forwardRef } 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 standalone: true,\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 @ViewChild('matMenu', { static: true }) matMenu: MatMenu;\r\n\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\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 // 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","@if (!child) {\n <div [ngClass]=\"{'cmat-horizontal-navigation-menu-active': trigger.menuOpen,\n 'cmat-horizontal-navigation-menu-active-forced': item.active}\" [matMenuTriggerFor]=\"matMenu\"\n (onMenuOpen)=\"triggerChangeDetection()\" (onMenuClose)=\"triggerChangeDetection()\" #trigger=\"matMenuTrigger\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n </div>\n}\n\n<mat-menu class=\"cmat-horizontal-navigation-menu-panel\" [overlapTrigger]=\"false\" #matMenu=\"matMenu\">\n\n @for (item of item.children; track trackByFn($index, item)) {\n <!-- Skip the hidden items -->\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\n <!-- Basic -->\n @if (item.type === 'basic') {\n <div class=\"cmat-horizontal-navigation-menu-item\" [disabled]=\"item.disabled\" mat-menu-item>\n <cmat-horizontal-navigation-basic-item [item]=\"item\" [name]=\"name\">\n </cmat-horizontal-navigation-basic-item>\n </div>\n }\n <!-- Branch: aside, collapsable, group -->\n @if (item.type === 'aside' || item.type === 'collapsable' || item.type === 'group') {\n <div class=\"cmat-horizontal-navigation-menu-item\" [disabled]=\"item.disabled\"\n [matMenuTriggerFor]=\"branch.matMenu\" mat-menu-item>\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n <cmat-horizontal-navigation-branch-item [child]=\"true\" [item]=\"item\" [name]=\"name\" #branch>\n </cmat-horizontal-navigation-branch-item>\n </div>\n }\n <!-- Divider -->\n @if (item.type === 'divider') {\n <div class=\"cmat-horizontal-navigation-menu-item\" mat-menu-item>\n <cmat-horizontal-navigation-divider-item [item]=\"item\" [name]=\"name\">\n </cmat-horizontal-navigation-divider-item>\n </div>\n }\n }\n }\n\n</mat-menu>\n\n<!-- Item template -->\n<ng-template let-item #itemTemplate>\n\n <div class=\"cmat-horizontal-navigation-item-wrapper\"\n [class.cmat-horizontal-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\">\n\n <div class=\"cmat-horizontal-navigation-item\" [ngClass]=\"{'cmat-horizontal-navigation-item-disabled': item.disabled,\n 'cmat-horizontal-navigation-item-active-forced': item.active}\"\n [matTooltip]=\"item.tooltip || ''\">\n\n <!-- Icon -->\n @if (item.icon) {\n <mat-icon class=\"cmat-horizontal-navigation-item-icon\" [ngClass]=\"item.classes?.icon\"\n [svgIcon]=\"item.icon\"></mat-icon>\n }\n\n <!-- Title & Subtitle -->\n <div class=\"cmat-horizontal-navigation-item-title-wrapper\">\n <div class=\"cmat-horizontal-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{item.title}}\n </span>\n </div>\n </div>\n\n <!-- Badge -->\n @if (item.badge) {\n <div class=\"cmat-horizontal-navigation-item-badge\">\n <div class=\"cmat-horizontal-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n }\n </div>\n</div>\n\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } 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 standalone: true,\r\n imports: [NgClass]\r\n})\r\nexport class CmatHorizontalNavigationSpacerItemComponent implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\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 // 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, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation } from '@angular/core';\r\nimport { ReplaySubject, Subject } from 'rxjs';\r\nimport { cmatAnimations } from 'cmat/animations';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\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\nimport { CmatNavigationService } from '../navigation.service';\r\nimport { CmatNavigationItem } from '../navigation.types';\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 animations: cmatAnimations,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatHorizontalNavigation',\r\n standalone: true,\r\n imports: [CmatHorizontalNavigationBasicItemComponent, CmatHorizontalNavigationBranchItemComponent, CmatHorizontalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatHorizontalNavigationComponent implements OnChanges, OnInit, OnDestroy {\r\n @Input() name: string = this._cmatUtilsService.randomId();\r\n @Input() navigation: CmatNavigationItem[];\r\n\r\n onRefreshed: ReplaySubject<boolean> = new ReplaySubject<boolean>(1);\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService,\r\n private _cmatUtilsService: CmatUtilsService\r\n ) {\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 // 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 /**\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 = this._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 /**\r\n * On destroy\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 // @ 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 * 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","<div class=\"cmat-horizontal-navigation-wrapper\">\n\n @for (item of navigation; track trackByFn($index, item)) {\n <!-- Skip the hidden items -->\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\n <!-- Basic -->\n @if (item.type === 'basic') {\n <cmat-horizontal-navigation-basic-item class=\"cmat-horizontal-navigation-menu-item\" [item]=\"item\"\n [name]=\"name\"></cmat-horizontal-navigation-basic-item>\n }\n <!-- Branch: aside, collapsable, group -->\n @if (item.type === 'aside' || item.type === 'collapsable' || item.type === 'group') {\n <cmat-horizontal-navigation-branch-item class=\"cmat-horizontal-navigation-menu-item\" [item]=\"item\"\n [name]=\"name\"></cmat-horizontal-navigation-branch-item>\n }\n <!-- Spacer -->\n @if (item.type === 'spacer') {\n <cmat-horizontal-navigation-spacer-item class=\"cmat-horizontal-navigation-menu-item\" [item]=\"item\"\n [name]=\"name\"></cmat-horizontal-navigation-spacer-item>\n }\n }\n }\n\n</div>","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { IsActiveMatchOptions, 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 standalone: true,\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 @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n \r\n isActiveMatchOptions: IsActiveMatchOptions;\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService,\r\n private _cmatUtilsService: CmatUtilsService\r\n ) {\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\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.next(this.item);\r\n }\r\n}\r\n","<!-- Item wrapper -->\n<div class=\"cmat-vertical-navigation-item-wrapper\" [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\"\n [ngClass]=\"item.classes?.wrapper\">\n\n @if(editState){\n <div class=\"cmat-vertical-navigation-item\" role=\"presentation\"\n [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\n (click)=\"selectItem()\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }@else{\n <!-- Item with an internal link -->\n @if (item.link && !item.externalLink && !item.function && !item.disabled) {\n <a class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\"\n [routerLink]=\"[item.link]\" [routerLinkActive]=\"'cmat-vertical-navigation-item-active'\"\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n }\n\n <!-- Item with an external link -->\n @if (item.link && item.externalLink && !item.function && !item.disabled) {\n <a class=\"cmat-vertical-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n }\n\n <!-- Item with a function -->\n @if (!item.link && item.function && !item.disabled) {\n <div class=\"cmat-vertical-navigation-item\" role=\"presentation\"\n [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item with an internal link and function -->\n @if (item.link && !item.externalLink && item.function && !item.disabled) {\n <a class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\"\n [routerLink]=\"[item.link]\" [routerLinkActive]=\"'cmat-vertical-navigation-item-active'\"\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n }\n\n <!-- Item with an external link and function -->\n @if (item.link && item.externalLink && item.function && !item.disabled) {\n <a class=\"cmat-vertical-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\n [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n }\n\n <!-- Item with a no link and no function -->\n @if (!item.link && !item.function && !item.disabled) {\n <div class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item is disabled -->\n @if (item.disabled) {\n <div class=\"cmat-vertical-navigation-item cmat-vertical-navigation-item-disabled\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n }\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n <!-- Icon -->\n @if (item.icon) {\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\n </mat-icon>\n }\n\n <!-- Title & Subtitle -->\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\n <div class=\"cmat-vertical-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{item.title}}\n </span>\n </div>\n @if (item.subTitle) {\n <div class=\"cmat-vertical-navigation-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subTitle}}\n </span>\n </div>\n }\n </div>\n\n <!-- Badge -->\n @if (item.badge) {\n <div class=\"cmat-vertical-navigation-item-badge\">\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n }\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output } 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 standalone: true,\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 _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\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 // 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.next(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 } 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 standalone: true,\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 constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\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 // 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.next(item);\r\n }\r\n}\r\n","<!-- Spacer -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper\" [ngClass]=\"item.classes?.wrapper\" role=\"presentation\" (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 } 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 standalone: true,\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 @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 constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\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 // 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 selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(item);\r\n }\r\n}\r\n","<!-- Item wrapper -->\n<div class=\"cmat-vertical-navigation-item-wrapper\" [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\"\n [ngClass]=\"item.classes?.wrapper\" role=\"presentation\" (click)=\"selectItem(item);\">\n\n <div class=\"cmat-vertical-navigation-item\">\n\n <!-- Icon -->\n @if (item.icon) {\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\n </mat-icon>\n }\n\n <!-- Title & Subtitle -->\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\n <div class=\"cmat-vertical-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{item.title}}\n </span>\n </div>\n @if (item.subTitle) {\n <div class=\"cmat-vertical-navigation-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subTitle}}\n </span>\n </div>\n }\n </div>\n\n <!-- Badge -->\n @if (item.badge) {\n <div class=\"cmat-vertical-navigation-item-badge\">\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n }\n\n </div>\n\n</div>\n\n@for (item of item.children; track trackByFn($index, item)) {\n <!-- Skip the hidden items -->\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\n <!-- Basic -->\n @if (item.type === 'basic') {\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-basic-item>\n }\n <!-- Collapsable -->\n @if (item.type === 'collapsable') {\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\n </cmat-vertical-navigation-collapsable-item>\n }\n <!-- Divider -->\n @if (item.type === 'divider') {\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-divider-item>\n }\n <!-- Group -->\n @if (item.type === 'group') {\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-group-item>\n }\n <!-- Spacer -->\n @if (item.type === 'spacer') {\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-spacer-item>\n }\n }\n}","import { BooleanInput } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output, forwardRef } 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 { cmatAnimations } from 'cmat/animations';\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 styles: [],\r\n animations: cmatAnimations,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\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 @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n \r\n isCollapsed: boolean = true;\r\n isExpanded: boolean = false;\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _router: Router,\r\n private _cmatNavigationService: CmatNavigationService\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-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 // @ 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 // 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 selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(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.indexOf(item) > -1) {\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\"\n [ngClass]=\"item.classes?.wrapper\">\n\n <div class=\"cmat-vertical-navigation-item\" role=\"presentation\" [ngClass]=\"{'cmat-vertical-navigation-item-disabled': item.disabled}\"\n [matTooltip]=\"item.tooltip || ''\" (click)=\"toggleCollapsable();selectItem(item);\">\n\n <!-- Icon -->\n @if (item.icon) {\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\n </mat-icon>\n }\n\n <!-- Title & Subtitle -->\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\n <div class=\"cmat-vertical-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{item.title}}\n </span>\n </div>\n @if (item.subTitle) {\n <div class=\"cmat-vertical-navigation-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subTitle}}\n </span>\n </div>\n }\n </div>\n\n <!-- Badge -->\n @if (item.badge) {\n <div class=\"cmat-vertical-navigation-item-badge\">\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n }\n\n <!-- Arrow -->\n <mat-icon class=\"cmat-vertical-navigation-item-arrow icon-size-4\" [svgIcon]=\"'heroicons_outline:chevron-right'\">\n </mat-icon>\n\n </div>\n\n</div>\n\n@if (!isCollapsed) {\n <div class=\"cmat-vertical-navigation-item-children\" @expandCollapse>\n @for (item of item.children; track trackByFn($index, item)) {\n <!-- Skip the hidden items -->\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\n <!-- Basic -->\n @if (item.type === 'basic') {\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-basic-item>\n }\n <!-- Collapsable -->\n @if (item.type === 'collapsable') {\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\n </cmat-vertical-navigation-collapsable-item>\n }\n <!-- Divider -->\n @if (item.type === 'divider') {\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\n </cmat-vertical-navigation-divider-item>\n }\n <!-- Group -->\n @if (item.type === 'group') {\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-group-item>\n }\n <!-- Spacer -->\n @if (item.type === 'spacer') {\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\n </cmat-vertical-navigation-spacer-item>\n }\n }\n }\n </div>\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 } 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 standalone: true,\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 @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n \r\n active: boolean = false;\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _router: Router,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\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 // 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 selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(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\" [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\"\n [ngClass]=\"item.classes?.wrapper\" role=\"presentation\" (click)=\"selectItem(item);\">\n\n <div class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'cmat-vertical-navigation-item-active': active,\n 'cmat-vertical-navigation-item-disabled': item.disabled,\n 'cmat-vertical-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\">\n\n <!-- Icon -->\n @if (item.icon) {\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\n </mat-icon>\n }\n\n <!-- Title & Subtitle -->\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\n <div class=\"cmat-vertical-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{item.title}}\n </span>\n </div>\n @if (item.subTitle) {\n <div class=\"cmat-vertical-navigation-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subTitle}}\n </span>\n </div>\n }\n </div>\n\n <!-- Badge -->\n @if (item.badge) {\n <div class=\"cmat-vertical-navigation-item-badge\">\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n }\n\n </div>\n\n</div>\n\n@if (!skipChildren) {\n <div class=\"cmat-vertical-navigation-item-children\">\n @for (item of item.children; track trackByFn($index, item)) {\n <!-- Skip the hidden items -->\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\n <!-- Basic -->\n @if (item.type === 'basic') {\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\n </cmat-vertical-navigation-basic-item>\n }\n <!-- Collapsable -->\n @if (item.type === 'collapsable') {\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"\n [autoCollapse]=\"autoCollapse\"></cmat-vertical-navigation-collapsable-item>\n }\n <!-- Divider -->\n @if (item.type === 'divider') {\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\n </cmat-vertical-navigation-divider-item>\n }\n <!-- Group -->\n @if (item.type === 'group') {\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\n </cmat-vertical-navigation-group-item>\n }\n <!-- Spacer -->\n @if (item.type === 'spacer') {\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\n </cmat-vertical-navigation-spacer-item>\n }\n }\n }\n </div>\n}","import { animate, AnimationBuilder, AnimationPlayer, style } from '@angular/animations';\r\nimport { 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 } 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 { cmatAnimations } from 'cmat/animations';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\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\nimport { CmatNavigationService } from '../navigation.service';\r\nimport { CmatNavigationItem, CmatVerticalNavigationAppearance, CmatVerticalNavigationMode, CmatVerticalNavigationPosition } from '../navigation.types';\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 animations: cmatAnimations,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatVerticalNavigation',\r\n standalone: true,\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 = this._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 @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 _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 _player: AnimationPlayer;\r\n private _scrollStrategy: ScrollStrategy = this._scrollStrategyOptions.block();\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _animationBuilder: AnimationBuilder,\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _elementRef: ElementRef,\r\n private _renderer2: Renderer2,\r\n private _router: Router,\r\n private _scrollStrategyOptions: ScrollStrategyOptions,\r\n private _cmatNavigationService: CmatNavigationService,\r\n private _cmatUtilsService: CmatUtilsService\r\n ) {\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.next(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.next(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.next(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 = this._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') as HTMLElement;\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.next(item);\r\n }\r\n\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 // Create the enter animation and attach it to the player\r\n this._player = this._animationBuilder.build([\r\n animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 1 }))\r\n ]).create(this._overlay);\r\n\r\n // Play the animation\r\n this._player.play();\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 // Create the leave animation and attach it to the player\r\n this._player = this._animationBuilder.build([\r\n animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 0 }))\r\n ]).create(this._overlay);\r\n\r\n // Play the animation\r\n this._player.play();\r\n\r\n // Once the animation is done...\r\n this._player.onDone(() => {\r\n\r\n // If the overlay still exists...\r\n if (this._overlay) {\r\n // Remove the event listener\r\n this._overlay.removeEventListener('click', this._handleOverlayClick);\r\n\r\n // Remove the overlay\r\n this._overlay.parentNode?.removeChild(this._overlay);\r\n this._overlay = null;\r\n }\r\n\r\n // Disable block scroll strategy\r\n this._scrollStrategy.disable();\r\n });\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 // Create the enter animation and attach it to the player\r\n this._player =\r\n this._animationBuilder\r\n .build([\r\n animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 1 }))\r\n ]).create(this._asideOverlay);\r\n\r\n // Play the animation\r\n this._player.play();\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 // Create the leave animation and attach it to the player\r\n this._player =\r\n this._animationBuilder\r\n .build([\r\n animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 0 }))\r\n ]).create(this._asideOverlay);\r\n\r\n // Play the animation\r\n this._player.play();\r\n\r\n // Once the animation is done...\r\n this._player.onDone(() => {\r\n // If the aside overlay still exists...\r\n if (this._asideOverlay) {\r\n // Remove the event listener\r\n this._asideOverlay.removeEventListener('click', this._handleAsideOverlayClick);\r\n\r\n // Remove the aside overlay\r\n this._asideOverlay.parentNode?.removeChild(this._asideOverlay);\r\n this._asideOverlay = null;\r\n }\r\n });\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.next(open);\r\n }\r\n}\r\n","<div class=\"cmat-vertical-navigation-wrapper\">\n\n <!-- Header -->\n <div class=\"cmat-vertical-navigation-header\">\n <ng-content select=\"[cmatVerticalNavigationHeader]\"></ng-content>\n </div>\n\n <!-- Content -->\n <div class=\"cmat-vertical-navigation-content overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\" #navigationContent>\n\n <!-- Content header -->\n <div class=\"cmat-vertical-navigation-content-header\">\n <ng-content select=\"[cmatVerticalNavigationContentHeader]\"></ng-content>\n </div>\n\n <!-- Items -->\n @for (item of navigation; track trackByFn($index, item)) {\n <!-- Skip the hidden items -->\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\n <!-- Aside -->\n @if (item.type === 'aside') {\n <cmat-vertical-navigation-aside-item [item]=\"item\" [name]=\"name\" [activeItemId]=\"activeAsideItemId\"\n [autoCollapse]=\"autoCollapse\" [skipChildren]=\"true\" (click)=\"toggleAside(item)\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\n </cmat-vertical-navigation-aside-item>\n }\n <!-- Basic -->\n @if (item.type === 'basic') {\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\n </cmat-vertical-navigation-basic-item>\n }\n <!-- Collapsable -->\n @if (item.type === 'collapsable') {\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"\n [autoCollapse]=\"autoCollapse\"></cmat-vertical-navigation-collapsable-item>\n }\n <!-- Divider -->\n @if (item.type === 'divider') {\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\n </cmat-vertical-navigation-divider-item>\n }\n <!-- Group -->\n @if (item.type === 'group') {\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\n </cmat-vertical-navigation-group-item>\n }\n <!-- Spacer -->\n @if (item.type === 'spacer') {\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\n </cmat-vertical-navigation-spacer-item>\n }\n }\n }\n\n <!-- Content footer -->\n <div class=\"cmat-vertical-navigation-content-footer\">\n <ng-content select=\"[cmatVerticalNavigationContentFooter]\"></ng-content>\n </div>\n\n </div>\n <!-- Footer -->\n <div class=\"cmat-vertical-navigation-footer\">\n <ng-content select=\"[cmatVerticalNavigationFooter]\"></ng-content>\n </div>\n\n</div>\n\n<!-- Aside -->\n@if (activeAsideItemId) {\n <div class=\"cmat-vertical-navigation-aside-wrapper overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\"\n [@fadeInLeft]=\"position === 'left'\" [@fadeInRight]=\"position === 'right'\" [@fadeOutLeft]=\"position === 'left'\"\n [@fadeOutRight]=\"position === 'right'\">\n <!-- Items -->\n @for (item of navigation; track trackByFn($index, item)) {\n <!-- Skip the hidden items -->\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\n <!-- Aside -->\n @if (item.type === 'aside' && item.id === activeAsideItemId) {\n <cmat-vertical-navigation-aside-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\">\n </cmat-vertical-navigation-aside-item>\n }\n }\n }\n </div>\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 | string;\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":["i1.CmatNavigationService","i5","i2","i2.CmatNavigationService","i1","i3","i4.CmatNavigationService"],"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, Input, OnDestroy, OnInit } 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, 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 standalone: true,\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\r\n isActiveMatchOptions: IsActiveMatchOptions;\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService,\r\n private _cmatUtilsService: CmatUtilsService\r\n ) {\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\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","<!-- Item wrapper -->\n<div class=\"cmat-horizontal-navigation-item-wrapper\"\n [class.cmat-horizontal-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\">\n\n <!-- Item with an internal link -->\n @if (item.link && !item.externalLink && !item.function && !item.disabled) {\n <div class=\"cmat-horizontal-navigation-item\"\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [routerLinkActive]=\"'cmat-horizontal-navigation-item-active'\"\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item with an external link -->\n @if (item.link && item.externalLink && !item.function && !item.disabled) {\n <a class=\"cmat-horizontal-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n }\n\n <!-- Item with a function -->\n @if (!item.link && item.function && !item.disabled) {\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item with an internal link and function -->\n @if (item.link && !item.externalLink && item.function && !item.disabled) {\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [routerLinkActive]=\"'cmat-horizontal-navigation-item-active'\"\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item with an external link and function -->\n @if (item.link && item.externalLink && item.function && !item.disabled) {\n <a class=\"cmat-horizontal-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\n [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\" mat-menu-item>\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n }\n\n <!-- Item with a no link and no function -->\n @if (!item.link && !item.function && !item.disabled) {\n <div class=\"cmat-horizontal-navigation-item\"\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item is disabled -->\n @if (item.disabled) {\n <div class=\"cmat-horizontal-navigation-item cmat-horizontal-navigation-item-disabled\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n <!-- Icon -->\n @if (item.icon) {\n <mat-icon class=\"cmat-horizontal-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\n </mat-icon>\n }\n\n <!-- Title & Subtitle -->\n <div class=\"cmat-horizontal-navigation-item-title-wrapper\">\n <div class=\"cmat-horizontal-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{item.title}}\n </span>\n </div>\n</div>\n\n<!-- Badge -->\n@if (item.badge) {\n <div class=\"cmat-horizontal-navigation-item-badge\">\n <div class=\"cmat-horizontal-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n}\n\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } 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 standalone: true,\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 _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\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 // 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, Input, OnDestroy, OnInit, ViewChild, forwardRef } 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 standalone: true,\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 @ViewChild('matMenu', { static: true }) matMenu: MatMenu;\r\n\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\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 // 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","@if (!child) {\r\n <div [ngClass]=\"{'cmat-horizontal-navigation-menu-active': trigger.menuOpen,\r\n 'cmat-horizontal-navigation-menu-active-forced': item.active}\" [matMenuTriggerFor]=\"matMenu\"\r\n (onMenuOpen)=\"triggerChangeDetection()\" (onMenuClose)=\"triggerChangeDetection()\" #trigger=\"matMenuTrigger\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\r\n </div>\r\n}\r\n\r\n<mat-menu class=\"cmat-horizontal-navigation-menu-panel\" [overlapTrigger]=\"false\" #matMenu=\"matMenu\">\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\" [disabled]=\"item.disabled\" mat-menu-item>\r\n <cmat-horizontal-navigation-basic-item [item]=\"item\" [name]=\"name\">\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\" [disabled]=\"item.disabled\"\r\n [matMenuTriggerFor]=\"branch.matMenu\" mat-menu-item>\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\r\n <cmat-horizontal-navigation-branch-item [child]=\"true\" [item]=\"item\" [name]=\"name\" #branch>\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 let-item #itemTemplate>\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 } 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 standalone: true,\r\n imports: [NgClass]\r\n})\r\nexport class CmatHorizontalNavigationSpacerItemComponent implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\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 // 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, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation } from '@angular/core';\r\nimport { ReplaySubject, Subject } from 'rxjs';\r\nimport { cmatAnimations } from 'cmat/animations';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\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\nimport { CmatNavigationService } from '../navigation.service';\r\nimport { CmatNavigationItem } from '../navigation.types';\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 animations: cmatAnimations,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatHorizontalNavigation',\r\n standalone: true,\r\n imports: [CmatHorizontalNavigationBasicItemComponent, CmatHorizontalNavigationBranchItemComponent, CmatHorizontalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatHorizontalNavigationComponent implements OnChanges, OnInit, OnDestroy {\r\n @Input() name: string = this._cmatUtilsService.randomId();\r\n @Input() navigation: CmatNavigationItem[];\r\n\r\n onRefreshed: ReplaySubject<boolean> = new ReplaySubject<boolean>(1);\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService,\r\n private _cmatUtilsService: CmatUtilsService\r\n ) {\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 // 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 /**\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 = this._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 /**\r\n * On destroy\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 // @ 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 * 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","<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 [name]=\"name\"></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\"\r\n [name]=\"name\"></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 } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { IsActiveMatchOptions, 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 standalone: true,\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 @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n \r\n isActiveMatchOptions: IsActiveMatchOptions;\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService,\r\n private _cmatUtilsService: CmatUtilsService\r\n ) {\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\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.next(this.item);\r\n }\r\n}\r\n","<!-- Item wrapper -->\n<div class=\"cmat-vertical-navigation-item-wrapper\" [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\"\n [ngClass]=\"item.classes?.wrapper\">\n\n @if(editState){\n <div class=\"cmat-vertical-navigation-item\" role=\"presentation\"\n [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\n (click)=\"selectItem()\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }@else{\n <!-- Item with an internal link -->\n @if (item.link && !item.externalLink && !item.function && !item.disabled) {\n <a class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\"\n [routerLink]=\"[item.link]\" [routerLinkActive]=\"'cmat-vertical-navigation-item-active'\"\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n }\n\n <!-- Item with an external link -->\n @if (item.link && item.externalLink && !item.function && !item.disabled) {\n <a class=\"cmat-vertical-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n }\n\n <!-- Item with a function -->\n @if (!item.link && item.function && !item.disabled) {\n <div class=\"cmat-vertical-navigation-item\" role=\"presentation\"\n [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\n (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item with an internal link and function -->\n @if (item.link && !item.externalLink && item.function && !item.disabled) {\n <a class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\"\n [routerLink]=\"[item.link]\" [routerLinkActive]=\"'cmat-vertical-navigation-item-active'\"\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n }\n\n <!-- Item with an external link and function -->\n @if (item.link && item.externalLink && item.function && !item.disabled) {\n <a class=\"cmat-vertical-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\n [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n }\n\n <!-- Item with a no link and no function -->\n @if (!item.link && !item.function && !item.disabled) {\n <div class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n\n <!-- Item is disabled -->\n @if (item.disabled) {\n <div class=\"cmat-vertical-navigation-item cmat-vertical-navigation-item-disabled\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n }\n }\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n <!-- Icon -->\n @if (item.icon) {\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\n </mat-icon>\n }\n\n <!-- Title & Subtitle -->\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\n <div class=\"cmat-vertical-navigation-item-title\">\n <span [ngClass]=\"item.classes?.title\">\n {{item.title}}\n </span>\n </div>\n @if (item.subTitle) {\n <div class=\"cmat-vertical-navigation-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subTitle}}\n </span>\n </div>\n }\n </div>\n\n <!-- Badge -->\n @if (item.badge) {\n <div class=\"cmat-vertical-navigation-item-badge\">\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n }\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output } 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 standalone: true,\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 _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\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 // 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.next(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 } 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 standalone: true,\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 constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\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 // 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.next(item);\r\n }\r\n}\r\n","<!-- Spacer -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper\" [ngClass]=\"item.classes?.wrapper\" role=\"presentation\" (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 } 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 standalone: true,\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 @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 constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\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 // 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 selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(item);\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\" role=\"presentation\" (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\" (editSelectedItemChanged)=\"selectItem($event)\"></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\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($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\" (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\" (editSelectedItemChanged)=\"selectItem($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\" (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 { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output, forwardRef } 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 { cmatAnimations } from 'cmat/animations';\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 styles: [],\r\n animations: cmatAnimations,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\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 @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n \r\n isCollapsed: boolean = true;\r\n isExpanded: boolean = false;\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _router: Router,\r\n private _cmatNavigationService: CmatNavigationService\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-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 // @ 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 // 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 selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(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.indexOf(item) > -1) {\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\" [ngClass]=\"{'cmat-vertical-navigation-item-disabled': item.disabled}\"\r\n [matTooltip]=\"item.tooltip || ''\" (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 class=\"cmat-vertical-navigation-item-children\" @expandCollapse>\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\" (editSelectedItemChanged)=\"selectItem($event)\"></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\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($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\" (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)\"></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 } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } 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 standalone: true,\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 @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n \r\n active: boolean = false;\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _router: Router,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\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 // 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 selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(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\" [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\"\r\n [ngClass]=\"item.classes?.wrapper\" role=\"presentation\" (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\" (editSelectedItemChanged)=\"selectItem($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\" (editSelectedItemChanged)=\"selectItem($event)\"\r\n [autoCollapse]=\"autoCollapse\"></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 { animate, AnimationBuilder, AnimationPlayer, style } from '@angular/animations';\r\nimport { 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 } 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 { cmatAnimations } from 'cmat/animations';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\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\nimport { CmatNavigationService } from '../navigation.service';\r\nimport { CmatNavigationItem, CmatVerticalNavigationAppearance, CmatVerticalNavigationMode, CmatVerticalNavigationPosition } from '../navigation.types';\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 animations: cmatAnimations,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatVerticalNavigation',\r\n standalone: true,\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 = this._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 @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 _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 _player: AnimationPlayer;\r\n private _scrollStrategy: ScrollStrategy = this._scrollStrategyOptions.block();\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _animationBuilder: AnimationBuilder,\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _elementRef: ElementRef,\r\n private _renderer2: Renderer2,\r\n private _router: Router,\r\n private _scrollStrategyOptions: ScrollStrategyOptions,\r\n private _cmatNavigationService: CmatNavigationService,\r\n private _cmatUtilsService: CmatUtilsService\r\n ) {\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.next(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.next(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.next(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 = this._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') as HTMLElement;\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.next(item);\r\n }\r\n\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 // Create the enter animation and attach it to the player\r\n this._player = this._animationBuilder.build([\r\n animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 1 }))\r\n ]).create(this._overlay);\r\n\r\n // Play the animation\r\n this._player.play();\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 // Create the leave animation and attach it to the player\r\n this._player = this._animationBuilder.build([\r\n animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 0 }))\r\n ]).create(this._overlay);\r\n\r\n // Play the animation\r\n this._player.play();\r\n\r\n // Once the animation is done...\r\n this._player.onDone(() => {\r\n\r\n // If the overlay still exists...\r\n if (this._overlay) {\r\n // Remove the event listener\r\n this._overlay.removeEventListener('click', this._handleOverlayClick);\r\n\r\n // Remove the overlay\r\n this._overlay.parentNode?.removeChild(this._overlay);\r\n this._overlay = null;\r\n }\r\n\r\n // Disable block scroll strategy\r\n this._scrollStrategy.disable();\r\n });\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 // Create the enter animation and attach it to the player\r\n this._player =\r\n this._animationBuilder\r\n .build([\r\n animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 1 }))\r\n ]).create(this._asideOverlay);\r\n\r\n // Play the animation\r\n this._player.play();\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 // Create the leave animation and attach it to the player\r\n this._player =\r\n this._animationBuilder\r\n .build([\r\n animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 0 }))\r\n ]).create(this._asideOverlay);\r\n\r\n // Play the animation\r\n this._player.play();\r\n\r\n // Once the animation is done...\r\n this._player.onDone(() => {\r\n // If the aside overlay still exists...\r\n if (this._asideOverlay) {\r\n // Remove the event listener\r\n this._asideOverlay.removeEventListener('click', this._handleAsideOverlayClick);\r\n\r\n // Remove the aside overlay\r\n this._asideOverlay.parentNode?.removeChild(this._asideOverlay);\r\n this._asideOverlay = null;\r\n }\r\n });\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.next(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 class=\"cmat-vertical-navigation-content overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\" #navigationContent>\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\" (click)=\"toggleAside(item)\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($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\" (editSelectedItemChanged)=\"selectItem($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\" (editSelectedItemChanged)=\"selectItem($event)\"\r\n [autoCollapse]=\"autoCollapse\"></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\" [autoCollapse]=\"autoCollapse\" [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\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 lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\"\r\n [@fadeInLeft]=\"position === 'left'\" [@fadeInRight]=\"position === 'right'\" [@fadeOutLeft]=\"position === 'left'\"\r\n [@fadeOutRight]=\"position === 'right'\">\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 </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 | string;\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":["i1.CmatNavigationService","i5","i2","i2.CmatNavigationService","i1","i3","i4.CmatNavigationService"],"mappings":"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"}