@ojiepermana/angular 22.1.14 → 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-COQ-60DS.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 -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 +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 -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,162 +1,197 @@
1
- import { Overlay } from '@angular/cdk/overlay';
2
- import { TemplatePortal } from '@angular/cdk/portal';
3
- import * as i0 from '@angular/core';
4
- import { inject, ViewContainerRef, ElementRef, DestroyRef, Injector, input, output, signal, Directive } from '@angular/core';
5
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
- import { filter } from 'rxjs/operators';
7
- import { injectUniqueId } from '@ojiepermana/angular/component/utils/core';
8
- import { overlayDismissals } from '@ojiepermana/angular/component/utils/overlay';
9
- import { MENU_OVERLAY } from '@ojiepermana/angular/component/dropdown-menu';
10
-
11
- /** `MouseEvent.button` for the secondary (right) button. */
1
+ import { Overlay } from "@angular/cdk/overlay";
2
+ import { TemplatePortal } from "@angular/cdk/portal";
3
+ import * as i0 from "@angular/core";
4
+ import { DestroyRef, Directive, ElementRef, Injector, ViewContainerRef, inject, input, output, signal } from "@angular/core";
5
+ import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
6
+ import { filter } from "rxjs/operators";
7
+ import { injectUniqueId } from "@ojiepermana/angular/component/utils/core";
8
+ import { overlayDismissals } from "@ojiepermana/angular/component/utils/overlay";
9
+ import { MENU_OVERLAY } from "@ojiepermana/angular/component/dropdown-menu";
12
10
  const SECONDARY_BUTTON = 2;
