@ojiepermana/angular 22.1.14 → 22.2.1

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 (252) hide show
  1. package/README.md +8 -6
  2. package/SUPPORT.md +3 -3
  3. package/chart/README.md +1 -1
  4. package/component/README.md +2 -2
  5. package/component/calendar/README.md +3 -15
  6. package/component/drawer/README.md +1 -2
  7. package/fesm2022/ojiepermana-angular-chart-area.mjs +352 -137
  8. package/fesm2022/ojiepermana-angular-chart-bar.mjs +744 -524
  9. package/fesm2022/ojiepermana-angular-chart-core.mjs +1140 -1344
  10. package/fesm2022/ojiepermana-angular-chart-line.mjs +393 -147
  11. package/fesm2022/ojiepermana-angular-chart-pie.mjs +408 -179
  12. package/fesm2022/ojiepermana-angular-chart-primitives.mjs +1262 -920
  13. package/fesm2022/ojiepermana-angular-chart-radar.mjs +473 -205
  14. package/fesm2022/ojiepermana-angular-chart-radial.mjs +425 -182
  15. package/fesm2022/ojiepermana-angular-chart-scatter.mjs +386 -210
  16. package/fesm2022/ojiepermana-angular-chart.mjs +3 -19
  17. package/fesm2022/ojiepermana-angular-component-accordion.mjs +485 -243
  18. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +963 -325
  19. package/fesm2022/ojiepermana-angular-component-alert.mjs +266 -103
  20. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +80 -35
  21. package/fesm2022/ojiepermana-angular-component-avatar.mjs +402 -135
  22. package/fesm2022/ojiepermana-angular-component-badge.mjs +109 -59
  23. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +410 -142
  24. package/fesm2022/ojiepermana-angular-component-button-group.mjs +249 -96
  25. package/fesm2022/ojiepermana-angular-component-button.mjs +153 -75
  26. package/fesm2022/ojiepermana-angular-component-calendar.mjs +531 -418
  27. package/fesm2022/ojiepermana-angular-component-card.mjs +457 -171
  28. package/fesm2022/ojiepermana-angular-component-carousel.mjs +642 -272
  29. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +312 -108
  30. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +299 -115
  31. package/fesm2022/ojiepermana-angular-component-combobox.mjs +396 -183
  32. package/fesm2022/ojiepermana-angular-component-command.mjs +807 -347
  33. package/fesm2022/ojiepermana-angular-component-composer.mjs +807 -330
  34. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +196 -161
  35. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +650 -338
  36. package/fesm2022/ojiepermana-angular-component-dialog.mjs +710 -316
  37. package/fesm2022/ojiepermana-angular-component-drawer.mjs +1 -5
  38. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +1212 -646
  39. package/fesm2022/ojiepermana-angular-component-editor.mjs +987 -502
  40. package/fesm2022/ojiepermana-angular-component-empty.mjs +350 -137
  41. package/fesm2022/ojiepermana-angular-component-form.mjs +813 -434
  42. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +486 -277
  43. package/fesm2022/ojiepermana-angular-component-icon.mjs +241 -140
  44. package/fesm2022/ojiepermana-angular-component-input-group.mjs +449 -176
  45. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +891 -488
  46. package/fesm2022/ojiepermana-angular-component-input.mjs +86 -55
  47. package/fesm2022/ojiepermana-angular-component-item.mjs +713 -261
  48. package/fesm2022/ojiepermana-angular-component-kanban.mjs +714 -216
  49. package/fesm2022/ojiepermana-angular-component-kbd.mjs +124 -52
  50. package/fesm2022/ojiepermana-angular-component-label.mjs +82 -31
  51. package/fesm2022/ojiepermana-angular-component-menubar.mjs +479 -329
  52. package/fesm2022/ojiepermana-angular-component-native-select.mjs +167 -65
  53. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +683 -380
  54. package/fesm2022/ojiepermana-angular-component-pagination.mjs +277 -94
  55. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +1283 -607
  56. package/fesm2022/ojiepermana-angular-component-popover.mjs +291 -204
  57. package/fesm2022/ojiepermana-angular-component-progress.mjs +176 -53
  58. package/fesm2022/ojiepermana-angular-component-radio.mjs +449 -142
  59. package/fesm2022/ojiepermana-angular-component-resizable.mjs +659 -453
  60. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +117 -39
  61. package/fesm2022/ojiepermana-angular-component-segmented-control.mjs +351 -172
  62. package/fesm2022/ojiepermana-angular-component-select.mjs +475 -345
  63. package/fesm2022/ojiepermana-angular-component-separator.mjs +102 -35
  64. package/fesm2022/ojiepermana-angular-component-sheet.mjs +797 -347
  65. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +62 -29
  66. package/fesm2022/ojiepermana-angular-component-slider.mjs +592 -376
  67. package/fesm2022/ojiepermana-angular-component-spinner.mjs +135 -38
  68. package/fesm2022/ojiepermana-angular-component-switch.mjs +315 -103
  69. package/fesm2022/ojiepermana-angular-component-table.mjs +440 -153
  70. package/fesm2022/ojiepermana-angular-component-tabs.mjs +590 -317
  71. package/fesm2022/ojiepermana-angular-component-textarea.mjs +85 -50
  72. package/fesm2022/ojiepermana-angular-component-timeline.mjs +609 -231
  73. package/fesm2022/ojiepermana-angular-component-toast.mjs +229 -243
  74. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +573 -288
  75. package/fesm2022/ojiepermana-angular-component-toggle.mjs +187 -78
  76. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +798 -517
  77. package/fesm2022/ojiepermana-angular-component-utils-core.mjs +159 -292
  78. package/fesm2022/ojiepermana-angular-component-utils-overlay.mjs +46 -58
  79. package/fesm2022/ojiepermana-angular-component-utils-scale.mjs +76 -38
  80. package/fesm2022/ojiepermana-angular-component-utils.mjs +2 -8
  81. package/fesm2022/ojiepermana-angular-component.mjs +0 -10
  82. package/fesm2022/ojiepermana-angular-navigation-core.mjs +13 -23
  83. package/fesm2022/ojiepermana-angular-navigation-icon.mjs +35 -24
  84. package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-DYuysKVf.mjs +129 -0
  85. package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-COiTaw34.mjs +812 -0
  86. package/fesm2022/{ojiepermana-angular-navigation-navigation-entry-grid.component-COQ-60DS.mjs → ojiepermana-angular-navigation-navigation-entry-grid.component-YIz0IsIb.mjs} +392 -207
  87. package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-D2vwEwBY.mjs +650 -0
  88. package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-B5D7yXfb.mjs +662 -0
  89. package/fesm2022/ojiepermana-angular-navigation-navigation-item.component-CUb68MZH.mjs +1219 -0
  90. package/fesm2022/ojiepermana-angular-navigation-navigation-list.component-CrK16trj.mjs +327 -0
  91. package/fesm2022/ojiepermana-angular-navigation-service.mjs +544 -724
  92. package/fesm2022/ojiepermana-angular-navigation-types.mjs +139 -56
  93. package/fesm2022/ojiepermana-angular-navigation.mjs +3256 -4
  94. package/fesm2022/ojiepermana-angular-sdk.mjs +91 -201
  95. package/fesm2022/ojiepermana-angular-theme-component-settings.mjs +1125 -737
  96. package/fesm2022/ojiepermana-angular-theme-layout-services.mjs +245 -328
  97. package/fesm2022/ojiepermana-angular-theme-layout-types.mjs +35 -38
  98. package/fesm2022/ojiepermana-angular-theme-layout-wrapper.mjs +1928 -553
  99. package/fesm2022/ojiepermana-angular-theme-layout.mjs +847 -496
  100. package/fesm2022/ojiepermana-angular-theme-page-core.mjs +288 -358
  101. package/fesm2022/ojiepermana-angular-theme-page-filter.mjs +362 -224
  102. package/fesm2022/ojiepermana-angular-theme-page-overview.mjs +88 -0
  103. package/fesm2022/ojiepermana-angular-theme-page-root.mjs +576 -254
  104. package/fesm2022/ojiepermana-angular-theme-page-side.mjs +317 -177
  105. package/fesm2022/ojiepermana-angular-theme-page-slots.mjs +256 -112
  106. package/fesm2022/ojiepermana-angular-theme-page.mjs +7 -12
  107. package/fesm2022/ojiepermana-angular-theme-shell-services.mjs +215 -326
  108. package/fesm2022/ojiepermana-angular-theme-shell-types.mjs +68 -129
  109. package/fesm2022/ojiepermana-angular-theme-shell.mjs +907 -378
  110. package/fesm2022/ojiepermana-angular-theme-styles.mjs +521 -720
  111. package/fesm2022/ojiepermana-angular-theme.mjs +0 -10
  112. package/fesm2022/ojiepermana-angular.mjs +5 -24
  113. package/navigation/README.md +69 -18
  114. package/package.json +16 -12
  115. package/sdk/README.md +1 -1
  116. package/sdk/src/writer/index.js +2 -2
  117. package/theme/README.md +1 -1
  118. package/theme/layout/README.md +2 -4
  119. package/theme/page/README.md +50 -0
  120. package/theme/styles/README.md +10 -10
  121. package/theme/styles/css/base/prefers-dark.css +1 -1
  122. package/theme/styles/css/base/status.css +1 -1
  123. package/theme/styles/css/color/amber.css +1 -1
  124. package/theme/styles/css/color/blue.css +1 -1
  125. package/theme/styles/css/color/cyan.css +1 -1
  126. package/theme/styles/css/color/emerald.css +1 -1
  127. package/theme/styles/css/color/fuchsia.css +1 -1
  128. package/theme/styles/css/color/green.css +1 -1
  129. package/theme/styles/css/color/indigo.css +1 -1
  130. package/theme/styles/css/color/lime.css +1 -1
  131. package/theme/styles/css/color/orange.css +1 -1
  132. package/theme/styles/css/color/pink.css +1 -1
  133. package/theme/styles/css/color/purple.css +1 -1
  134. package/theme/styles/css/color/red.css +1 -1
  135. package/theme/styles/css/color/rose.css +1 -1
  136. package/theme/styles/css/color/sky.css +1 -1
  137. package/theme/styles/css/color/teal.css +1 -1
  138. package/theme/styles/css/color/violet.css +1 -1
  139. package/theme/styles/css/color/yellow.css +1 -1
  140. package/theme/styles/css/neutral/gray.css +1 -1
  141. package/theme/styles/css/neutral/mauve.css +1 -1
  142. package/theme/styles/css/neutral/mist.css +1 -1
  143. package/theme/styles/css/neutral/neutral.css +1 -1
  144. package/theme/styles/css/neutral/olive.css +1 -1
  145. package/theme/styles/css/neutral/slate.css +1 -1
  146. package/theme/styles/css/neutral/stone.css +1 -1
  147. package/theme/styles/css/neutral/taupe.css +1 -1
  148. package/theme/styles/css/neutral/zinc.css +1 -1
  149. package/types/ojiepermana-angular-chart-area.d.ts +126 -63
  150. package/types/ojiepermana-angular-chart-bar.d.ts +244 -154
  151. package/types/ojiepermana-angular-chart-core.d.ts +409 -398
  152. package/types/ojiepermana-angular-chart-line.d.ts +141 -68
  153. package/types/ojiepermana-angular-chart-pie.d.ts +192 -121
  154. package/types/ojiepermana-angular-chart-primitives.d.ts +283 -214
  155. package/types/ojiepermana-angular-chart-radar.d.ts +189 -108
  156. package/types/ojiepermana-angular-chart-radial.d.ts +177 -106
  157. package/types/ojiepermana-angular-chart-scatter.d.ts +166 -110
  158. package/types/ojiepermana-angular-chart.d.ts +3 -2
  159. package/types/ojiepermana-angular-component-accordion.d.ts +135 -81
  160. package/types/ojiepermana-angular-component-alert-dialog.d.ts +271 -123
  161. package/types/ojiepermana-angular-component-alert.d.ts +69 -39
  162. package/types/ojiepermana-angular-component-aspect-ratio.d.ts +20 -12
  163. package/types/ojiepermana-angular-component-avatar.d.ts +103 -49
  164. package/types/ojiepermana-angular-component-badge.d.ts +36 -24
  165. package/types/ojiepermana-angular-component-breadcrumb.d.ts +79 -40
  166. package/types/ojiepermana-angular-component-button-group.d.ts +48 -24
  167. package/types/ojiepermana-angular-component-button.d.ts +44 -27
  168. package/types/ojiepermana-angular-component-calendar.d.ts +145 -107
  169. package/types/ojiepermana-angular-component-card.d.ts +112 -63
  170. package/types/ojiepermana-angular-component-carousel.d.ts +150 -81
  171. package/types/ojiepermana-angular-component-checkbox.d.ts +96 -38
  172. package/types/ojiepermana-angular-component-collapsible.d.ts +65 -39
  173. package/types/ojiepermana-angular-component-combobox.d.ts +100 -55
  174. package/types/ojiepermana-angular-component-command.d.ts +206 -121
  175. package/types/ojiepermana-angular-component-composer.d.ts +184 -84
  176. package/types/ojiepermana-angular-component-context-menu.d.ts +51 -41
  177. package/types/ojiepermana-angular-component-date-picker.d.ts +199 -109
  178. package/types/ojiepermana-angular-component-dialog.d.ts +200 -105
  179. package/types/ojiepermana-angular-component-drawer.d.ts +2 -1
  180. package/types/ojiepermana-angular-component-dropdown-menu.d.ts +324 -202
  181. package/types/ojiepermana-angular-component-editor.d.ts +215 -117
  182. package/types/ojiepermana-angular-component-empty.d.ts +80 -45
  183. package/types/ojiepermana-angular-component-form.d.ts +185 -121
  184. package/types/ojiepermana-angular-component-hover-card.d.ts +130 -72
  185. package/types/ojiepermana-angular-component-icon.d.ts +87 -57
  186. package/types/ojiepermana-angular-component-input-group.d.ts +93 -46
  187. package/types/ojiepermana-angular-component-input-otp.d.ts +243 -150
  188. package/types/ojiepermana-angular-component-input.d.ts +27 -17
  189. package/types/ojiepermana-angular-component-item.d.ts +160 -84
  190. package/types/ojiepermana-angular-component-kanban.d.ts +157 -62
  191. package/types/ojiepermana-angular-component-kbd.d.ts +24 -15
  192. package/types/ojiepermana-angular-component-label.d.ts +19 -11
  193. package/types/ojiepermana-angular-component-menubar.d.ts +120 -90
  194. package/types/ojiepermana-angular-component-native-select.d.ts +37 -24
  195. package/types/ojiepermana-angular-component-navigation-menu.d.ts +157 -98
  196. package/types/ojiepermana-angular-component-pagination.d.ts +78 -28
  197. package/types/ojiepermana-angular-component-pillbox.d.ts +361 -204
  198. package/types/ojiepermana-angular-component-popover.d.ts +94 -64
  199. package/types/ojiepermana-angular-component-progress.d.ts +45 -17
  200. package/types/ojiepermana-angular-component-radio.d.ts +129 -53
  201. package/types/ojiepermana-angular-component-resizable.d.ts +160 -112
  202. package/types/ojiepermana-angular-component-scroll-area.d.ts +33 -15
  203. package/types/ojiepermana-angular-component-segmented-control.d.ts +94 -50
  204. package/types/ojiepermana-angular-component-select.d.ts +94 -77
  205. package/types/ojiepermana-angular-component-separator.d.ts +26 -14
  206. package/types/ojiepermana-angular-component-sheet.d.ts +226 -116
  207. package/types/ojiepermana-angular-component-skeleton.d.ts +13 -10
  208. package/types/ojiepermana-angular-component-slider.d.ts +140 -75
  209. package/types/ojiepermana-angular-component-spinner.d.ts +31 -13
  210. package/types/ojiepermana-angular-component-switch.d.ts +97 -40
  211. package/types/ojiepermana-angular-component-table.d.ts +102 -50
  212. package/types/ojiepermana-angular-component-tabs.d.ts +174 -115
  213. package/types/ojiepermana-angular-component-textarea.d.ts +27 -17
  214. package/types/ojiepermana-angular-component-timeline.d.ts +141 -59
  215. package/types/ojiepermana-angular-component-toast.d.ts +51 -55
  216. package/types/ojiepermana-angular-component-toggle-group.d.ts +159 -88
  217. package/types/ojiepermana-angular-component-toggle.d.ts +47 -25
  218. package/types/ojiepermana-angular-component-tooltip.d.ts +222 -132
  219. package/types/ojiepermana-angular-component-utils-core.d.ts +81 -90
  220. package/types/ojiepermana-angular-component-utils-overlay.d.ts +7 -11
  221. package/types/ojiepermana-angular-component-utils-scale.d.ts +20 -12
  222. package/types/ojiepermana-angular-component-utils.d.ts +2 -2
  223. package/types/ojiepermana-angular-component.d.ts +1 -2
  224. package/types/ojiepermana-angular-navigation-core.d.ts +46 -50
  225. package/types/ojiepermana-angular-navigation-icon.d.ts +9 -12
  226. package/types/ojiepermana-angular-navigation-service.d.ts +112 -115
  227. package/types/ojiepermana-angular-navigation-types.d.ts +166 -125
  228. package/types/ojiepermana-angular-navigation.d.ts +708 -375
  229. package/types/ojiepermana-angular-sdk.d.ts +69 -71
  230. package/types/ojiepermana-angular-theme-component-settings.d.ts +120 -86
  231. package/types/ojiepermana-angular-theme-layout-services.d.ts +119 -124
  232. package/types/ojiepermana-angular-theme-layout-types.d.ts +27 -31
  233. package/types/ojiepermana-angular-theme-layout-wrapper.d.ts +446 -187
  234. package/types/ojiepermana-angular-theme-layout.d.ts +201 -113
  235. package/types/ojiepermana-angular-theme-page-core.d.ts +136 -142
  236. package/types/ojiepermana-angular-theme-page-filter.d.ts +112 -62
  237. package/types/ojiepermana-angular-theme-page-overview.d.ts +28 -0
  238. package/types/ojiepermana-angular-theme-page-root.d.ts +172 -88
  239. package/types/ojiepermana-angular-theme-page-side.d.ts +89 -49
  240. package/types/ojiepermana-angular-theme-page-slots.d.ts +58 -37
  241. package/types/ojiepermana-angular-theme-page.d.ts +7 -5
  242. package/types/ojiepermana-angular-theme-shell-services.d.ts +119 -125
  243. package/types/ojiepermana-angular-theme-shell-types.d.ts +38 -41
  244. package/types/ojiepermana-angular-theme-shell.d.ts +139 -61
  245. package/types/ojiepermana-angular-theme-styles.d.ts +184 -196
  246. package/types/ojiepermana-angular-theme.d.ts +1 -2
  247. package/types/ojiepermana-angular.d.ts +5 -5
  248. package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-Be3IqzG4.mjs +0 -91
  249. package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-Bc7DWK3R.mjs +0 -522
  250. package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-DA8VPEn7.mjs +0 -404
  251. package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-U2TJTzlW.mjs +0 -466
  252. package/fesm2022/ojiepermana-angular-navigation-ojiepermana-angular-navigation-CIUhmytH.mjs +0 -2668
