@depup/angular__material 21.2.2-depup.19

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 (578) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +31 -0
  3. package/_index.scss +145 -0
  4. package/autocomplete/_autocomplete-theme.scss +76 -0
  5. package/autocomplete/_m2-autocomplete.scss +19 -0
  6. package/autocomplete/_m3-autocomplete.scss +26 -0
  7. package/badge/_badge-theme.scss +106 -0
  8. package/badge/_m2-badge.scss +73 -0
  9. package/badge/_m3-badge.scss +52 -0
  10. package/bottom-sheet/_bottom-sheet-theme.scss +76 -0
  11. package/bottom-sheet/_m2-bottom-sheet.scss +24 -0
  12. package/bottom-sheet/_m3-bottom-sheet.scss +25 -0
  13. package/button/_button-theme.scss +113 -0
  14. package/button/_fab-theme.scss +111 -0
  15. package/button/_icon-button-theme.scss +136 -0
  16. package/button/_m2-button.scss +194 -0
  17. package/button/_m2-fab.scss +101 -0
  18. package/button/_m2-icon-button.scss +59 -0
  19. package/button/_m3-button.scss +170 -0
  20. package/button/_m3-fab.scss +92 -0
  21. package/button/_m3-icon-button.scss +54 -0
  22. package/button-toggle/_button-toggle-theme.scss +93 -0
  23. package/button-toggle/_m2-button-toggle.scss +68 -0
  24. package/button-toggle/_m3-button-toggle.scss +72 -0
  25. package/card/_card-theme.scss +76 -0
  26. package/card/_m2-card.scss +39 -0
  27. package/card/_m3-card.scss +44 -0
  28. package/changes.json +10 -0
  29. package/checkbox/_checkbox-theme.scss +105 -0
  30. package/checkbox/_m2-checkbox.scss +78 -0
  31. package/checkbox/_m3-checkbox.scss +68 -0
  32. package/chips/_chips-theme.scss +115 -0
  33. package/chips/_m2-chip.scss +85 -0
  34. package/chips/_m3-chip.scss +81 -0
  35. package/core/_core-theme.scss +125 -0
  36. package/core/_core.scss +50 -0
  37. package/core/_m2-app.scss +24 -0
  38. package/core/_m3-app.scss +44 -0
  39. package/core/color/_all-color.scss +17 -0
  40. package/core/density/private/_all-density.scss +78 -0
  41. package/core/focus-indicators/_private.scss +126 -0
  42. package/core/m2/_index.scss +52 -0
  43. package/core/m2/_palette.scss +748 -0
  44. package/core/m2/_theming.scss +340 -0
  45. package/core/m2/_typography-utils.scss +81 -0
  46. package/core/m2/_typography.scss +388 -0
  47. package/core/option/_m2-optgroup.scss +21 -0
  48. package/core/option/_m2-option.scss +38 -0
  49. package/core/option/_m3-optgroup.scss +25 -0
  50. package/core/option/_m3-option.scss +37 -0
  51. package/core/option/_optgroup-theme.scss +76 -0
  52. package/core/option/_option-theme.scss +103 -0
  53. package/core/ripple/_m2-ripple.scss +17 -0
  54. package/core/ripple/_m3-ripple.scss +17 -0
  55. package/core/ripple/_ripple-theme.scss +75 -0
  56. package/core/ripple/_ripple.scss +56 -0
  57. package/core/selection/pseudo-checkbox/_m2-pseudo-checkbox.scss +32 -0
  58. package/core/selection/pseudo-checkbox/_m3-pseudo-checkbox.scss +34 -0
  59. package/core/selection/pseudo-checkbox/_pseudo-checkbox-common.scss +86 -0
  60. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +110 -0
  61. package/core/style/_checkbox-common.scss +11 -0
  62. package/core/style/_elevation.scss +208 -0
  63. package/core/style/_layout-common.scss +8 -0
  64. package/core/style/_private.scss +27 -0
  65. package/core/style/_sass-utils.scss +57 -0
  66. package/core/style/_validation.scss +52 -0
  67. package/core/style/_variables.scss +44 -0
  68. package/core/style/_vendor-prefixes.scss +56 -0
  69. package/core/theming/_all-theme.scss +168 -0
  70. package/core/theming/_color-api-backwards-compatibility.scss +159 -0
  71. package/core/theming/_config-validation.scss +174 -0
  72. package/core/theming/_definition.scss +141 -0
  73. package/core/theming/_inspection.scss +289 -0
  74. package/core/theming/_m2-inspection.scss +243 -0
  75. package/core/theming/_palettes.scss +1036 -0
  76. package/core/theming/_theming.scss +193 -0
  77. package/core/theming/_validation.scss +5 -0
  78. package/core/tokens/_classes.scss +398 -0
  79. package/core/tokens/_m2-utils.scss +25 -0
  80. package/core/tokens/_m3-tokens.scss +126 -0
  81. package/core/tokens/_m3-utils.scss +36 -0
  82. package/core/tokens/_system.scss +398 -0
  83. package/core/tokens/_token-utils.scss +119 -0
  84. package/core/tokens/m2/_index.scss +6 -0
  85. package/core/tokens/m2/_md-sys-color-internal.scss +11 -0
  86. package/core/tokens/m2/_md-sys-color.scss +123 -0
  87. package/core/tokens/m2/_md-sys-elevation.scss +10 -0
  88. package/core/tokens/m2/_md-sys-motion.scss +30 -0
  89. package/core/tokens/m2/_md-sys-shape.scss +16 -0
  90. package/core/tokens/m2/_md-sys-state.scss +8 -0
  91. package/core/tokens/m2/_md-sys-typescale.scss +68 -0
  92. package/core/tokens/m3/_index.scss +7 -0
  93. package/core/tokens/m3/_md-sys-color-internal.scss +11 -0
  94. package/core/tokens/m3/_md-sys-color.scss +118 -0
  95. package/core/tokens/m3/_md-sys-elevation.scss +15 -0
  96. package/core/tokens/m3/_md-sys-motion.scss +35 -0
  97. package/core/tokens/m3/_md-sys-shape.scss +21 -0
  98. package/core/tokens/m3/_md-sys-state.scss +13 -0
  99. package/core/tokens/m3/_md-sys-typescale-internal.scss +5 -0
  100. package/core/tokens/m3/_md-sys-typescale.scss +114 -0
  101. package/core/tokens/m3/_theme.scss +35 -0
  102. package/core/typography/_all-typography.scss +104 -0
  103. package/core/typography/_typography-utils.scss +31 -0
  104. package/core/typography/_typography.scss +269 -0
  105. package/core/typography/_versioning.scss +90 -0
  106. package/datepicker/_datepicker-theme.scss +132 -0
  107. package/datepicker/_m2-datepicker.scss +81 -0
  108. package/datepicker/_m3-datepicker.scss +74 -0
  109. package/dialog/_dialog-legacy-padding.scss +31 -0
  110. package/dialog/_dialog-theme.scss +76 -0
  111. package/dialog/_m2-dialog.scss +43 -0
  112. package/dialog/_m3-dialog.scss +47 -0
  113. package/divider/_divider-theme.scss +75 -0
  114. package/divider/_m2-divider.scss +17 -0
  115. package/divider/_m3-divider.scss +19 -0
  116. package/expansion/_expansion-theme.scss +76 -0
  117. package/expansion/_m2-expansion.scss +64 -0
  118. package/expansion/_m3-expansion.scss +61 -0
  119. package/fesm2022/_animation-chunk.mjs +22 -0
  120. package/fesm2022/_animation-chunk.mjs.map +1 -0
  121. package/fesm2022/_date-formats-chunk.mjs +86 -0
  122. package/fesm2022/_date-formats-chunk.mjs.map +1 -0
  123. package/fesm2022/_date-range-input-harness-chunk.mjs +322 -0
  124. package/fesm2022/_date-range-input-harness-chunk.mjs.map +1 -0
  125. package/fesm2022/_error-options-chunk.mjs +66 -0
  126. package/fesm2022/_error-options-chunk.mjs.map +1 -0
  127. package/fesm2022/_error-state-chunk.mjs +30 -0
  128. package/fesm2022/_error-state-chunk.mjs.map +1 -0
  129. package/fesm2022/_form-field-chunk.mjs +1351 -0
  130. package/fesm2022/_form-field-chunk.mjs.map +1 -0
  131. package/fesm2022/_icon-button-chunk.mjs +268 -0
  132. package/fesm2022/_icon-button-chunk.mjs.map +1 -0
  133. package/fesm2022/_icon-registry-chunk.mjs +368 -0
  134. package/fesm2022/_icon-registry-chunk.mjs.map +1 -0
  135. package/fesm2022/_input-harness-chunk.mjs +67 -0
  136. package/fesm2022/_input-harness-chunk.mjs.map +1 -0
  137. package/fesm2022/_input-value-accessor-chunk.mjs +6 -0
  138. package/fesm2022/_input-value-accessor-chunk.mjs.map +1 -0
  139. package/fesm2022/_internal-form-field-chunk.mjs +67 -0
  140. package/fesm2022/_internal-form-field-chunk.mjs.map +1 -0
  141. package/fesm2022/_line-chunk.mjs +99 -0
  142. package/fesm2022/_line-chunk.mjs.map +1 -0
  143. package/fesm2022/_option-chunk.mjs +385 -0
  144. package/fesm2022/_option-chunk.mjs.map +1 -0
  145. package/fesm2022/_option-harness-chunk.mjs +30 -0
  146. package/fesm2022/_option-harness-chunk.mjs.map +1 -0
  147. package/fesm2022/_option-module-chunk.mjs +48 -0
  148. package/fesm2022/_option-module-chunk.mjs.map +1 -0
  149. package/fesm2022/_pseudo-checkbox-chunk.mjs +88 -0
  150. package/fesm2022/_pseudo-checkbox-chunk.mjs.map +1 -0
  151. package/fesm2022/_pseudo-checkbox-module-chunk.mjs +46 -0
  152. package/fesm2022/_pseudo-checkbox-module-chunk.mjs.map +1 -0
  153. package/fesm2022/_public-api-chunk.mjs +84 -0
  154. package/fesm2022/_public-api-chunk.mjs.map +1 -0
  155. package/fesm2022/_ripple-chunk.mjs +544 -0
  156. package/fesm2022/_ripple-chunk.mjs.map +1 -0
  157. package/fesm2022/_ripple-loader-chunk.mjs +144 -0
  158. package/fesm2022/_ripple-loader-chunk.mjs.map +1 -0
  159. package/fesm2022/_ripple-module-chunk.mjs +46 -0
  160. package/fesm2022/_ripple-module-chunk.mjs.map +1 -0
  161. package/fesm2022/_structural-styles-chunk.mjs +45 -0
  162. package/fesm2022/_structural-styles-chunk.mjs.map +1 -0
  163. package/fesm2022/_tooltip-chunk.mjs +848 -0
  164. package/fesm2022/_tooltip-chunk.mjs.map +1 -0
  165. package/fesm2022/autocomplete-testing.mjs +75 -0
  166. package/fesm2022/autocomplete-testing.mjs.map +1 -0
  167. package/fesm2022/autocomplete.mjs +1068 -0
  168. package/fesm2022/autocomplete.mjs.map +1 -0
  169. package/fesm2022/badge-testing.mjs +48 -0
  170. package/fesm2022/badge-testing.mjs.map +1 -0
  171. package/fesm2022/badge.mjs +357 -0
  172. package/fesm2022/badge.mjs.map +1 -0
  173. package/fesm2022/bottom-sheet-testing.mjs +17 -0
  174. package/fesm2022/bottom-sheet-testing.mjs.map +1 -0
  175. package/fesm2022/bottom-sheet.mjs +390 -0
  176. package/fesm2022/bottom-sheet.mjs.map +1 -0
  177. package/fesm2022/button-testing.mjs +81 -0
  178. package/fesm2022/button-testing.mjs.map +1 -0
  179. package/fesm2022/button-toggle-testing.mjs +87 -0
  180. package/fesm2022/button-toggle-testing.mjs.map +1 -0
  181. package/fesm2022/button-toggle.mjs +789 -0
  182. package/fesm2022/button-toggle.mjs.map +1 -0
  183. package/fesm2022/button.mjs +308 -0
  184. package/fesm2022/button.mjs.map +1 -0
  185. package/fesm2022/card-testing.mjs +29 -0
  186. package/fesm2022/card-testing.mjs.map +1 -0
  187. package/fesm2022/card.mjs +615 -0
  188. package/fesm2022/card.mjs.map +1 -0
  189. package/fesm2022/checkbox-testing.mjs +79 -0
  190. package/fesm2022/checkbox-testing.mjs.map +1 -0
  191. package/fesm2022/checkbox.mjs +551 -0
  192. package/fesm2022/checkbox.mjs.map +1 -0
  193. package/fesm2022/chips-testing.mjs +239 -0
  194. package/fesm2022/chips-testing.mjs.map +1 -0
  195. package/fesm2022/chips.mjs +2663 -0
  196. package/fesm2022/chips.mjs.map +1 -0
  197. package/fesm2022/core-testing.mjs +22 -0
  198. package/fesm2022/core-testing.mjs.map +1 -0
  199. package/fesm2022/core.mjs +408 -0
  200. package/fesm2022/core.mjs.map +1 -0
  201. package/fesm2022/datepicker-testing.mjs +26 -0
  202. package/fesm2022/datepicker-testing.mjs.map +1 -0
  203. package/fesm2022/datepicker.mjs +5015 -0
  204. package/fesm2022/datepicker.mjs.map +1 -0
  205. package/fesm2022/dialog-testing.mjs +123 -0
  206. package/fesm2022/dialog-testing.mjs.map +1 -0
  207. package/fesm2022/dialog.mjs +873 -0
  208. package/fesm2022/dialog.mjs.map +1 -0
  209. package/fesm2022/divider-testing.mjs +17 -0
  210. package/fesm2022/divider-testing.mjs.map +1 -0
  211. package/fesm2022/divider.mjs +132 -0
  212. package/fesm2022/divider.mjs.map +1 -0
  213. package/fesm2022/expansion-testing.mjs +87 -0
  214. package/fesm2022/expansion-testing.mjs.map +1 -0
  215. package/fesm2022/expansion.mjs +749 -0
  216. package/fesm2022/expansion.mjs.map +1 -0
  217. package/fesm2022/form-field-testing-control.mjs +24 -0
  218. package/fesm2022/form-field-testing-control.mjs.map +1 -0
  219. package/fesm2022/form-field-testing.mjs +135 -0
  220. package/fesm2022/form-field-testing.mjs.map +1 -0
  221. package/fesm2022/form-field.mjs +57 -0
  222. package/fesm2022/form-field.mjs.map +1 -0
  223. package/fesm2022/grid-list-testing.mjs +80 -0
  224. package/fesm2022/grid-list-testing.mjs.map +1 -0
  225. package/fesm2022/grid-list.mjs +604 -0
  226. package/fesm2022/grid-list.mjs.map +1 -0
  227. package/fesm2022/icon-testing.mjs +172 -0
  228. package/fesm2022/icon-testing.mjs.map +1 -0
  229. package/fesm2022/icon.mjs +366 -0
  230. package/fesm2022/icon.mjs.map +1 -0
  231. package/fesm2022/input-testing.mjs +73 -0
  232. package/fesm2022/input-testing.mjs.map +1 -0
  233. package/fesm2022/input.mjs +495 -0
  234. package/fesm2022/input.mjs.map +1 -0
  235. package/fesm2022/list-testing.mjs +295 -0
  236. package/fesm2022/list-testing.mjs.map +1 -0
  237. package/fesm2022/list.mjs +1604 -0
  238. package/fesm2022/list.mjs.map +1 -0
  239. package/fesm2022/material.mjs +4 -0
  240. package/fesm2022/material.mjs.map +1 -0
  241. package/fesm2022/menu-testing.mjs +174 -0
  242. package/fesm2022/menu-testing.mjs.map +1 -0
  243. package/fesm2022/menu.mjs +1421 -0
  244. package/fesm2022/menu.mjs.map +1 -0
  245. package/fesm2022/paginator-testing.mjs +69 -0
  246. package/fesm2022/paginator-testing.mjs.map +1 -0
  247. package/fesm2022/paginator.mjs +445 -0
  248. package/fesm2022/paginator.mjs.map +1 -0
  249. package/fesm2022/progress-bar-testing.mjs +20 -0
  250. package/fesm2022/progress-bar-testing.mjs.map +1 -0
  251. package/fesm2022/progress-bar.mjs +247 -0
  252. package/fesm2022/progress-bar.mjs.map +1 -0
  253. package/fesm2022/progress-spinner-testing.mjs +21 -0
  254. package/fesm2022/progress-spinner-testing.mjs.map +1 -0
  255. package/fesm2022/progress-spinner.mjs +258 -0
  256. package/fesm2022/progress-spinner.mjs.map +1 -0
  257. package/fesm2022/radio-testing.mjs +143 -0
  258. package/fesm2022/radio-testing.mjs.map +1 -0
  259. package/fesm2022/radio.mjs +751 -0
  260. package/fesm2022/radio.mjs.map +1 -0
  261. package/fesm2022/select-testing.mjs +92 -0
  262. package/fesm2022/select-testing.mjs.map +1 -0
  263. package/fesm2022/select.mjs +1181 -0
  264. package/fesm2022/select.mjs.map +1 -0
  265. package/fesm2022/sidenav-testing.mjs +80 -0
  266. package/fesm2022/sidenav-testing.mjs.map +1 -0
  267. package/fesm2022/sidenav.mjs +1151 -0
  268. package/fesm2022/sidenav.mjs.map +1 -0
  269. package/fesm2022/slide-toggle-testing.mjs +68 -0
  270. package/fesm2022/slide-toggle-testing.mjs.map +1 -0
  271. package/fesm2022/slide-toggle.mjs +403 -0
  272. package/fesm2022/slide-toggle.mjs.map +1 -0
  273. package/fesm2022/slider-testing.mjs +105 -0
  274. package/fesm2022/slider-testing.mjs.map +1 -0
  275. package/fesm2022/slider.mjs +1720 -0
  276. package/fesm2022/slider.mjs.map +1 -0
  277. package/fesm2022/snack-bar-testing.mjs +47 -0
  278. package/fesm2022/snack-bar-testing.mjs.map +1 -0
  279. package/fesm2022/snack-bar.mjs +820 -0
  280. package/fesm2022/snack-bar.mjs.map +1 -0
  281. package/fesm2022/sort-testing.mjs +55 -0
  282. package/fesm2022/sort-testing.mjs.map +1 -0
  283. package/fesm2022/sort.mjs +470 -0
  284. package/fesm2022/sort.mjs.map +1 -0
  285. package/fesm2022/stepper-testing.mjs +99 -0
  286. package/fesm2022/stepper-testing.mjs.map +1 -0
  287. package/fesm2022/stepper.mjs +900 -0
  288. package/fesm2022/stepper.mjs.map +1 -0
  289. package/fesm2022/table-testing.mjs +152 -0
  290. package/fesm2022/table-testing.mjs.map +1 -0
  291. package/fesm2022/table.mjs +1151 -0
  292. package/fesm2022/table.mjs.map +1 -0
  293. package/fesm2022/tabs-testing.mjs +144 -0
  294. package/fesm2022/tabs-testing.mjs.map +1 -0
  295. package/fesm2022/tabs.mjs +2435 -0
  296. package/fesm2022/tabs.mjs.map +1 -0
  297. package/fesm2022/timepicker-testing.mjs +128 -0
  298. package/fesm2022/timepicker-testing.mjs.map +1 -0
  299. package/fesm2022/timepicker.mjs +1284 -0
  300. package/fesm2022/timepicker.mjs.map +1 -0
  301. package/fesm2022/toolbar-testing.mjs +26 -0
  302. package/fesm2022/toolbar-testing.mjs.map +1 -0
  303. package/fesm2022/toolbar.mjs +182 -0
  304. package/fesm2022/toolbar.mjs.map +1 -0
  305. package/fesm2022/tooltip-testing.mjs +48 -0
  306. package/fesm2022/tooltip-testing.mjs.map +1 -0
  307. package/fesm2022/tooltip.mjs +58 -0
  308. package/fesm2022/tooltip.mjs.map +1 -0
  309. package/fesm2022/tree-testing.mjs +104 -0
  310. package/fesm2022/tree-testing.mjs.map +1 -0
  311. package/fesm2022/tree.mjs +681 -0
  312. package/fesm2022/tree.mjs.map +1 -0
  313. package/form-field/_form-field-theme.scss +96 -0
  314. package/form-field/_m2-form-field.scss +226 -0
  315. package/form-field/_m3-form-field.scss +137 -0
  316. package/grid-list/_grid-list-theme.scss +76 -0
  317. package/grid-list/_m2-grid-list.scss +21 -0
  318. package/grid-list/_m3-grid-list.scss +20 -0
  319. package/icon/_icon-theme.scss +109 -0
  320. package/icon/_m2-icon.scss +15 -0
  321. package/icon/_m3-icon.scss +21 -0
  322. package/input/_input-theme.scss +36 -0
  323. package/list/_list-theme.scss +201 -0
  324. package/list/_m2-list.scss +92 -0
  325. package/list/_m3-list.scss +93 -0
  326. package/menu/_m2-menu.scss +44 -0
  327. package/menu/_m3-menu.scss +42 -0
  328. package/menu/_menu-theme.scss +76 -0
  329. package/package.json +404 -0
  330. package/paginator/_m2-paginator.scss +69 -0
  331. package/paginator/_m3-paginator.scss +46 -0
  332. package/paginator/_paginator-theme.scss +76 -0
  333. package/prebuilt-themes/azure-blue.css +1 -0
  334. package/prebuilt-themes/cyan-orange.css +1 -0
  335. package/prebuilt-themes/deeppurple-amber.css +1 -0
  336. package/prebuilt-themes/indigo-pink.css +1 -0
  337. package/prebuilt-themes/magenta-violet.css +1 -0
  338. package/prebuilt-themes/pink-bluegrey.css +1 -0
  339. package/prebuilt-themes/purple-green.css +1 -0
  340. package/prebuilt-themes/rose-red.css +1 -0
  341. package/progress-bar/_m2-progress-bar.scss +36 -0
  342. package/progress-bar/_m3-progress-bar.scss +29 -0
  343. package/progress-bar/_progress-bar-theme.scss +93 -0
  344. package/progress-spinner/_m2-progress-spinner.scss +25 -0
  345. package/progress-spinner/_m3-progress-spinner.scss +27 -0
  346. package/progress-spinner/_progress-spinner-theme.scss +95 -0
  347. package/radio/_m2-radio.scss +67 -0
  348. package/radio/_m3-radio.scss +65 -0
  349. package/radio/_radio-theme.scss +102 -0
  350. package/schematics/collection.json +55 -0
  351. package/schematics/migration.json +15 -0
  352. package/schematics/ng-add/fonts/material-fonts.d.ts +11 -0
  353. package/schematics/ng-add/fonts/material-fonts.js +41 -0
  354. package/schematics/ng-add/fonts/material-fonts.js.map +1 -0
  355. package/schematics/ng-add/index.d.ts +17 -0
  356. package/schematics/ng-add/index.js +54 -0
  357. package/schematics/ng-add/index.js.map +1 -0
  358. package/schematics/ng-add/package-config.d.ts +12 -0
  359. package/schematics/ng-add/package-config.js +51 -0
  360. package/schematics/ng-add/package-config.js.map +1 -0
  361. package/schematics/ng-add/schema.d.ts +15 -0
  362. package/schematics/ng-add/schema.js +10 -0
  363. package/schematics/ng-add/schema.js.map +1 -0
  364. package/schematics/ng-add/schema.json +43 -0
  365. package/schematics/ng-add/setup-project.d.ts +15 -0
  366. package/schematics/ng-add/setup-project.js +36 -0
  367. package/schematics/ng-add/setup-project.js.map +1 -0
  368. package/schematics/ng-add/theming/create-theme.d.ts +9 -0
  369. package/schematics/ng-add/theming/create-theme.js +58 -0
  370. package/schematics/ng-add/theming/create-theme.js.map +1 -0
  371. package/schematics/ng-add/theming/theming.d.ts +11 -0
  372. package/schematics/ng-add/theming/theming.js +133 -0
  373. package/schematics/ng-add/theming/theming.js.map +1 -0
  374. package/schematics/ng-generate/address-form/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.__style__.template +27 -0
  375. package/schematics/ng-generate/address-form/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +99 -0
  376. package/schematics/ng-generate/address-form/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +38 -0
  377. package/schematics/ng-generate/address-form/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts.template +118 -0
  378. package/schematics/ng-generate/address-form/index.d.ts +14 -0
  379. package/schematics/ng-generate/address-form/index.js +43 -0
  380. package/schematics/ng-generate/address-form/index.js.map +1 -0
  381. package/schematics/ng-generate/address-form/schema.d.ts +10 -0
  382. package/schematics/ng-generate/address-form/schema.js +10 -0
  383. package/schematics/ng-generate/address-form/schema.js.map +1 -0
  384. package/schematics/ng-generate/address-form/schema.json +100 -0
  385. package/schematics/ng-generate/dashboard/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.__style__.template +21 -0
  386. package/schematics/ng-generate/dashboard/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +26 -0
  387. package/schematics/ng-generate/dashboard/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +36 -0
  388. package/schematics/ng-generate/dashboard/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts.template +56 -0
  389. package/schematics/ng-generate/dashboard/index.d.ts +14 -0
  390. package/schematics/ng-generate/dashboard/index.js +42 -0
  391. package/schematics/ng-generate/dashboard/index.js.map +1 -0
  392. package/schematics/ng-generate/dashboard/schema.d.ts +10 -0
  393. package/schematics/ng-generate/dashboard/schema.js +10 -0
  394. package/schematics/ng-generate/dashboard/schema.js.map +1 -0
  395. package/schematics/ng-generate/dashboard/schema.json +100 -0
  396. package/schematics/ng-generate/navigation/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.__style__.template +17 -0
  397. package/schematics/ng-generate/navigation/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +28 -0
  398. package/schematics/ng-generate/navigation/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +36 -0
  399. package/schematics/ng-generate/navigation/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts.template +42 -0
  400. package/schematics/ng-generate/navigation/index.d.ts +14 -0
  401. package/schematics/ng-generate/navigation/index.js +42 -0
  402. package/schematics/ng-generate/navigation/index.js.map +1 -0
  403. package/schematics/ng-generate/navigation/schema.d.ts +10 -0
  404. package/schematics/ng-generate/navigation/schema.js +10 -0
  405. package/schematics/ng-generate/navigation/schema.js.map +1 -0
  406. package/schematics/ng-generate/navigation/schema.json +105 -0
  407. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/__name@dasherize__-datasource.ts.template +111 -0
  408. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.__style__.template +3 -0
  409. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +26 -0
  410. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +32 -0
  411. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts.template +36 -0
  412. package/schematics/ng-generate/table/index.d.ts +14 -0
  413. package/schematics/ng-generate/table/index.js +40 -0
  414. package/schematics/ng-generate/table/index.js.map +1 -0
  415. package/schematics/ng-generate/table/schema.d.ts +10 -0
  416. package/schematics/ng-generate/table/schema.js +10 -0
  417. package/schematics/ng-generate/table/schema.js.map +1 -0
  418. package/schematics/ng-generate/table/schema.json +100 -0
  419. package/schematics/ng-generate/theme-color/index_bundled.js +6561 -0
  420. package/schematics/ng-generate/theme-color/index_bundled.js.map +6 -0
  421. package/schematics/ng-generate/theme-color/schema.json +55 -0
  422. package/schematics/ng-generate/tree/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.__style__.template +4 -0
  423. package/schematics/ng-generate/tree/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +22 -0
  424. package/schematics/ng-generate/tree/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +32 -0
  425. package/schematics/ng-generate/tree/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts.template +93 -0
  426. package/schematics/ng-generate/tree/files/__path__/__name@dasherize@if-flat__/example-data.ts.template +47 -0
  427. package/schematics/ng-generate/tree/index.d.ts +14 -0
  428. package/schematics/ng-generate/tree/index.js +40 -0
  429. package/schematics/ng-generate/tree/index.js.map +1 -0
  430. package/schematics/ng-generate/tree/schema.d.ts +10 -0
  431. package/schematics/ng-generate/tree/schema.js +10 -0
  432. package/schematics/ng-generate/tree/schema.js.map +1 -0
  433. package/schematics/ng-generate/tree/schema.json +100 -0
  434. package/schematics/ng-update/index_bundled.js +204 -0
  435. package/schematics/ng-update/index_bundled.js.map +6 -0
  436. package/schematics/package.json +3 -0
  437. package/select/_m2-select.scss +49 -0
  438. package/select/_m3-select.scss +54 -0
  439. package/select/_select-theme.scss +99 -0
  440. package/sidenav/_m2-sidenav.scss +48 -0
  441. package/sidenav/_m3-sidenav.scss +26 -0
  442. package/sidenav/_sidenav-theme.scss +75 -0
  443. package/slide-toggle/_m2-slide-toggle.scss +134 -0
  444. package/slide-toggle/_m3-slide-toggle.scss +133 -0
  445. package/slide-toggle/_slide-toggle-theme.scss +119 -0
  446. package/slider/_m2-slider.scss +73 -0
  447. package/slider/_m3-slider.scss +69 -0
  448. package/slider/_slider-theme.scss +103 -0
  449. package/snack-bar/_m2-snack-bar.scss +24 -0
  450. package/snack-bar/_m3-snack-bar.scss +26 -0
  451. package/snack-bar/_snack-bar-theme.scss +77 -0
  452. package/sort/_m2-sort.scss +16 -0
  453. package/sort/_m3-sort.scss +20 -0
  454. package/sort/_sort-theme.scss +76 -0
  455. package/stepper/_m2-stepper.scss +65 -0
  456. package/stepper/_m3-stepper.scss +66 -0
  457. package/stepper/_stepper-theme.scss +102 -0
  458. package/table/_m2-table.scss +63 -0
  459. package/table/_m3-table.scss +52 -0
  460. package/table/_table-theme.scss +76 -0
  461. package/tabs/_m2-tabs.scss +68 -0
  462. package/tabs/_m3-tabs.scss +58 -0
  463. package/tabs/_tabs-theme.scss +131 -0
  464. package/timepicker/_m2-timepicker.scss +19 -0
  465. package/timepicker/_m3-timepicker.scss +21 -0
  466. package/timepicker/_timepicker-theme.scss +81 -0
  467. package/toolbar/_m2-toolbar.scss +43 -0
  468. package/toolbar/_m3-toolbar.scss +41 -0
  469. package/toolbar/_toolbar-theme.scss +114 -0
  470. package/tooltip/_m2-tooltip.scss +24 -0
  471. package/tooltip/_m3-tooltip.scss +25 -0
  472. package/tooltip/_tooltip-theme.scss +76 -0
  473. package/tree/_m2-tree.scss +30 -0
  474. package/tree/_m3-tree.scss +37 -0
  475. package/tree/_tree-theme.scss +76 -0
  476. package/types/_badge-chunk.d.ts +100 -0
  477. package/types/_button-toggle-chunk.d.ts +252 -0
  478. package/types/_date-adapter-chunk.d.ts +261 -0
  479. package/types/_date-range-input-harness-chunk.d.ts +284 -0
  480. package/types/_dialog-chunk.d.ts +336 -0
  481. package/types/_error-options-chunk.d.ts +17 -0
  482. package/types/_form-field-chunk.d.ts +375 -0
  483. package/types/_form-field-control-chunk.d.ts +64 -0
  484. package/types/_form-field-control-harness-chunk.d.ts +20 -0
  485. package/types/_form-field-module-chunk.d.ts +18 -0
  486. package/types/_icon-module-chunk.d.ts +162 -0
  487. package/types/_icon-registry-chunk.d.ts +271 -0
  488. package/types/_input-harness-chunk.d.ts +61 -0
  489. package/types/_line-chunk.d.ts +25 -0
  490. package/types/_list-option-types-chunk.d.ts +15 -0
  491. package/types/_option-chunk.d.ts +146 -0
  492. package/types/_option-harness-chunk.d.ts +35 -0
  493. package/types/_option-module-chunk.d.ts +13 -0
  494. package/types/_option-parent-chunk.d.ts +20 -0
  495. package/types/_paginator-chunk.d.ts +184 -0
  496. package/types/_palette-chunk.d.ts +4 -0
  497. package/types/_progress-spinner-chunk.d.ts +91 -0
  498. package/types/_pseudo-checkbox-module-chunk.d.ts +45 -0
  499. package/types/_ripple-chunk.d.ts +256 -0
  500. package/types/_ripple-loader-chunk.d.ts +48 -0
  501. package/types/_ripple-module-chunk.d.ts +11 -0
  502. package/types/_sort-chunk.d.ts +88 -0
  503. package/types/_sort-direction-chunk.d.ts +3 -0
  504. package/types/_tooltip-chunk.d.ts +315 -0
  505. package/types/autocomplete-testing.d.ts +53 -0
  506. package/types/autocomplete.d.ts +420 -0
  507. package/types/badge-testing.d.ts +36 -0
  508. package/types/badge.d.ts +14 -0
  509. package/types/bottom-sheet-testing.d.ts +26 -0
  510. package/types/bottom-sheet.d.ts +192 -0
  511. package/types/button-testing.d.ts +70 -0
  512. package/types/button-toggle-testing.d.ts +97 -0
  513. package/types/button-toggle.d.ts +16 -0
  514. package/types/button.d.ts +210 -0
  515. package/types/card-testing.d.ts +41 -0
  516. package/types/card.d.ts +156 -0
  517. package/types/checkbox-testing.d.ts +86 -0
  518. package/types/checkbox.d.ts +216 -0
  519. package/types/chips-testing.d.ts +270 -0
  520. package/types/chips.d.ts +993 -0
  521. package/types/core-testing.d.ts +32 -0
  522. package/types/core.d.ts +185 -0
  523. package/types/datepicker-testing.d.ts +25 -0
  524. package/types/datepicker.d.ts +1746 -0
  525. package/types/dialog-testing.d.ts +83 -0
  526. package/types/dialog.d.ts +84 -0
  527. package/types/divider-testing.d.ts +15 -0
  528. package/types/divider.d.ts +24 -0
  529. package/types/expansion-testing.d.ts +101 -0
  530. package/types/expansion.d.ts +258 -0
  531. package/types/form-field-testing-control.d.ts +13 -0
  532. package/types/form-field-testing.d.ts +127 -0
  533. package/types/form-field.d.ts +19 -0
  534. package/types/grid-list-testing.d.ts +82 -0
  535. package/types/grid-list.d.ts +207 -0
  536. package/types/icon-testing.d.ts +81 -0
  537. package/types/icon.d.ts +8 -0
  538. package/types/input-testing.d.ts +73 -0
  539. package/types/input.d.ts +208 -0
  540. package/types/list-testing.d.ts +354 -0
  541. package/types/list.d.ts +516 -0
  542. package/types/material.d.ts +3 -0
  543. package/types/menu-testing.d.ts +141 -0
  544. package/types/menu.d.ts +547 -0
  545. package/types/paginator-testing.d.ts +51 -0
  546. package/types/paginator.d.ts +36 -0
  547. package/types/progress-bar-testing.d.ts +24 -0
  548. package/types/progress-bar.d.ts +106 -0
  549. package/types/progress-spinner-testing.d.ts +28 -0
  550. package/types/progress-spinner.d.ts +13 -0
  551. package/types/radio-testing.d.ts +109 -0
  552. package/types/radio.d.ts +295 -0
  553. package/types/select-testing.d.ts +63 -0
  554. package/types/select.d.ts +448 -0
  555. package/types/sidenav-testing.d.ts +122 -0
  556. package/types/sidenav.d.ts +335 -0
  557. package/types/slide-toggle-testing.d.ts +66 -0
  558. package/types/slide-toggle.d.ts +151 -0
  559. package/types/slider-testing.d.ts +90 -0
  560. package/types/slider.d.ts +662 -0
  561. package/types/snack-bar-testing.d.ts +64 -0
  562. package/types/snack-bar.d.ts +328 -0
  563. package/types/sort-testing.d.ts +48 -0
  564. package/types/sort.d.ts +126 -0
  565. package/types/stepper-testing.d.ts +136 -0
  566. package/types/stepper.d.ts +225 -0
  567. package/types/table-testing.d.ts +174 -0
  568. package/types/table.d.ts +302 -0
  569. package/types/tabs-testing.d.ts +145 -0
  570. package/types/tabs.d.ts +890 -0
  571. package/types/timepicker-testing.d.ts +108 -0
  572. package/types/timepicker.d.ts +318 -0
  573. package/types/toolbar-testing.d.ts +33 -0
  574. package/types/toolbar.d.ts +44 -0
  575. package/types/tooltip-testing.d.ts +35 -0
  576. package/types/tooltip.d.ts +17 -0
  577. package/types/tree-testing.d.ts +119 -0
  578. package/types/tree.d.ts +233 -0
