@angular/material 14.0.0-next.4 → 14.0.0-next.7

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 (472) hide show
  1. package/autocomplete/autocomplete-trigger.d.ts +14 -3
  2. package/autocomplete/autocomplete.d.ts +7 -1
  3. package/badge/_badge-theme.scss +8 -0
  4. package/button-toggle/_button-toggle-theme.scss +10 -0
  5. package/checkbox/_checkbox-theme.scss +1 -1
  6. package/chips/chip-list.d.ts +3 -1
  7. package/chips/chip.d.ts +3 -1
  8. package/core/theming/_theming.scss +9 -0
  9. package/datepicker/calendar-body.d.ts +22 -1
  10. package/dialog/dialog-animations.d.ts +10 -0
  11. package/dialog/dialog-config.d.ts +6 -0
  12. package/dialog/dialog-container.d.ts +8 -4
  13. package/dialog/dialog.d.ts +12 -6
  14. package/dialog/public-api.d.ts +1 -1
  15. package/dialog/testing/dialog-opener.d.ts +33 -0
  16. package/dialog/testing/public-api.d.ts +1 -0
  17. package/esm2020/autocomplete/autocomplete-module.mjs +5 -5
  18. package/esm2020/autocomplete/autocomplete-origin.mjs +7 -7
  19. package/esm2020/autocomplete/autocomplete-trigger.mjs +66 -37
  20. package/esm2020/autocomplete/autocomplete.mjs +18 -8
  21. package/esm2020/autocomplete/testing/autocomplete-harness.mjs +7 -1
  22. package/esm2020/badge/badge-module.mjs +5 -5
  23. package/esm2020/badge/badge.mjs +4 -4
  24. package/esm2020/bottom-sheet/bottom-sheet-animations.mjs +10 -4
  25. package/esm2020/bottom-sheet/bottom-sheet-container.mjs +4 -4
  26. package/esm2020/bottom-sheet/bottom-sheet-module.mjs +5 -5
  27. package/esm2020/bottom-sheet/bottom-sheet.mjs +4 -4
  28. package/esm2020/button/button-module.mjs +5 -5
  29. package/esm2020/button/button.mjs +8 -8
  30. package/esm2020/button-toggle/button-toggle-module.mjs +5 -5
  31. package/esm2020/button-toggle/button-toggle.mjs +7 -7
  32. package/esm2020/card/card-module.mjs +5 -5
  33. package/esm2020/card/card.mjs +44 -44
  34. package/esm2020/checkbox/checkbox-module.mjs +9 -9
  35. package/esm2020/checkbox/checkbox-required-validator.mjs +4 -4
  36. package/esm2020/checkbox/checkbox.mjs +4 -4
  37. package/esm2020/chips/chip-input.mjs +4 -4
  38. package/esm2020/chips/chip-list.mjs +13 -5
  39. package/esm2020/chips/chip.mjs +18 -14
  40. package/esm2020/chips/chips-module.mjs +5 -5
  41. package/esm2020/core/common-behaviors/common-module.mjs +5 -5
  42. package/esm2020/core/datetime/index.mjs +9 -9
  43. package/esm2020/core/datetime/native-date-adapter.mjs +4 -4
  44. package/esm2020/core/error/error-options.mjs +7 -7
  45. package/esm2020/core/line/line.mjs +8 -8
  46. package/esm2020/core/option/index.mjs +5 -5
  47. package/esm2020/core/option/optgroup.mjs +7 -7
  48. package/esm2020/core/option/option.mjs +7 -7
  49. package/esm2020/core/ripple/index.mjs +5 -5
  50. package/esm2020/core/ripple/ripple-renderer.mjs +17 -11
  51. package/esm2020/core/ripple/ripple.mjs +4 -4
  52. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox-module.mjs +5 -5
  53. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +4 -4
  54. package/esm2020/core/version.mjs +1 -1
  55. package/esm2020/datepicker/calendar-body.mjs +34 -11
  56. package/esm2020/datepicker/calendar.mjs +13 -13
  57. package/esm2020/datepicker/date-range-input-parts.mjs +10 -10
  58. package/esm2020/datepicker/date-range-input.mjs +4 -4
  59. package/esm2020/datepicker/date-range-picker.mjs +4 -4
  60. package/esm2020/datepicker/date-range-selection-strategy.mjs +4 -4
  61. package/esm2020/datepicker/date-selection-model.mjs +10 -10
  62. package/esm2020/datepicker/datepicker-actions.mjs +10 -10
  63. package/esm2020/datepicker/datepicker-base.mjs +7 -7
  64. package/esm2020/datepicker/datepicker-input-base.mjs +12 -7
  65. package/esm2020/datepicker/datepicker-input.mjs +4 -4
  66. package/esm2020/datepicker/datepicker-intl.mjs +4 -4
  67. package/esm2020/datepicker/datepicker-module.mjs +5 -5
  68. package/esm2020/datepicker/datepicker-toggle.mjs +7 -7
  69. package/esm2020/datepicker/datepicker.mjs +4 -4
  70. package/esm2020/datepicker/month-view.mjs +5 -5
  71. package/esm2020/datepicker/multi-year-view.mjs +4 -4
  72. package/esm2020/datepicker/year-view.mjs +4 -4
  73. package/esm2020/dialog/dialog-animations.mjs +17 -4
  74. package/esm2020/dialog/dialog-config.mjs +8 -1
  75. package/esm2020/dialog/dialog-container.mjs +31 -22
  76. package/esm2020/dialog/dialog-content-directives.mjs +17 -13
  77. package/esm2020/dialog/dialog-module.mjs +5 -5
  78. package/esm2020/dialog/dialog.mjs +23 -39
  79. package/esm2020/dialog/public-api.mjs +2 -2
  80. package/esm2020/dialog/testing/dialog-opener.mjs +67 -0
  81. package/esm2020/dialog/testing/public-api.mjs +2 -1
  82. package/esm2020/divider/divider-module.mjs +5 -5
  83. package/esm2020/divider/divider.mjs +4 -4
  84. package/esm2020/expansion/accordion.mjs +4 -4
  85. package/esm2020/expansion/expansion-module.mjs +5 -5
  86. package/esm2020/expansion/expansion-panel-base.mjs +14 -0
  87. package/esm2020/expansion/expansion-panel-content.mjs +14 -7
  88. package/esm2020/expansion/expansion-panel-header.mjs +10 -10
  89. package/esm2020/expansion/expansion-panel.mjs +13 -10
  90. package/esm2020/expansion/public-api.mjs +2 -1
  91. package/esm2020/form-field/error.mjs +4 -4
  92. package/esm2020/form-field/form-field-control.mjs +4 -4
  93. package/esm2020/form-field/form-field-module.mjs +5 -5
  94. package/esm2020/form-field/form-field.mjs +4 -4
  95. package/esm2020/form-field/hint.mjs +4 -4
  96. package/esm2020/form-field/label.mjs +4 -4
  97. package/esm2020/form-field/placeholder.mjs +4 -4
  98. package/esm2020/form-field/prefix.mjs +4 -4
  99. package/esm2020/form-field/suffix.mjs +4 -4
  100. package/esm2020/grid-list/grid-list-module.mjs +5 -5
  101. package/esm2020/grid-list/grid-list.mjs +4 -4
  102. package/esm2020/grid-list/grid-tile.mjs +16 -16
  103. package/esm2020/icon/icon-module.mjs +5 -5
  104. package/esm2020/icon/icon-registry.mjs +12 -14
  105. package/esm2020/icon/icon.mjs +31 -21
  106. package/esm2020/icon/testing/fake-icon-registry.mjs +9 -9
  107. package/esm2020/input/input-module.mjs +5 -5
  108. package/esm2020/input/input.mjs +4 -4
  109. package/esm2020/list/list-module.mjs +5 -5
  110. package/esm2020/list/list.mjs +19 -21
  111. package/esm2020/list/selection-list.mjs +13 -36
  112. package/esm2020/list/testing/list-item-harness-base.mjs +1 -9
  113. package/esm2020/menu/menu-content.mjs +7 -7
  114. package/esm2020/menu/menu-errors.mjs +1 -12
  115. package/esm2020/menu/menu-item.mjs +8 -4
  116. package/esm2020/menu/menu-module.mjs +5 -5
  117. package/esm2020/menu/menu-trigger.mjs +62 -64
  118. package/esm2020/menu/menu.mjs +24 -8
  119. package/esm2020/paginator/paginator-intl.mjs +4 -4
  120. package/esm2020/paginator/paginator-module.mjs +5 -5
  121. package/esm2020/paginator/paginator.mjs +12 -8
  122. package/esm2020/progress-bar/progress-bar-module.mjs +5 -5
  123. package/esm2020/progress-bar/progress-bar.mjs +4 -4
  124. package/esm2020/progress-spinner/progress-spinner-module.mjs +8 -8
  125. package/esm2020/progress-spinner/progress-spinner.mjs +10 -50
  126. package/esm2020/progress-spinner/public-api.mjs +10 -2
  127. package/esm2020/radio/radio-module.mjs +5 -5
  128. package/esm2020/radio/radio.mjs +13 -13
  129. package/esm2020/select/select-module.mjs +5 -5
  130. package/esm2020/select/select.mjs +21 -11
  131. package/esm2020/sidenav/drawer.mjs +10 -10
  132. package/esm2020/sidenav/sidenav-module.mjs +5 -5
  133. package/esm2020/sidenav/sidenav.mjs +10 -10
  134. package/esm2020/slide-toggle/slide-toggle-module.mjs +9 -9
  135. package/esm2020/slide-toggle/slide-toggle-required-validator.mjs +4 -4
  136. package/esm2020/slide-toggle/slide-toggle.mjs +5 -4
  137. package/esm2020/slider/slider-module.mjs +5 -5
  138. package/esm2020/slider/slider.mjs +4 -4
  139. package/esm2020/snack-bar/simple-snack-bar.mjs +4 -4
  140. package/esm2020/snack-bar/snack-bar-container.mjs +4 -4
  141. package/esm2020/snack-bar/snack-bar-module.mjs +5 -5
  142. package/esm2020/snack-bar/snack-bar.mjs +7 -7
  143. package/esm2020/sort/sort-header-intl.mjs +4 -4
  144. package/esm2020/sort/sort-header.mjs +6 -6
  145. package/esm2020/sort/sort-module.mjs +5 -5
  146. package/esm2020/sort/sort.mjs +4 -4
  147. package/esm2020/stepper/public-api.mjs +2 -2
  148. package/esm2020/stepper/step-content.mjs +4 -4
  149. package/esm2020/stepper/step-header.mjs +4 -4
  150. package/esm2020/stepper/step-label.mjs +4 -4
  151. package/esm2020/stepper/stepper-animations.mjs +9 -3
  152. package/esm2020/stepper/stepper-button.mjs +7 -7
  153. package/esm2020/stepper/stepper-icon.mjs +4 -4
  154. package/esm2020/stepper/stepper-intl.mjs +4 -4
  155. package/esm2020/stepper/stepper-module.mjs +5 -5
  156. package/esm2020/stepper/stepper.mjs +35 -9
  157. package/esm2020/table/cell.mjs +22 -22
  158. package/esm2020/table/row.mjs +22 -22
  159. package/esm2020/table/table-module.mjs +5 -5
  160. package/esm2020/table/table.mjs +7 -7
  161. package/esm2020/table/text-column.mjs +4 -4
  162. package/esm2020/tabs/ink-bar.mjs +11 -22
  163. package/esm2020/tabs/paginated-tab-header.mjs +8 -6
  164. package/esm2020/tabs/tab-body.mjs +10 -10
  165. package/esm2020/tabs/tab-content.mjs +4 -4
  166. package/esm2020/tabs/tab-group.mjs +7 -7
  167. package/esm2020/tabs/tab-header.mjs +7 -7
  168. package/esm2020/tabs/tab-label-wrapper.mjs +4 -4
  169. package/esm2020/tabs/tab-label.mjs +4 -4
  170. package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +17 -17
  171. package/esm2020/tabs/tab.mjs +4 -4
  172. package/esm2020/tabs/tabs-module.mjs +5 -5
  173. package/esm2020/toolbar/toolbar-module.mjs +5 -5
  174. package/esm2020/toolbar/toolbar.mjs +7 -7
  175. package/esm2020/tooltip/testing/tooltip-harness.mjs +12 -7
  176. package/esm2020/tooltip/tooltip-module.mjs +5 -5
  177. package/esm2020/tooltip/tooltip.mjs +126 -51
  178. package/esm2020/tree/node.mjs +10 -10
  179. package/esm2020/tree/outlet.mjs +4 -4
  180. package/esm2020/tree/padding.mjs +4 -4
  181. package/esm2020/tree/toggle.mjs +4 -4
  182. package/esm2020/tree/tree-module.mjs +5 -5
  183. package/esm2020/tree/tree.mjs +4 -4
  184. package/expansion/expansion-panel-base.d.ts +22 -0
  185. package/expansion/expansion-panel-content.d.ts +4 -2
  186. package/expansion/public-api.d.ts +1 -0
  187. package/fesm2015/autocomplete/testing.mjs +6 -0
  188. package/fesm2015/autocomplete/testing.mjs.map +1 -1
  189. package/fesm2015/autocomplete.mjs +94 -54
  190. package/fesm2015/autocomplete.mjs.map +1 -1
  191. package/fesm2015/badge/testing.mjs.map +1 -1
  192. package/fesm2015/badge.mjs +7 -7
  193. package/fesm2015/badge.mjs.map +1 -1
  194. package/fesm2015/bottom-sheet/testing.mjs.map +1 -1
  195. package/fesm2015/bottom-sheet.mjs +19 -13
  196. package/fesm2015/bottom-sheet.mjs.map +1 -1
  197. package/fesm2015/button/testing.mjs.map +1 -1
  198. package/fesm2015/button-toggle/testing.mjs.map +1 -1
  199. package/fesm2015/button-toggle.mjs +10 -10
  200. package/fesm2015/button-toggle.mjs.map +1 -1
  201. package/fesm2015/button.mjs +11 -11
  202. package/fesm2015/button.mjs.map +1 -1
  203. package/fesm2015/card/testing.mjs.map +1 -1
  204. package/fesm2015/card.mjs +47 -47
  205. package/fesm2015/card.mjs.map +1 -1
  206. package/fesm2015/checkbox/testing.mjs.map +1 -1
  207. package/fesm2015/checkbox.mjs +14 -14
  208. package/fesm2015/checkbox.mjs.map +1 -1
  209. package/fesm2015/chips/testing.mjs.map +1 -1
  210. package/fesm2015/chips.mjs +36 -24
  211. package/fesm2015/chips.mjs.map +1 -1
  212. package/fesm2015/core/testing.mjs.map +1 -1
  213. package/fesm2015/core.mjs +75 -69
  214. package/fesm2015/core.mjs.map +1 -1
  215. package/fesm2015/datepicker/testing.mjs.map +1 -1
  216. package/fesm2015/datepicker.mjs +125 -97
  217. package/fesm2015/datepicker.mjs.map +1 -1
  218. package/fesm2015/dialog/testing.mjs +65 -2
  219. package/fesm2015/dialog/testing.mjs.map +1 -1
  220. package/fesm2015/dialog.mjs +115 -99
  221. package/fesm2015/dialog.mjs.map +1 -1
  222. package/fesm2015/divider/testing.mjs.map +1 -1
  223. package/fesm2015/divider.mjs +7 -7
  224. package/fesm2015/divider.mjs.map +1 -1
  225. package/fesm2015/expansion/testing.mjs.map +1 -1
  226. package/fesm2015/expansion.mjs +55 -32
  227. package/fesm2015/expansion.mjs.map +1 -1
  228. package/fesm2015/form-field/testing/control.mjs.map +1 -1
  229. package/fesm2015/form-field/testing.mjs.map +1 -1
  230. package/fesm2015/form-field.mjs +28 -28
  231. package/fesm2015/form-field.mjs.map +1 -1
  232. package/fesm2015/grid-list/testing.mjs.map +1 -1
  233. package/fesm2015/grid-list.mjs +22 -22
  234. package/fesm2015/grid-list.mjs.map +1 -1
  235. package/fesm2015/icon/testing.mjs +8 -8
  236. package/fesm2015/icon/testing.mjs.map +1 -1
  237. package/fesm2015/icon.mjs +45 -37
  238. package/fesm2015/icon.mjs.map +1 -1
  239. package/fesm2015/input/testing.mjs.map +1 -1
  240. package/fesm2015/input.mjs +7 -7
  241. package/fesm2015/input.mjs.map +1 -1
  242. package/fesm2015/list/testing.mjs +0 -10
  243. package/fesm2015/list/testing.mjs.map +1 -1
  244. package/fesm2015/list.mjs +37 -63
  245. package/fesm2015/list.mjs.map +1 -1
  246. package/fesm2015/material.mjs.map +1 -1
  247. package/fesm2015/menu/testing.mjs.map +1 -1
  248. package/fesm2015/menu.mjs +103 -93
  249. package/fesm2015/menu.mjs.map +1 -1
  250. package/fesm2015/paginator/testing.mjs.map +1 -1
  251. package/fesm2015/paginator.mjs +18 -14
  252. package/fesm2015/paginator.mjs.map +1 -1
  253. package/fesm2015/progress-bar/testing.mjs.map +1 -1
  254. package/fesm2015/progress-bar.mjs +7 -7
  255. package/fesm2015/progress-bar.mjs.map +1 -1
  256. package/fesm2015/progress-spinner/testing.mjs.map +1 -1
  257. package/fesm2015/progress-spinner.mjs +27 -62
  258. package/fesm2015/progress-spinner.mjs.map +1 -1
  259. package/fesm2015/radio/testing.mjs.map +1 -1
  260. package/fesm2015/radio.mjs +16 -16
  261. package/fesm2015/radio.mjs.map +1 -1
  262. package/fesm2015/select/testing.mjs.map +1 -1
  263. package/fesm2015/select.mjs +24 -14
  264. package/fesm2015/select.mjs.map +1 -1
  265. package/fesm2015/sidenav/testing.mjs.map +1 -1
  266. package/fesm2015/sidenav.mjs +22 -22
  267. package/fesm2015/sidenav.mjs.map +1 -1
  268. package/fesm2015/slide-toggle/testing.mjs.map +1 -1
  269. package/fesm2015/slide-toggle.mjs +15 -14
  270. package/fesm2015/slide-toggle.mjs.map +1 -1
  271. package/fesm2015/slider/testing.mjs.map +1 -1
  272. package/fesm2015/slider.mjs +7 -7
  273. package/fesm2015/slider.mjs.map +1 -1
  274. package/fesm2015/snack-bar/testing.mjs.map +1 -1
  275. package/fesm2015/snack-bar.mjs +16 -16
  276. package/fesm2015/snack-bar.mjs.map +1 -1
  277. package/fesm2015/sort/testing.mjs.map +1 -1
  278. package/fesm2015/sort.mjs +15 -15
  279. package/fesm2015/sort.mjs.map +1 -1
  280. package/fesm2015/stepper/testing.mjs.map +1 -1
  281. package/fesm2015/stepper.mjs +66 -34
  282. package/fesm2015/stepper.mjs.map +1 -1
  283. package/fesm2015/table/testing.mjs.map +1 -1
  284. package/fesm2015/table.mjs +55 -55
  285. package/fesm2015/table.mjs.map +1 -1
  286. package/fesm2015/tabs/testing.mjs.map +1 -1
  287. package/fesm2015/tabs.mjs +69 -79
  288. package/fesm2015/tabs.mjs.map +1 -1
  289. package/fesm2015/toolbar/testing.mjs.map +1 -1
  290. package/fesm2015/toolbar.mjs +10 -10
  291. package/fesm2015/toolbar.mjs.map +1 -1
  292. package/fesm2015/tooltip/testing.mjs +11 -8
  293. package/fesm2015/tooltip/testing.mjs.map +1 -1
  294. package/fesm2015/tooltip.mjs +154 -79
  295. package/fesm2015/tooltip.mjs.map +1 -1
  296. package/fesm2015/tree/testing.mjs.map +1 -1
  297. package/fesm2015/tree.mjs +25 -25
  298. package/fesm2015/tree.mjs.map +1 -1
  299. package/fesm2020/autocomplete/testing.mjs +6 -0
  300. package/fesm2020/autocomplete/testing.mjs.map +1 -1
  301. package/fesm2020/autocomplete.mjs +93 -54
  302. package/fesm2020/autocomplete.mjs.map +1 -1
  303. package/fesm2020/badge/testing.mjs.map +1 -1
  304. package/fesm2020/badge.mjs +7 -7
  305. package/fesm2020/badge.mjs.map +1 -1
  306. package/fesm2020/bottom-sheet/testing.mjs.map +1 -1
  307. package/fesm2020/bottom-sheet.mjs +19 -13
  308. package/fesm2020/bottom-sheet.mjs.map +1 -1
  309. package/fesm2020/button/testing.mjs.map +1 -1
  310. package/fesm2020/button-toggle/testing.mjs.map +1 -1
  311. package/fesm2020/button-toggle.mjs +10 -10
  312. package/fesm2020/button-toggle.mjs.map +1 -1
  313. package/fesm2020/button.mjs +11 -11
  314. package/fesm2020/button.mjs.map +1 -1
  315. package/fesm2020/card/testing.mjs.map +1 -1
  316. package/fesm2020/card.mjs +47 -47
  317. package/fesm2020/card.mjs.map +1 -1
  318. package/fesm2020/checkbox/testing.mjs.map +1 -1
  319. package/fesm2020/checkbox.mjs +14 -14
  320. package/fesm2020/checkbox.mjs.map +1 -1
  321. package/fesm2020/chips/testing.mjs.map +1 -1
  322. package/fesm2020/chips.mjs +36 -24
  323. package/fesm2020/chips.mjs.map +1 -1
  324. package/fesm2020/core/testing.mjs.map +1 -1
  325. package/fesm2020/core.mjs +75 -69
  326. package/fesm2020/core.mjs.map +1 -1
  327. package/fesm2020/datepicker/testing.mjs.map +1 -1
  328. package/fesm2020/datepicker.mjs +125 -97
  329. package/fesm2020/datepicker.mjs.map +1 -1
  330. package/fesm2020/dialog/testing.mjs +65 -1
  331. package/fesm2020/dialog/testing.mjs.map +1 -1
  332. package/fesm2020/dialog.mjs +115 -99
  333. package/fesm2020/dialog.mjs.map +1 -1
  334. package/fesm2020/divider/testing.mjs.map +1 -1
  335. package/fesm2020/divider.mjs +7 -7
  336. package/fesm2020/divider.mjs.map +1 -1
  337. package/fesm2020/expansion/testing.mjs.map +1 -1
  338. package/fesm2020/expansion.mjs +53 -32
  339. package/fesm2020/expansion.mjs.map +1 -1
  340. package/fesm2020/form-field/testing/control.mjs.map +1 -1
  341. package/fesm2020/form-field/testing.mjs.map +1 -1
  342. package/fesm2020/form-field.mjs +28 -28
  343. package/fesm2020/form-field.mjs.map +1 -1
  344. package/fesm2020/grid-list/testing.mjs.map +1 -1
  345. package/fesm2020/grid-list.mjs +22 -22
  346. package/fesm2020/grid-list.mjs.map +1 -1
  347. package/fesm2020/icon/testing.mjs +8 -8
  348. package/fesm2020/icon/testing.mjs.map +1 -1
  349. package/fesm2020/icon.mjs +45 -37
  350. package/fesm2020/icon.mjs.map +1 -1
  351. package/fesm2020/input/testing.mjs.map +1 -1
  352. package/fesm2020/input.mjs +7 -7
  353. package/fesm2020/input.mjs.map +1 -1
  354. package/fesm2020/list/testing.mjs +0 -8
  355. package/fesm2020/list/testing.mjs.map +1 -1
  356. package/fesm2020/list.mjs +34 -59
  357. package/fesm2020/list.mjs.map +1 -1
  358. package/fesm2020/material.mjs.map +1 -1
  359. package/fesm2020/menu/testing.mjs.map +1 -1
  360. package/fesm2020/menu.mjs +100 -93
  361. package/fesm2020/menu.mjs.map +1 -1
  362. package/fesm2020/paginator/testing.mjs.map +1 -1
  363. package/fesm2020/paginator.mjs +18 -14
  364. package/fesm2020/paginator.mjs.map +1 -1
  365. package/fesm2020/progress-bar/testing.mjs.map +1 -1
  366. package/fesm2020/progress-bar.mjs +7 -7
  367. package/fesm2020/progress-bar.mjs.map +1 -1
  368. package/fesm2020/progress-spinner/testing.mjs.map +1 -1
  369. package/fesm2020/progress-spinner.mjs +27 -60
  370. package/fesm2020/progress-spinner.mjs.map +1 -1
  371. package/fesm2020/radio/testing.mjs.map +1 -1
  372. package/fesm2020/radio.mjs +16 -16
  373. package/fesm2020/radio.mjs.map +1 -1
  374. package/fesm2020/select/testing.mjs.map +1 -1
  375. package/fesm2020/select.mjs +24 -14
  376. package/fesm2020/select.mjs.map +1 -1
  377. package/fesm2020/sidenav/testing.mjs.map +1 -1
  378. package/fesm2020/sidenav.mjs +22 -22
  379. package/fesm2020/sidenav.mjs.map +1 -1
  380. package/fesm2020/slide-toggle/testing.mjs.map +1 -1
  381. package/fesm2020/slide-toggle.mjs +15 -14
  382. package/fesm2020/slide-toggle.mjs.map +1 -1
  383. package/fesm2020/slider/testing.mjs.map +1 -1
  384. package/fesm2020/slider.mjs +7 -7
  385. package/fesm2020/slider.mjs.map +1 -1
  386. package/fesm2020/snack-bar/testing.mjs.map +1 -1
  387. package/fesm2020/snack-bar.mjs +16 -16
  388. package/fesm2020/snack-bar.mjs.map +1 -1
  389. package/fesm2020/sort/testing.mjs.map +1 -1
  390. package/fesm2020/sort.mjs +15 -15
  391. package/fesm2020/sort.mjs.map +1 -1
  392. package/fesm2020/stepper/testing.mjs.map +1 -1
  393. package/fesm2020/stepper.mjs +66 -34
  394. package/fesm2020/stepper.mjs.map +1 -1
  395. package/fesm2020/table/testing.mjs.map +1 -1
  396. package/fesm2020/table.mjs +55 -55
  397. package/fesm2020/table.mjs.map +1 -1
  398. package/fesm2020/tabs/testing.mjs.map +1 -1
  399. package/fesm2020/tabs.mjs +69 -79
  400. package/fesm2020/tabs.mjs.map +1 -1
  401. package/fesm2020/toolbar/testing.mjs.map +1 -1
  402. package/fesm2020/toolbar.mjs +10 -10
  403. package/fesm2020/toolbar.mjs.map +1 -1
  404. package/fesm2020/tooltip/testing.mjs +11 -6
  405. package/fesm2020/tooltip/testing.mjs.map +1 -1
  406. package/fesm2020/tooltip.mjs +147 -71
  407. package/fesm2020/tooltip.mjs.map +1 -1
  408. package/fesm2020/tree/testing.mjs.map +1 -1
  409. package/fesm2020/tree.mjs +25 -25
  410. package/fesm2020/tree.mjs.map +1 -1
  411. package/icon/icon-registry.d.ts +7 -9
  412. package/icon/icon.d.ts +12 -3
  413. package/icon/testing/fake-icon-registry.d.ts +1 -1
  414. package/list/selection-list.d.ts +4 -21
  415. package/list/testing/list-item-harness-base.d.ts +1 -7
  416. package/menu/menu-errors.d.ts +0 -5
  417. package/menu/menu-item.d.ts +3 -2
  418. package/menu/menu-trigger.d.ts +14 -10
  419. package/package.json +7 -7
  420. package/paginator/paginator.d.ts +12 -1
  421. package/prebuilt-themes/deeppurple-amber.css +1 -1
  422. package/prebuilt-themes/indigo-pink.css +1 -1
  423. package/prebuilt-themes/pink-bluegrey.css +1 -1
  424. package/prebuilt-themes/purple-green.css +1 -1
  425. package/progress-spinner/progress-spinner-module.d.ts +1 -1
  426. package/progress-spinner/progress-spinner.d.ts +1 -18
  427. package/progress-spinner/public-api.d.ts +8 -1
  428. package/schematics/migration.json +5 -0
  429. package/schematics/ng-add/fonts/material-fonts.js +4 -13
  430. package/schematics/ng-add/fonts/material-fonts.mjs +4 -13
  431. package/schematics/ng-add/index.js +2 -2
  432. package/schematics/ng-add/index.mjs +2 -2
  433. package/schematics/ng-add/schema.d.ts +2 -2
  434. package/schematics/ng-add/schema.js +1 -1
  435. package/schematics/ng-add/schema.json +12 -4
  436. package/schematics/ng-add/schema.mjs +1 -1
  437. package/schematics/ng-add/setup-project.js +16 -23
  438. package/schematics/ng-add/setup-project.mjs +16 -23
  439. package/schematics/ng-add/theming/theming.js +28 -39
  440. package/schematics/ng-add/theming/theming.mjs +28 -39
  441. package/schematics/ng-generate/address-form/index.js +5 -14
  442. package/schematics/ng-generate/address-form/index.mjs +5 -14
  443. package/schematics/ng-generate/dashboard/index.js +5 -14
  444. package/schematics/ng-generate/dashboard/index.mjs +5 -14
  445. package/schematics/ng-generate/navigation/index.js +5 -14
  446. package/schematics/ng-generate/navigation/index.mjs +5 -14
  447. package/schematics/ng-generate/table/index.js +5 -14
  448. package/schematics/ng-generate/table/index.mjs +5 -14
  449. package/schematics/ng-generate/tree/index.js +5 -14
  450. package/schematics/ng-generate/tree/index.mjs +5 -14
  451. package/schematics/ng-update/data/constructor-checks.js +7 -1
  452. package/schematics/ng-update/data/constructor-checks.mjs +7 -1
  453. package/schematics/ng-update/data/css-selectors.js +7 -1
  454. package/schematics/ng-update/data/css-selectors.mjs +7 -1
  455. package/schematics/ng-update/data/index.js +6 -2
  456. package/schematics/ng-update/data/index.mjs +6 -2
  457. package/schematics/ng-update/index.d.ts +2 -0
  458. package/schematics/ng-update/index.js +7 -2
  459. package/schematics/ng-update/index.mjs +7 -2
  460. package/schematics/ng-update/migrations/hammer-gestures-v9/import-manager.js +2 -2
  461. package/schematics/ng-update/migrations/hammer-gestures-v9/import-manager.mjs +2 -2
  462. package/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration.js +2 -3
  463. package/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration.mjs +2 -3
  464. package/schematics/ng-update/migrations/theming-api-v12/migration.js +5 -5
  465. package/schematics/ng-update/migrations/theming-api-v12/migration.mjs +5 -5
  466. package/select/select.d.ts +5 -0
  467. package/stepper/public-api.d.ts +1 -1
  468. package/stepper/stepper-animations.d.ts +2 -0
  469. package/stepper/stepper.d.ts +11 -1
  470. package/tabs/ink-bar.d.ts +0 -5
  471. package/tooltip/testing/tooltip-harness.d.ts +6 -0
  472. package/tooltip/tooltip.d.ts +36 -8
