@ojiepermana/angular 22.1.13 → 22.2.0

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 +2 -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-BKCeWzml.mjs +129 -0
  85. package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-DFEJK2jD.mjs +811 -0
  86. package/fesm2022/{ojiepermana-angular-navigation-navigation-entry-grid.component-Cd-jh6tg.mjs → ojiepermana-angular-navigation-navigation-entry-grid.component-mpK9Ar08.mjs} +387 -183
  87. package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-BPgH7FJk.mjs +650 -0
  88. package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-DMpYcD9t.mjs +662 -0
  89. package/fesm2022/ojiepermana-angular-navigation-navigation-item.component-Basp5SIk.mjs +1228 -0
  90. package/fesm2022/ojiepermana-angular-navigation-navigation-list.component-YUzHI9Pj.mjs +311 -0
  91. package/fesm2022/ojiepermana-angular-navigation-service.mjs +542 -724
  92. package/fesm2022/ojiepermana-angular-navigation-types.mjs +27 -56
  93. package/fesm2022/ojiepermana-angular-navigation.mjs +3052 -4
  94. package/fesm2022/ojiepermana-angular-sdk.mjs +91 -201
  95. package/fesm2022/ojiepermana-angular-theme-component-settings.mjs +1115 -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 +1719 -552
  99. package/fesm2022/ojiepermana-angular-theme-layout.mjs +847 -491
  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 +1 -1
  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 +121 -125
  228. package/types/ojiepermana-angular-navigation.d.ts +663 -374
  229. package/types/ojiepermana-angular-sdk.d.ts +69 -71
  230. package/types/ojiepermana-angular-theme-component-settings.d.ts +115 -83
  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 +399 -187
  234. package/types/ojiepermana-angular-theme-layout.d.ts +201 -112
  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-CDBxQ8rk.mjs +0 -91
  249. package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-DBQHdvGa.mjs +0 -512
  250. package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-BCGvhoYj.mjs +0 -404
  251. package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-Dk_03e-6.mjs +0 -466
  252. package/fesm2022/ojiepermana-angular-navigation-ojiepermana-angular-navigation-DNKU6viC.mjs +0 -2642
@@ -1,382 +1,685 @@
1
- import { Overlay } from '@angular/cdk/overlay';
2
- import { TemplatePortal } from '@angular/cdk/portal';
3
- import * as i0 from '@angular/core';
4
- import { inject, ElementRef, input, Directive, contentChildren, forwardRef, computed, Component, TemplateRef, output, signal, ViewContainerRef, DestroyRef } from '@angular/core';
5
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
- import { RovingRow, cn, injectUniqueId } from '@ojiepermana/angular/component/utils/core';
7
- import { connectedPositionFor } from '@ojiepermana/angular/component/utils/overlay';
8
- import { merge } from 'rxjs';
9
- import { filter } from 'rxjs/operators';
10
-
1
+ import { Overlay } from "@angular/cdk/overlay";
2
+ import { TemplatePortal } from "@angular/cdk/portal";
3
+ import * as i0 from "@angular/core";
4
+ import { Component, DestroyRef, Directive, ElementRef, TemplateRef, ViewContainerRef, computed, contentChildren, forwardRef, inject, input, output, signal } from "@angular/core";
5
+ import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
6
+ import { RovingRow, cn, injectUniqueId } from "@ojiepermana/angular/component/utils/core";
7
+ import { connectedPositionFor } from "@ojiepermana/angular/component/utils/overlay";
8
+ import { merge } from "rxjs";
9
+ import { filter } from "rxjs/operators";
11
10
  function position(align, side) {
12
- return connectedPositionFor(side, align, 8);
11
+ return connectedPositionFor(side, align, 8);
13
12
  }