@@ -1,522 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { inject, ElementRef, Injector, input, output, computed, signal, afterNextRender, Component } from '@angular/core';
3
- import { NgTemplateOutlet } from '@angular/common';
4
- import { IconComponent } from '@ojiepermana/angular/component/icon';
5
- import { TooltipDirective } from '@ojiepermana/angular/component/tooltip';
6
- import { cn } from '@ojiepermana/angular/component/utils/core';
7
- import { N as NavigationItemComponent, a as NavigationItemContentComponent, b as NavigationListComponent } from './ojiepermana-angular-navigation-ojiepermana-angular-navigation-CIUhmytH.mjs';
8
- import { NAVIGATION_ADAPTER } from '@ojiepermana/angular/navigation/core';
9
- import { NavigationBadgeCountComponent } from './ojiepermana-angular-navigation-navigation-badge-count.component-Be3IqzG4.mjs';
10
-
11
- const EMPTY_NAVIGATION_BADGE_CONTEXT = Object.freeze({});
12
- class NavigationDockbarMenuComponent {
13
- nav = inject(NAVIGATION_ADAPTER);
14
- host = inject(ElementRef);
15
- injector = inject(Injector);
16
- navId = input('default', /* @ts-ignore */
17
- ...(ngDevMode ? [{ debugName: "navId" }] : /* istanbul ignore next */ []));
18
- items = input([], /* @ts-ignore */
19
- ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
20
- railItems = input(null, /* @ts-ignore */
21
- ...(ngDevMode ? [{ debugName: "railItems" }] : /* istanbul ignore next */ []));
22
- badgeContext = input(EMPTY_NAVIGATION_BADGE_CONTEXT, /* @ts-ignore */
23
- ...(ngDevMode ? [{ debugName: "badgeContext" }] : /* istanbul ignore next */ []));
24
- mode = input('sticky', /* @ts-ignore */
25
- ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
26
- position = input('left', /* @ts-ignore */
27
- ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
28
- itemClass = input('', /* @ts-ignore */
29
- ...(ngDevMode ? [{ debugName: "itemClass" }] : /* istanbul ignore next */ []));
30
- activeIds = input(new Set(), /* @ts-ignore */
31
- ...(ngDevMode ? [{ debugName: "activeIds" }] : /* istanbul ignore next */ []));
32
- activeUrl = input(null, /* @ts-ignore */
33
- ...(ngDevMode ? [{ debugName: "activeUrl" }] : /* istanbul ignore next */ []));
34
- /** Resolved by `<Navigation>` so route-aware and legacy panel state share one source of truth. */
35
- resolvedGroup = input(undefined, /* @ts-ignore */
36
- ...(ngDevMode ? [{ debugName: "resolvedGroup" }] : /* istanbul ignore next */ []));
37
- iconTemplate = input(undefined, /* @ts-ignore */
38
- ...(ngDevMode ? [{ debugName: "iconTemplate" }] : /* istanbul ignore next */ []));
39
- collapseTree = input('stairs', /* @ts-ignore */
40
- ...(ngDevMode ? [{ debugName: "collapseTree" }] : /* istanbul ignore next */ []));
41
- openedIds = input([], /* @ts-ignore */
42
- ...(ngDevMode ? [{ debugName: "openedIds" }] : /* istanbul ignore next */ []));
43
- /** Template footer aside (slot `ng-template[NavigationAsideFooter]` di `<NavigationDockbar>`). */
44
- asideFooterTemplate = input(null, /* @ts-ignore */
45
- ...(ngDevMode ? [{ debugName: "asideFooterTemplate" }] : /* istanbul ignore next */ []));
46
- openedIdsChange = output();
47
- itemSelected = output();
48
- isDrawerMode = computed(() => this.mode() === 'drawer', /* @ts-ignore */
49
- ...(ngDevMode ? [{ debugName: "isDrawerMode" }] : /* istanbul ignore next */ []));
50
- tooltipPosition = computed(() => this.position() === 'right' ? 'left' : 'right', /* @ts-ignore */
51
- ...(ngDevMode ? [{ debugName: "tooltipPosition" }] : /* istanbul ignore next */ []));
52
- renderedRailItems = computed(() => this.railItems() ?? this.items(), /* @ts-ignore */
53
- ...(ngDevMode ? [{ debugName: "renderedRailItems" }] : /* istanbul ignore next */ []));
54
- asideId = computed(() => `nav-dockbar-${this.safeId(this.navId())}`, /* @ts-ignore */
55
- ...(ngDevMode ? [{ debugName: "asideId" }] : /* istanbul ignore next */ []));
56
- asideHeadingId = computed(() => `${this.asideId()}-heading`, /* @ts-ignore */
57
- ...(ngDevMode ? [{ debugName: "asideHeadingId" }] : /* istanbul ignore next */ []));
58
- openGroup = computed(() => {
59
- const resolved = this.resolvedGroup();
60
- return resolved !== undefined
61
- ? resolved
62
- : this.nav.resolveDockbarGroup(this.navId(), this.items(), this.mode(), this.activeIds(), this.activeUrl());
63
- }, /* @ts-ignore */
64
- ...(ngDevMode ? [{ debugName: "openGroup" }] : /* istanbul ignore next */ []));
65
- hostClasses = computed(() => cn('block w-(--layout-sidebar-collapsed-width)'), /* @ts-ignore */
66
- ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
67
- railClasses = computed(() => cn('flex w-full list-none flex-col items-center gap-0.5 p-2',
68
- // Mode drawer: rail tetap di atas backdrop (z-40) agar user bisa langsung
69
- // berpindah group lain tanpa menutup drawer lebih dulu.
70
- this.isDrawerMode() && this.openGroup() !== null && 'relative z-50'), /* @ts-ignore */
71
- ...(ngDevMode ? [{ debugName: "railClasses" }] : /* istanbul ignore next */ []));
72
- asideClasses = computed(() => cn('absolute inset-y-0 flex w-(--layout-aside-width) flex-col bg-background',
73
- // Border only on the CONTENT-facing edge. The dockbar rail already draws the
74
- // rail-facing separator, so a rail-facing border here would double up
75
- // (right of the mini-dock + left of the aside). Use `border-border` (the same
76
- // solid token as the rail and the page) so the nav↔content divider is one
77
- // consistent color across rail, aside, and page.
78
- this.position() === 'right'
79
- ? 'right-(--layout-sidebar-collapsed-width) border-l border-border'
80
- : 'left-(--layout-sidebar-collapsed-width) border-r border-border', this.isDrawerMode() && 'z-50 shadow-xl'), /* @ts-ignore */
81
- ...(ngDevMode ? [{ debugName: "asideClasses" }] : /* istanbul ignore next */ []));
82
- /**
83
- * Offset backdrop agar kolom navigasi (rail + header/footer) benar-benar bebas
84
- * overlay — dockbar dan aside drawer berada di level yang sama di atas backdrop.
85
- * `null` berarti pengukuran tidak tersedia (mis. jsdom) dan backdrop jatuh ke
86
- * `inset-0` penuh seperti sebelumnya.
87
- */
88
- backdropInset = signal({
89
- left: null,
90
- right: null,
91
- }, /* @ts-ignore */
92
- ...(ngDevMode ? [{ debugName: "backdropInset" }] : /* istanbul ignore next */ []));
93
- onWindowResize() {
94
- if (this.isDrawerMode() && this.openGroup() !== null) {
95
- this.measureBackdropInset();
96
- }
97
- }
98
- measureBackdropInset() {
99
- const navEl = this.host.nativeElement.closest('[data-navigation-id]') ??
100
- this.host.nativeElement;
101
- const rect = navEl.getBoundingClientRect();
102
- const viewportWidth = this.host.nativeElement.ownerDocument?.defaultView?.innerWidth ?? 0;
103
- if (rect.width <= 0 || viewportWidth <= 0) {
104
- this.backdropInset.set({ left: null, right: null });
105
- return;
106
- }
107
- // Containing block backdrop `fixed` bisa bergeser dari viewport (ancestor dengan
108
- // filter/contain). Koreksi origin dihitung dari posisi aktual backdrop terhadap
109
- // style left/right yang sedang berlaku — konvergen dalam satu langkah re-measure.
110
- const backdrop = this.host.nativeElement.querySelector('[data-navigation-dockbar-backdrop="true"]');
111
- const backdropRect = backdrop?.getBoundingClientRect() ?? null;
112
- let originLeft = 0;
113
- let originRight = viewportWidth;
114
- if (backdrop && backdropRect && backdropRect.width > 0) {
115
- originLeft = backdropRect.left - this.parsePx(backdrop.style.left);
116
- originRight = backdropRect.right + this.parsePx(backdrop.style.right);
117
- }
118
- if (this.position() === 'right') {
119
- this.backdropInset.set({ left: null, right: Math.max(originRight - rect.left, 0) });
120
- return;
121
- }
122
- this.backdropInset.set({ left: Math.max(rect.right - originLeft, 0), right: null });
123
- }
124
- parsePx(value) {
125
- const parsed = Number.parseFloat(value);
126
- return Number.isFinite(parsed) ? parsed : 0;
127
- }
128
- /**
129
- * Template method calls re-run on every check; resolving the rail once per
130
- * dependency change keeps a redraw from replaying an URL match — and a `cn()`
131
- * merge — for every entry in it.
132
- */
133
- entryState = computed(() => {
134
- const activeIds = this.activeIds();
135
- const activeUrl = this.activeUrl();
136
- const openKey = this.openGroup()?.key ?? null;
137
- return new Map(this.renderedRailItems().map((entry) => {
138
- const active = this.nav.isItemActive(entry, activeIds, activeUrl);
139
- const open = openKey === entry.key;
140
- return [
141
- entry,
142
- { active, open, triggerClasses: this.computeTriggerClasses(entry, active, open) },
143
- ];
144
- }));
145
- }, /* @ts-ignore */
146
- ...(ngDevMode ? [{ debugName: "entryState" }] : /* istanbul ignore next */ []));
147
- isGroupOpen(entry) {
148
- return this.entryState().get(entry)?.open ?? false;
149
- }
150
- isGroupActive(entry) {
151
- return this.entryState().get(entry)?.active ?? false;
152
- }
153
- triggerClasses(entry) {
154
- return this.entryState().get(entry)?.triggerClasses ?? '';
155
- }
156
- computeTriggerClasses(entry, active, open) {
157
- return cn('nav-text group/nav inline-flex size-(--nav-rail-item-size) items-center justify-center rounded-md transition-colors', 'relative', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50', open || active
158
- ? 'bg-accent text-foreground'
159
- : 'text-muted-foreground hover:bg-accent/60 hover:text-foreground', entry.classes?.wrapper, this.itemClass());
160
- }
161
- toggleGroup(entry) {
162
- const wasOpen = this.isGroupOpen(entry);
163
- if (!wasOpen && this.isDrawerMode()) {
164
- this.measureBackdropInset();
165
- }
166
- this.nav.togglePanel(this.navId(), entry);
167
- if (!this.isDrawerMode()) {
168
- return;
169
- }
170
- if (wasOpen) {
171
- this.afterRender(() => this.focusTrigger(entry.key));
172
- return;
173
- }
174
- this.afterRender(() => {
175
- // Ukur ulang setelah render: geometri kolom bisa bergeser saat panel terbuka.
176
- this.measureBackdropInset();
177
- this.focusFirstAsideItem();
178
- });
179
- }
180
- badgeFor(entry) {
181
- const sourceKey = entry.badge?.source;
182
- if (!sourceKey) {
183
- return null;
184
- }
185
- return this.badgeContext()[sourceKey] ?? null;
186
- }
187
- badgeClassesFor(entry) {
188
- return cn('absolute -right-1 -top-1', entry.badge?.classes);
189
- }
190
- closeAside() {
191
- const openKey = this.openGroup()?.key ?? null;
192
- this.nav.closePanel(this.navId());
193
- if (openKey !== null) {
194
- this.afterRender(() => this.focusTrigger(openKey));
195
- }
196
- }
197
- onEscape(event) {
198
- if (!this.isDrawerMode() || this.openGroup() === null) {
199
- return;
200
- }
201
- event.preventDefault();
202
- this.closeAside();
203
- }
204
- afterRender(callback) {
205
- afterNextRender({ read: callback }, { injector: this.injector });
206
- }
207
- focusFirstAsideItem() {
208
- const aside = this.host.nativeElement.querySelector(`#${this.asideId()}`);
209
- const focusable = aside?.querySelector('a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])');
210
- focusable?.focus();
211
- }
212
- focusTrigger(key) {
213
- const navigationRoot = this.host.nativeElement.closest('[data-navigation-id]') ??
214
- this.host.nativeElement;
215
- const trigger = Array.from(navigationRoot.querySelectorAll('[data-navigation-item-key]')).find((candidate) => candidate.getAttribute('data-navigation-item-key') === key &&
216
- (candidate.hasAttribute('data-navigation-dockbar-trigger') ||
217
- candidate.hasAttribute('data-navigation-dockbar-route-trigger')));
218
- trigger?.focus();
219
- }
220
- safeId(value) {
221
- const normalized = value
222
- .trim()
223
- .toLowerCase()
224
- .replace(/[^a-z0-9_-]+/g, '-');
225
- return normalized || 'default';
226
- }
227
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NavigationDockbarMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
228
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: NavigationDockbarMenuComponent, isStandalone: true, selector: "NavigationDockbarMenu", inputs: { navId: { classPropertyName: "navId", publicName: "navId", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, railItems: { classPropertyName: "railItems", publicName: "railItems", isSignal: true, isRequired: false, transformFunction: null }, badgeContext: { classPropertyName: "badgeContext", publicName: "badgeContext", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, itemClass: { classPropertyName: "itemClass", publicName: "itemClass", isSignal: true, isRequired: false, transformFunction: null }, activeIds: { classPropertyName: "activeIds", publicName: "activeIds", isSignal: true, isRequired: false, transformFunction: null }, activeUrl: { classPropertyName: "activeUrl", publicName: "activeUrl", isSignal: true, isRequired: false, transformFunction: null }, resolvedGroup: { classPropertyName: "resolvedGroup", publicName: "resolvedGroup", isSignal: true, isRequired: false, transformFunction: null }, iconTemplate: { classPropertyName: "iconTemplate", publicName: "iconTemplate", isSignal: true, isRequired: false, transformFunction: null }, collapseTree: { classPropertyName: "collapseTree", publicName: "collapseTree", isSignal: true, isRequired: false, transformFunction: null }, openedIds: { classPropertyName: "openedIds", publicName: "openedIds", isSignal: true, isRequired: false, transformFunction: null }, asideFooterTemplate: { classPropertyName: "asideFooterTemplate", publicName: "asideFooterTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openedIdsChange: "openedIdsChange", itemSelected: "itemSelected" }, host: { listeners: { "keydown.escape": "onEscape($event)", "window:resize": "onWindowResize()" }, properties: { "class": "hostClasses()", "attr.data-mode": "mode()", "attr.data-position": "position()" } }, ngImport: i0, template: `
229
- <ul [class]="railClasses()" role="list">
230
- @for (entry of renderedRailItems(); track entry.key) {
231
- @if (entry.children.length > 0) {
232
- <li class="flex w-full justify-center">
233
- <button
234
- type="button"
235
- data-navigation-dockbar-trigger="true"
236
- [class]="triggerClasses(entry)"
237
- [attr.aria-expanded]="isGroupOpen(entry)"
238
- [attr.aria-controls]="asideId()"
239
- [attr.aria-label]="badgeFor(entry) ? null : (entry.tooltip ?? entry.title ?? null)"
240
- [attr.title]="entry.tooltip ?? entry.title ?? null"
241
- [Tooltip]="entry.tooltip ?? entry.title ?? ''"
242
- [TooltipPosition]="tooltipPosition()"
243
- [attr.data-navigation-item-key]="entry.key"
244
- [disabled]="entry.disabled || null"
245
- (click)="toggleGroup(entry)"
246
- >
247
- @if (badgeFor(entry)) {
248
- <span class="sr-only">{{ entry.tooltip ?? entry.title }}</span>
249
- }
250
- <NavigationItemContent
251
- [item]="entry"
252
- [active]="isGroupActive(entry)"
253
- [compact]="true"
254
- orientation="vertical"
255
- [level]="0"
256
- [iconTemplate]="iconTemplate()"
257
- />
258
- @if (badgeFor(entry); as badge) {
259
- <NavigationBadgeCount [badge]="badge" [class]="badgeClassesFor(entry)" />
260
- }
261
- </button>
262
- </li>
263
- } @else {
264
- <li
265
- NavigationItem
266
- [navId]="navId()"
267
- [item]="entry"
268
- [level]="0"
269
- orientation="vertical"
270
- [compact]="true"
271
- [itemClass]="itemClass()"
272
- [activeIds]="activeIds()"
273
- [activeUrl]="activeUrl()"
274
- [iconTemplate]="iconTemplate()"
275
- [tooltip-position]="tooltipPosition()"
276
- [collapseTree]="collapseTree()"
277
- [openedIds]="openedIds()"
278
- (openedIdsChange)="openedIdsChange.emit($event)"
279
- (itemSelected)="itemSelected.emit($event)"
280
- ></li>
281
- }
282
- }
283
- </ul>
284
-
285
- @if (openGroup(); as group) {
286
- @if (isDrawerMode()) {
287
- <div
288
- class="fixed inset-0 z-40 bg-[hsl(var(--overlay-backdrop-strong))]"
289
- data-navigation-dockbar-backdrop="true"
290
- aria-hidden="true"
291
- [style.left.px]="backdropInset().left"
292
- [style.right.px]="backdropInset().right"
293
- (click)="closeAside()"
294
- ></div>
295
- }
296
-
297
- <!-- Drawer non-modal: rail tetap interaktif di atas backdrop, jadi tanpa aria-modal. -->
298
- <aside
299
- [id]="asideId()"
300
- [class]="asideClasses()"
301
- data-navigation-dockbar-aside="true"
302
- [attr.role]="isDrawerMode() ? 'dialog' : null"
303
- [attr.aria-labelledby]="asideHeadingId()"
304
- >
305
- <header
306
- class="flex h-(--layout-topbar-height) shrink-0 items-center gap-2 border-b border-[hsl(var(--border)/var(--section-border-opacity))] px-4"
307
- >
308
- <div class="min-w-0 flex-1">
309
- <h2 [id]="asideHeadingId()" class="nav-text truncate text-foreground">
310
- {{ group.title }}
311
- </h2>
312
- @if (group.subtitle) {
313
- <p class="nav-subtitle -mt-0.5 truncate text-muted-foreground">
314
- {{ group.subtitle }}
315
- </p>
316
- }
317
- </div>
318
-
319
- @if (isDrawerMode()) {
320
- <button
321
- type="button"
322
- class="inline-flex size-8 shrink-0 items-center justify-center rounded-md text-foreground/80 transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
323
- data-navigation-dockbar-close="true"
324
- aria-label="Close navigation panel"
325
- (click)="closeAside()"
326
- >
327
- <Icon name="close" size="inherit" class="text-(length:--nav-icon-size-sub)" />
328
- </button>
329
- }
330
- </header>
331
-
332
- <div
333
- class="min-h-0 flex-1 overflow-y-auto px-2 py-3"
334
- data-navigation-dockbar-aside-scroll="true"
335
- >
336
- <NavigationList
337
- [navId]="navId()"
338
- [items]="group.children"
339
- [collapsed]="false"
340
- position="left"
341
- [itemClass]="itemClass()"
342
- [activeIds]="activeIds()"
343
- [activeUrl]="activeUrl()"
344
- [iconTemplate]="iconTemplate()"
345
- [collapseTree]="collapseTree()"
346
- [openedIds]="openedIds()"
347
- (openedIdsChange)="openedIdsChange.emit($event)"
348
- (itemSelected)="itemSelected.emit($event)"
349
- />
350
- </div>
351
-
352
- @if (asideFooterTemplate(); as asideFooter) {
353
- <footer
354
- class="flex h-(--layout-topbar-height) shrink-0 items-center gap-3 border-t border-[hsl(var(--border)/var(--section-border-opacity))] px-3"
355
- data-navigation-dockbar-aside-footer="true"
356
- >
357
- <ng-container [ngTemplateOutlet]="asideFooter" />
358
- </footer>
359
- }
360
- </aside>
361
- }
362
- `, isInline: true, dependencies: [{ kind: "component", type: IconComponent, selector: "Icon", inputs: ["name", "class", "size", "fill", "weight", "grade", "opticalSize"] }, { kind: "component", type: NavigationBadgeCountComponent, selector: "NavigationBadgeCount", inputs: ["badge", "class"] }, { kind: "component", type: NavigationItemComponent, selector: "li[NavigationItem]", inputs: ["navId", "item", "level", "orientation", "compact", "itemClass", "activeIds", "activeUrl", "iconTemplate", "tooltip-position", "collapseTree", "straightRail", "stairsRail", "straightRailActive", "firstInBranch", "lastInBranch", "openedIds"], outputs: ["openedIdsChange", "itemSelected"] }, { kind: "component", type: NavigationItemContentComponent, selector: "NavigationItemContent", inputs: ["item", "active", "compact", "orientation", "level", "iconTemplate"] }, { kind: "component", type: NavigationListComponent, selector: "NavigationList", inputs: ["navId", "items", "collapsed", "compact", "position", "itemClass", "activeIds", "activeUrl", "iconTemplate", "collapseTree", "openedIds"], outputs: ["openedIdsChange", "itemSelected"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TooltipDirective, selector: "[Tooltip]", inputs: ["Tooltip", "TooltipPosition", "TooltipDisabled", "TooltipShowDelay", "TooltipHideDelay"], exportAs: ["Tooltip"] }] });
363
- }
364
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: NavigationDockbarMenuComponent, decorators: [{
365
- type: Component,
366
- args: [{
367
- selector: 'NavigationDockbarMenu',
368
- imports: [
369
- IconComponent,
370
- NavigationBadgeCountComponent,
371
- NavigationItemComponent,
372
- NavigationItemContentComponent,
373
- NavigationListComponent,
374
- NgTemplateOutlet,
375
- TooltipDirective,
376
- ],
377
- host: {
378
- '[class]': 'hostClasses()',
379
- '[attr.data-mode]': 'mode()',
380
- '[attr.data-position]': 'position()',
381
- '(keydown.escape)': 'onEscape($event)',
382
- '(window:resize)': 'onWindowResize()',
383
- },
384
- template: `
385
- <ul [class]="railClasses()" role="list">
386
- @for (entry of renderedRailItems(); track entry.key) {
387
- @if (entry.children.length > 0) {
388
- <li class="flex w-full justify-center">
389
- <button
390
- type="button"
391
- data-navigation-dockbar-trigger="true"
392
- [class]="triggerClasses(entry)"
393
- [attr.aria-expanded]="isGroupOpen(entry)"
394
- [attr.aria-controls]="asideId()"
395
- [attr.aria-label]="badgeFor(entry) ? null : (entry.tooltip ?? entry.title ?? null)"
396
- [attr.title]="entry.tooltip ?? entry.title ?? null"
397
- [Tooltip]="entry.tooltip ?? entry.title ?? ''"
398
- [TooltipPosition]="tooltipPosition()"
399
- [attr.data-navigation-item-key]="entry.key"
400
- [disabled]="entry.disabled || null"
401
- (click)="toggleGroup(entry)"
402
- >
403
- @if (badgeFor(entry)) {
404
- <span class="sr-only">{{ entry.tooltip ?? entry.title }}</span>
405
- }
406
- <NavigationItemContent
407
- [item]="entry"
408
- [active]="isGroupActive(entry)"
409
- [compact]="true"
410
- orientation="vertical"
411
- [level]="0"
412
- [iconTemplate]="iconTemplate()"
413
- />
414
- @if (badgeFor(entry); as badge) {
415
- <NavigationBadgeCount [badge]="badge" [class]="badgeClassesFor(entry)" />
416
- }
417
- </button>
418
- </li>
419
- } @else {
420
- <li
421
- NavigationItem
422
- [navId]="navId()"
423
- [item]="entry"
424
- [level]="0"
425
- orientation="vertical"
426
- [compact]="true"
427
- [itemClass]="itemClass()"
428
- [activeIds]="activeIds()"
429
- [activeUrl]="activeUrl()"
430
- [iconTemplate]="iconTemplate()"
431
- [tooltip-position]="tooltipPosition()"
432
- [collapseTree]="collapseTree()"
433
- [openedIds]="openedIds()"
434
- (openedIdsChange)="openedIdsChange.emit($event)"
435
- (itemSelected)="itemSelected.emit($event)"
436
- ></li>
437
- }
438
- }
439
- </ul>
440
-
441
- @if (openGroup(); as group) {
442
- @if (isDrawerMode()) {
443
- <div
444
- class="fixed inset-0 z-40 bg-[hsl(var(--overlay-backdrop-strong))]"
445
- data-navigation-dockbar-backdrop="true"
446
- aria-hidden="true"
447
- [style.left.px]="backdropInset().left"
448
- [style.right.px]="backdropInset().right"
449
- (click)="closeAside()"
450
- ></div>
451
- }
452
-
453
- <!-- Drawer non-modal: rail tetap interaktif di atas backdrop, jadi tanpa aria-modal. -->
454
- <aside
455
- [id]="asideId()"
456
- [class]="asideClasses()"
457
- data-navigation-dockbar-aside="true"
458
- [attr.role]="isDrawerMode() ? 'dialog' : null"
459
- [attr.aria-labelledby]="asideHeadingId()"
460
- >
461
- <header
462
- class="flex h-(--layout-topbar-height) shrink-0 items-center gap-2 border-b border-[hsl(var(--border)/var(--section-border-opacity))] px-4"
463
- >
464
- <div class="min-w-0 flex-1">
465
- <h2 [id]="asideHeadingId()" class="nav-text truncate text-foreground">
466
- {{ group.title }}
467
- </h2>
468
- @if (group.subtitle) {
469
- <p class="nav-subtitle -mt-0.5 truncate text-muted-foreground">
470
- {{ group.subtitle }}
471
- </p>
472
- }
473
- </div>
474
-
475
- @if (isDrawerMode()) {
476
- <button
477
- type="button"
478
- class="inline-flex size-8 shrink-0 items-center justify-center rounded-md text-foreground/80 transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
479
- data-navigation-dockbar-close="true"
480
- aria-label="Close navigation panel"
481
- (click)="closeAside()"
482
- >
483
- <Icon name="close" size="inherit" class="text-(length:--nav-icon-size-sub)" />
484
- </button>
485
- }
486
- </header>
487
-
488
- <div
489
- class="min-h-0 flex-1 overflow-y-auto px-2 py-3"
490
- data-navigation-dockbar-aside-scroll="true"
491
- >
492
- <NavigationList
493
- [navId]="navId()"
494
- [items]="group.children"
495
- [collapsed]="false"
496
- position="left"
497
- [itemClass]="itemClass()"
498
- [activeIds]="activeIds()"
499
- [activeUrl]="activeUrl()"
500
- [iconTemplate]="iconTemplate()"
501
- [collapseTree]="collapseTree()"
502
- [openedIds]="openedIds()"
503
- (openedIdsChange)="openedIdsChange.emit($event)"
504
- (itemSelected)="itemSelected.emit($event)"
505
- />
506
- </div>
507
-
508
- @if (asideFooterTemplate(); as asideFooter) {
509
- <footer
510
- class="flex h-(--layout-topbar-height) shrink-0 items-center gap-3 border-t border-[hsl(var(--border)/var(--section-border-opacity))] px-3"
511
- data-navigation-dockbar-aside-footer="true"
512
- >
513
- <ng-container [ngTemplateOutlet]="asideFooter" />
514
- </footer>
515
- }
516
- </aside>
517
- }
518
- `,
519
- }]
520
- }], propDecorators: { navId: [{ type: i0.Input, args: [{ isSignal: true, alias: "navId", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], railItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "railItems", required: false }] }], badgeContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "badgeContext", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], itemClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemClass", required: false }] }], activeIds: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeIds", required: false }] }], activeUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeUrl", required: false }] }], resolvedGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "resolvedGroup", required: false }] }], iconTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconTemplate", required: false }] }], collapseTree: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapseTree", required: false }] }], openedIds: [{ type: i0.Input, args: [{ isSignal: true, alias: "openedIds", required: false }] }], asideFooterTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "asideFooterTemplate", required: false }] }], openedIdsChange: [{ type: i0.Output, args: ["openedIdsChange"] }], itemSelected: [{ type: i0.Output, args: ["itemSelected"] }] } });
521
-
522
- export { NavigationDockbarMenuComponent };