package/fesm2015/menu.mjs CHANGED
@@ -146,9 +146,9 @@ class _MatMenuContentBase {
146
146
  }
147
147
  }
148
148
  }
149
- _MatMenuContentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: _MatMenuContentBase, deps: [{ token: i0.TemplateRef }, { token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }, { token: i0.ViewContainerRef }, { token: DOCUMENT }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
150
- _MatMenuContentBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.0", type: _MatMenuContentBase, ngImport: i0 });
151
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: _MatMenuContentBase, decorators: [{
149
+ _MatMenuContentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: _MatMenuContentBase, deps: [{ token: i0.TemplateRef }, { token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }, { token: i0.ViewContainerRef }, { token: DOCUMENT }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
150
+ _MatMenuContentBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.6", type: _MatMenuContentBase, ngImport: i0 });
151
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: _MatMenuContentBase, decorators: [{
152
152
  type: Directive
153
153
  }], ctorParameters: function () {
154
154
  return [{ type: i0.TemplateRef }, { type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
@@ -161,9 +161,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
161
161
  */
162
162
  class MatMenuContent extends _MatMenuContentBase {
163
163
  }
164
- MatMenuContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatMenuContent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
165
- MatMenuContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.0", type: MatMenuContent, selector: "ng-template[matMenuContent]", providers: [{ provide: MAT_MENU_CONTENT, useExisting: MatMenuContent }], usesInheritance: true, ngImport: i0 });
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatMenuContent, decorators: [{
164
+ MatMenuContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatMenuContent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
165
+ MatMenuContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.6", type: MatMenuContent, selector: "ng-template[matMenuContent]", providers: [{ provide: MAT_MENU_CONTENT, useExisting: MatMenuContent }], usesInheritance: true, ngImport: i0 });
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatMenuContent, decorators: [{
167
167
  type: Directive,
168
168
  args: [{
169
169
  selector: 'ng-template[matMenuContent]',
@@ -178,17 +178,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
178
178
  * Use of this source code is governed by an MIT-style license that can be
179
179
  * found in the LICENSE file at https://angular.io/license
180
180
  */
181
- /**
182
- * Throws an exception for the case when menu trigger doesn't have a valid mat-menu instance
183
- * @docs-private
184
- */
185
- function throwMatMenuMissingError() {
186
- throw Error(`matMenuTriggerFor: must pass in an mat-menu instance.
187
-
188
- Example:
189
- <mat-menu #menu="matMenu"></mat-menu>
190
- <button [matMenuTriggerFor]="menu"></button>`);
191
- }
192
181
  /**
193
182
  * Throws an exception for the case when menu's x-position value isn't valid.
194
183
  * In other words, it doesn't match 'before' or 'after'.
@@ -242,6 +231,7 @@ class MatMenuItem extends _MatMenuItemBase {
242
231
  var _a;
243
232
  super();
244
233
  this._elementRef = _elementRef;
234
+ this._document = _document;
245
235
  this._focusMonitor = _focusMonitor;
246
236
  this._parentMenu = _parentMenu;
247
237
  this._changeDetectorRef = _changeDetectorRef;
@@ -324,10 +314,13 @@ class MatMenuItem extends _MatMenuItemBase {
324
314
  this._highlighted = isHighlighted;
325
315
  (_a = this._changeDetectorRef) === null || _a === void 0 ? void 0 : _a.markForCheck();
326
316
  }
317
+ _hasFocus() {
318
+ return this._document && this._document.activeElement === this._getHostElement();
319
+ }
327
320
  }
328
- MatMenuItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatMenuItem, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }, { token: i1.FocusMonitor }, { token: MAT_MENU_PANEL, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
329
- MatMenuItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.0", type: MatMenuItem, selector: "[mat-menu-item]", inputs: { disabled: "disabled", disableRipple: "disableRipple", role: "role" }, host: { listeners: { "click": "_checkDisabled($event)", "mouseenter": "_handleMouseEnter()" }, properties: { "attr.role": "role", "class.mat-menu-item": "true", "class.mat-menu-item-highlighted": "_highlighted", "class.mat-menu-item-submenu-trigger": "_triggersSubmenu", "attr.tabindex": "_getTabIndex()", "attr.aria-disabled": "disabled.toString()", "attr.disabled": "disabled || null" }, classAttribute: "mat-focus-indicator" }, exportAs: ["matMenuItem"], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n<div class=\"mat-menu-ripple\" matRipple\n [matRippleDisabled]=\"disableRipple || disabled\"\n [matRippleTrigger]=\"_getHostElement()\">\n</div>\n\n<svg\n *ngIf=\"_triggersSubmenu\"\n class=\"mat-menu-submenu-icon\"\n viewBox=\"0 0 5 10\"\n focusable=\"false\"><polygon points=\"0,0 5,5 0,10\"/></svg>\n", directives: [{ type: i2.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
330
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatMenuItem, decorators: [{
321
+ MatMenuItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatMenuItem, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }, { token: i1.FocusMonitor }, { token: MAT_MENU_PANEL, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
322
+ MatMenuItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "14.0.0-next.6", type: MatMenuItem, selector: "[mat-menu-item]", inputs: { disabled: "disabled", disableRipple: "disableRipple", role: "role" }, host: { listeners: { "click": "_checkDisabled($event)", "mouseenter": "_handleMouseEnter()" }, properties: { "attr.role": "role", "class.mat-menu-item": "true", "class.mat-menu-item-highlighted": "_highlighted", "class.mat-menu-item-submenu-trigger": "_triggersSubmenu", "attr.tabindex": "_getTabIndex()", "attr.aria-disabled": "disabled.toString()", "attr.disabled": "disabled || null" }, classAttribute: "mat-focus-indicator" }, exportAs: ["matMenuItem"], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n<div class=\"mat-menu-ripple\" matRipple\n [matRippleDisabled]=\"disableRipple || disabled\"\n [matRippleTrigger]=\"_getHostElement()\">\n</div>\n\n<svg\n *ngIf=\"_triggersSubmenu\"\n class=\"mat-menu-submenu-icon\"\n viewBox=\"0 0 5 10\"\n focusable=\"false\"><polygon points=\"0,0 5,5 0,10\"/></svg>\n", directives: [{ type: i2.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
323
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatMenuItem, decorators: [{
331
324
  type: Component,
332
325
  args: [{ selector: '[mat-menu-item]', exportAs: 'matMenuItem', inputs: ['disabled', 'disableRipple'], host: {
333
326
  '[attr.role]': 'role',
@@ -502,6 +495,23 @@ class _MatMenuBase {
502
495
  this._directDescendantItems.changes
503
496
  .pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map((item) => item._focused))))
504
497
  .subscribe(focusedItem => this._keyManager.updateActiveItem(focusedItem));
498
+ this._directDescendantItems.changes.subscribe((itemsList) => {
499
+ var _a;
500
+ // Move focus to another item, if the active item is removed from the list.
501
+ // We need to debounce the callback, because multiple items might be removed
502
+ // in quick succession.
503
+ const manager = this._keyManager;
504
+ if (this._panelAnimationState === 'enter' && ((_a = manager.activeItem) === null || _a === void 0 ? void 0 : _a._hasFocus())) {
505
+ const items = itemsList.toArray();
506
+ const index = Math.max(0, Math.min(items.length - 1, manager.activeItemIndex || 0));
507
+ if (items[index] && !items[index].disabled) {
508
+ manager.setActiveItem(index);
509
+ }
510
+ else {
511
+ manager.setNextItemActive();
512
+ }
513
+ }
514
+ });
505
515
  }
506
516
  ngOnDestroy() {
507
517
  this._directDescendantItems.destroy();
@@ -686,9 +696,9 @@ class _MatMenuBase {
686
696
  });
687
697
  }
688
698
  }
689
- _MatMenuBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: _MatMenuBase, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: MAT_MENU_DEFAULT_OPTIONS }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
690
- _MatMenuBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.0", type: _MatMenuBase, inputs: { backdropClass: "backdropClass", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], ariaDescribedby: ["aria-describedby", "ariaDescribedby"], xPosition: "xPosition", yPosition: "yPosition", overlapTrigger: "overlapTrigger", hasBackdrop: "hasBackdrop", panelClass: ["class", "panelClass"], classList: "classList" }, outputs: { closed: "closed", close: "close" }, queries: [{ propertyName: "lazyContent", first: true, predicate: MAT_MENU_CONTENT, descendants: true }, { propertyName: "_allItems", predicate: MatMenuItem, descendants: true }, { propertyName: "items", predicate: MatMenuItem }], viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
691
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: _MatMenuBase, decorators: [{
699
+ _MatMenuBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: _MatMenuBase, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: MAT_MENU_DEFAULT_OPTIONS }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
700
+ _MatMenuBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.6", type: _MatMenuBase, inputs: { backdropClass: "backdropClass", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], ariaDescribedby: ["aria-describedby", "ariaDescribedby"], xPosition: "xPosition", yPosition: "yPosition", overlapTrigger: "overlapTrigger", hasBackdrop: "hasBackdrop", panelClass: ["class", "panelClass"], classList: "classList" }, outputs: { closed: "closed", close: "close" }, queries: [{ propertyName: "lazyContent", first: true, predicate: MAT_MENU_CONTENT, descendants: true }, { propertyName: "_allItems", predicate: MatMenuItem, descendants: true }, { propertyName: "items", predicate: MatMenuItem }], viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
701
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: _MatMenuBase, decorators: [{
692
702
  type: Directive
693
703
  }], ctorParameters: function () {
694
704
  return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
@@ -744,15 +754,15 @@ class MatMenu extends _MatMenuBase {
744
754
  this._baseElevation = 4;
745
755
  }
746
756
  }
747
- MatMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatMenu, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: MAT_MENU_DEFAULT_OPTIONS }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
748
- MatMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.0", type: MatMenu, selector: "mat-menu", host: { properties: { "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null" } }, providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], exportAs: ["matMenu"], usesInheritance: true, ngImport: i0, template: "<ng-template>\n <div\n class=\"mat-menu-panel\"\n [id]=\"panelId\"\n [ngClass]=\"_classList\"\n (keydown)=\"_handleKeydown($event)\"\n (click)=\"closed.emit('click')\"\n [@transformMenu]=\"_panelAnimationState\"\n (@transformMenu.start)=\"_onAnimationStart($event)\"\n (@transformMenu.done)=\"_onAnimationDone($event)\"\n tabindex=\"-1\"\n role=\"menu\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\n [attr.aria-describedby]=\"ariaDescribedby || null\">\n <div class=\"mat-menu-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["mat-menu{display:none}.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative}.mat-menu-item::-moz-focus-inner{border:0}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px;vertical-align:middle}.mat-menu-item .mat-icon svg{vertical-align:top}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item[disabled]{pointer-events:none}.cdk-high-contrast-active .mat-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-menu-item-highlighted{outline:dotted 1px}.mat-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.mat-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-menu-submenu-icon{fill:CanvasText}button.mat-menu-item{width:100%}.mat-menu-item .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n"], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
749
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatMenu, decorators: [{
757
+ MatMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatMenu, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: MAT_MENU_DEFAULT_OPTIONS }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
758
+ MatMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "14.0.0-next.6", type: MatMenu, selector: "mat-menu", host: { properties: { "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null" } }, providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], exportAs: ["matMenu"], usesInheritance: true, ngImport: i0, template: "<ng-template>\n <div\n class=\"mat-menu-panel\"\n [id]=\"panelId\"\n [ngClass]=\"_classList\"\n (keydown)=\"_handleKeydown($event)\"\n (click)=\"closed.emit('click')\"\n [@transformMenu]=\"_panelAnimationState\"\n (@transformMenu.start)=\"_onAnimationStart($event)\"\n (@transformMenu.done)=\"_onAnimationDone($event)\"\n tabindex=\"-1\"\n role=\"menu\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\n [attr.aria-describedby]=\"ariaDescribedby || null\">\n <div class=\"mat-menu-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["mat-menu{display:none}.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px;position:relative}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative}.mat-menu-item::-moz-focus-inner{border:0}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px;vertical-align:middle}.mat-menu-item .mat-icon svg{vertical-align:top}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item[disabled]{pointer-events:none}.cdk-high-contrast-active .mat-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-menu-item-highlighted{outline:dotted 1px}.mat-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.mat-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-menu-submenu-icon{fill:CanvasText}button.mat-menu-item{width:100%}.mat-menu-item .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n"], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
759
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatMenu, decorators: [{
750
760
  type: Component,
751
761
  args: [{ selector: 'mat-menu', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, exportAs: 'matMenu', host: {
752
762
  '[attr.aria-label]': 'null',
753
763
  '[attr.aria-labelledby]': 'null',
754
764
  '[attr.aria-describedby]': 'null',
755
- }, animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], template: "<ng-template>\n <div\n class=\"mat-menu-panel\"\n [id]=\"panelId\"\n [ngClass]=\"_classList\"\n (keydown)=\"_handleKeydown($event)\"\n (click)=\"closed.emit('click')\"\n [@transformMenu]=\"_panelAnimationState\"\n (@transformMenu.start)=\"_onAnimationStart($event)\"\n (@transformMenu.done)=\"_onAnimationDone($event)\"\n tabindex=\"-1\"\n role=\"menu\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\n [attr.aria-describedby]=\"ariaDescribedby || null\">\n <div class=\"mat-menu-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["mat-menu{display:none}.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative}.mat-menu-item::-moz-focus-inner{border:0}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px;vertical-align:middle}.mat-menu-item .mat-icon svg{vertical-align:top}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item[disabled]{pointer-events:none}.cdk-high-contrast-active .mat-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-menu-item-highlighted{outline:dotted 1px}.mat-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.mat-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-menu-submenu-icon{fill:CanvasText}button.mat-menu-item{width:100%}.mat-menu-item .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n"] }]
765
+ }, animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], template: "<ng-template>\n <div\n class=\"mat-menu-panel\"\n [id]=\"panelId\"\n [ngClass]=\"_classList\"\n (keydown)=\"_handleKeydown($event)\"\n (click)=\"closed.emit('click')\"\n [@transformMenu]=\"_panelAnimationState\"\n (@transformMenu.start)=\"_onAnimationStart($event)\"\n (@transformMenu.done)=\"_onAnimationDone($event)\"\n tabindex=\"-1\"\n role=\"menu\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\n [attr.aria-describedby]=\"ariaDescribedby || null\">\n <div class=\"mat-menu-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["mat-menu{display:none}.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px;position:relative}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative}.mat-menu-item::-moz-focus-inner{border:0}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px;vertical-align:middle}.mat-menu-item .mat-icon svg{vertical-align:top}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item[disabled]{pointer-events:none}.cdk-high-contrast-active .mat-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-menu-item-highlighted{outline:dotted 1px}.mat-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.mat-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-menu-submenu-icon{fill:CanvasText}button.mat-menu-item{width:100%}.mat-menu-item .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n"] }]
756
766
  }], ctorParameters: function () {
757
767
  return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
758
768
  type: Inject,
@@ -779,7 +789,11 @@ const MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER = {
779
789
  deps: [Overlay],
780
790
  useFactory: MAT_MENU_SCROLL_STRATEGY_FACTORY,
781
791
  };
782
- /** Default top padding of the menu panel. */
792
+ /**
793
+ * Default top padding of the menu panel.
794
+ * @deprecated No longer being used. Will be removed.
795
+ * @breaking-change 15.0.0
796
+ */
783
797
  const MENU_PANEL_TOP_PADDING = 8;
784
798
  /** Options for binding a passive event listener. */
785
799
  const passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });
@@ -878,7 +892,6 @@ class _MatMenuTriggerBase {
878
892
  }
879
893
  }
880
894
  ngAfterContentInit() {
881
- this._checkMenu();
882
895
  this._handleHover();
883
896
  }
884
897
  ngOnDestroy() {
@@ -909,25 +922,25 @@ class _MatMenuTriggerBase {
909
922
  }
910
923
  /** Opens the menu. */
911
924
  openMenu() {
912
- if (this._menuOpen) {
925
+ const menu = this.menu;
926
+ if (this._menuOpen || !menu) {
913
927
  return;
914
928
  }
915
- this._checkMenu();
916
- const overlayRef = this._createOverlay();
929
+ const overlayRef = this._createOverlay(menu);
917
930
  const overlayConfig = overlayRef.getConfig();
918
931
  const positionStrategy = overlayConfig.positionStrategy;
919
- this._setPosition(positionStrategy);
932
+ this._setPosition(menu, positionStrategy);
920
933
  overlayConfig.hasBackdrop =
921
- this.menu.hasBackdrop == null ? !this.triggersSubmenu() : this.menu.hasBackdrop;
922
- overlayRef.attach(this._getPortal());
923
- if (this.menu.lazyContent) {
924
- this.menu.lazyContent.attach(this.menuData);
934
+ menu.hasBackdrop == null ? !this.triggersSubmenu() : menu.hasBackdrop;
935
+ overlayRef.attach(this._getPortal(menu));
936
+ if (menu.lazyContent) {
937
+ menu.lazyContent.attach(this.menuData);
925
938
  }
926
939
  this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this.closeMenu());
927
- this._initMenu();
928
- if (this.menu instanceof _MatMenuBase) {
929
- this.menu._startAnimation();
930
- this.menu._directDescendantItems.changes.pipe(takeUntil(this.menu.close)).subscribe(() => {
940
+ this._initMenu(menu);
941
+ if (menu instanceof _MatMenuBase) {
942
+ menu._startAnimation();
943
+ menu._directDescendantItems.changes.pipe(takeUntil(menu.close)).subscribe(() => {
931
944
  // Re-adjust the position without locking when the amount of items
932
945
  // changes so that the overlay is allowed to pick a new optimal position.
933
946
  positionStrategy.withLockedPosition(false).reapplyLastPosition();
@@ -937,7 +950,8 @@ class _MatMenuTriggerBase {
937
950
  }
938
951
  /** Closes the menu. */
939
952
  closeMenu() {
940
- this.menu.close.emit();
953
+ var _a;
954
+ (_a = this.menu) === null || _a === void 0 ? void 0 : _a.close.emit();
941
955
  }
942
956
  /**
943
957
  * Focuses the menu trigger.
@@ -960,6 +974,7 @@ class _MatMenuTriggerBase {
960
974
  }
961
975
  /** Closes the menu and does the necessary cleanup. */
962
976
  _destroyMenu(reason) {
977
+ var _a;
963
978
  if (!this._overlayRef || !this.menuOpen) {
964
979
  return;
965
980
  }
@@ -994,32 +1009,30 @@ class _MatMenuTriggerBase {
994
1009
  }
995
1010
  else {
996
1011
  this._setIsMenuOpen(false);
997
- if (menu.lazyContent) {
998
- menu.lazyContent.detach();
999
- }
1012
+ (_a = menu === null || menu === void 0 ? void 0 : menu.lazyContent) === null || _a === void 0 ? void 0 : _a.detach();
1000
1013
  }
1001
1014
  }
1002
1015
  /**
1003
1016
  * This method sets the menu state to open and focuses the first item if
1004
1017
  * the menu was opened via the keyboard.
1005
1018
  */
1006
- _initMenu() {
1007
- this.menu.parentMenu = this.triggersSubmenu() ? this._parentMaterialMenu : undefined;
1008
- this.menu.direction = this.dir;
1009
- this._setMenuElevation();
1010
- this.menu.focusFirstItem(this._openedBy || 'program');
1019
+ _initMenu(menu) {
1020
+ menu.parentMenu = this.triggersSubmenu() ? this._parentMaterialMenu : undefined;
1021
+ menu.direction = this.dir;
1022
+ this._setMenuElevation(menu);
1023
+ menu.focusFirstItem(this._openedBy || 'program');
1011
1024
  this._setIsMenuOpen(true);
1012
1025
  }
1013
1026
  /** Updates the menu elevation based on the amount of parent menus that it has. */
1014
- _setMenuElevation() {
1015
- if (this.menu.setElevation) {
1027
+ _setMenuElevation(menu) {
1028
+ if (menu.setElevation) {
1016
1029
  let depth = 0;
1017
- let parentMenu = this.menu.parentMenu;
1030
+ let parentMenu = menu.parentMenu;
1018
1031
  while (parentMenu) {
1019
1032
  depth++;
1020
1033
  parentMenu = parentMenu.parentMenu;
1021
1034
  }
1022
- this.menu.setElevation(depth);
1035
+ menu.setElevation(depth);
1023
1036
  }
1024
1037
  }
1025
1038
  // set state rather than toggle to support triggers sharing a menu
@@ -1030,23 +1043,14 @@ class _MatMenuTriggerBase {
1030
1043
  this._menuItemInstance._setHighlighted(isOpen);
1031
1044
  }
1032
1045
  }
1033
- /**
1034
- * This method checks that a valid instance of MatMenu has been passed into
1035
- * matMenuTriggerFor. If not, an exception is thrown.
1036
- */
1037
- _checkMenu() {
1038
- if (!this.menu && (typeof ngDevMode === 'undefined' || ngDevMode)) {
1039
- throwMatMenuMissingError();
1040
- }
1041
- }
1042
1046
  /**
1043
1047
  * This method creates the overlay from the provided menu's template and saves its
1044
1048
  * OverlayRef so that it can be attached to the DOM when openMenu is called.
1045
1049
  */
1046
- _createOverlay() {
1050
+ _createOverlay(menu) {
1047
1051
  if (!this._overlayRef) {
1048
- const config = this._getOverlayConfig();
1049
- this._subscribeToPositions(config.positionStrategy);
1052
+ const config = this._getOverlayConfig(menu);
1053
+ this._subscribeToPositions(menu, config.positionStrategy);
1050
1054
  this._overlayRef = this._overlay.create(config);
1051
1055
  // Consume the `keydownEvents` in order to prevent them from going to another overlay.
1052
1056
  // Ideally we'd also have our keyboard event logic in here, however doing so will
@@ -1059,7 +1063,7 @@ class _MatMenuTriggerBase {
1059
1063
  * This method builds the configuration object needed to create the overlay, the OverlayState.
1060
1064
  * @returns OverlayConfig
1061
1065
  */
1062
- _getOverlayConfig() {
1066
+ _getOverlayConfig(menu) {
1063
1067
  return new OverlayConfig({
1064
1068
  positionStrategy: this._overlay
1065
1069
  .position()
@@ -1067,8 +1071,8 @@ class _MatMenuTriggerBase {
1067
1071
  .withLockedPosition()
1068
1072
  .withGrowAfterOpen()
1069
1073
  .withTransformOriginOn('.mat-menu-panel, .mat-mdc-menu-panel'),
1070
- backdropClass: this.menu.backdropClass || 'cdk-overlay-transparent-backdrop',
1071
- panelClass: this.menu.overlayPanelClass,
1074
+ backdropClass: menu.backdropClass || 'cdk-overlay-transparent-backdrop',
1075
+ panelClass: menu.overlayPanelClass,
1072
1076
  scrollStrategy: this._scrollStrategy(),
1073
1077
  direction: this._dir,
1074
1078
  });
@@ -1078,8 +1082,8 @@ class _MatMenuTriggerBase {
1078
1082
  * on the menu based on the new position. This ensures the animation origin is always
1079
1083
  * correct, even if a fallback position is used for the overlay.
1080
1084
  */
1081
- _subscribeToPositions(position) {
1082
- if (this.menu.setPositionClasses) {
1085
+ _subscribeToPositions(menu, position) {
1086
+ if (menu.setPositionClasses) {
1083
1087
  position.positionChanges.subscribe(change => {
1084
1088
  const posX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';
1085
1089
  const posY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';
@@ -1087,10 +1091,10 @@ class _MatMenuTriggerBase {
1087
1091
  // `positionChanges` fires outside of the `ngZone` and `setPositionClasses` might be
1088
1092
  // updating something in the view so we need to bring it back in.
1089
1093
  if (this._ngZone) {
1090
- this._ngZone.run(() => this.menu.setPositionClasses(posX, posY));
1094
+ this._ngZone.run(() => menu.setPositionClasses(posX, posY));
1091
1095
  }
1092
1096
  else {
1093
- this.menu.setPositionClasses(posX, posY);
1097
+ menu.setPositionClasses(posX, posY);
1094
1098
  }
1095
1099
  });
1096
1100
  }
@@ -1100,20 +1104,26 @@ class _MatMenuTriggerBase {
1100
1104
  * so the overlay connects with the trigger correctly.
1101
1105
  * @param positionStrategy Strategy whose position to update.
1102
1106
  */
1103
- _setPosition(positionStrategy) {
1104
- let [originX, originFallbackX] = this.menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];
1105
- let [overlayY, overlayFallbackY] = this.menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];
1107
+ _setPosition(menu, positionStrategy) {
1108
+ let [originX, originFallbackX] = menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];
1109
+ let [overlayY, overlayFallbackY] = menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];
1106
1110
  let [originY, originFallbackY] = [overlayY, overlayFallbackY];
1107
1111
  let [overlayX, overlayFallbackX] = [originX, originFallbackX];
1108
1112
  let offsetY = 0;
1109
1113
  if (this.triggersSubmenu()) {
1110
1114
  // When the menu is a sub-menu, it should always align itself
1111
1115
  // to the edges of the trigger, instead of overlapping it.
1112
- overlayFallbackX = originX = this.menu.xPosition === 'before' ? 'start' : 'end';
1116
+ overlayFallbackX = originX = menu.xPosition === 'before' ? 'start' : 'end';
1113
1117
  originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';
1114
- offsetY = overlayY === 'bottom' ? MENU_PANEL_TOP_PADDING : -MENU_PANEL_TOP_PADDING;
1118
+ if (this._parentMaterialMenu) {
1119
+ if (this._parentInnerPadding == null) {
1120
+ const firstItem = this._parentMaterialMenu.items.first;
1121
+ this._parentInnerPadding = firstItem ? firstItem._getHostElement().offsetTop : 0;
1122
+ }
1123
+ offsetY = overlayY === 'bottom' ? this._parentInnerPadding : -this._parentInnerPadding;
1124
+ }
1115
1125
  }
1116
- else if (!this.menu.overlapTrigger) {
1126
+ else if (!menu.overlapTrigger) {
1117
1127
  originY = overlayY === 'top' ? 'bottom' : 'top';
1118
1128
  originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';
1119
1129
  }
@@ -1215,23 +1225,23 @@ class _MatMenuTriggerBase {
1215
1225
  });
1216
1226
  }
1217
1227
  /** Gets the portal that should be attached to the overlay. */
1218
- _getPortal() {
1228
+ _getPortal(menu) {
1219
1229
  // Note that we can avoid this check by keeping the portal on the menu panel.
1220
1230
  // While it would be cleaner, we'd have to introduce another required method on
1221
1231
  // `MatMenuPanel`, making it harder to consume.
1222
- if (!this._portal || this._portal.templateRef !== this.menu.templateRef) {
1223
- this._portal = new TemplatePortal(this.menu.templateRef, this._viewContainerRef);
1232
+ if (!this._portal || this._portal.templateRef !== menu.templateRef) {
1233
+ this._portal = new TemplatePortal(menu.templateRef, this._viewContainerRef);
1224
1234
  }
1225
1235
  return this._portal;
1226
1236
  }
1227
1237
  }
1228
- _MatMenuTriggerBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: _MatMenuTriggerBase, deps: [{ token: i1$1.Overlay }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: MAT_MENU_SCROLL_STRATEGY }, { token: MAT_MENU_PANEL, optional: true }, { token: MatMenuItem, optional: true, self: true }, { token: i3$1.Directionality, optional: true }, { token: i1.FocusMonitor }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
1229
- _MatMenuTriggerBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.0", type: _MatMenuTriggerBase, inputs: { _deprecatedMatMenuTriggerFor: ["mat-menu-trigger-for", "_deprecatedMatMenuTriggerFor"], menu: ["matMenuTriggerFor", "menu"], menuData: ["matMenuTriggerData", "menuData"], restoreFocus: ["matMenuTriggerRestoreFocus", "restoreFocus"] }, outputs: { menuOpened: "menuOpened", onMenuOpen: "onMenuOpen", menuClosed: "menuClosed", onMenuClose: "onMenuClose" }, host: { attributes: { "aria-haspopup": "true" }, listeners: { "click": "_handleClick($event)", "mousedown": "_handleMousedown($event)", "keydown": "_handleKeydown($event)" }, properties: { "attr.aria-expanded": "menuOpen || null", "attr.aria-controls": "menuOpen ? menu.panelId : null" } }, ngImport: i0 });
1230
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: _MatMenuTriggerBase, decorators: [{
1238
+ _MatMenuTriggerBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: _MatMenuTriggerBase, deps: [{ token: i1$1.Overlay }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: MAT_MENU_SCROLL_STRATEGY }, { token: MAT_MENU_PANEL, optional: true }, { token: MatMenuItem, optional: true, self: true }, { token: i3$1.Directionality, optional: true }, { token: i1.FocusMonitor }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
1239
+ _MatMenuTriggerBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.6", type: _MatMenuTriggerBase, inputs: { _deprecatedMatMenuTriggerFor: ["mat-menu-trigger-for", "_deprecatedMatMenuTriggerFor"], menu: ["matMenuTriggerFor", "menu"], menuData: ["matMenuTriggerData", "menuData"], restoreFocus: ["matMenuTriggerRestoreFocus", "restoreFocus"] }, outputs: { menuOpened: "menuOpened", onMenuOpen: "onMenuOpen", menuClosed: "menuClosed", onMenuClose: "onMenuClose" }, host: { listeners: { "click": "_handleClick($event)", "mousedown": "_handleMousedown($event)", "keydown": "_handleKeydown($event)" }, properties: { "attr.aria-haspopup": "menu ? \"menu\" : null", "attr.aria-expanded": "menuOpen || null", "attr.aria-controls": "menuOpen ? menu.panelId : null" } }, ngImport: i0 });
1240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: _MatMenuTriggerBase, decorators: [{
1231
1241
  type: Directive,
1232
1242
  args: [{
1233
1243
  host: {
1234
- 'aria-haspopup': 'true',
1244
+ '[attr.aria-haspopup]': 'menu ? "menu" : null',
1235
1245
  '[attr.aria-expanded]': 'menuOpen || null',
1236
1246
  '[attr.aria-controls]': 'menuOpen ? menu.panelId : null',
1237
1247
  '(click)': '_handleClick($event)',
@@ -1279,9 +1289,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
1279
1289
  /** Directive applied to an element that should trigger a `mat-menu`. */
1280
1290
  class MatMenuTrigger extends _MatMenuTriggerBase {
1281
1291
  }
1282
- MatMenuTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatMenuTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1283
- MatMenuTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.0", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", host: { classAttribute: "mat-menu-trigger" }, exportAs: ["matMenuTrigger"], usesInheritance: true, ngImport: i0 });
1284
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatMenuTrigger, decorators: [{
1292
+ MatMenuTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatMenuTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1293
+ MatMenuTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.6", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", host: { classAttribute: "mat-menu-trigger" }, exportAs: ["matMenuTrigger"], usesInheritance: true, ngImport: i0 });
1294
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatMenuTrigger, decorators: [{
1285
1295
  type: Directive,
1286
1296
  args: [{
1287
1297
  selector: `[mat-menu-trigger-for], [matMenuTriggerFor]`,
@@ -1301,16 +1311,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
1301
1311
  */
1302
1312
  class MatMenuModule {
1303
1313
  }
1304
- MatMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1305
- MatMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatMenuModule, declarations: [MatMenu, MatMenuItem, MatMenuTrigger, MatMenuContent], imports: [CommonModule, MatCommonModule, MatRippleModule, OverlayModule], exports: [CdkScrollableModule,
1314
+ MatMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1315
+ MatMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatMenuModule, declarations: [MatMenu, MatMenuItem, MatMenuTrigger, MatMenuContent], imports: [CommonModule, MatCommonModule, MatRippleModule, OverlayModule], exports: [CdkScrollableModule,
1306
1316
  MatCommonModule,
1307
1317
  MatMenu,
1308
1318
  MatMenuItem,
1309
1319
  MatMenuTrigger,
1310
1320
  MatMenuContent] });
1311
- MatMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatMenuModule, providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [[CommonModule, MatCommonModule, MatRippleModule, OverlayModule], CdkScrollableModule,
1321
+ MatMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatMenuModule, providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [[CommonModule, MatCommonModule, MatRippleModule, OverlayModule], CdkScrollableModule,
1312
1322
  MatCommonModule] });
1313
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatMenuModule, decorators: [{
1323
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatMenuModule, decorators: [{
1314
1324
  type: NgModule,
1315
1325
  args: [{
1316
1326
  imports: [CommonModule, MatCommonModule, MatRippleModule, OverlayModule],