14
- class NavigationMenuRootItem {
15
- elementRef = inject(ElementRef);
16
- disabled = input(false, /* @ts-ignore */
17
- ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
18
- isWithin(container) {
19
- return container.contains(this.elementRef.nativeElement);
20
- }
21
- focus() {
22
- this.elementRef.nativeElement.focus();
23
- }
24
- containsTarget(target) {
25
- return target instanceof Node && this.elementRef.nativeElement.contains(target);
26
- }
27
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavigationMenuRootItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
28
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.4", type: NavigationMenuRootItem, isStandalone: true, inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
29
- }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavigationMenuRootItem, decorators: [{
31
- type: Directive
32
- }], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
33
- class NavigationMenuComponent {
34
- class = input('', /* @ts-ignore */
35
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
36
- ariaLabel = input('Main navigation', /* @ts-ignore */
37
- ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
38
- loop = input(true, /* @ts-ignore */
39
- ...(ngDevMode ? [{ debugName: "loop" }] : /* istanbul ignore next */ []));
40
- items = contentChildren(forwardRef(() => NavigationMenuRootItem), { ...(ngDevMode ? { debugName: "items" } : /* istanbul ignore next */ {}), descendants: true });
41
- host = inject(ElementRef);
42
- row = new RovingRow({
43
- // Only the items of THIS navigation menu: `descendants` also collects the
44
- // root items a nested navigation menu contributes.
45
- items: () => this.items().filter((item) => item.isWithin(this.host.nativeElement)),
46
- host: () => this.host.nativeElement,
47
- loop: () => this.loop(),
48
- enter: (item) => this.enter(item),
49
- });
50
- classes = computed(() => cn('relative z-10 flex max-w-max flex-1 items-center justify-center', this.class()), /* @ts-ignore */
51
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
52
- setActiveItem(item) {
53
- this.row.setActive(item);
54
- }
55
- tabIndexFor(item) {
56
- return this.row.tabIndexFor(item);
57
- }
58
- hasOpenTrigger(except) {
59
- return this.row.hasOpenTrigger(except);
60
- }
61
- notifyOpen(trigger) {
62
- this.row.notifyOpen(trigger);
63
- }
64
- notifyClosed(trigger) {
65
- this.row.notifyClosed(trigger);
66
- }
67
- onKeydown(event) {
68
- // A disabled item answers for nothing here: keys that reach one are dropped
69
- // rather than recovered from.
70
- const currentItem = this.row.itemFrom(event.target, 'enabled');
71
- if (!currentItem) {
72
- return;
73
- }
74
- if (event.key === 'ArrowDown' && currentItem instanceof NavigationMenuTriggerDirective) {
75
- event.preventDefault();
76
- currentItem.open({ focusFirstItem: true });
77
- return;
78
- }
79
- this.row.handleNavigationKey(currentItem, event);
80
- }
81
- enter(nextItem) {
82
- const currentOpenTrigger = this.row.openTrigger();
83
- if (!currentOpenTrigger) {
84
- nextItem.focus();
85
- this.row.setActive(nextItem);
86
- return;
87
- }
88
- if (nextItem instanceof NavigationMenuTriggerDirective) {
89
- // Arrows walk the ROOT items, so focus lands on the next trigger itself.
90
- // Its panel opens because one was already open, and `notifyOpen` closes
91
- // the previous one -- but diving straight into that panel's first link
92
- // would skip the trigger the user was steering towards.
93
- nextItem.open();
94
- this.row.setActive(nextItem);
95
- nextItem.focus();
96
- return;
97
- }
98
- currentOpenTrigger.close({ restoreFocus: false });
99
- this.row.setActive(nextItem);
100
- queueMicrotask(() => nextItem.focus());
101
- }
102
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavigationMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
103
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.4", type: NavigationMenuComponent, isStandalone: true, selector: "NavigationMenu", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeydown($any($event))" }, properties: { "class": "classes()", "attr.role": "\"navigation\"", "attr.aria-label": "ariaLabel() || null" } }, queries: [{ propertyName: "items", predicate: i0.forwardRef(() => NavigationMenuRootItem), descendants: true, isSignal: true }], ngImport: i0, template: `<ng-content />`, isInline: true });
104
- }
105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavigationMenuComponent, decorators: [{
106
- type: Component,
107
- args: [{
108
- selector: 'NavigationMenu',
109
- host: {
110
- '[class]': 'classes()',
111
- '[attr.role]': '"navigation"',
112
- '[attr.aria-label]': 'ariaLabel() || null',
113
- '(keydown)': 'onKeydown($any($event))',
114
- },
115
- template: `<ng-content />`,
116
- }]
117
- }], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], loop: [{ type: i0.Input, args: [{ isSignal: true, alias: "loop", required: false }] }], items: [{ type: i0.ContentChildren, args: [forwardRef(() => NavigationMenuRootItem), { ...{ descendants: true }, isSignal: true }] }] } });
118
- class NavigationMenuListComponent {
119
- class = input('', /* @ts-ignore */
120
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
121
- classes = computed(() => cn('group flex flex-1 list-none items-center justify-center gap-1', this.class()), /* @ts-ignore */
122
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
123
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavigationMenuListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
124
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: NavigationMenuListComponent, isStandalone: true, selector: "NavigationMenuList", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
125
- }
126
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavigationMenuListComponent, decorators: [{
127
- type: Component,
128
- args: [{
129
- selector: 'NavigationMenuList',
130
- host: {
131
- '[class]': 'classes()',
132
- },
133
- template: `<ng-content />`,
134
- }]
135
- }], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
136
- class NavigationMenuItemComponent {
137
- class = input('', /* @ts-ignore */
138
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
139
- classes = computed(() => cn('relative', this.class()), /* @ts-ignore */
140
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
141
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavigationMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
142
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: NavigationMenuItemComponent, isStandalone: true, selector: "NavigationMenuItem", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
143
- }
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavigationMenuItemComponent, decorators: [{
145
- type: Component,
146
- args: [{
147
- selector: 'NavigationMenuItem',
148
- host: {
149
- '[class]': 'classes()',
150
- },
151
- template: `<ng-content />`,
152
- }]
153
- }], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
154
- class NavigationMenuContentDirective {
155
- template = inject(TemplateRef);
156
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavigationMenuContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
157
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.4", type: NavigationMenuContentDirective, isStandalone: true, selector: "ng-template[NavigationMenuContent]", exportAs: ["NavigationMenuContent"], ngImport: i0 });
158
- }
159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavigationMenuContentDirective, decorators: [{
160
- type: Directive,
161
- args: [{
162
- selector: 'ng-template[NavigationMenuContent]',
163
- exportAs: 'NavigationMenuContent',
164
- }]
165
- }] });
166
- class NavigationMenuTriggerDirective extends NavigationMenuRootItem {
167
- NavigationMenuTrigger = input.required(/* @ts-ignore */
168
- ...(ngDevMode ? [{ debugName: "NavigationMenuTrigger" }] : /* istanbul ignore next */ []));
169
- align = input('start', /* @ts-ignore */
170
- ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
171
- class = input('', /* @ts-ignore */
172
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
173
- /** Ties `aria-controls` here to the overlay this trigger discloses. */
174
- panelId = injectUniqueId('NavigationMenuPanel');
175
- openedChange = output();
176
- isOpen = signal(false, /* @ts-ignore */
177
- ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
178
- overlay = inject(Overlay);
179
- vcr = inject(ViewContainerRef);
180
- navigationMenu = inject(NavigationMenuComponent, { optional: true });
181
- destroyRef = inject(DestroyRef);
182
- overlayRef = null;
183
- constructor() {
184
- super();
185
- this.destroyRef.onDestroy(() => this.close({ restoreFocus: false, emitOpenedChange: false }));
186
- }
187
- classes = computed(() => cn('group inline-flex h-control-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors', 'after:mb-0.5 after:ml-2 after:inline-block after:h-2 after:w-2 after:shrink-0 after:rotate-45 after:border-b after:border-r after:border-current after:transition-transform after:content-[""]', 'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', 'disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground data-[state=open]:after:-rotate-135', this.class()), /* @ts-ignore */
188
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
189
- toggle() {
190
- if (this.disabled()) {
191
- return;
192
- }
193
- if (this.isOpen()) {
194
- this.close();
195
- }
196
- else {
197
- this.open();
198
- }
199
- }
200
- open(options = {}) {
201
- if (this.isOpen() || this.disabled()) {
202
- return;
203
- }
204
- this.navigationMenu?.notifyOpen(this);
205
- const overlayRef = this.overlay.create({
206
- positionStrategy: this.overlay
207
- .position()
208
- .flexibleConnectedTo(this.elementRef)
209
- .withFlexibleDimensions(false)
210
- .withPush(false)
211
- .withPositions([position(this.align(), 'bottom'), position(this.align(), 'top')]),
212
- scrollStrategy: this.overlay.scrollStrategies.reposition(),
213
- hasBackdrop: false,
214
- panelClass: 'navigation-menu-panel',
215
- });
216
- const portal = new TemplatePortal(this.NavigationMenuTrigger().template, this.vcr);
217
- overlayRef.attach(portal);
218
- overlayRef.overlayElement.id = this.panelId;
219
- this.overlayRef = overlayRef;
220
- merge(overlayRef
221
- .outsidePointerEvents()
222
- .pipe(filter((event) => !this.elementRef.nativeElement.contains(event.target))), overlayRef.keydownEvents().pipe(filter((event) => event.key === 'Escape')), overlayRef.detachments())
223
- .pipe(takeUntilDestroyed(this.destroyRef))
224
- .subscribe(() => this.close());
225
- this.isOpen.set(true);
226
- this.openedChange.emit(true);
227
- if (options.focusFirstItem) {
228
- queueMicrotask(() => this.focusFirstItem());
229
- }
230
- }
231
- close(options = {}) {
232
- const { restoreFocus = true, emitOpenedChange = true } = options;
233
- if (!this.isOpen()) {
234
- return;
235
- }
236
- const overlayRef = this.overlayRef;
237
- this.overlayRef = null;
238
- this.isOpen.set(false);
239
- if (emitOpenedChange) {
240
- this.openedChange.emit(false);
241
- }
242
- this.navigationMenu?.notifyClosed(this);
243
- overlayRef?.dispose();
244
- if (restoreFocus) {
245
- this.elementRef.nativeElement.focus();
246
- }
247
- }
248
- tabIndex() {
249
- return this.navigationMenu?.tabIndexFor(this) ?? (this.disabled() ? -1 : 0);
250
- }
251
- /**
252
- * A disabled trigger normally carries the native `disabled` attribute, which
253
- * takes it out of the tab order for free. The one exception is the trigger
254
- * holding the menu's only tab stop, which happens when every sibling is
255
- * disabled too: there the native attribute would undo the tab stop, so the
256
- * state travels as `aria-disabled` alone. Every action here already refuses
257
- * on `disabled()`, so nothing becomes operable by dropping the attribute.
258
- */
259
- nativeDisabled() {
260
- return this.disabled() && this.tabIndex() < 0;
261
- }
262
- openFromKeyboard(event, focusFirstItem) {
263
- if (this.disabled()) {
264
- return;
265
- }
266
- event.preventDefault();
267
- this.open({ focusFirstItem });
268
- }
269
- syncActiveState() {
270
- this.navigationMenu?.setActiveItem(this);
271
- }
272
- openFromHover() {
273
- if (this.disabled() || !this.navigationMenu?.hasOpenTrigger(this)) {
274
- return;
275
- }
276
- this.open();
277
- }
278
- focusFirstItem() {
279
- const overlayElement = this.overlayRef?.overlayElement;
280
- if (!overlayElement) {
281
- return;
282
- }
283
- const firstItem = overlayElement.querySelector('a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])');
284
- firstItem?.focus();
285
- }
286
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavigationMenuTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
287
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.4", type: NavigationMenuTriggerDirective, isStandalone: true, selector: "[NavigationMenuTrigger]", inputs: { NavigationMenuTrigger: { classPropertyName: "NavigationMenuTrigger", publicName: "NavigationMenuTrigger", isSignal: true, isRequired: true, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openedChange: "openedChange" }, host: { listeners: { "click": "toggle()", "keydown.enter": "openFromKeyboard($any($event), false)", "keydown.space": "openFromKeyboard($any($event), false)", "keydown.arrowDown": "openFromKeyboard($any($event), true)", "focus": "syncActiveState()", "mouseenter": "openFromHover()" }, properties: { "class": "classes()", "attr.aria-expanded": "isOpen()", "attr.aria-controls": "isOpen() ? panelId : null", "attr.data-state": "isOpen() ? \"open\" : \"closed\"", "attr.tabindex": "tabIndex()", "attr.disabled": "nativeDisabled() ? \"\" : null", "attr.aria-disabled": "disabled() ? \"true\" : null" } }, providers: [
288
- {
289
- provide: NavigationMenuRootItem,
290
- useExisting: forwardRef(() => NavigationMenuTriggerDirective),
291
- },
292
- ], exportAs: ["NavigationMenuTrigger"], usesInheritance: true, ngImport: i0 });
293
- }
294
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavigationMenuTriggerDirective, decorators: [{
295
- type: Directive,
296
- args: [{
297
- selector: '[NavigationMenuTrigger]',
298
- exportAs: 'NavigationMenuTrigger',
299
- providers: [
300
- {
301
- provide: NavigationMenuRootItem,
302
- useExisting: forwardRef(() => NavigationMenuTriggerDirective),
303
- },
304
- ],
305
- host: {
306
- '[class]': 'classes()',
307
- '[attr.aria-expanded]': 'isOpen()',
308
- '[attr.aria-controls]': 'isOpen() ? panelId : null',
309
- '[attr.data-state]': 'isOpen() ? "open" : "closed"',
310
- '[attr.tabindex]': 'tabIndex()',
311
- '[attr.disabled]': 'nativeDisabled() ? "" : null',
312
- '[attr.aria-disabled]': 'disabled() ? "true" : null',
313
- '(click)': 'toggle()',
314
- '(keydown.enter)': 'openFromKeyboard($any($event), false)',
315
- '(keydown.space)': 'openFromKeyboard($any($event), false)',
316
- '(keydown.arrowDown)': 'openFromKeyboard($any($event), true)',
317
- '(focus)': 'syncActiveState()',
318
- '(mouseenter)': 'openFromHover()',
319
- },
320
- }]
321
- }], ctorParameters: () => [], propDecorators: { NavigationMenuTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "NavigationMenuTrigger", required: true }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], openedChange: [{ type: i0.Output, args: ["openedChange"] }] } });
322
- class NavigationMenuLinkDirective extends NavigationMenuRootItem {
323
- class = input('', /* @ts-ignore */
324
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
325
- variant = input('content', /* @ts-ignore */
326
- ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
327
- navigationMenu = inject(NavigationMenuComponent, { optional: true });
328
- classes = computed(() => this.variant() === 'trigger'
329
- ? cn('inline-flex h-control-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors', 'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', 'aria-disabled:pointer-events-none aria-disabled:opacity-50', this.class())
330
- : cn('block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors', 'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring', 'aria-disabled:pointer-events-none aria-disabled:opacity-50', this.class()), /* @ts-ignore */
331
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
332
- tabIndex() {
333
- if (this.variant() !== 'trigger') {
334
- return this.disabled() ? -1 : 0;
335
- }
336
- return this.navigationMenu?.tabIndexFor(this) ?? (this.disabled() ? -1 : 0);
337
- }
338
- focus() {
339
- if (this.variant() === 'trigger' && this.elementRef.nativeElement.tabIndex < 0) {
340
- this.elementRef.nativeElement.tabIndex = 0;
341
- }
342
- super.focus();
343
- }
344
- syncActiveState() {
345
- if (this.variant() === 'trigger') {
346
- this.navigationMenu?.setActiveItem(this);
347
- }
348
- }
349
- preventDisabled(event) {
350
- if (this.disabled()) {
351
- event.preventDefault();
352
- }
353
- }
354
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavigationMenuLinkDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
355
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.4", type: NavigationMenuLinkDirective, isStandalone: true, selector: "a[NavigationMenuLink], button[NavigationMenuLink]", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "focus": "syncActiveState()", "click": "preventDisabled($any($event))" }, properties: { "class": "classes()", "attr.tabindex": "tabIndex()", "attr.aria-disabled": "disabled() ? \"true\" : null", "attr.data-variant": "variant()" } }, providers: [
356
- { provide: NavigationMenuRootItem, useExisting: forwardRef(() => NavigationMenuLinkDirective) },
357
- ], exportAs: ["NavigationMenuLink"], usesInheritance: true, ngImport: i0 });
358
- }
359
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavigationMenuLinkDirective, decorators: [{
360
- type: Directive,
361
- args: [{
362
- selector: 'a[NavigationMenuLink], button[NavigationMenuLink]',
363
- exportAs: 'NavigationMenuLink',
364
- providers: [
365
- { provide: NavigationMenuRootItem, useExisting: forwardRef(() => NavigationMenuLinkDirective) },
366
- ],
367
- host: {
368
- '[class]': 'classes()',
369
- '[attr.tabindex]': 'tabIndex()',
370
- '[attr.aria-disabled]': 'disabled() ? "true" : null',
371
- '[attr.data-variant]': 'variant()',
372
- '(focus)': 'syncActiveState()',
373
- '(click)': 'preventDisabled($any($event))',
374
- },
375
- }]
376
- }], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
377
-
378
- /**
379
- * Generated bundle index. Do not edit.
380
- */
381
-
382
- export { NavigationMenuComponent, NavigationMenuContentDirective, NavigationMenuItemComponent, NavigationMenuLinkDirective, NavigationMenuListComponent, NavigationMenuRootItem, NavigationMenuTriggerDirective };
13
+ var NavigationMenuRootItem = class NavigationMenuRootItem {
14
+ elementRef = inject(ElementRef);
15
+ disabled = input(false, ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
16
+ isWithin(container) {
17
+ return container.contains(this.elementRef.nativeElement);
18
+ }
19
+ focus() {
20
+ this.elementRef.nativeElement.focus();
21
+ }
22
+ containsTarget(target) {
23
+ return target instanceof Node && this.elementRef.nativeElement.contains(target);
24
+ }
25
+ static ɵfac = i0.ɵɵngDeclareFactory({
26
+ minVersion: "12.0.0",
27
+ version: "22.2.0",
28
+ ngImport: i0,
29
+ type: NavigationMenuRootItem,
30
+ deps: [],
31
+ target: i0.ɵɵFactoryTarget.Directive
32
+ });
33
+ static ɵdir = i0.ɵɵngDeclareDirective({
34
+ minVersion: "17.1.0",
35
+ version: "22.2.0",
36
+ type: NavigationMenuRootItem,
37
+ isStandalone: true,
38
+ inputs: { disabled: {
39
+ classPropertyName: "disabled",
40
+ publicName: "disabled",
41
+ isSignal: true,
42
+ isRequired: false,
43
+ transformFunction: null
44
+ } },
45
+ ngImport: i0
46
+ });
47
+ };
48
+ i0.ɵɵngDeclareClassMetadata({
49
+ minVersion: "12.0.0",
50
+ version: "22.2.0",
51
+ ngImport: i0,
52
+ type: NavigationMenuRootItem,
53
+ decorators: [{ type: Directive }],
54
+ propDecorators: { disabled: [{
55
+ type: i0.Input,
56
+ args: [{
57
+ isSignal: true,
58
+ alias: "disabled",
59
+ required: false
60
+ }]
61
+ }] }
62
+ });
63
+ var NavigationMenuComponent = class NavigationMenuComponent {
64
+ class = input("", ...ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []);
65
+ ariaLabel = input("Main navigation", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
66
+ loop = input(true, ...ngDevMode ? [{ debugName: "loop" }] : /* istanbul ignore next */ []);
67
+ items = contentChildren(forwardRef(() => NavigationMenuRootItem), {
68
+ ...ngDevMode ? { debugName: "items" } : /* istanbul ignore next */ {},
69
+ descendants: true
70
+ });
71
+ host = inject(ElementRef);
72
+ row = new RovingRow({
73
+ items: () => this.items().filter((item) => item.isWithin(this.host.nativeElement)),
74
+ host: () => this.host.nativeElement,
75
+ loop: () => this.loop(),
76
+ enter: (item) => this.enter(item)
77
+ });
78
+ classes = computed(() => cn("relative z-10 flex max-w-max flex-1 items-center justify-center", this.class()), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
79
+ setActiveItem(item) {
80
+ this.row.setActive(item);
81
+ }
82
+ tabIndexFor(item) {
83
+ return this.row.tabIndexFor(item);
84
+ }
85
+ hasOpenTrigger(except) {
86
+ return this.row.hasOpenTrigger(except);
87
+ }
88
+ notifyOpen(trigger) {
89
+ this.row.notifyOpen(trigger);
90
+ }
91
+ notifyClosed(trigger) {
92
+ this.row.notifyClosed(trigger);
93
+ }
94
+ onKeydown(event) {
95
+ const currentItem = this.row.itemFrom(event.target, "enabled");
96
+ if (!currentItem) return;
97
+ if (event.key === "ArrowDown" && currentItem instanceof NavigationMenuTriggerDirective) {
98
+ event.preventDefault();
99
+ currentItem.open({ focusFirstItem: true });
100
+ return;
101
+ }
102
+ this.row.handleNavigationKey(currentItem, event);
103
+ }
104
+ enter(nextItem) {
105
+ const currentOpenTrigger = this.row.openTrigger();
106
+ if (!currentOpenTrigger) {
107
+ nextItem.focus();
108
+ this.row.setActive(nextItem);
109
+ return;
110
+ }
111
+ if (nextItem instanceof NavigationMenuTriggerDirective) {
112
+ nextItem.open();
113
+ this.row.setActive(nextItem);
114
+ nextItem.focus();
115
+ return;
116
+ }
117
+ currentOpenTrigger.close({ restoreFocus: false });
118
+ this.row.setActive(nextItem);
119
+ queueMicrotask(() => nextItem.focus());
120
+ }
121
+ static ɵfac = i0.ɵɵngDeclareFactory({
122
+ minVersion: "12.0.0",
123
+ version: "22.2.0",
124
+ ngImport: i0,
125
+ type: NavigationMenuComponent,
126
+ deps: [],
127
+ target: i0.ɵɵFactoryTarget.Component
128
+ });
129
+ static ɵcmp = i0.ɵɵngDeclareComponent({
130
+ minVersion: "17.2.0",
131
+ version: "22.2.0",
132
+ type: NavigationMenuComponent,
133
+ isStandalone: true,
134
+ selector: "NavigationMenu",
135
+ inputs: {
136
+ class: {
137
+ classPropertyName: "class",
138
+ publicName: "class",
139
+ isSignal: true,
140
+ isRequired: false,
141
+ transformFunction: null
142
+ },
143
+ ariaLabel: {
144
+ classPropertyName: "ariaLabel",
145
+ publicName: "ariaLabel",
146
+ isSignal: true,
147
+ isRequired: false,
148
+ transformFunction: null
149
+ },
150
+ loop: {
151
+ classPropertyName: "loop",
152
+ publicName: "loop",
153
+ isSignal: true,
154
+ isRequired: false,
155
+ transformFunction: null
156
+ }
157
+ },
158
+ host: {
159
+ listeners: { "keydown": "onKeydown($any($event))" },
160
+ properties: {
161
+ "class": "classes()",
162
+ "attr.role": "\"navigation\"",
163
+ "attr.aria-label": "ariaLabel() || null"
164
+ }
165
+ },
166
+ queries: [{
167
+ propertyName: "items",
168
+ predicate: i0.forwardRef(() => NavigationMenuRootItem),
169
+ descendants: true,
170
+ isSignal: true
171
+ }],
172
+ ngImport: i0,
173
+ template: `<ng-content />`,
174
+ isInline: true
175
+ });
176
+ };
177
+ i0.ɵɵngDeclareClassMetadata({
178
+ minVersion: "12.0.0",
179
+ version: "22.2.0",
180
+ ngImport: i0,
181
+ type: NavigationMenuComponent,
182
+ decorators: [{
183
+ type: Component,
184
+ args: [{
185
+ selector: "NavigationMenu",
186
+ host: {
187
+ "[class]": "classes()",
188
+ "[attr.role]": "\"navigation\"",
189
+ "[attr.aria-label]": "ariaLabel() || null",
190
+ "(keydown)": "onKeydown($any($event))"
191
+ },
192
+ template: `<ng-content />`
193
+ }]
194
+ }],
195
+ propDecorators: {
196
+ class: [{
197
+ type: i0.Input,
198
+ args: [{
199
+ isSignal: true,
200
+ alias: "class",
201
+ required: false
202
+ }]
203
+ }],
204
+ ariaLabel: [{
205
+ type: i0.Input,
206
+ args: [{
207
+ isSignal: true,
208
+ alias: "ariaLabel",
209
+ required: false
210
+ }]
211
+ }],
212
+ loop: [{
213
+ type: i0.Input,
214
+ args: [{
215
+ isSignal: true,
216
+ alias: "loop",
217
+ required: false
218
+ }]
219
+ }],
220
+ items: [{
221
+ type: i0.ContentChildren,
222
+ args: [forwardRef(() => NavigationMenuRootItem), {
223
+ descendants: true,
224
+ isSignal: true
225
+ }]
226
+ }]
227
+ }
228
+ });
229
+ var NavigationMenuListComponent = class NavigationMenuListComponent {
230
+ class = input("", ...ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []);
231
+ classes = computed(() => cn("group flex flex-1 list-none items-center justify-center gap-1", this.class()), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
232
+ static ɵfac = i0.ɵɵngDeclareFactory({
233
+ minVersion: "12.0.0",
234
+ version: "22.2.0",
235
+ ngImport: i0,
236
+ type: NavigationMenuListComponent,
237
+ deps: [],
238
+ target: i0.ɵɵFactoryTarget.Component
239
+ });
240
+ static ɵcmp = i0.ɵɵngDeclareComponent({
241
+ minVersion: "17.1.0",
242
+ version: "22.2.0",
243
+ type: NavigationMenuListComponent,
244
+ isStandalone: true,
245
+ selector: "NavigationMenuList",
246
+ inputs: { class: {
247
+ classPropertyName: "class",
248
+ publicName: "class",
249
+ isSignal: true,
250
+ isRequired: false,
251
+ transformFunction: null
252
+ } },
253
+ host: { properties: { "class": "classes()" } },
254
+ ngImport: i0,
255
+ template: `<ng-content />`,
256
+ isInline: true
257
+ });
258
+ };
259
+ i0.ɵɵngDeclareClassMetadata({
260
+ minVersion: "12.0.0",
261
+ version: "22.2.0",
262
+ ngImport: i0,
263
+ type: NavigationMenuListComponent,
264
+ decorators: [{
265
+ type: Component,
266
+ args: [{
267
+ selector: "NavigationMenuList",
268
+ host: { "[class]": "classes()" },
269
+ template: `<ng-content />`
270
+ }]
271
+ }],
272
+ propDecorators: { class: [{
273
+ type: i0.Input,
274
+ args: [{
275
+ isSignal: true,
276
+ alias: "class",
277
+ required: false
278
+ }]
279
+ }] }
280
+ });
281
+ var NavigationMenuItemComponent = class NavigationMenuItemComponent {
282
+ class = input("", ...ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []);
283
+ classes = computed(() => cn("relative", this.class()), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
284
+ static ɵfac = i0.ɵɵngDeclareFactory({
285
+ minVersion: "12.0.0",
286
+ version: "22.2.0",
287
+ ngImport: i0,
288
+ type: NavigationMenuItemComponent,
289
+ deps: [],
290
+ target: i0.ɵɵFactoryTarget.Component
291
+ });
292
+ static ɵcmp = i0.ɵɵngDeclareComponent({
293
+ minVersion: "17.1.0",
294
+ version: "22.2.0",
295
+ type: NavigationMenuItemComponent,
296
+ isStandalone: true,
297
+ selector: "NavigationMenuItem",
298
+ inputs: { class: {
299
+ classPropertyName: "class",
300
+ publicName: "class",
301
+ isSignal: true,
302
+ isRequired: false,
303
+ transformFunction: null
304
+ } },
305
+ host: { properties: { "class": "classes()" } },
306
+ ngImport: i0,
307
+ template: `<ng-content />`,
308
+ isInline: true
309
+ });
310
+ };
311
+ i0.ɵɵngDeclareClassMetadata({
312
+ minVersion: "12.0.0",
313
+ version: "22.2.0",
314
+ ngImport: i0,
315
+ type: NavigationMenuItemComponent,
316
+ decorators: [{
317
+ type: Component,
318
+ args: [{
319
+ selector: "NavigationMenuItem",
320
+ host: { "[class]": "classes()" },
321
+ template: `<ng-content />`
322
+ }]
323
+ }],
324
+ propDecorators: { class: [{
325
+ type: i0.Input,
326
+ args: [{
327
+ isSignal: true,
328
+ alias: "class",
329
+ required: false
330
+ }]
331
+ }] }
332
+ });
333
+ var NavigationMenuContentDirective = class NavigationMenuContentDirective {
334
+ template = inject(TemplateRef);
335
+ static ɵfac = i0.ɵɵngDeclareFactory({
336
+ minVersion: "12.0.0",
337
+ version: "22.2.0",
338
+ ngImport: i0,
339
+ type: NavigationMenuContentDirective,
340
+ deps: [],
341
+ target: i0.ɵɵFactoryTarget.Directive
342
+ });
343
+ static ɵdir = i0.ɵɵngDeclareDirective({
344
+ minVersion: "14.0.0",
345
+ version: "22.2.0",
346
+ type: NavigationMenuContentDirective,
347
+ isStandalone: true,
348
+ selector: "ng-template[NavigationMenuContent]",
349
+ exportAs: ["NavigationMenuContent"],
350
+ ngImport: i0
351
+ });
352
+ };
353
+ i0.ɵɵngDeclareClassMetadata({
354
+ minVersion: "12.0.0",
355
+ version: "22.2.0",
356
+ ngImport: i0,
357
+ type: NavigationMenuContentDirective,
358
+ decorators: [{
359
+ type: Directive,
360
+ args: [{
361
+ selector: "ng-template[NavigationMenuContent]",
362
+ exportAs: "NavigationMenuContent"
363
+ }]
364
+ }]
365
+ });
366
+ var NavigationMenuTriggerDirective = class NavigationMenuTriggerDirective extends NavigationMenuRootItem {
367
+ NavigationMenuTrigger = input.required(...ngDevMode ? [{ debugName: "NavigationMenuTrigger" }] : /* istanbul ignore next */ []);
368
+ align = input("start", ...ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []);
369
+ class = input("", ...ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []);
370
+ panelId = injectUniqueId("NavigationMenuPanel");
371
+ openedChange = output();
372
+ isOpen = signal(false, ...ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []);
373
+ overlay = inject(Overlay);
374
+ vcr = inject(ViewContainerRef);
375
+ navigationMenu = inject(NavigationMenuComponent, { optional: true });
376
+ destroyRef = inject(DestroyRef);
377
+ overlayRef = null;
378
+ constructor() {
379
+ super();
380
+ this.destroyRef.onDestroy(() => this.close({
381
+ restoreFocus: false,
382
+ emitOpenedChange: false
383
+ }));
384
+ }
385
+ classes = computed(() => cn("group inline-flex h-control-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors", "after:mb-0.5 after:ml-2 after:inline-block after:h-2 after:w-2 after:shrink-0 after:rotate-45 after:border-b after:border-r after:border-current after:transition-transform after:content-[\"\"]", "hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", "disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground data-[state=open]:after:-rotate-135", this.class()), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
386
+ toggle() {
387
+ if (this.disabled()) return;
388
+ if (this.isOpen()) this.close();
389
+ else this.open();
390
+ }
391
+ open(options = {}) {
392
+ if (this.isOpen() || this.disabled()) return;
393
+ this.navigationMenu?.notifyOpen(this);
394
+ const overlayRef = this.overlay.create({
395
+ positionStrategy: this.overlay.position().flexibleConnectedTo(this.elementRef).withFlexibleDimensions(false).withPush(false).withPositions([position(this.align(), "bottom"), position(this.align(), "top")]),
396
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
397
+ hasBackdrop: false,
398
+ panelClass: "navigation-menu-panel"
399
+ });
400
+ const portal = new TemplatePortal(this.NavigationMenuTrigger().template, this.vcr);
401
+ overlayRef.attach(portal);
402
+ overlayRef.overlayElement.id = this.panelId;
403
+ this.overlayRef = overlayRef;
404
+ merge(overlayRef.outsidePointerEvents().pipe(filter((event) => !this.elementRef.nativeElement.contains(event.target))), overlayRef.keydownEvents().pipe(filter((event) => event.key === "Escape")), overlayRef.detachments()).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.close());
405
+ this.isOpen.set(true);
406
+ this.openedChange.emit(true);
407
+ if (options.focusFirstItem) queueMicrotask(() => this.focusFirstItem());
408
+ }
409
+ close(options = {}) {
410
+ const { restoreFocus = true, emitOpenedChange = true } = options;
411
+ if (!this.isOpen()) return;
412
+ const overlayRef = this.overlayRef;
413
+ this.overlayRef = null;
414
+ this.isOpen.set(false);
415
+ if (emitOpenedChange) this.openedChange.emit(false);
416
+ this.navigationMenu?.notifyClosed(this);
417
+ overlayRef?.dispose();
418
+ if (restoreFocus) this.elementRef.nativeElement.focus();
419
+ }
420
+ tabIndex() {
421
+ return this.navigationMenu?.tabIndexFor(this) ?? (this.disabled() ? -1 : 0);
422
+ }
423
+ nativeDisabled() {
424
+ return this.disabled() && this.tabIndex() < 0;
425
+ }
426
+ openFromKeyboard(event, focusFirstItem) {
427
+ if (this.disabled()) return;
428
+ event.preventDefault();
429
+ this.open({ focusFirstItem });
430
+ }
431
+ syncActiveState() {
432
+ this.navigationMenu?.setActiveItem(this);
433
+ }
434
+ openFromHover() {
435
+ if (this.disabled() || !this.navigationMenu?.hasOpenTrigger(this)) return;
436
+ this.open();
437
+ }
438
+ focusFirstItem() {
439
+ const overlayElement = this.overlayRef?.overlayElement;
440
+ if (!overlayElement) return;
441
+ overlayElement.querySelector("a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])")?.focus();
442
+ }
443
+ static ɵfac = i0.ɵɵngDeclareFactory({
444
+ minVersion: "12.0.0",
445
+ version: "22.2.0",
446
+ ngImport: i0,
447
+ type: NavigationMenuTriggerDirective,
448
+ deps: [],
449
+ target: i0.ɵɵFactoryTarget.Directive
450
+ });
451
+ static ɵdir = i0.ɵɵngDeclareDirective({
452
+ minVersion: "17.1.0",
453
+ version: "22.2.0",
454
+ type: NavigationMenuTriggerDirective,
455
+ isStandalone: true,
456
+ selector: "[NavigationMenuTrigger]",
457
+ inputs: {
458
+ NavigationMenuTrigger: {
459
+ classPropertyName: "NavigationMenuTrigger",
460
+ publicName: "NavigationMenuTrigger",
461
+ isSignal: true,
462
+ isRequired: true,
463
+ transformFunction: null
464
+ },
465
+ align: {
466
+ classPropertyName: "align",
467
+ publicName: "align",
468
+ isSignal: true,
469
+ isRequired: false,
470
+ transformFunction: null
471
+ },
472
+ class: {
473
+ classPropertyName: "class",
474
+ publicName: "class",
475
+ isSignal: true,
476
+ isRequired: false,
477
+ transformFunction: null
478
+ }
479
+ },
480
+ outputs: { openedChange: "openedChange" },
481
+ host: {
482
+ listeners: {
483
+ "click": "toggle()",
484
+ "keydown.enter": "openFromKeyboard($any($event), false)",
485
+ "keydown.space": "openFromKeyboard($any($event), false)",
486
+ "keydown.arrowDown": "openFromKeyboard($any($event), true)",
487
+ "focus": "syncActiveState()",
488
+ "mouseenter": "openFromHover()"
489
+ },
490
+ properties: {
491
+ "class": "classes()",
492
+ "attr.aria-expanded": "isOpen()",
493
+ "attr.aria-controls": "isOpen() ? panelId : null",
494
+ "attr.data-state": "isOpen() ? \"open\" : \"closed\"",
495
+ "attr.tabindex": "tabIndex()",
496
+ "attr.disabled": "nativeDisabled() ? \"\" : null",
497
+ "attr.aria-disabled": "disabled() ? \"true\" : null"
498
+ }
499
+ },
500
+ providers: [{
501
+ provide: NavigationMenuRootItem,
502
+ useExisting: forwardRef(() => NavigationMenuTriggerDirective)
503
+ }],
504
+ exportAs: ["NavigationMenuTrigger"],
505
+ usesInheritance: true,
506
+ ngImport: i0
507
+ });
508
+ };
509
+ i0.ɵɵngDeclareClassMetadata({
510
+ minVersion: "12.0.0",
511
+ version: "22.2.0",
512
+ ngImport: i0,
513
+ type: NavigationMenuTriggerDirective,
514
+ decorators: [{
515
+ type: Directive,
516
+ args: [{
517
+ selector: "[NavigationMenuTrigger]",
518
+ exportAs: "NavigationMenuTrigger",
519
+ providers: [{
520
+ provide: NavigationMenuRootItem,
521
+ useExisting: forwardRef(() => NavigationMenuTriggerDirective)
522
+ }],
523
+ host: {
524
+ "[class]": "classes()",
525
+ "[attr.aria-expanded]": "isOpen()",
526
+ "[attr.aria-controls]": "isOpen() ? panelId : null",
527
+ "[attr.data-state]": "isOpen() ? \"open\" : \"closed\"",
528
+ "[attr.tabindex]": "tabIndex()",
529
+ "[attr.disabled]": "nativeDisabled() ? \"\" : null",
530
+ "[attr.aria-disabled]": "disabled() ? \"true\" : null",
531
+ "(click)": "toggle()",
532
+ "(keydown.enter)": "openFromKeyboard($any($event), false)",
533
+ "(keydown.space)": "openFromKeyboard($any($event), false)",
534
+ "(keydown.arrowDown)": "openFromKeyboard($any($event), true)",
535
+ "(focus)": "syncActiveState()",
536
+ "(mouseenter)": "openFromHover()"
537
+ }
538
+ }]
539
+ }],
540
+ ctorParameters: () => [],
541
+ propDecorators: {
542
+ NavigationMenuTrigger: [{
543
+ type: i0.Input,
544
+ args: [{
545
+ isSignal: true,
546
+ alias: "NavigationMenuTrigger",
547
+ required: true
548
+ }]
549
+ }],
550
+ align: [{
551
+ type: i0.Input,
552
+ args: [{
553
+ isSignal: true,
554
+ alias: "align",
555
+ required: false
556
+ }]
557
+ }],
558
+ class: [{
559
+ type: i0.Input,
560
+ args: [{
561
+ isSignal: true,
562
+ alias: "class",
563
+ required: false
564
+ }]
565
+ }],
566
+ openedChange: [{
567
+ type: i0.Output,
568
+ args: ["openedChange"]
569
+ }]
570
+ }
571
+ });
572
+ var NavigationMenuLinkDirective = class NavigationMenuLinkDirective extends NavigationMenuRootItem {
573
+ class = input("", ...ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []);
574
+ variant = input("content", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
575
+ navigationMenu = inject(NavigationMenuComponent, { optional: true });
576
+ classes = computed(() => this.variant() === "trigger" ? cn("inline-flex h-control-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors", "hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", "aria-disabled:pointer-events-none aria-disabled:opacity-50", this.class()) : cn("block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors", "hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-2 focus-visible:ring-ring", "aria-disabled:pointer-events-none aria-disabled:opacity-50", this.class()), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
577
+ tabIndex() {
578
+ if (this.variant() !== "trigger") return this.disabled() ? -1 : 0;
579
+ return this.navigationMenu?.tabIndexFor(this) ?? (this.disabled() ? -1 : 0);
580
+ }
581
+ focus() {
582
+ if (this.variant() === "trigger" && this.elementRef.nativeElement.tabIndex < 0) this.elementRef.nativeElement.tabIndex = 0;
583
+ super.focus();
584
+ }
585
+ syncActiveState() {
586
+ if (this.variant() === "trigger") this.navigationMenu?.setActiveItem(this);
587
+ }
588
+ preventDisabled(event) {
589
+ if (this.disabled()) event.preventDefault();
590
+ }
591
+ static ɵfac = i0.ɵɵngDeclareFactory({
592
+ minVersion: "12.0.0",
593
+ version: "22.2.0",
594
+ ngImport: i0,
595
+ type: NavigationMenuLinkDirective,
596
+ deps: null,
597
+ target: i0.ɵɵFactoryTarget.Directive
598
+ });
599
+ static ɵdir = i0.ɵɵngDeclareDirective({
600
+ minVersion: "17.1.0",
601
+ version: "22.2.0",
602
+ type: NavigationMenuLinkDirective,
603
+ isStandalone: true,
604
+ selector: "a[NavigationMenuLink], button[NavigationMenuLink]",
605
+ inputs: {
606
+ class: {
607
+ classPropertyName: "class",
608
+ publicName: "class",
609
+ isSignal: true,
610
+ isRequired: false,
611
+ transformFunction: null
612
+ },
613
+ variant: {
614
+ classPropertyName: "variant",
615
+ publicName: "variant",
616
+ isSignal: true,
617
+ isRequired: false,
618
+ transformFunction: null
619
+ }
620
+ },
621
+ host: {
622
+ listeners: {
623
+ "focus": "syncActiveState()",
624
+ "click": "preventDisabled($any($event))"
625
+ },
626
+ properties: {
627
+ "class": "classes()",
628
+ "attr.tabindex": "tabIndex()",
629
+ "attr.aria-disabled": "disabled() ? \"true\" : null",
630
+ "attr.data-variant": "variant()"
631
+ }
632
+ },
633
+ providers: [{
634
+ provide: NavigationMenuRootItem,
635
+ useExisting: forwardRef(() => NavigationMenuLinkDirective)
636
+ }],
637
+ exportAs: ["NavigationMenuLink"],
638
+ usesInheritance: true,
639
+ ngImport: i0
640
+ });
641
+ };
642
+ i0.ɵɵngDeclareClassMetadata({
643
+ minVersion: "12.0.0",
644
+ version: "22.2.0",
645
+ ngImport: i0,
646
+ type: NavigationMenuLinkDirective,
647
+ decorators: [{
648
+ type: Directive,
649
+ args: [{
650
+ selector: "a[NavigationMenuLink], button[NavigationMenuLink]",
651
+ exportAs: "NavigationMenuLink",
652
+ providers: [{
653
+ provide: NavigationMenuRootItem,
654
+ useExisting: forwardRef(() => NavigationMenuLinkDirective)
655
+ }],
656
+ host: {
657
+ "[class]": "classes()",
658
+ "[attr.tabindex]": "tabIndex()",
659
+ "[attr.aria-disabled]": "disabled() ? \"true\" : null",
660
+ "[attr.data-variant]": "variant()",
661
+ "(focus)": "syncActiveState()",
662
+ "(click)": "preventDisabled($any($event))"
663
+ }
664
+ }]
665
+ }],
666
+ propDecorators: {
667
+ class: [{
668
+ type: i0.Input,
669
+ args: [{
670
+ isSignal: true,
671
+ alias: "class",
672
+ required: false
673
+ }]
674
+ }],
675
+ variant: [{
676
+ type: i0.Input,
677
+ args: [{
678
+ isSignal: true,
679
+ alias: "variant",
680
+ required: false
681
+ }]
682
+ }]
683
+ }
684
+ });
685
+ export { NavigationMenuComponent, NavigationMenuContentDirective, NavigationMenuItemComponent, NavigationMenuLinkDirective, NavigationMenuListComponent, NavigationMenuRootItem, NavigationMenuTriggerDirective };