@@ -0,0 +1,1421 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, ElementRef, DOCUMENT, ChangeDetectorRef, booleanAttribute, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, TemplateRef, ApplicationRef, Injector, ViewContainerRef, Directive, QueryList, signal, EventEmitter, afterNextRender, ContentChildren, ViewChild, ContentChild, Output, NgZone, Renderer2, NgModule } from '@angular/core';
3
+ import { FocusMonitor, _IdGenerator, FocusKeyManager, isFakeTouchstartFromScreenReader, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';
4
+ import { UP_ARROW, DOWN_ARROW, RIGHT_ARROW, LEFT_ARROW, ESCAPE, hasModifierKey, ENTER, SPACE } from '@angular/cdk/keycodes';
5
+ import { Subject, merge, Subscription, of } from 'rxjs';
6
+ import { startWith, switchMap, takeUntil, take, filter, skipWhile } from 'rxjs/operators';
7
+ import { _CdkPrivateStyleLoader } from '@angular/cdk/private';
8
+ import { _StructuralStylesLoader } from './_structural-styles-chunk.mjs';
9
+ import { MatRipple } from './_ripple-chunk.mjs';
10
+ import { TemplatePortal, DomPortalOutlet } from '@angular/cdk/portal';
11
+ import { _animationsDisabled } from './_animation-chunk.mjs';
12
+ import { Directionality, BidiModule } from '@angular/cdk/bidi';
13
+ import { createRepositionScrollStrategy, createOverlayRef, OverlayConfig, createFlexibleConnectedPositionStrategy, ViewportRuler, ScrollDispatcher, OverlayModule } from '@angular/cdk/overlay';
14
+ import { _getEventTarget, _getShadowRoot } from '@angular/cdk/platform';
15
+ import { CdkScrollableModule } from '@angular/cdk/scrolling';
16
+ import { MatRippleModule } from './_ripple-module-chunk.mjs';
17
+ import '@angular/cdk/coercion';
18
+ import '@angular/cdk/layout';
19
+
20
+ const MAT_MENU_PANEL = new InjectionToken('MAT_MENU_PANEL');
21
+
22
+ class MatMenuItem {
23
+ _elementRef = inject(ElementRef);
24
+ _document = inject(DOCUMENT);
25
+ _focusMonitor = inject(FocusMonitor);
26
+ _parentMenu = inject(MAT_MENU_PANEL, {
27
+ optional: true
28
+ });
29
+ _changeDetectorRef = inject(ChangeDetectorRef);
30
+ role = 'menuitem';
31
+ disabled = false;
32
+ disableRipple = false;
33
+ _hovered = new Subject();
34
+ _focused = new Subject();
35
+ _highlighted = false;
36
+ _triggersSubmenu = false;
37
+ constructor() {
38
+ inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);
39
+ this._parentMenu?.addItem?.(this);
40
+ }
41
+ focus(origin, options) {
42
+ if (this._focusMonitor && origin) {
43
+ this._focusMonitor.focusVia(this._getHostElement(), origin, options);
44
+ } else {
45
+ this._getHostElement().focus(options);
46
+ }
47
+ this._focused.next(this);
48
+ }
49
+ ngAfterViewInit() {
50
+ if (this._focusMonitor) {
51
+ this._focusMonitor.monitor(this._elementRef, false);
52
+ }
53
+ }
54
+ ngOnDestroy() {
55
+ if (this._focusMonitor) {
56
+ this._focusMonitor.stopMonitoring(this._elementRef);
57
+ }
58
+ if (this._parentMenu && this._parentMenu.removeItem) {
59
+ this._parentMenu.removeItem(this);
60
+ }
61
+ this._hovered.complete();
62
+ this._focused.complete();
63
+ }
64
+ _getTabIndex() {
65
+ return this.disabled ? '-1' : '0';
66
+ }
67
+ _getHostElement() {
68
+ return this._elementRef.nativeElement;
69
+ }
70
+ _checkDisabled(event) {
71
+ if (this.disabled) {
72
+ event.preventDefault();
73
+ event.stopPropagation();
74
+ }
75
+ }
76
+ _handleMouseEnter() {
77
+ this._hovered.next(this);
78
+ }
79
+ getLabel() {
80
+ const clone = this._elementRef.nativeElement.cloneNode(true);
81
+ const icons = clone.querySelectorAll('mat-icon, .material-icons');
82
+ for (let i = 0; i < icons.length; i++) {
83
+ icons[i].remove();
84
+ }
85
+ return clone.textContent?.trim() || '';
86
+ }
87
+ _setHighlighted(isHighlighted) {
88
+ this._highlighted = isHighlighted;
89
+ this._changeDetectorRef.markForCheck();
90
+ }
91
+ _setTriggersSubmenu(triggersSubmenu) {
92
+ this._triggersSubmenu = triggersSubmenu;
93
+ this._changeDetectorRef.markForCheck();
94
+ }
95
+ _hasFocus() {
96
+ return this._document && this._document.activeElement === this._getHostElement();
97
+ }
98
+ static ɵfac = i0.ɵɵngDeclareFactory({
99
+ minVersion: "12.0.0",
100
+ version: "22.0.0-next.1",
101
+ ngImport: i0,
102
+ type: MatMenuItem,
103
+ deps: [],
104
+ target: i0.ɵɵFactoryTarget.Component
105
+ });
106
+ static ɵcmp = i0.ɵɵngDeclareComponent({
107
+ minVersion: "17.0.0",
108
+ version: "22.0.0-next.1",
109
+ type: MatMenuItem,
110
+ isStandalone: true,
111
+ selector: "[mat-menu-item]",
112
+ inputs: {
113
+ role: "role",
114
+ disabled: ["disabled", "disabled", booleanAttribute],
115
+ disableRipple: ["disableRipple", "disableRipple", booleanAttribute]
116
+ },
117
+ host: {
118
+ listeners: {
119
+ "click": "_checkDisabled($event)",
120
+ "mouseenter": "_handleMouseEnter()"
121
+ },
122
+ properties: {
123
+ "attr.role": "role",
124
+ "class.mat-mdc-menu-item-highlighted": "_highlighted",
125
+ "class.mat-mdc-menu-item-submenu-trigger": "_triggersSubmenu",
126
+ "attr.tabindex": "_getTabIndex()",
127
+ "attr.aria-disabled": "disabled",
128
+ "attr.disabled": "disabled || null"
129
+ },
130
+ classAttribute: "mat-mdc-menu-item mat-focus-indicator"
131
+ },
132
+ exportAs: ["matMenuItem"],
133
+ ngImport: i0,
134
+ template: "<ng-content select=\"mat-icon, [matMenuItemIcon]\"></ng-content>\n<span class=\"mat-mdc-menu-item-text\"><ng-content></ng-content></span>\n<div class=\"mat-mdc-menu-ripple\" matRipple\n [matRippleDisabled]=\"disableRipple || disabled\"\n [matRippleTrigger]=\"_getHostElement()\">\n</div>\n\n@if (_triggersSubmenu) {\n <svg\n class=\"mat-mdc-menu-submenu-icon\"\n viewBox=\"0 0 5 10\"\n focusable=\"false\"\n aria-hidden=\"true\"><polygon points=\"0,0 5,5 0,10\"/></svg>\n}\n",
135
+ dependencies: [{
136
+ kind: "directive",
137
+ type: MatRipple,
138
+ selector: "[mat-ripple], [matRipple]",
139
+ inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"],
140
+ exportAs: ["matRipple"]
141
+ }],
142
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
143
+ encapsulation: i0.ViewEncapsulation.None
144
+ });
145
+ }
146
+ i0.ɵɵngDeclareClassMetadata({
147
+ minVersion: "12.0.0",
148
+ version: "22.0.0-next.1",
149
+ ngImport: i0,
150
+ type: MatMenuItem,
151
+ decorators: [{
152
+ type: Component,
153
+ args: [{
154
+ selector: '[mat-menu-item]',
155
+ exportAs: 'matMenuItem',
156
+ host: {
157
+ '[attr.role]': 'role',
158
+ 'class': 'mat-mdc-menu-item mat-focus-indicator',
159
+ '[class.mat-mdc-menu-item-highlighted]': '_highlighted',
160
+ '[class.mat-mdc-menu-item-submenu-trigger]': '_triggersSubmenu',
161
+ '[attr.tabindex]': '_getTabIndex()',
162
+ '[attr.aria-disabled]': 'disabled',
163
+ '[attr.disabled]': 'disabled || null',
164
+ '(click)': '_checkDisabled($event)',
165
+ '(mouseenter)': '_handleMouseEnter()'
166
+ },
167
+ changeDetection: ChangeDetectionStrategy.OnPush,
168
+ encapsulation: ViewEncapsulation.None,
169
+ imports: [MatRipple],
170
+ template: "<ng-content select=\"mat-icon, [matMenuItemIcon]\"></ng-content>\n<span class=\"mat-mdc-menu-item-text\"><ng-content></ng-content></span>\n<div class=\"mat-mdc-menu-ripple\" matRipple\n [matRippleDisabled]=\"disableRipple || disabled\"\n [matRippleTrigger]=\"_getHostElement()\">\n</div>\n\n@if (_triggersSubmenu) {\n <svg\n class=\"mat-mdc-menu-submenu-icon\"\n viewBox=\"0 0 5 10\"\n focusable=\"false\"\n aria-hidden=\"true\"><polygon points=\"0,0 5,5 0,10\"/></svg>\n}\n"
171
+ }]
172
+ }],
173
+ ctorParameters: () => [],
174
+ propDecorators: {
175
+ role: [{
176
+ type: Input
177
+ }],
178
+ disabled: [{
179
+ type: Input,
180
+ args: [{
181
+ transform: booleanAttribute
182
+ }]
183
+ }],
184
+ disableRipple: [{
185
+ type: Input,
186
+ args: [{
187
+ transform: booleanAttribute
188
+ }]
189
+ }]
190
+ }
191
+ });
192
+
193
+ function throwMatMenuInvalidPositionX() {
194
+ throw Error(`xPosition value must be either 'before' or after'.
195
+ Example: <mat-menu xPosition="before" #menu="matMenu"></mat-menu>`);
196
+ }
197
+ function throwMatMenuInvalidPositionY() {
198
+ throw Error(`yPosition value must be either 'above' or below'.
199
+ Example: <mat-menu yPosition="above" #menu="matMenu"></mat-menu>`);
200
+ }
201
+ function throwMatMenuRecursiveError() {
202
+ throw Error(`matMenuTriggerFor: menu cannot contain its own trigger. Assign a menu that is ` + `not a parent of the trigger or move the trigger outside of the menu.`);
203
+ }
204
+
205
+ const MAT_MENU_CONTENT = new InjectionToken('MatMenuContent');
206
+ class MatMenuContent {
207
+ _template = inject(TemplateRef);
208
+ _appRef = inject(ApplicationRef);
209
+ _injector = inject(Injector);
210
+ _viewContainerRef = inject(ViewContainerRef);
211
+ _document = inject(DOCUMENT);
212
+ _changeDetectorRef = inject(ChangeDetectorRef);
213
+ _portal;
214
+ _outlet;
215
+ _attached = new Subject();
216
+ constructor() {}
217
+ attach(context = {}) {
218
+ if (!this._portal) {
219
+ this._portal = new TemplatePortal(this._template, this._viewContainerRef);
220
+ }
221
+ this.detach();
222
+ if (!this._outlet) {
223
+ this._outlet = new DomPortalOutlet(this._document.createElement('div'), this._appRef, this._injector);
224
+ }
225
+ const element = this._template.elementRef.nativeElement;
226
+ element.parentNode.insertBefore(this._outlet.outletElement, element);
227
+ this._changeDetectorRef.markForCheck();
228
+ this._portal.attach(this._outlet, context);
229
+ this._attached.next();
230
+ }
231
+ detach() {
232
+ if (this._portal?.isAttached) {
233
+ this._portal.detach();
234
+ }
235
+ }
236
+ ngOnDestroy() {
237
+ this.detach();
238
+ this._outlet?.dispose();
239
+ }
240
+ static ɵfac = i0.ɵɵngDeclareFactory({
241
+ minVersion: "12.0.0",
242
+ version: "22.0.0-next.1",
243
+ ngImport: i0,
244
+ type: MatMenuContent,
245
+ deps: [],
246
+ target: i0.ɵɵFactoryTarget.Directive
247
+ });
248
+ static ɵdir = i0.ɵɵngDeclareDirective({
249
+ minVersion: "14.0.0",
250
+ version: "22.0.0-next.1",
251
+ type: MatMenuContent,
252
+ isStandalone: true,
253
+ selector: "ng-template[matMenuContent]",
254
+ providers: [{
255
+ provide: MAT_MENU_CONTENT,
256
+ useExisting: MatMenuContent
257
+ }],
258
+ ngImport: i0
259
+ });
260
+ }
261
+ i0.ɵɵngDeclareClassMetadata({
262
+ minVersion: "12.0.0",
263
+ version: "22.0.0-next.1",
264
+ ngImport: i0,
265
+ type: MatMenuContent,
266
+ decorators: [{
267
+ type: Directive,
268
+ args: [{
269
+ selector: 'ng-template[matMenuContent]',
270
+ providers: [{
271
+ provide: MAT_MENU_CONTENT,
272
+ useExisting: MatMenuContent
273
+ }]
274
+ }]
275
+ }],
276
+ ctorParameters: () => []
277
+ });
278
+
279
+ const MAT_MENU_DEFAULT_OPTIONS = new InjectionToken('mat-menu-default-options', {
280
+ providedIn: 'root',
281
+ factory: () => ({
282
+ overlapTrigger: false,
283
+ xPosition: 'after',
284
+ yPosition: 'below',
285
+ backdropClass: 'cdk-overlay-transparent-backdrop'
286
+ })
287
+ });
288
+ const ENTER_ANIMATION = '_mat-menu-enter';
289
+ const EXIT_ANIMATION = '_mat-menu-exit';
290
+ class MatMenu {
291
+ _elementRef = inject(ElementRef);
292
+ _changeDetectorRef = inject(ChangeDetectorRef);
293
+ _injector = inject(Injector);
294
+ _keyManager;
295
+ _xPosition;
296
+ _yPosition;
297
+ _firstItemFocusRef;
298
+ _exitFallbackTimeout;
299
+ _animationsDisabled = _animationsDisabled();
300
+ _allItems;
301
+ _directDescendantItems = new QueryList();
302
+ _classList = {};
303
+ _panelAnimationState = 'void';
304
+ _animationDone = new Subject();
305
+ _isAnimating = signal(false, ...(ngDevMode ? [{
306
+ debugName: "_isAnimating"
307
+ }] : []));
308
+ parentMenu;
309
+ direction;
310
+ overlayPanelClass;
311
+ backdropClass;
312
+ ariaLabel;
313
+ ariaLabelledby;
314
+ ariaDescribedby;
315
+ get xPosition() {
316
+ return this._xPosition;
317
+ }
318
+ set xPosition(value) {
319
+ if (value !== 'before' && value !== 'after' && (typeof ngDevMode === 'undefined' || ngDevMode)) {
320
+ throwMatMenuInvalidPositionX();
321
+ }
322
+ this._xPosition = value;
323
+ this.setPositionClasses();
324
+ }
325
+ get yPosition() {
326
+ return this._yPosition;
327
+ }
328
+ set yPosition(value) {
329
+ if (value !== 'above' && value !== 'below' && (typeof ngDevMode === 'undefined' || ngDevMode)) {
330
+ throwMatMenuInvalidPositionY();
331
+ }
332
+ this._yPosition = value;
333
+ this.setPositionClasses();
334
+ }
335
+ templateRef;
336
+ items;
337
+ lazyContent;
338
+ overlapTrigger = false;
339
+ hasBackdrop;
340
+ set panelClass(classes) {
341
+ const previousPanelClass = this._previousPanelClass;
342
+ const newClassList = {
343
+ ...this._classList
344
+ };
345
+ if (previousPanelClass && previousPanelClass.length) {
346
+ previousPanelClass.split(' ').forEach(className => {
347
+ newClassList[className] = false;
348
+ });
349
+ }
350
+ this._previousPanelClass = classes;
351
+ if (classes && classes.length) {
352
+ classes.split(' ').forEach(className => {
353
+ newClassList[className] = true;
354
+ });
355
+ this._elementRef.nativeElement.className = '';
356
+ }
357
+ this._classList = newClassList;
358
+ }
359
+ _previousPanelClass;
360
+ get classList() {
361
+ return this.panelClass;
362
+ }
363
+ set classList(classes) {
364
+ this.panelClass = classes;
365
+ }
366
+ closed = new EventEmitter();
367
+ close = this.closed;
368
+ panelId = inject(_IdGenerator).getId('mat-menu-panel-');
369
+ constructor() {
370
+ const defaultOptions = inject(MAT_MENU_DEFAULT_OPTIONS);
371
+ this.overlayPanelClass = defaultOptions.overlayPanelClass || '';
372
+ this._xPosition = defaultOptions.xPosition;
373
+ this._yPosition = defaultOptions.yPosition;
374
+ this.backdropClass = defaultOptions.backdropClass;
375
+ this.overlapTrigger = defaultOptions.overlapTrigger;
376
+ this.hasBackdrop = defaultOptions.hasBackdrop;
377
+ }
378
+ ngOnInit() {
379
+ this.setPositionClasses();
380
+ }
381
+ ngAfterContentInit() {
382
+ this._updateDirectDescendants();
383
+ this._keyManager = new FocusKeyManager(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd();
384
+ this._keyManager.tabOut.subscribe(() => this.closed.emit('tab'));
385
+ this._directDescendantItems.changes.pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map(item => item._focused)))).subscribe(focusedItem => this._keyManager.updateActiveItem(focusedItem));
386
+ this._directDescendantItems.changes.subscribe(itemsList => {
387
+ const manager = this._keyManager;
388
+ if (this._panelAnimationState === 'enter' && manager.activeItem?._hasFocus()) {
389
+ const items = itemsList.toArray();
390
+ const index = Math.max(0, Math.min(items.length - 1, manager.activeItemIndex || 0));
391
+ if (items[index] && !items[index].disabled) {
392
+ manager.setActiveItem(index);
393
+ } else {
394
+ manager.setNextItemActive();
395
+ }
396
+ }
397
+ });
398
+ }
399
+ ngOnDestroy() {
400
+ this._keyManager?.destroy();
401
+ this._directDescendantItems.destroy();
402
+ this.closed.complete();
403
+ this._firstItemFocusRef?.destroy();
404
+ clearTimeout(this._exitFallbackTimeout);
405
+ }
406
+ _hovered() {
407
+ const itemChanges = this._directDescendantItems.changes;
408
+ return itemChanges.pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map(item => item._hovered))));
409
+ }
410
+ addItem(_item) {}
411
+ removeItem(_item) {}
412
+ _handleKeydown(event) {
413
+ const keyCode = event.keyCode;
414
+ const manager = this._keyManager;
415
+ switch (keyCode) {
416
+ case ESCAPE:
417
+ if (!hasModifierKey(event)) {
418
+ event.preventDefault();
419
+ this.closed.emit('keydown');
420
+ }
421
+ break;
422
+ case LEFT_ARROW:
423
+ if (this.parentMenu && this.direction === 'ltr') {
424
+ this.closed.emit('keydown');
425
+ }
426
+ break;
427
+ case RIGHT_ARROW:
428
+ if (this.parentMenu && this.direction === 'rtl') {
429
+ this.closed.emit('keydown');
430
+ }
431
+ break;
432
+ default:
433
+ if (keyCode === UP_ARROW || keyCode === DOWN_ARROW) {
434
+ manager.setFocusOrigin('keyboard');
435
+ }
436
+ manager.onKeydown(event);
437
+ return;
438
+ }
439
+ }
440
+ focusFirstItem(origin = 'program') {
441
+ this._firstItemFocusRef?.destroy();
442
+ this._firstItemFocusRef = afterNextRender(() => {
443
+ const menuPanel = this._resolvePanel();
444
+ if (!menuPanel || !menuPanel.contains(document.activeElement)) {
445
+ const manager = this._keyManager;
446
+ manager.setFocusOrigin(origin).setFirstItemActive();
447
+ if (!manager.activeItem && menuPanel) {
448
+ menuPanel.focus();
449
+ }
450
+ }
451
+ }, {
452
+ injector: this._injector
453
+ });
454
+ }
455
+ resetActiveItem() {
456
+ this._keyManager.setActiveItem(-1);
457
+ }
458
+ setElevation(_depth) {}
459
+ setPositionClasses(posX = this.xPosition, posY = this.yPosition) {
460
+ this._classList = {
461
+ ...this._classList,
462
+ ['mat-menu-before']: posX === 'before',
463
+ ['mat-menu-after']: posX === 'after',
464
+ ['mat-menu-above']: posY === 'above',
465
+ ['mat-menu-below']: posY === 'below'
466
+ };
467
+ this._changeDetectorRef.markForCheck();
468
+ }
469
+ _onAnimationDone(state) {
470
+ const isExit = state === EXIT_ANIMATION;
471
+ if (isExit || state === ENTER_ANIMATION) {
472
+ if (isExit) {
473
+ clearTimeout(this._exitFallbackTimeout);
474
+ this._exitFallbackTimeout = undefined;
475
+ }
476
+ this._animationDone.next(isExit ? 'void' : 'enter');
477
+ this._isAnimating.set(false);
478
+ }
479
+ }
480
+ _onAnimationStart(state) {
481
+ if (state === ENTER_ANIMATION || state === EXIT_ANIMATION) {
482
+ this._isAnimating.set(true);
483
+ }
484
+ }
485
+ _setIsOpen(isOpen) {
486
+ this._panelAnimationState = isOpen ? 'enter' : 'void';
487
+ if (isOpen) {
488
+ if (this._keyManager.activeItemIndex === 0) {
489
+ const menuPanel = this._resolvePanel();
490
+ if (menuPanel) {
491
+ menuPanel.scrollTop = 0;
492
+ }
493
+ }
494
+ } else if (!this._animationsDisabled) {
495
+ this._exitFallbackTimeout = setTimeout(() => this._onAnimationDone(EXIT_ANIMATION), 200);
496
+ }
497
+ if (this._animationsDisabled) {
498
+ setTimeout(() => {
499
+ this._onAnimationDone(isOpen ? ENTER_ANIMATION : EXIT_ANIMATION);
500
+ });
501
+ }
502
+ this._changeDetectorRef.markForCheck();
503
+ }
504
+ _updateDirectDescendants() {
505
+ this._allItems.changes.pipe(startWith(this._allItems)).subscribe(items => {
506
+ this._directDescendantItems.reset(items.filter(item => item._parentMenu === this));
507
+ this._directDescendantItems.notifyOnChanges();
508
+ });
509
+ }
510
+ _resolvePanel() {
511
+ let menuPanel = null;
512
+ if (this._directDescendantItems.length) {
513
+ menuPanel = this._directDescendantItems.first._getHostElement().closest('[role="menu"]');
514
+ }
515
+ return menuPanel;
516
+ }
517
+ static ɵfac = i0.ɵɵngDeclareFactory({
518
+ minVersion: "12.0.0",
519
+ version: "22.0.0-next.1",
520
+ ngImport: i0,
521
+ type: MatMenu,
522
+ deps: [],
523
+ target: i0.ɵɵFactoryTarget.Component
524
+ });
525
+ static ɵcmp = i0.ɵɵngDeclareComponent({
526
+ minVersion: "16.1.0",
527
+ version: "22.0.0-next.1",
528
+ type: MatMenu,
529
+ isStandalone: true,
530
+ selector: "mat-menu",
531
+ inputs: {
532
+ backdropClass: "backdropClass",
533
+ ariaLabel: ["aria-label", "ariaLabel"],
534
+ ariaLabelledby: ["aria-labelledby", "ariaLabelledby"],
535
+ ariaDescribedby: ["aria-describedby", "ariaDescribedby"],
536
+ xPosition: "xPosition",
537
+ yPosition: "yPosition",
538
+ overlapTrigger: ["overlapTrigger", "overlapTrigger", booleanAttribute],
539
+ hasBackdrop: ["hasBackdrop", "hasBackdrop", value => value == null ? null : booleanAttribute(value)],
540
+ panelClass: ["class", "panelClass"],
541
+ classList: "classList"
542
+ },
543
+ outputs: {
544
+ closed: "closed",
545
+ close: "close"
546
+ },
547
+ host: {
548
+ properties: {
549
+ "attr.aria-label": "null",
550
+ "attr.aria-labelledby": "null",
551
+ "attr.aria-describedby": "null"
552
+ }
553
+ },
554
+ providers: [{
555
+ provide: MAT_MENU_PANEL,
556
+ useExisting: MatMenu
557
+ }],
558
+ queries: [{
559
+ propertyName: "lazyContent",
560
+ first: true,
561
+ predicate: MAT_MENU_CONTENT,
562
+ descendants: true
563
+ }, {
564
+ propertyName: "_allItems",
565
+ predicate: MatMenuItem,
566
+ descendants: true
567
+ }, {
568
+ propertyName: "items",
569
+ predicate: MatMenuItem
570
+ }],
571
+ viewQueries: [{
572
+ propertyName: "templateRef",
573
+ first: true,
574
+ predicate: TemplateRef,
575
+ descendants: true
576
+ }],
577
+ exportAs: ["matMenu"],
578
+ ngImport: i0,
579
+ template: "<ng-template>\n <div\n class=\"mat-mdc-menu-panel\"\n [id]=\"panelId\"\n [class]=\"_classList\"\n [class.mat-menu-panel-animations-disabled]=\"_animationsDisabled\"\n [class.mat-menu-panel-exit-animation]=\"_panelAnimationState === 'void'\"\n [class.mat-menu-panel-animating]=\"_isAnimating()\"\n (click)=\"closed.emit('click')\"\n tabindex=\"-1\"\n role=\"menu\"\n (animationstart)=\"_onAnimationStart($event.animationName)\"\n (animationend)=\"_onAnimationDone($event.animationName)\"\n (animationcancel)=\"_onAnimationDone($event.animationName)\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\n [attr.aria-describedby]=\"ariaDescribedby || null\">\n <div class=\"mat-mdc-menu-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n",
580
+ styles: ["mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;outline:0}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-menu-item-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-menu-item-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-menu-item-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-menu-item-label-text-weight, var(--mat-sys-label-large-weight))}@keyframes _mat-menu-enter{from{opacity:0;transform:scale(0.8)}to{opacity:1;transform:none}}@keyframes _mat-menu-exit{from{opacity:1}to{opacity:0}}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;box-sizing:border-box;outline:0;animation:_mat-menu-enter 120ms cubic-bezier(0, 0, 0.2, 1);border-radius:var(--mat-menu-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-menu-container-color, var(--mat-sys-surface-container));box-shadow:var(--mat-menu-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));will-change:transform,opacity}.mat-mdc-menu-panel.mat-menu-panel-exit-animation{animation:_mat-menu-exit 100ms 25ms linear forwards}.mat-mdc-menu-panel.mat-menu-panel-animations-disabled{animation:none}.mat-mdc-menu-panel.mat-menu-panel-animating{pointer-events:none}.mat-mdc-menu-panel.mat-menu-panel-animating:has(.mat-mdc-menu-content:empty){display:none}@media(forced-colors: active){.mat-mdc-menu-panel{outline:solid 1px}}.mat-mdc-menu-panel .mat-divider{border-top-color:var(--mat-menu-divider-color, var(--mat-sys-surface-variant));margin-bottom:var(--mat-menu-divider-bottom-spacing, 8px);margin-top:var(--mat-menu-divider-top-spacing, 8px)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px;padding-left:var(--mat-menu-item-leading-spacing, 12px);padding-right:var(--mat-menu-item-trailing-spacing, 12px);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-menu-item::-moz-focus-inner{border:0}[dir=rtl] .mat-mdc-menu-item{padding-left:var(--mat-menu-item-trailing-spacing, 12px);padding-right:var(--mat-menu-item-leading-spacing, 12px)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-trailing-spacing, 12px)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-trailing-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-leading-spacing, 12px)}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:\"\";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item:focus{outline:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing, 12px);height:var(--mat-menu-item-icon-size, 24px);width:var(--mat-menu-item-icon-size, 24px)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing, 12px)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}@media(forced-colors: active){.mat-mdc-menu-item{margin-top:1px}}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size, 24px);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing, 12px)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing, 12px);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1);transform-origin:center}@media(forced-colors: active){.mat-mdc-menu-submenu-icon{fill:CanvasText}}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n"],
581
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
582
+ encapsulation: i0.ViewEncapsulation.None
583
+ });
584
+ }
585
+ i0.ɵɵngDeclareClassMetadata({
586
+ minVersion: "12.0.0",
587
+ version: "22.0.0-next.1",
588
+ ngImport: i0,
589
+ type: MatMenu,
590
+ decorators: [{
591
+ type: Component,
592
+ args: [{
593
+ selector: 'mat-menu',
594
+ changeDetection: ChangeDetectionStrategy.OnPush,
595
+ encapsulation: ViewEncapsulation.None,
596
+ exportAs: 'matMenu',
597
+ host: {
598
+ '[attr.aria-label]': 'null',
599
+ '[attr.aria-labelledby]': 'null',
600
+ '[attr.aria-describedby]': 'null'
601
+ },
602
+ providers: [{
603
+ provide: MAT_MENU_PANEL,
604
+ useExisting: MatMenu
605
+ }],
606
+ template: "<ng-template>\n <div\n class=\"mat-mdc-menu-panel\"\n [id]=\"panelId\"\n [class]=\"_classList\"\n [class.mat-menu-panel-animations-disabled]=\"_animationsDisabled\"\n [class.mat-menu-panel-exit-animation]=\"_panelAnimationState === 'void'\"\n [class.mat-menu-panel-animating]=\"_isAnimating()\"\n (click)=\"closed.emit('click')\"\n tabindex=\"-1\"\n role=\"menu\"\n (animationstart)=\"_onAnimationStart($event.animationName)\"\n (animationend)=\"_onAnimationDone($event.animationName)\"\n (animationcancel)=\"_onAnimationDone($event.animationName)\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\n [attr.aria-describedby]=\"ariaDescribedby || null\">\n <div class=\"mat-mdc-menu-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n",
607
+ styles: ["mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;outline:0}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font, var(--mat-sys-label-large-font));line-height:var(--mat-menu-item-label-text-line-height, var(--mat-sys-label-large-line-height));font-size:var(--mat-menu-item-label-text-size, var(--mat-sys-label-large-size));letter-spacing:var(--mat-menu-item-label-text-tracking, var(--mat-sys-label-large-tracking));font-weight:var(--mat-menu-item-label-text-weight, var(--mat-sys-label-large-weight))}@keyframes _mat-menu-enter{from{opacity:0;transform:scale(0.8)}to{opacity:1;transform:none}}@keyframes _mat-menu-exit{from{opacity:1}to{opacity:0}}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;box-sizing:border-box;outline:0;animation:_mat-menu-enter 120ms cubic-bezier(0, 0, 0.2, 1);border-radius:var(--mat-menu-container-shape, var(--mat-sys-corner-extra-small));background-color:var(--mat-menu-container-color, var(--mat-sys-surface-container));box-shadow:var(--mat-menu-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12));will-change:transform,opacity}.mat-mdc-menu-panel.mat-menu-panel-exit-animation{animation:_mat-menu-exit 100ms 25ms linear forwards}.mat-mdc-menu-panel.mat-menu-panel-animations-disabled{animation:none}.mat-mdc-menu-panel.mat-menu-panel-animating{pointer-events:none}.mat-mdc-menu-panel.mat-menu-panel-animating:has(.mat-mdc-menu-content:empty){display:none}@media(forced-colors: active){.mat-mdc-menu-panel{outline:solid 1px}}.mat-mdc-menu-panel .mat-divider{border-top-color:var(--mat-menu-divider-color, var(--mat-sys-surface-variant));margin-bottom:var(--mat-menu-divider-bottom-spacing, 8px);margin-top:var(--mat-menu-divider-top-spacing, 8px)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px;padding-left:var(--mat-menu-item-leading-spacing, 12px);padding-right:var(--mat-menu-item-trailing-spacing, 12px);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-menu-item::-moz-focus-inner{border:0}[dir=rtl] .mat-mdc-menu-item{padding-left:var(--mat-menu-item-trailing-spacing, 12px);padding-right:var(--mat-menu-item-leading-spacing, 12px)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-trailing-spacing, 12px)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-trailing-spacing, 12px);padding-right:var(--mat-menu-item-with-icon-leading-spacing, 12px)}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color, var(--mat-sys-on-surface))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color, var(--mat-sys-on-surface-variant))}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:\"\";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item:focus{outline:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing, 12px);height:var(--mat-menu-item-icon-size, 24px);width:var(--mat-menu-item-icon-size, 24px)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing, 12px)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}@media(forced-colors: active){.mat-mdc-menu-item{margin-top:1px}}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size, 24px);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing, 12px)}[dir=rtl] .mat-mdc-menu-submenu-icon{padding-right:var(--mat-menu-item-spacing, 12px);padding-left:0}[dir=rtl] .mat-mdc-menu-submenu-icon polygon{transform:scaleX(-1);transform-origin:center}@media(forced-colors: active){.mat-mdc-menu-submenu-icon{fill:CanvasText}}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n"]
608
+ }]
609
+ }],
610
+ ctorParameters: () => [],
611
+ propDecorators: {
612
+ _allItems: [{
613
+ type: ContentChildren,
614
+ args: [MatMenuItem, {
615
+ descendants: true
616
+ }]
617
+ }],
618
+ backdropClass: [{
619
+ type: Input
620
+ }],
621
+ ariaLabel: [{
622
+ type: Input,
623
+ args: ['aria-label']
624
+ }],
625
+ ariaLabelledby: [{
626
+ type: Input,
627
+ args: ['aria-labelledby']
628
+ }],
629
+ ariaDescribedby: [{
630
+ type: Input,
631
+ args: ['aria-describedby']
632
+ }],
633
+ xPosition: [{
634
+ type: Input
635
+ }],
636
+ yPosition: [{
637
+ type: Input
638
+ }],
639
+ templateRef: [{
640
+ type: ViewChild,
641
+ args: [TemplateRef]
642
+ }],
643
+ items: [{
644
+ type: ContentChildren,
645
+ args: [MatMenuItem, {
646
+ descendants: false
647
+ }]
648
+ }],
649
+ lazyContent: [{
650
+ type: ContentChild,
651
+ args: [MAT_MENU_CONTENT]
652
+ }],
653
+ overlapTrigger: [{
654
+ type: Input,
655
+ args: [{
656
+ transform: booleanAttribute
657
+ }]
658
+ }],
659
+ hasBackdrop: [{
660
+ type: Input,
661
+ args: [{
662
+ transform: value => value == null ? null : booleanAttribute(value)
663
+ }]
664
+ }],
665
+ panelClass: [{
666
+ type: Input,
667
+ args: ['class']
668
+ }],
669
+ classList: [{
670
+ type: Input
671
+ }],
672
+ closed: [{
673
+ type: Output
674
+ }],
675
+ close: [{
676
+ type: Output
677
+ }]
678
+ }
679
+ });
680
+
681
+ const MAT_MENU_SCROLL_STRATEGY = new InjectionToken('mat-menu-scroll-strategy', {
682
+ providedIn: 'root',
683
+ factory: () => {
684
+ const injector = inject(Injector);
685
+ return () => createRepositionScrollStrategy(injector);
686
+ }
687
+ });
688
+ const MENU_PANEL_TOP_PADDING = 8;
689
+ const PANELS_TO_TRIGGERS = new WeakMap();
690
+ class MatMenuTriggerBase {
691
+ _canHaveBackdrop;
692
+ _element = inject(ElementRef);
693
+ _viewContainerRef = inject(ViewContainerRef);
694
+ _menuItemInstance = inject(MatMenuItem, {
695
+ optional: true,
696
+ self: true
697
+ });
698
+ _dir = inject(Directionality, {
699
+ optional: true
700
+ });
701
+ _focusMonitor = inject(FocusMonitor);
702
+ _ngZone = inject(NgZone);
703
+ _injector = inject(Injector);
704
+ _scrollStrategy = inject(MAT_MENU_SCROLL_STRATEGY);
705
+ _changeDetectorRef = inject(ChangeDetectorRef);
706
+ _animationsDisabled = _animationsDisabled();
707
+ _portal;
708
+ _overlayRef = null;
709
+ _menuOpen = false;
710
+ _closingActionsSubscription = Subscription.EMPTY;
711
+ _menuCloseSubscription = Subscription.EMPTY;
712
+ _pendingRemoval;
713
+ _parentMaterialMenu;
714
+ _parentInnerPadding;
715
+ _openedBy = undefined;
716
+ get _menu() {
717
+ return this._menuInternal;
718
+ }
719
+ set _menu(menu) {
720
+ if (menu === this._menuInternal) {
721
+ return;
722
+ }
723
+ this._menuInternal = menu;
724
+ this._menuCloseSubscription.unsubscribe();
725
+ if (menu) {
726
+ if (menu === this._parentMaterialMenu && (typeof ngDevMode === 'undefined' || ngDevMode)) {
727
+ throwMatMenuRecursiveError();
728
+ }
729
+ this._menuCloseSubscription = menu.close.subscribe(reason => {
730
+ this._destroyMenu(reason);
731
+ if ((reason === 'click' || reason === 'tab') && this._parentMaterialMenu) {
732
+ this._parentMaterialMenu.closed.emit(reason);
733
+ }
734
+ });
735
+ }
736
+ this._menuItemInstance?._setTriggersSubmenu(this._triggersSubmenu());
737
+ }
738
+ _menuInternal = null;
739
+ constructor(_canHaveBackdrop) {
740
+ this._canHaveBackdrop = _canHaveBackdrop;
741
+ const parentMenu = inject(MAT_MENU_PANEL, {
742
+ optional: true
743
+ });
744
+ this._parentMaterialMenu = parentMenu instanceof MatMenu ? parentMenu : undefined;
745
+ }
746
+ ngOnDestroy() {
747
+ if (this._menu && this._ownsMenu(this._menu)) {
748
+ PANELS_TO_TRIGGERS.delete(this._menu);
749
+ }
750
+ this._pendingRemoval?.unsubscribe();
751
+ this._menuCloseSubscription.unsubscribe();
752
+ this._closingActionsSubscription.unsubscribe();
753
+ if (this._overlayRef) {
754
+ this._overlayRef.dispose();
755
+ this._overlayRef = null;
756
+ }
757
+ }
758
+ get menuOpen() {
759
+ return this._menuOpen;
760
+ }
761
+ get dir() {
762
+ return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';
763
+ }
764
+ _triggersSubmenu() {
765
+ return !!(this._menuItemInstance && this._parentMaterialMenu && this._menu);
766
+ }
767
+ _closeMenu() {
768
+ this._menu?.close.emit();
769
+ }
770
+ _openMenu(autoFocus) {
771
+ if (this._triggerIsAriaDisabled()) {
772
+ return;
773
+ }
774
+ const menu = this._menu;
775
+ if (this._menuOpen || !menu) {
776
+ return;
777
+ }
778
+ this._pendingRemoval?.unsubscribe();
779
+ const previousTrigger = PANELS_TO_TRIGGERS.get(menu);
780
+ PANELS_TO_TRIGGERS.set(menu, this);
781
+ if (previousTrigger && previousTrigger !== this) {
782
+ previousTrigger._closeMenu();
783
+ }
784
+ const overlayRef = this._createOverlay(menu);
785
+ const overlayConfig = overlayRef.getConfig();
786
+ const positionStrategy = overlayConfig.positionStrategy;
787
+ this._setPosition(menu, positionStrategy);
788
+ if (this._canHaveBackdrop) {
789
+ overlayConfig.hasBackdrop = menu.hasBackdrop == null ? !this._triggersSubmenu() : menu.hasBackdrop;
790
+ } else {
791
+ overlayConfig.hasBackdrop = menu.hasBackdrop ?? false;
792
+ }
793
+ if (!overlayRef.hasAttached()) {
794
+ overlayRef.attach(this._getPortal(menu));
795
+ menu.lazyContent?.attach(this.menuData);
796
+ }
797
+ this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this._closeMenu());
798
+ menu.parentMenu = this._triggersSubmenu() ? this._parentMaterialMenu : undefined;
799
+ menu.direction = this.dir;
800
+ if (autoFocus) {
801
+ menu.focusFirstItem(this._openedBy || 'program');
802
+ }
803
+ this._setIsMenuOpen(true);
804
+ if (menu instanceof MatMenu) {
805
+ menu._setIsOpen(true);
806
+ menu._directDescendantItems.changes.pipe(takeUntil(menu.close)).subscribe(() => {
807
+ positionStrategy.withLockedPosition(false).reapplyLastPosition();
808
+ positionStrategy.withLockedPosition(true);
809
+ });
810
+ }
811
+ }
812
+ focus(origin, options) {
813
+ if (this._focusMonitor && origin) {
814
+ this._focusMonitor.focusVia(this._element, origin, options);
815
+ } else {
816
+ this._element.nativeElement.focus(options);
817
+ }
818
+ }
819
+ _destroyMenu(reason) {
820
+ const overlayRef = this._overlayRef;
821
+ const menu = this._menu;
822
+ if (!overlayRef || !this.menuOpen) {
823
+ return;
824
+ }
825
+ this._closingActionsSubscription.unsubscribe();
826
+ this._pendingRemoval?.unsubscribe();
827
+ if (menu instanceof MatMenu && this._ownsMenu(menu)) {
828
+ this._pendingRemoval = menu._animationDone.pipe(take(1)).subscribe(() => {
829
+ overlayRef.detach();
830
+ if (!PANELS_TO_TRIGGERS.has(menu)) {
831
+ menu.lazyContent?.detach();
832
+ }
833
+ });
834
+ menu._setIsOpen(false);
835
+ } else {
836
+ overlayRef.detach();
837
+ menu?.lazyContent?.detach();
838
+ }
839
+ if (menu && this._ownsMenu(menu)) {
840
+ PANELS_TO_TRIGGERS.delete(menu);
841
+ }
842
+ if (this.restoreFocus && (reason === 'keydown' || !this._openedBy || !this._triggersSubmenu())) {
843
+ this.focus(this._openedBy);
844
+ }
845
+ this._openedBy = undefined;
846
+ this._setIsMenuOpen(false);
847
+ }
848
+ _setIsMenuOpen(isOpen) {
849
+ if (isOpen !== this._menuOpen) {
850
+ this._menuOpen = isOpen;
851
+ this._menuOpen ? this.menuOpened.emit() : this.menuClosed.emit();
852
+ if (this._triggersSubmenu()) {
853
+ this._menuItemInstance._setHighlighted(isOpen);
854
+ }
855
+ this._changeDetectorRef.markForCheck();
856
+ }
857
+ }
858
+ _createOverlay(menu) {
859
+ if (!this._overlayRef) {
860
+ const config = this._getOverlayConfig(menu);
861
+ this._subscribeToPositions(menu, config.positionStrategy);
862
+ this._overlayRef = createOverlayRef(this._injector, config);
863
+ this._overlayRef.keydownEvents().subscribe(event => {
864
+ if (this._menu instanceof MatMenu) {
865
+ this._menu._handleKeydown(event);
866
+ }
867
+ });
868
+ }
869
+ return this._overlayRef;
870
+ }
871
+ _getOverlayConfig(menu) {
872
+ return new OverlayConfig({
873
+ positionStrategy: createFlexibleConnectedPositionStrategy(this._injector, this._getOverlayOrigin()).withLockedPosition().withGrowAfterOpen().withTransformOriginOn('.mat-menu-panel, .mat-mdc-menu-panel'),
874
+ backdropClass: menu.backdropClass || 'cdk-overlay-transparent-backdrop',
875
+ panelClass: menu.overlayPanelClass,
876
+ scrollStrategy: this._scrollStrategy(),
877
+ direction: this._dir || 'ltr',
878
+ disableAnimations: this._animationsDisabled
879
+ });
880
+ }
881
+ _subscribeToPositions(menu, position) {
882
+ if (menu.setPositionClasses) {
883
+ position.positionChanges.subscribe(change => {
884
+ this._ngZone.run(() => {
885
+ const posX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';
886
+ const posY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';
887
+ menu.setPositionClasses(posX, posY);
888
+ });
889
+ });
890
+ }
891
+ }
892
+ _setPosition(menu, positionStrategy) {
893
+ let [originX, originFallbackX] = menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];
894
+ let [overlayY, overlayFallbackY] = menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];
895
+ let [originY, originFallbackY] = [overlayY, overlayFallbackY];
896
+ let [overlayX, overlayFallbackX] = [originX, originFallbackX];
897
+ let offsetY = 0;
898
+ if (this._triggersSubmenu()) {
899
+ overlayFallbackX = originX = menu.xPosition === 'before' ? 'start' : 'end';
900
+ originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';
901
+ if (this._parentMaterialMenu) {
902
+ if (this._parentInnerPadding == null) {
903
+ const firstItem = this._parentMaterialMenu.items.first;
904
+ this._parentInnerPadding = firstItem ? firstItem._getHostElement().offsetTop : 0;
905
+ }
906
+ offsetY = overlayY === 'bottom' ? this._parentInnerPadding : -this._parentInnerPadding;
907
+ }
908
+ } else if (!menu.overlapTrigger) {
909
+ originY = overlayY === 'top' ? 'bottom' : 'top';
910
+ originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';
911
+ }
912
+ positionStrategy.withPositions([{
913
+ originX,
914
+ originY,
915
+ overlayX,
916
+ overlayY,
917
+ offsetY
918
+ }, {
919
+ originX: originFallbackX,
920
+ originY,
921
+ overlayX: overlayFallbackX,
922
+ overlayY,
923
+ offsetY
924
+ }, {
925
+ originX,
926
+ originY: originFallbackY,
927
+ overlayX,
928
+ overlayY: overlayFallbackY,
929
+ offsetY: -offsetY
930
+ }, {
931
+ originX: originFallbackX,
932
+ originY: originFallbackY,
933
+ overlayX: overlayFallbackX,
934
+ overlayY: overlayFallbackY,
935
+ offsetY: -offsetY
936
+ }]);
937
+ }
938
+ _menuClosingActions() {
939
+ const outsideClicks = this._getOutsideClickStream(this._overlayRef);
940
+ const detachments = this._overlayRef.detachments();
941
+ const parentClose = this._parentMaterialMenu ? this._parentMaterialMenu.closed : of();
942
+ const hover = this._parentMaterialMenu ? this._parentMaterialMenu._hovered().pipe(filter(active => this._menuOpen && active !== this._menuItemInstance)) : of();
943
+ return merge(outsideClicks, parentClose, hover, detachments);
944
+ }
945
+ _getPortal(menu) {
946
+ if (!this._portal || this._portal.templateRef !== menu.templateRef) {
947
+ this._portal = new TemplatePortal(menu.templateRef, this._viewContainerRef);
948
+ }
949
+ return this._portal;
950
+ }
951
+ _ownsMenu(menu) {
952
+ return PANELS_TO_TRIGGERS.get(menu) === this;
953
+ }
954
+ _triggerIsAriaDisabled() {
955
+ return booleanAttribute(this._element.nativeElement.getAttribute('aria-disabled'));
956
+ }
957
+ static ɵfac = i0.ɵɵngDeclareFactory({
958
+ minVersion: "12.0.0",
959
+ version: "22.0.0-next.1",
960
+ ngImport: i0,
961
+ type: MatMenuTriggerBase,
962
+ deps: "invalid",
963
+ target: i0.ɵɵFactoryTarget.Directive
964
+ });
965
+ static ɵdir = i0.ɵɵngDeclareDirective({
966
+ minVersion: "14.0.0",
967
+ version: "22.0.0-next.1",
968
+ type: MatMenuTriggerBase,
969
+ isStandalone: true,
970
+ ngImport: i0
971
+ });
972
+ }
973
+ i0.ɵɵngDeclareClassMetadata({
974
+ minVersion: "12.0.0",
975
+ version: "22.0.0-next.1",
976
+ ngImport: i0,
977
+ type: MatMenuTriggerBase,
978
+ decorators: [{
979
+ type: Directive
980
+ }],
981
+ ctorParameters: () => [{
982
+ type: undefined
983
+ }]
984
+ });
985
+
986
+ class MatMenuTrigger extends MatMenuTriggerBase {
987
+ _cleanupTouchstart;
988
+ _hoverSubscription = Subscription.EMPTY;
989
+ get _deprecatedMatMenuTriggerFor() {
990
+ return this.menu;
991
+ }
992
+ set _deprecatedMatMenuTriggerFor(v) {
993
+ this.menu = v;
994
+ }
995
+ get menu() {
996
+ return this._menu;
997
+ }
998
+ set menu(menu) {
999
+ this._menu = menu;
1000
+ }
1001
+ menuData;
1002
+ restoreFocus = true;
1003
+ menuOpened = new EventEmitter();
1004
+ onMenuOpen = this.menuOpened;
1005
+ menuClosed = new EventEmitter();
1006
+ onMenuClose = this.menuClosed;
1007
+ constructor() {
1008
+ super(true);
1009
+ const renderer = inject(Renderer2);
1010
+ this._cleanupTouchstart = renderer.listen(this._element.nativeElement, 'touchstart', event => {
1011
+ if (!isFakeTouchstartFromScreenReader(event)) {
1012
+ this._openedBy = 'touch';
1013
+ }
1014
+ }, {
1015
+ passive: true
1016
+ });
1017
+ }
1018
+ triggersSubmenu() {
1019
+ return super._triggersSubmenu();
1020
+ }
1021
+ toggleMenu() {
1022
+ return this.menuOpen ? this.closeMenu() : this.openMenu();
1023
+ }
1024
+ openMenu() {
1025
+ this._openMenu(true);
1026
+ }
1027
+ closeMenu() {
1028
+ this._closeMenu();
1029
+ }
1030
+ updatePosition() {
1031
+ this._overlayRef?.updatePosition();
1032
+ }
1033
+ ngAfterContentInit() {
1034
+ this._handleHover();
1035
+ }
1036
+ ngOnDestroy() {
1037
+ super.ngOnDestroy();
1038
+ this._cleanupTouchstart();
1039
+ this._hoverSubscription.unsubscribe();
1040
+ }
1041
+ _getOverlayOrigin() {
1042
+ return this._element;
1043
+ }
1044
+ _getOutsideClickStream(overlayRef) {
1045
+ return overlayRef.backdropClick();
1046
+ }
1047
+ _handleMousedown(event) {
1048
+ if (!isFakeMousedownFromScreenReader(event)) {
1049
+ this._openedBy = event.button === 0 ? 'mouse' : undefined;
1050
+ if (this.triggersSubmenu()) {
1051
+ event.preventDefault();
1052
+ }
1053
+ }
1054
+ }
1055
+ _handleKeydown(event) {
1056
+ const keyCode = event.keyCode;
1057
+ if (keyCode === ENTER || keyCode === SPACE) {
1058
+ this._openedBy = 'keyboard';
1059
+ }
1060
+ if (this.triggersSubmenu() && (keyCode === RIGHT_ARROW && this.dir === 'ltr' || keyCode === LEFT_ARROW && this.dir === 'rtl')) {
1061
+ this._openedBy = 'keyboard';
1062
+ this.openMenu();
1063
+ }
1064
+ }
1065
+ _handleClick(event) {
1066
+ if (this.triggersSubmenu()) {
1067
+ event.stopPropagation();
1068
+ this.openMenu();
1069
+ } else {
1070
+ this.toggleMenu();
1071
+ }
1072
+ }
1073
+ _handleHover() {
1074
+ if (this.triggersSubmenu() && this._parentMaterialMenu) {
1075
+ this._hoverSubscription = this._parentMaterialMenu._hovered().subscribe(active => {
1076
+ if (active === this._menuItemInstance && !active.disabled && this._parentMaterialMenu?._panelAnimationState !== 'void') {
1077
+ this._openedBy = 'mouse';
1078
+ this._openMenu(false);
1079
+ }
1080
+ });
1081
+ }
1082
+ }
1083
+ static ɵfac = i0.ɵɵngDeclareFactory({
1084
+ minVersion: "12.0.0",
1085
+ version: "22.0.0-next.1",
1086
+ ngImport: i0,
1087
+ type: MatMenuTrigger,
1088
+ deps: [],
1089
+ target: i0.ɵɵFactoryTarget.Directive
1090
+ });
1091
+ static ɵdir = i0.ɵɵngDeclareDirective({
1092
+ minVersion: "14.0.0",
1093
+ version: "22.0.0-next.1",
1094
+ type: MatMenuTrigger,
1095
+ isStandalone: true,
1096
+ selector: "[mat-menu-trigger-for], [matMenuTriggerFor]",
1097
+ inputs: {
1098
+ _deprecatedMatMenuTriggerFor: ["mat-menu-trigger-for", "_deprecatedMatMenuTriggerFor"],
1099
+ menu: ["matMenuTriggerFor", "menu"],
1100
+ menuData: ["matMenuTriggerData", "menuData"],
1101
+ restoreFocus: ["matMenuTriggerRestoreFocus", "restoreFocus"]
1102
+ },
1103
+ outputs: {
1104
+ menuOpened: "menuOpened",
1105
+ onMenuOpen: "onMenuOpen",
1106
+ menuClosed: "menuClosed",
1107
+ onMenuClose: "onMenuClose"
1108
+ },
1109
+ host: {
1110
+ listeners: {
1111
+ "click": "_handleClick($event)",
1112
+ "mousedown": "_handleMousedown($event)",
1113
+ "keydown": "_handleKeydown($event)"
1114
+ },
1115
+ properties: {
1116
+ "attr.aria-haspopup": "menu ? \"menu\" : null",
1117
+ "attr.aria-expanded": "menuOpen",
1118
+ "attr.aria-controls": "menuOpen ? menu?.panelId : null"
1119
+ },
1120
+ classAttribute: "mat-mdc-menu-trigger"
1121
+ },
1122
+ exportAs: ["matMenuTrigger"],
1123
+ usesInheritance: true,
1124
+ ngImport: i0
1125
+ });
1126
+ }
1127
+ i0.ɵɵngDeclareClassMetadata({
1128
+ minVersion: "12.0.0",
1129
+ version: "22.0.0-next.1",
1130
+ ngImport: i0,
1131
+ type: MatMenuTrigger,
1132
+ decorators: [{
1133
+ type: Directive,
1134
+ args: [{
1135
+ selector: '[mat-menu-trigger-for], [matMenuTriggerFor]',
1136
+ host: {
1137
+ 'class': 'mat-mdc-menu-trigger',
1138
+ '[attr.aria-haspopup]': 'menu ? "menu" : null',
1139
+ '[attr.aria-expanded]': 'menuOpen',
1140
+ '[attr.aria-controls]': 'menuOpen ? menu?.panelId : null',
1141
+ '(click)': '_handleClick($event)',
1142
+ '(mousedown)': '_handleMousedown($event)',
1143
+ '(keydown)': '_handleKeydown($event)'
1144
+ },
1145
+ exportAs: 'matMenuTrigger'
1146
+ }]
1147
+ }],
1148
+ ctorParameters: () => [],
1149
+ propDecorators: {
1150
+ _deprecatedMatMenuTriggerFor: [{
1151
+ type: Input,
1152
+ args: ['mat-menu-trigger-for']
1153
+ }],
1154
+ menu: [{
1155
+ type: Input,
1156
+ args: ['matMenuTriggerFor']
1157
+ }],
1158
+ menuData: [{
1159
+ type: Input,
1160
+ args: ['matMenuTriggerData']
1161
+ }],
1162
+ restoreFocus: [{
1163
+ type: Input,
1164
+ args: ['matMenuTriggerRestoreFocus']
1165
+ }],
1166
+ menuOpened: [{
1167
+ type: Output
1168
+ }],
1169
+ onMenuOpen: [{
1170
+ type: Output
1171
+ }],
1172
+ menuClosed: [{
1173
+ type: Output
1174
+ }],
1175
+ onMenuClose: [{
1176
+ type: Output
1177
+ }]
1178
+ }
1179
+ });
1180
+
1181
+ class MatContextMenuTrigger extends MatMenuTriggerBase {
1182
+ _point = {
1183
+ x: 0,
1184
+ y: 0,
1185
+ initialX: 0,
1186
+ initialY: 0,
1187
+ initialScrollX: 0,
1188
+ initialScrollY: 0
1189
+ };
1190
+ _triggerPressedControl = false;
1191
+ _rootNode;
1192
+ _document = inject(DOCUMENT);
1193
+ _viewportRuler = inject(ViewportRuler);
1194
+ _scrollDispatcher = inject(ScrollDispatcher);
1195
+ _scrollSubscription;
1196
+ get menu() {
1197
+ return this._menu;
1198
+ }
1199
+ set menu(menu) {
1200
+ this._menu = menu;
1201
+ }
1202
+ menuData;
1203
+ restoreFocus = true;
1204
+ disabled = false;
1205
+ menuOpened = new EventEmitter();
1206
+ menuClosed = new EventEmitter();
1207
+ constructor() {
1208
+ super(false);
1209
+ }
1210
+ ngOnDestroy() {
1211
+ super.ngOnDestroy();
1212
+ this._scrollSubscription?.unsubscribe();
1213
+ }
1214
+ _handleContextMenuEvent(event) {
1215
+ if (!this.disabled) {
1216
+ event.preventDefault();
1217
+ if (this.menuOpen) {
1218
+ this._initializePoint(event.clientX, event.clientY);
1219
+ this._updatePosition();
1220
+ } else {
1221
+ this._openContextMenu(event);
1222
+ }
1223
+ }
1224
+ }
1225
+ _destroyMenu(reason) {
1226
+ super._destroyMenu(reason);
1227
+ this._scrollSubscription?.unsubscribe();
1228
+ }
1229
+ _getOverlayOrigin() {
1230
+ return this._point;
1231
+ }
1232
+ _getOutsideClickStream(overlayRef) {
1233
+ return overlayRef.outsidePointerEvents().pipe(skipWhile((event, index) => {
1234
+ if (event.type === 'contextmenu') {
1235
+ return this._isWithinMenuOrTrigger(_getEventTarget(event));
1236
+ } else if (event.type === 'auxclick') {
1237
+ if (index === 0) {
1238
+ return true;
1239
+ }
1240
+ this._rootNode ??= _getShadowRoot(this._element.nativeElement) || this._document;
1241
+ return this._isWithinMenuOrTrigger(this._rootNode.elementFromPoint(event.clientX, event.clientY));
1242
+ }
1243
+ return this._triggerPressedControl && index === 0 && event.ctrlKey;
1244
+ }));
1245
+ }
1246
+ _isWithinMenuOrTrigger(target) {
1247
+ if (!target) {
1248
+ return false;
1249
+ }
1250
+ const element = this._element.nativeElement;
1251
+ if (target === element || element.contains(target)) {
1252
+ return true;
1253
+ }
1254
+ const overlay = this._overlayRef?.hostElement;
1255
+ return overlay === target || !!overlay?.contains(target);
1256
+ }
1257
+ _openContextMenu(event) {
1258
+ if (event.button === 2) {
1259
+ this._openedBy = 'mouse';
1260
+ } else {
1261
+ this._openedBy = event.button === 0 ? 'keyboard' : undefined;
1262
+ }
1263
+ this._initializePoint(event.clientX, event.clientY);
1264
+ this._triggerPressedControl = event.ctrlKey;
1265
+ super._openMenu(true);
1266
+ this._scrollSubscription?.unsubscribe();
1267
+ this._scrollSubscription = this._scrollDispatcher.scrolled(0).subscribe(() => {
1268
+ const position = this._viewportRuler.getViewportScrollPosition();
1269
+ const point = this._point;
1270
+ point.y = point.initialY + (point.initialScrollY - position.top);
1271
+ point.x = point.initialX + (point.initialScrollX - position.left);
1272
+ this._updatePosition();
1273
+ });
1274
+ }
1275
+ _initializePoint(x, y) {
1276
+ const scrollPosition = this._viewportRuler.getViewportScrollPosition();
1277
+ const point = this._point;
1278
+ point.x = point.initialX = x;
1279
+ point.y = point.initialY = y;
1280
+ point.initialScrollX = scrollPosition.left;
1281
+ point.initialScrollY = scrollPosition.top;
1282
+ }
1283
+ _updatePosition() {
1284
+ const overlayRef = this._overlayRef;
1285
+ if (overlayRef) {
1286
+ const positionStrategy = overlayRef.getConfig().positionStrategy;
1287
+ positionStrategy.setOrigin(this._point);
1288
+ overlayRef.updatePosition();
1289
+ }
1290
+ }
1291
+ static ɵfac = i0.ɵɵngDeclareFactory({
1292
+ minVersion: "12.0.0",
1293
+ version: "22.0.0-next.1",
1294
+ ngImport: i0,
1295
+ type: MatContextMenuTrigger,
1296
+ deps: [],
1297
+ target: i0.ɵɵFactoryTarget.Directive
1298
+ });
1299
+ static ɵdir = i0.ɵɵngDeclareDirective({
1300
+ minVersion: "16.1.0",
1301
+ version: "22.0.0-next.1",
1302
+ type: MatContextMenuTrigger,
1303
+ isStandalone: true,
1304
+ selector: "[matContextMenuTriggerFor]",
1305
+ inputs: {
1306
+ menu: ["matContextMenuTriggerFor", "menu"],
1307
+ menuData: ["matContextMenuTriggerData", "menuData"],
1308
+ restoreFocus: ["matContextMenuTriggerRestoreFocus", "restoreFocus"],
1309
+ disabled: ["matContextMenuTriggerDisabled", "disabled", booleanAttribute]
1310
+ },
1311
+ outputs: {
1312
+ menuOpened: "menuOpened",
1313
+ menuClosed: "menuClosed"
1314
+ },
1315
+ host: {
1316
+ listeners: {
1317
+ "contextmenu": "_handleContextMenuEvent($event)"
1318
+ },
1319
+ properties: {
1320
+ "class.mat-context-menu-trigger-disabled": "disabled",
1321
+ "attr.aria-controls": "menuOpen ? menu?.panelId : null"
1322
+ },
1323
+ classAttribute: "mat-context-menu-trigger"
1324
+ },
1325
+ exportAs: ["matContextMenuTrigger"],
1326
+ usesInheritance: true,
1327
+ ngImport: i0
1328
+ });
1329
+ }
1330
+ i0.ɵɵngDeclareClassMetadata({
1331
+ minVersion: "12.0.0",
1332
+ version: "22.0.0-next.1",
1333
+ ngImport: i0,
1334
+ type: MatContextMenuTrigger,
1335
+ decorators: [{
1336
+ type: Directive,
1337
+ args: [{
1338
+ selector: '[matContextMenuTriggerFor]',
1339
+ host: {
1340
+ 'class': 'mat-context-menu-trigger',
1341
+ '[class.mat-context-menu-trigger-disabled]': 'disabled',
1342
+ '[attr.aria-controls]': 'menuOpen ? menu?.panelId : null',
1343
+ '(contextmenu)': '_handleContextMenuEvent($event)'
1344
+ },
1345
+ exportAs: 'matContextMenuTrigger'
1346
+ }]
1347
+ }],
1348
+ ctorParameters: () => [],
1349
+ propDecorators: {
1350
+ menu: [{
1351
+ type: Input,
1352
+ args: [{
1353
+ alias: 'matContextMenuTriggerFor',
1354
+ required: true
1355
+ }]
1356
+ }],
1357
+ menuData: [{
1358
+ type: Input,
1359
+ args: ['matContextMenuTriggerData']
1360
+ }],
1361
+ restoreFocus: [{
1362
+ type: Input,
1363
+ args: ['matContextMenuTriggerRestoreFocus']
1364
+ }],
1365
+ disabled: [{
1366
+ type: Input,
1367
+ args: [{
1368
+ alias: 'matContextMenuTriggerDisabled',
1369
+ transform: booleanAttribute
1370
+ }]
1371
+ }],
1372
+ menuOpened: [{
1373
+ type: Output
1374
+ }],
1375
+ menuClosed: [{
1376
+ type: Output
1377
+ }]
1378
+ }
1379
+ });
1380
+
1381
+ class MatMenuModule {
1382
+ static ɵfac = i0.ɵɵngDeclareFactory({
1383
+ minVersion: "12.0.0",
1384
+ version: "22.0.0-next.1",
1385
+ ngImport: i0,
1386
+ type: MatMenuModule,
1387
+ deps: [],
1388
+ target: i0.ɵɵFactoryTarget.NgModule
1389
+ });
1390
+ static ɵmod = i0.ɵɵngDeclareNgModule({
1391
+ minVersion: "14.0.0",
1392
+ version: "22.0.0-next.1",
1393
+ ngImport: i0,
1394
+ type: MatMenuModule,
1395
+ imports: [MatRippleModule, OverlayModule, MatMenu, MatMenuItem, MatMenuContent, MatMenuTrigger, MatContextMenuTrigger],
1396
+ exports: [BidiModule, CdkScrollableModule, MatMenu, MatMenuItem, MatMenuContent, MatMenuTrigger, MatContextMenuTrigger]
1397
+ });
1398
+ static ɵinj = i0.ɵɵngDeclareInjector({
1399
+ minVersion: "12.0.0",
1400
+ version: "22.0.0-next.1",
1401
+ ngImport: i0,
1402
+ type: MatMenuModule,
1403
+ imports: [MatRippleModule, OverlayModule, BidiModule, CdkScrollableModule]
1404
+ });
1405
+ }
1406
+ i0.ɵɵngDeclareClassMetadata({
1407
+ minVersion: "12.0.0",
1408
+ version: "22.0.0-next.1",
1409
+ ngImport: i0,
1410
+ type: MatMenuModule,
1411
+ decorators: [{
1412
+ type: NgModule,
1413
+ args: [{
1414
+ imports: [MatRippleModule, OverlayModule, MatMenu, MatMenuItem, MatMenuContent, MatMenuTrigger, MatContextMenuTrigger],
1415
+ exports: [BidiModule, CdkScrollableModule, MatMenu, MatMenuItem, MatMenuContent, MatMenuTrigger, MatContextMenuTrigger]
1416
+ }]
1417
+ }]
1418
+ });
1419
+
1420
+ export { MAT_MENU_CONTENT, MAT_MENU_DEFAULT_OPTIONS, MAT_MENU_PANEL, MAT_MENU_SCROLL_STRATEGY, MENU_PANEL_TOP_PADDING, MatContextMenuTrigger, MatMenu, MatMenuContent, MatMenuItem, MatMenuModule, MatMenuTrigger };
1421
+ //# sourceMappingURL=menu.mjs.map