13
- /**
14
- * Opens a menu anchored to the cursor when the host fires `contextmenu`.
15
- * Reuses `<ng-template MenuContent>` from the dropdown-menu entry.
16
- *
17
- * @example
18
- * <div [ContextMenuTrigger]="menu" class="p-12 border">Right-click me</div>
19
- * <ng-template MenuContent #menu>
20
- * <MenuSurface>
21
- * <button MenuItem>Copy</button>
22
- * <button MenuItem>Paste</button>
23
- * </MenuSurface>
24
- * </ng-template>
25
- */
26
- class ContextMenuTriggerDirective {
27
- overlay = inject(Overlay);
28
- vcr = inject(ViewContainerRef);
29
- el = inject(ElementRef);
30
- destroyRef = inject(DestroyRef);
31
- injector = inject(Injector);
32
- ContextMenuTrigger = input.required(/* @ts-ignore */
33
- ...(ngDevMode ? [{ debugName: "ContextMenuTrigger" }] : /* istanbul ignore next */ []));
34
- disabled = input(false, /* @ts-ignore */
35
- ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
36
- /** Ties `aria-controls` here to `aria-labelledby` on the surface. */
37
- triggerId = this.el.nativeElement.id || injectUniqueId('ContextMenuTrigger');
38
- surfaceId = injectUniqueId('MenuSurface');
39
- openedChange = output();
40
- overlayRef = null;
41
- /** Set while the right click that opened the menu is still waiting on its `auxclick`. */
42
- pendingGestureRelease = false;
43
- isOpen = signal(false, /* @ts-ignore */
44
- ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
45
- constructor() {
46
- this.destroyRef.onDestroy(() => this.close(false));
47
- }
48
- onContextMenu(event) {
49
- if (this.disabled())
50
- return;
51
- event.preventDefault();
52
- this.close();
53
- this.openAt(event.clientX, event.clientY);
54
- // `contextmenu` arrives at mouse *down*; this press has an `auxclick` still
55
- // to come at mouse *up*. Arm the guard after `openAt`, which disarms it.
56
- this.pendingGestureRelease = true;
57
- }
58
- onKeyDown(event) {
59
- const isContextMenuKey = event.key === 'ContextMenu' || (event.shiftKey && event.key === 'F10');
60
- if (!isContextMenuKey || this.disabled()) {
61
- return;
62
- }
63
- event.preventDefault();
64
- const rect = this.el.nativeElement.getBoundingClientRect();
65
- this.close();
66
- this.openAt(rect.left + rect.width / 2, rect.top + rect.height / 2);
67
- }
68
- openAt(x, y) {
69
- this.pendingGestureRelease = false;
70
- this.overlayRef = this.overlay.create({
71
- positionStrategy: this.overlay
72
- .position()
73
- .flexibleConnectedTo({ x, y })
74
- .withPositions([
75
- { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },
76
- { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },
77
- { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },
78
- { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },
79
- ]),
80
- scrollStrategy: this.overlay.scrollStrategies.close(),
81
- hasBackdrop: false,
82
- panelClass: 'menu-panel',
83
- });
84
- // The surface is rendered from a template declared in the CONSUMER's
85
- // component, so its injector chain never reaches this directive. Handing it
86
- // a controller is what makes it a real menu rather than a floating panel:
87
- // without one it cannot name itself, cannot close after a pick, and -- the
88
- // reason the shared conformance suite caught it -- a nested `[MenuTrigger]`
89
- // inside it does not know it is a submenu, so ArrowLeft leaves the user
90
- // stuck one level in. `MenuTrigger` has always done this; this surface was
91
- // simply never wired the same way.
92
- const controller = {
93
- surfaceId: this.surfaceId,
94
- triggerId: this.triggerId,
95
- // A context menu is opened by a pointer or a key on its own host, never
96
- // from an item of another menu, so it is always a root menu.
97
- isSubmenu: false,
98
- close: () => this.close(),
99
- closeAfterSelect: () => this.close(),
100
- };
101
- const portal = new TemplatePortal(this.ContextMenuTrigger().template, this.vcr, undefined, Injector.create({
102
- parent: this.injector,
103
- providers: [{ provide: MENU_OVERLAY, useValue: controller }],
104
- }));
105
- this.overlayRef.attach(portal);
106
- overlayDismissals(this.overlayRef)
107
- .pipe(filter((event) => !this.isOpeningGestureRelease(event)), takeUntilDestroyed(this.destroyRef))
108
- .subscribe(() => this.close());
109
- this.isOpen.set(true);
110
- this.openedChange.emit(true);
111
- }
112
- close(emitOpenedChange = true) {
113
- if (!this.overlayRef)
114
- return;
115
- const overlayRef = this.overlayRef;
116
- this.overlayRef = null;
117
- this.isOpen.set(false);
118
- overlayRef.dispose();
119
- if (emitOpenedChange) {
120
- this.openedChange.emit(false);
121
- }
122
- }
123
- /**
124
- * A right click delivers `contextmenu` at mouse down and a trailing `auxclick`
125
- * at mouse up. The overlay is created on the first, so the CDK outside-pointer
126
- * dispatcher hands the second to the menu that very press just opened and it
127
- * dismisses itself before the user releases the button.
128
- *
129
- * Swallow that one release, and only that one: the guard is armed by
130
- * `onContextMenu` alone (never by the Shift+F10 path) and is spent on the next
131
- * dismissal whatever it is, so a left click, a middle click, or a later right
132
- * click on the trigger still closes the menu.
133
- */
134
- isOpeningGestureRelease(event) {
135
- if (!this.pendingGestureRelease) {
136
- return false;
137
- }
138
- this.pendingGestureRelease = false;
139
- return (event instanceof MouseEvent && event.type === 'auxclick' && event.button === SECONDARY_BUTTON);
140
- }
141
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ContextMenuTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
142
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.6", type: ContextMenuTriggerDirective, isStandalone: true, selector: "[ContextMenuTrigger]", inputs: { ContextMenuTrigger: { classPropertyName: "ContextMenuTrigger", publicName: "ContextMenuTrigger", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openedChange: "openedChange" }, host: { listeners: { "contextmenu": "onContextMenu($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.id": "triggerId", "attr.aria-controls": "isOpen() ? surfaceId : null" } }, exportAs: ["ContextMenuTrigger"], ngImport: i0 });
143
- }
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ContextMenuTriggerDirective, decorators: [{
145
- type: Directive,
146
- args: [{
147
- selector: '[ContextMenuTrigger]',
148
- exportAs: 'ContextMenuTrigger',
149
- host: {
150
- '[attr.id]': 'triggerId',
151
- '[attr.aria-controls]': 'isOpen() ? surfaceId : null',
152
- '(contextmenu)': 'onContextMenu($event)',
153
- '(keydown)': 'onKeyDown($event)',
154
- },
155
- }]
156
- }], ctorParameters: () => [], propDecorators: { ContextMenuTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "ContextMenuTrigger", required: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], openedChange: [{ type: i0.Output, args: ["openedChange"] }] } });
157
-
158
- /**
159
- * Generated bundle index. Do not edit.
160
- */
161
-
162
- export { ContextMenuTriggerDirective };
11
+ var ContextMenuTriggerDirective = class ContextMenuTriggerDirective {
12
+ overlay = inject(Overlay);
13
+ vcr = inject(ViewContainerRef);
14
+ el = inject(ElementRef);
15
+ destroyRef = inject(DestroyRef);
16
+ injector = inject(Injector);
17
+ ContextMenuTrigger = input.required(...ngDevMode ? [{ debugName: "ContextMenuTrigger" }] : /* istanbul ignore next */ []);
18
+ disabled = input(false, ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
19
+ triggerId = this.el.nativeElement.id || injectUniqueId("ContextMenuTrigger");
20
+ surfaceId = injectUniqueId("MenuSurface");
21
+ openedChange = output();
22
+ overlayRef = null;
23
+ pendingGestureRelease = false;
24
+ isOpen = signal(false, ...ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []);
25
+ constructor() {
26
+ this.destroyRef.onDestroy(() => this.close(false));
27
+ }
28
+ onContextMenu(event) {
29
+ if (this.disabled()) return;
30
+ event.preventDefault();
31
+ this.close();
32
+ this.openAt(event.clientX, event.clientY);
33
+ this.pendingGestureRelease = true;
34
+ }
35
+ onKeyDown(event) {
36
+ if (!(event.key === "ContextMenu" || event.shiftKey && event.key === "F10") || this.disabled()) return;
37
+ event.preventDefault();
38
+ const rect = this.el.nativeElement.getBoundingClientRect();
39
+ this.close();
40
+ this.openAt(rect.left + rect.width / 2, rect.top + rect.height / 2);
41
+ }
42
+ openAt(x, y) {
43
+ this.pendingGestureRelease = false;
44
+ this.overlayRef = this.overlay.create({
45
+ positionStrategy: this.overlay.position().flexibleConnectedTo({
46
+ x,
47
+ y
48
+ }).withPositions([
49
+ {
50
+ originX: "start",
51
+ originY: "bottom",
52
+ overlayX: "start",
53
+ overlayY: "top"
54
+ },
55
+ {
56
+ originX: "start",
57
+ originY: "top",
58
+ overlayX: "start",
59
+ overlayY: "bottom"
60
+ },
61
+ {
62
+ originX: "end",
63
+ originY: "bottom",
64
+ overlayX: "end",
65
+ overlayY: "top"
66
+ },
67
+ {
68
+ originX: "end",
69
+ originY: "top",
70
+ overlayX: "end",
71
+ overlayY: "bottom"
72
+ }
73
+ ]),
74
+ scrollStrategy: this.overlay.scrollStrategies.close(),
75
+ hasBackdrop: false,
76
+ panelClass: "menu-panel"
77
+ });
78
+ const controller = {
79
+ surfaceId: this.surfaceId,
80
+ triggerId: this.triggerId,
81
+ isSubmenu: false,
82
+ close: () => this.close(),
83
+ closeAfterSelect: () => this.close()
84
+ };
85
+ const portal = new TemplatePortal(this.ContextMenuTrigger().template, this.vcr, void 0, Injector.create({
86
+ parent: this.injector,
87
+ providers: [{
88
+ provide: MENU_OVERLAY,
89
+ useValue: controller
90
+ }]
91
+ }));
92
+ this.overlayRef.attach(portal);
93
+ overlayDismissals(this.overlayRef).pipe(filter((event) => !this.isOpeningGestureRelease(event)), takeUntilDestroyed(this.destroyRef)).subscribe(() => this.close());
94
+ this.isOpen.set(true);
95
+ this.openedChange.emit(true);
96
+ }
97
+ close(emitOpenedChange = true) {
98
+ if (!this.overlayRef) return;
99
+ const overlayRef = this.overlayRef;
100
+ this.overlayRef = null;
101
+ this.isOpen.set(false);
102
+ overlayRef.dispose();
103
+ if (emitOpenedChange) this.openedChange.emit(false);
104
+ }
105
+ isOpeningGestureRelease(event) {
106
+ if (!this.pendingGestureRelease) return false;
107
+ this.pendingGestureRelease = false;
108
+ return event instanceof MouseEvent && event.type === "auxclick" && event.button === SECONDARY_BUTTON;
109
+ }
110
+ static ɵfac = i0.ɵɵngDeclareFactory({
111
+ minVersion: "12.0.0",
112
+ version: "22.2.0",
113
+ ngImport: i0,
114
+ type: ContextMenuTriggerDirective,
115
+ deps: [],
116
+ target: i0.ɵɵFactoryTarget.Directive
117
+ });
118
+ static ɵdir = i0.ɵɵngDeclareDirective({
119
+ minVersion: "17.1.0",
120
+ version: "22.2.0",
121
+ type: ContextMenuTriggerDirective,
122
+ isStandalone: true,
123
+ selector: "[ContextMenuTrigger]",
124
+ inputs: {
125
+ ContextMenuTrigger: {
126
+ classPropertyName: "ContextMenuTrigger",
127
+ publicName: "ContextMenuTrigger",
128
+ isSignal: true,
129
+ isRequired: true,
130
+ transformFunction: null
131
+ },
132
+ disabled: {
133
+ classPropertyName: "disabled",
134
+ publicName: "disabled",
135
+ isSignal: true,
136
+ isRequired: false,
137
+ transformFunction: null
138
+ }
139
+ },
140
+ outputs: { openedChange: "openedChange" },
141
+ host: {
142
+ listeners: {
143
+ "contextmenu": "onContextMenu($event)",
144
+ "keydown": "onKeyDown($event)"
145
+ },
146
+ properties: {
147
+ "attr.id": "triggerId",
148
+ "attr.aria-controls": "isOpen() ? surfaceId : null"
149
+ }
150
+ },
151
+ exportAs: ["ContextMenuTrigger"],
152
+ ngImport: i0
153
+ });
154
+ };
155
+ i0.ɵɵngDeclareClassMetadata({
156
+ minVersion: "12.0.0",
157
+ version: "22.2.0",
158
+ ngImport: i0,
159
+ type: ContextMenuTriggerDirective,
160
+ decorators: [{
161
+ type: Directive,
162
+ args: [{
163
+ selector: "[ContextMenuTrigger]",
164
+ exportAs: "ContextMenuTrigger",
165
+ host: {
166
+ "[attr.id]": "triggerId",
167
+ "[attr.aria-controls]": "isOpen() ? surfaceId : null",
168
+ "(contextmenu)": "onContextMenu($event)",
169
+ "(keydown)": "onKeyDown($event)"
170
+ }
171
+ }]
172
+ }],
173
+ ctorParameters: () => [],
174
+ propDecorators: {
175
+ ContextMenuTrigger: [{
176
+ type: i0.Input,
177
+ args: [{
178
+ isSignal: true,
179
+ alias: "ContextMenuTrigger",
180
+ required: true
181
+ }]
182
+ }],
183
+ disabled: [{
184
+ type: i0.Input,
185
+ args: [{
186
+ isSignal: true,
187
+ alias: "disabled",
188
+ required: false
189
+ }]
190
+ }],
191
+ openedChange: [{
192
+ type: i0.Output,
193
+ args: ["openedChange"]
194
+ }]
195
+ }
196
+ });
197
+ export { ContextMenuTriggerDirective };